continuous-integration.yml 7.0 KB

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