continuous-integration.yml 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260
  1. name: "Continuous Integration"
  2. on:
  3. - push
  4. - pull_request
  5. jobs:
  6. tests:
  7. name: "CI (PHP ${{ matrix.php-version }}, ${{ matrix.dependencies }} deps)"
  8. runs-on: "${{ matrix.operating-system }}"
  9. strategy:
  10. fail-fast: false
  11. matrix:
  12. php-version:
  13. - "7.2"
  14. - "7.3"
  15. - "7.4"
  16. - "8.0"
  17. - "8.1"
  18. dependencies: [highest]
  19. composer-options: [""]
  20. operating-system:
  21. - "ubuntu-latest"
  22. include:
  23. - php-version: "7.2"
  24. dependencies: lowest
  25. operating-system: ubuntu-latest
  26. - php-version: "8.1"
  27. dependencies: lowest
  28. operating-system: ubuntu-latest
  29. - php-version: "8.2"
  30. dependencies: highest
  31. operating-system: ubuntu-latest
  32. composer-options: "--ignore-platform-req=php+"
  33. steps:
  34. - name: "Checkout"
  35. uses: "actions/checkout@v2"
  36. - name: Run CouchDB
  37. timeout-minutes: 3
  38. continue-on-error: true
  39. uses: "cobot/couchdb-action@master"
  40. with:
  41. couchdb version: '2.3.1'
  42. - name: Run MongoDB
  43. uses: supercharge/mongodb-github-action@1.7.0
  44. with:
  45. mongodb-version: 5.0
  46. - name: "Install PHP"
  47. uses: "shivammathur/setup-php@v2"
  48. with:
  49. coverage: "none"
  50. php-version: "${{ matrix.php-version }}"
  51. extensions: mongodb, redis, amqp
  52. tools: "composer:v2"
  53. ini-values: "memory_limit=-1"
  54. - name: Add require for mongodb/mongodb to make tests runnable
  55. run: 'composer require mongodb/mongodb --dev --no-update'
  56. - name: "Change dependencies"
  57. run: |
  58. composer require --no-update --no-interaction --dev elasticsearch/elasticsearch:^7
  59. composer config --no-plugins allow-plugins.ocramius/package-versions true
  60. - name: "Update dependencies with composer"
  61. uses: "ramsey/composer-install@v2"
  62. with:
  63. dependency-versions: "${{ matrix.dependencies }}"
  64. composer-options: "${{ matrix.composer-options }}"
  65. - name: "Run tests"
  66. run: "composer exec phpunit -- --exclude-group Elasticsearch,Elastica --verbose"
  67. - name: "Run tests with psr/log 3"
  68. if: "contains(matrix.dependencies, 'highest') && matrix.php-version >= '8.0'"
  69. run: |
  70. composer remove --no-update --dev graylog2/gelf-php ruflin/elastica elasticsearch/elasticsearch rollbar/rollbar
  71. composer require --no-update psr/log:^3
  72. composer update ${{ matrix.composer-options }}
  73. composer exec phpunit -- --exclude-group Elasticsearch,Elastica --verbose
  74. tests-es-7:
  75. name: "CI with ES ${{ matrix.es-version }} on PHP ${{ matrix.php-version }}"
  76. needs: "tests"
  77. runs-on: "${{ matrix.operating-system }}"
  78. strategy:
  79. fail-fast: false
  80. matrix:
  81. operating-system:
  82. - "ubuntu-latest"
  83. php-version:
  84. - "7.2"
  85. - "7.3"
  86. - "7.4"
  87. - "8.0"
  88. - "8.1"
  89. dependencies:
  90. - "highest"
  91. - "lowest"
  92. es-version:
  93. - "7.0.0"
  94. - "7.17.0"
  95. exclude:
  96. # php 7.3 is required
  97. - php-version: "7.2"
  98. es-version: "7.17.0"
  99. # tests failing due an error in deprecated guzzlehttp/ringphp
  100. - php-version: "7.3"
  101. es-version: "7.0.0"
  102. - php-version: "7.4"
  103. es-version: "7.0.0"
  104. steps:
  105. - name: "Checkout"
  106. uses: "actions/checkout@v2"
  107. # required for elasticsearch
  108. - name: Configure sysctl limits
  109. run: |
  110. sudo swapoff -a
  111. sudo sysctl -w vm.swappiness=1
  112. sudo sysctl -w fs.file-max=262144
  113. sudo sysctl -w vm.max_map_count=262144
  114. - name: Run Elasticsearch
  115. timeout-minutes: 3
  116. uses: elastic/elastic-github-actions/elasticsearch@master
  117. with:
  118. stack-version: "${{ matrix.es-version }}"
  119. - name: "Install PHP"
  120. uses: "shivammathur/setup-php@v2"
  121. with:
  122. coverage: "none"
  123. php-version: "${{ matrix.php-version }}"
  124. extensions: mongodb, redis, amqp
  125. tools: "composer:v2"
  126. ini-values: "memory_limit=-1"
  127. - name: "Change dependencies"
  128. run: "composer require --no-update --no-interaction --dev elasticsearch/elasticsearch:^${{ matrix.es-version }}"
  129. - name: "Allow composer plugin to run"
  130. if: "matrix.php-version == '7.4' && matrix.dependencies == 'lowest'"
  131. run: "composer config allow-plugins.ocramius/package-versions true"
  132. - name: "Update dependencies with composer"
  133. uses: "ramsey/composer-install@v2"
  134. with:
  135. dependency-versions: "${{ matrix.dependencies }}"
  136. - name: "Run tests"
  137. run: "composer exec phpunit -- --group Elasticsearch,Elastica --verbose"
  138. - name: "Run tests with psr/log 3"
  139. if: "contains(matrix.dependencies, 'highest') && matrix.php-version >= '8.0'"
  140. run: |
  141. composer remove --no-update --dev graylog2/gelf-php ruflin/elastica elasticsearch/elasticsearch rollbar/rollbar
  142. composer require --no-update --no-interaction --dev ruflin/elastica elasticsearch/elasticsearch:^7
  143. composer require --no-update psr/log:^3
  144. composer update -W
  145. composer exec phpunit -- --group Elasticsearch,Elastica --verbose
  146. tests-es-8:
  147. name: "CI with ES ${{ matrix.es-version }} on PHP ${{ matrix.php-version }}"
  148. needs: "tests"
  149. runs-on: "${{ matrix.operating-system }}"
  150. strategy:
  151. fail-fast: false
  152. matrix:
  153. operating-system:
  154. - "ubuntu-latest"
  155. php-version:
  156. # ES 8 requires PHP 7.4+
  157. - "7.4"
  158. - "8.0"
  159. - "8.1"
  160. dependencies:
  161. - "highest"
  162. - "lowest"
  163. es-version:
  164. - "8.0.0"
  165. - "8.2.0"
  166. steps:
  167. - name: "Checkout"
  168. uses: "actions/checkout@v2"
  169. # required for elasticsearch
  170. - name: Configure sysctl limits
  171. run: |
  172. sudo swapoff -a
  173. sudo sysctl -w vm.swappiness=1
  174. sudo sysctl -w fs.file-max=262144
  175. sudo sysctl -w vm.max_map_count=262144
  176. - name: Run Elasticsearch
  177. timeout-minutes: 3
  178. uses: elastic/elastic-github-actions/elasticsearch@master
  179. with:
  180. stack-version: "${{ matrix.es-version }}"
  181. - name: "Install PHP"
  182. uses: "shivammathur/setup-php@v2"
  183. with:
  184. coverage: "none"
  185. php-version: "${{ matrix.php-version }}"
  186. extensions: mongodb, redis, amqp
  187. tools: "composer:v2"
  188. ini-values: "memory_limit=-1"
  189. - name: "Change dependencies"
  190. run: |
  191. composer remove --no-update --dev graylog2/gelf-php ruflin/elastica elasticsearch/elasticsearch rollbar/rollbar
  192. composer require --no-update --no-interaction --dev elasticsearch/elasticsearch:^8
  193. - name: "Allow composer plugin to run"
  194. if: "matrix.php-version == '7.4' && matrix.dependencies == 'lowest'"
  195. run: "composer config allow-plugins.ocramius/package-versions true"
  196. - name: "Update dependencies with composer"
  197. uses: "ramsey/composer-install@v2"
  198. with:
  199. dependency-versions: "${{ matrix.dependencies }}"
  200. - name: "Run tests"
  201. run: "composer exec phpunit -- --group Elasticsearch,Elastica --verbose"
  202. - name: "Run tests with psr/log 3"
  203. if: "contains(matrix.dependencies, 'highest') && matrix.php-version >= '8.0'"
  204. run: |
  205. composer require --no-update psr/log:^3
  206. composer update -W
  207. composer exec phpunit -- --group Elasticsearch,Elastica --verbose