continuous-integration.yml 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  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. - "8.1"
  16. dependencies: [highest]
  17. composer-options: [""]
  18. operating-system:
  19. - "ubuntu-latest"
  20. include:
  21. - php-version: "8.1"
  22. dependencies: lowest
  23. operating-system: ubuntu-latest
  24. - php-version: "8.2"
  25. dependencies: highest
  26. operating-system: ubuntu-latest
  27. composer-options: "--ignore-platform-req=php+"
  28. steps:
  29. - name: "Checkout"
  30. uses: "actions/checkout@v2"
  31. - name: Run CouchDB
  32. timeout-minutes: 3
  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@v2"
  57. with:
  58. dependency-versions: "${{ matrix.dependencies }}"
  59. composer-options: "${{ matrix.composer-options }}"
  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 ${{ matrix.composer-options }}
  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. - "8.1"
  80. dependencies:
  81. - "highest"
  82. - "lowest"
  83. es-version:
  84. - "7.0.0"
  85. - "7.17.0"
  86. steps:
  87. - name: "Checkout"
  88. uses: "actions/checkout@v2"
  89. # required for elasticsearch
  90. - name: Configure sysctl limits
  91. run: |
  92. sudo swapoff -a
  93. sudo sysctl -w vm.swappiness=1
  94. sudo sysctl -w fs.file-max=262144
  95. sudo sysctl -w vm.max_map_count=262144
  96. - name: Run Elasticsearch
  97. timeout-minutes: 3
  98. uses: elastic/elastic-github-actions/elasticsearch@master
  99. with:
  100. stack-version: "${{ matrix.es-version }}"
  101. - name: "Install PHP"
  102. uses: "shivammathur/setup-php@v2"
  103. with:
  104. coverage: "none"
  105. php-version: "${{ matrix.php-version }}"
  106. extensions: mongodb, redis, amqp
  107. tools: "composer:v2"
  108. ini-values: "memory_limit=-1"
  109. - name: "Change dependencies"
  110. run: "composer require --no-update --no-interaction --dev elasticsearch/elasticsearch:^${{ matrix.es-version }}"
  111. - name: "Allow composer plugin to run"
  112. if: "matrix.php-version == '7.4' && matrix.dependencies == 'lowest'"
  113. run: "composer config allow-plugins.ocramius/package-versions true"
  114. - name: "Update dependencies with composer"
  115. uses: "ramsey/composer-install@v2"
  116. with:
  117. dependency-versions: "${{ matrix.dependencies }}"
  118. - name: "Run tests"
  119. run: "composer exec phpunit -- --group Elasticsearch,Elastica --verbose"
  120. - name: "Run tests with psr/log 3"
  121. if: "contains(matrix.dependencies, 'highest') && matrix.php-version >= '8.0'"
  122. run: |
  123. composer remove --no-update --dev graylog2/gelf-php ruflin/elastica elasticsearch/elasticsearch rollbar/rollbar
  124. composer require --no-update --no-interaction --dev ruflin/elastica elasticsearch/elasticsearch:^7
  125. composer require --no-update psr/log:^3
  126. composer update -W
  127. composer exec phpunit -- --group Elasticsearch,Elastica --verbose
  128. tests-es-8:
  129. name: "CI with ES ${{ matrix.es-version }} on PHP ${{ matrix.php-version }}"
  130. needs: "tests"
  131. runs-on: "${{ matrix.operating-system }}"
  132. strategy:
  133. fail-fast: false
  134. matrix:
  135. operating-system:
  136. - "ubuntu-latest"
  137. php-version:
  138. - "8.1"
  139. dependencies:
  140. - "highest"
  141. - "lowest"
  142. es-version:
  143. - "8.0.0"
  144. - "8.2.0"
  145. steps:
  146. - name: "Checkout"
  147. uses: "actions/checkout@v2"
  148. # required for elasticsearch
  149. - name: Configure sysctl limits
  150. run: |
  151. sudo swapoff -a
  152. sudo sysctl -w vm.swappiness=1
  153. sudo sysctl -w fs.file-max=262144
  154. sudo sysctl -w vm.max_map_count=262144
  155. - name: Run Elasticsearch
  156. timeout-minutes: 3
  157. uses: elastic/elastic-github-actions/elasticsearch@master
  158. with:
  159. stack-version: "${{ matrix.es-version }}"
  160. - name: "Install PHP"
  161. uses: "shivammathur/setup-php@v2"
  162. with:
  163. coverage: "none"
  164. php-version: "${{ matrix.php-version }}"
  165. extensions: mongodb, redis, amqp
  166. tools: "composer:v2"
  167. ini-values: "memory_limit=-1"
  168. - name: "Change dependencies"
  169. run: |
  170. composer remove --no-update --dev graylog2/gelf-php ruflin/elastica elasticsearch/elasticsearch rollbar/rollbar
  171. composer require --no-update --no-interaction --dev elasticsearch/elasticsearch:^8
  172. - name: "Allow composer plugin to run"
  173. if: "matrix.php-version == '7.4' && matrix.dependencies == 'lowest'"
  174. run: "composer config allow-plugins.ocramius/package-versions true"
  175. - name: "Update dependencies with composer"
  176. uses: "ramsey/composer-install@v2"
  177. with:
  178. dependency-versions: "${{ matrix.dependencies }}"
  179. - name: "Run tests"
  180. run: "composer exec phpunit -- --group Elasticsearch,Elastica --verbose"
  181. - name: "Run tests with psr/log 3"
  182. if: "contains(matrix.dependencies, 'highest') && matrix.php-version >= '8.0'"
  183. run: |
  184. composer require --no-update psr/log:^3
  185. composer update -W
  186. composer exec phpunit -- --group Elasticsearch,Elastica --verbose