2
0

continuous-integration.yml 5.6 KB

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