continuous-integration.yml 6.9 KB

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