continuous-integration.yml 7.3 KB

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