continuous-integration.yml 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218
  1. name: "Continuous Integration"
  2. on:
  3. - push
  4. - pull_request
  5. permissions:
  6. contents: read
  7. env:
  8. COMPOSER_ROOT_VERSION: dev-main
  9. jobs:
  10. tests:
  11. name: "CI (PHP ${{ matrix.php-version }}, ${{ matrix.dependencies }} deps)"
  12. runs-on: "${{ matrix.operating-system }}"
  13. strategy:
  14. fail-fast: false
  15. matrix:
  16. php-version:
  17. - "8.1"
  18. - "8.2"
  19. - "8.3"
  20. - "8.4"
  21. - "8.5"
  22. dependencies: [highest]
  23. composer-options: [""]
  24. operating-system:
  25. - "ubuntu-latest"
  26. include:
  27. - php-version: "8.1"
  28. dependencies: lowest
  29. operating-system: ubuntu-latest
  30. - php-version: "8.5"
  31. dependencies: highest
  32. operating-system: ubuntu-latest
  33. composer-options: "--ignore-platform-req=php+"
  34. steps:
  35. - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
  36. - name: Run CouchDB
  37. timeout-minutes: 3
  38. continue-on-error: true
  39. uses: cobot/couchdb-action@eaaa17cf8baf421e7fb07e2d869f5457bb6a4de5 # main
  40. with:
  41. couchdb version: '2.3.1'
  42. - name: Run MongoDB
  43. uses: supercharge/mongodb-github-action@315db7fe45ac2880b7758f1933e6e5d59afd5e94 # 1.12.1
  44. with:
  45. mongodb-version: 5.0
  46. - uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # 2.36.0
  47. with:
  48. coverage: "none"
  49. php-version: "${{ matrix.php-version }}"
  50. extensions: mongodb, redis, amqp
  51. tools: "composer:v2"
  52. ini-values: "memory_limit=-1"
  53. - name: Add require for mongodb/mongodb to make tests runnable
  54. run: 'composer require mongodb/mongodb --dev --no-update'
  55. - name: "Change dependencies"
  56. run: |
  57. composer require --no-update --no-interaction --dev elasticsearch/elasticsearch:^7
  58. - uses: ramsey/composer-install@3cf229dc2919194e9e36783941438d17239e8520 # 3.1.1
  59. with:
  60. dependency-versions: "${{ matrix.dependencies }}"
  61. composer-options: "${{ matrix.composer-options }}"
  62. - name: "Run tests"
  63. if: "matrix.php-version >= '8.2'"
  64. run: "composer exec phpunit -- --exclude-group Elasticsearch --exclude-group Elastica"
  65. - name: "Run tests"
  66. if: "matrix.php-version == '8.1'"
  67. run: "composer exec phpunit -- --exclude-group Elasticsearch,Elastica"
  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. - "8.1"
  79. dependencies:
  80. - "highest"
  81. - "lowest"
  82. es-version:
  83. - "7.0.0"
  84. - "7.17.0"
  85. steps:
  86. - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
  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@dc110609b1cb3024477ead739ca23ab547b8b9ff # master
  97. with:
  98. stack-version: "${{ matrix.es-version }}"
  99. - uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # 2.36.0
  100. with:
  101. coverage: "none"
  102. php-version: "${{ matrix.php-version }}"
  103. extensions: mongodb, redis, amqp
  104. tools: "composer:v2"
  105. ini-values: "memory_limit=-1"
  106. - name: "Change dependencies"
  107. run: "composer require --no-update --no-interaction --dev elasticsearch/elasticsearch:^${{ matrix.es-version }}"
  108. - uses: ramsey/composer-install@3cf229dc2919194e9e36783941438d17239e8520 # 3.1.1
  109. with:
  110. dependency-versions: "${{ matrix.dependencies }}"
  111. - name: "Run tests"
  112. run: "composer exec phpunit -- --group Elasticsearch,Elastica"
  113. - name: "Run tests with psr/log 3"
  114. if: "contains(matrix.dependencies, 'highest') && matrix.php-version >= '8.0'"
  115. run: |
  116. composer remove --no-update --dev graylog2/gelf-php ruflin/elastica elasticsearch/elasticsearch rollbar/rollbar
  117. composer require --no-update --no-interaction --dev ruflin/elastica:^7 elasticsearch/elasticsearch:^7
  118. composer require --no-update psr/log:^3
  119. composer update
  120. composer exec phpunit -- --group Elasticsearch,Elastica
  121. tests-es-8:
  122. name: "CI with ES ${{ matrix.es-version }} on PHP ${{ matrix.php-version }}"
  123. needs: "tests"
  124. runs-on: "${{ matrix.operating-system }}"
  125. strategy:
  126. fail-fast: false
  127. matrix:
  128. operating-system:
  129. - "ubuntu-latest"
  130. php-version:
  131. - "8.1"
  132. dependencies:
  133. - "highest"
  134. - "lowest"
  135. es-version:
  136. - "8.0.0"
  137. - "8.2.0"
  138. steps:
  139. - uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
  140. # required for elasticsearch
  141. - name: Configure sysctl limits
  142. run: |
  143. sudo swapoff -a
  144. sudo sysctl -w vm.swappiness=1
  145. sudo sysctl -w fs.file-max=262144
  146. sudo sysctl -w vm.max_map_count=262144
  147. - name: Run Elasticsearch
  148. timeout-minutes: 3
  149. uses: elastic/elastic-github-actions/elasticsearch@dc110609b1cb3024477ead739ca23ab547b8b9ff # master
  150. with:
  151. stack-version: "${{ matrix.es-version }}"
  152. - uses: shivammathur/setup-php@44454db4f0199b8b9685a5d763dc37cbf79108e1 # 2.36.0
  153. with:
  154. coverage: "none"
  155. php-version: "${{ matrix.php-version }}"
  156. extensions: mongodb, redis, amqp
  157. tools: "composer:v2"
  158. ini-values: "memory_limit=-1"
  159. - name: "Change dependencies"
  160. run: |
  161. composer remove --no-update --dev graylog2/gelf-php ruflin/elastica elasticsearch/elasticsearch rollbar/rollbar
  162. composer require --no-update --no-interaction --dev elasticsearch/elasticsearch:^8 ruflin/elastica:^8
  163. - uses: ramsey/composer-install@3cf229dc2919194e9e36783941438d17239e8520 # 3.1.1
  164. with:
  165. dependency-versions: "${{ matrix.dependencies }}"
  166. - name: "Run tests"
  167. run: "composer exec phpunit -- --group Elasticsearch,Elastica"