continuous-integration.yml 7.3 KB

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