continuous-integration.yml 7.7 KB

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