continuous-integration.yml 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  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. dependencies: [highest]
  22. composer-options: [""]
  23. operating-system:
  24. - "ubuntu-latest"
  25. include:
  26. - php-version: "8.1"
  27. dependencies: lowest
  28. operating-system: ubuntu-latest
  29. - php-version: "8.4"
  30. dependencies: highest
  31. operating-system: ubuntu-latest
  32. composer-options: "--ignore-platform-req=php+"
  33. steps:
  34. - uses: "actions/checkout@v4"
  35. - name: Run CouchDB
  36. timeout-minutes: 3
  37. continue-on-error: true
  38. uses: "cobot/couchdb-action@master"
  39. with:
  40. couchdb version: '2.3.1'
  41. - name: Run MongoDB
  42. uses: supercharge/mongodb-github-action@1.11.0
  43. with:
  44. mongodb-version: 5.0
  45. - uses: "shivammathur/setup-php@v2"
  46. with:
  47. coverage: "none"
  48. php-version: "${{ matrix.php-version }}"
  49. extensions: mongodb, redis, amqp
  50. tools: "composer:v2"
  51. ini-values: "memory_limit=-1"
  52. - name: Add require for mongodb/mongodb to make tests runnable
  53. run: 'composer require mongodb/mongodb --dev --no-update'
  54. - name: "Change dependencies"
  55. run: |
  56. composer require --no-update --no-interaction --dev elasticsearch/elasticsearch:^7
  57. - uses: "ramsey/composer-install@v3"
  58. with:
  59. dependency-versions: "${{ matrix.dependencies }}"
  60. composer-options: "${{ matrix.composer-options }}"
  61. - name: "Run tests"
  62. if: "matrix.php-version >= '8.2'"
  63. run: "composer exec phpunit -- --exclude-group Elasticsearch --exclude-group Elastica"
  64. - name: "Run tests"
  65. if: "matrix.php-version == '8.1'"
  66. run: "composer exec phpunit -- --exclude-group Elasticsearch,Elastica"
  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. - uses: "actions/checkout@v4"
  86. # required for elasticsearch
  87. - name: Configure sysctl limits
  88. run: |
  89. sudo swapoff -a
  90. sudo sysctl -w vm.swappiness=1
  91. sudo sysctl -w fs.file-max=262144
  92. sudo sysctl -w vm.max_map_count=262144
  93. - name: Run Elasticsearch
  94. timeout-minutes: 3
  95. uses: elastic/elastic-github-actions/elasticsearch@master
  96. with:
  97. stack-version: "${{ matrix.es-version }}"
  98. - uses: "shivammathur/setup-php@v2"
  99. with:
  100. coverage: "none"
  101. php-version: "${{ matrix.php-version }}"
  102. extensions: mongodb, redis, amqp
  103. tools: "composer:v2"
  104. ini-values: "memory_limit=-1"
  105. - name: "Change dependencies"
  106. run: "composer require --no-update --no-interaction --dev elasticsearch/elasticsearch:^${{ matrix.es-version }}"
  107. - uses: "ramsey/composer-install@v3"
  108. with:
  109. dependency-versions: "${{ matrix.dependencies }}"
  110. - name: "Run tests"
  111. run: "composer exec phpunit -- --group Elasticsearch,Elastica"
  112. - name: "Run tests with psr/log 3"
  113. if: "contains(matrix.dependencies, 'highest') && matrix.php-version >= '8.0'"
  114. run: |
  115. composer remove --no-update --dev graylog2/gelf-php ruflin/elastica elasticsearch/elasticsearch rollbar/rollbar
  116. composer require --no-update --no-interaction --dev ruflin/elastica:^7 elasticsearch/elasticsearch:^7
  117. composer require --no-update psr/log:^3
  118. composer update
  119. composer exec phpunit -- --group Elasticsearch,Elastica
  120. tests-es-8:
  121. name: "CI with ES ${{ matrix.es-version }} on PHP ${{ matrix.php-version }}"
  122. needs: "tests"
  123. runs-on: "${{ matrix.operating-system }}"
  124. strategy:
  125. fail-fast: false
  126. matrix:
  127. operating-system:
  128. - "ubuntu-latest"
  129. php-version:
  130. - "8.1"
  131. dependencies:
  132. - "highest"
  133. - "lowest"
  134. es-version:
  135. - "8.0.0"
  136. - "8.2.0"
  137. steps:
  138. - uses: "actions/checkout@v4"
  139. # required for elasticsearch
  140. - name: Configure sysctl limits
  141. run: |
  142. sudo swapoff -a
  143. sudo sysctl -w vm.swappiness=1
  144. sudo sysctl -w fs.file-max=262144
  145. sudo sysctl -w vm.max_map_count=262144
  146. - name: Run Elasticsearch
  147. timeout-minutes: 3
  148. uses: elastic/elastic-github-actions/elasticsearch@master
  149. with:
  150. stack-version: "${{ matrix.es-version }}"
  151. - uses: "shivammathur/setup-php@v2"
  152. with:
  153. coverage: "none"
  154. php-version: "${{ matrix.php-version }}"
  155. extensions: mongodb, redis, amqp
  156. tools: "composer:v2"
  157. ini-values: "memory_limit=-1"
  158. - name: "Change dependencies"
  159. run: |
  160. composer remove --no-update --dev graylog2/gelf-php ruflin/elastica elasticsearch/elasticsearch rollbar/rollbar
  161. composer require --no-update --no-interaction --dev elasticsearch/elasticsearch:^8 ruflin/elastica:^8
  162. - uses: "ramsey/composer-install@v3"
  163. with:
  164. dependency-versions: "${{ matrix.dependencies }}"
  165. - name: "Run tests"
  166. run: "composer exec phpunit -- --group Elasticsearch,Elastica"