continuous-integration.yml 7.6 KB

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