run_test_cases.yaml 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223
  1. name: Run test case
  2. concurrency:
  3. group: test-${{ github.event_name }}-${{ github.ref }}
  4. cancel-in-progress: true
  5. on:
  6. push:
  7. branches:
  8. - '**'
  9. tags:
  10. - v*
  11. - e*
  12. pull_request:
  13. jobs:
  14. eunit_and_proper:
  15. strategy:
  16. matrix:
  17. otp:
  18. - 24.2.1-1
  19. elixir:
  20. - 1.13.3
  21. os:
  22. - ubuntu20.04
  23. arch:
  24. - amd64
  25. runs-on: ubuntu-20.04
  26. container: "ghcr.io/emqx/emqx-builder/5.0-8:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os }}"
  27. steps:
  28. - uses: actions/checkout@v2
  29. - name: Get deps git refs for cache
  30. id: deps-refs
  31. run: |
  32. scripts/get-dep-refs.sh
  33. make clean-all
  34. - name: load quicer cache
  35. uses: actions/cache@v2
  36. with:
  37. path: source/_build/default/lib/quicer/
  38. key: ${{ matrix.os }}-${{ matrix.otp }}-${{ matrix.arch }}-${{ steps.deps-refs.outputs.DEP_QUICER_REF }}
  39. # produces eunit.coverdata
  40. - name: eunit
  41. run: make eunit
  42. # produces proper.coverdata
  43. - name: proper
  44. run: make proper
  45. - uses: actions/upload-artifact@v2
  46. with:
  47. name: coverdata
  48. path: _build/test/cover
  49. find_apps:
  50. runs-on: ubuntu-20.04
  51. container: ghcr.io/emqx/emqx-builder/5.0-8:1.13.3-24.2.1-1-ubuntu20.04
  52. outputs:
  53. fast_ct_apps: ${{ steps.run_find_apps.outputs.fast_ct_apps }}
  54. docker_ct_apps: ${{ steps.run_find_apps.outputs.docker_ct_apps }}
  55. defaults:
  56. run:
  57. shell: bash
  58. steps:
  59. - uses: actions/checkout@v2
  60. - name: find apps
  61. id: run_find_apps
  62. run: |
  63. fast_ct_apps="$(./scripts/find-apps.sh --ct fast --json)"
  64. docker_ct_apps="$(./scripts/find-apps.sh --ct docker --json)"
  65. echo "::set-output name=fast_ct_apps::$fast_ct_apps"
  66. echo "::set-output name=docker_ct_apps::$docker_ct_apps"
  67. ct_docker:
  68. needs: find_apps
  69. strategy:
  70. fail-fast: false
  71. matrix:
  72. app_name: ${{ fromJson(needs.find_apps.outputs.docker_ct_apps) }}
  73. otp_release:
  74. - "erlang23"
  75. - "erlang24"
  76. runs-on: ubuntu-20.04
  77. defaults:
  78. run:
  79. shell: bash
  80. steps:
  81. - uses: actions/checkout@v2
  82. - name: docker compose up
  83. env:
  84. MONGO_TAG: 5
  85. MYSQL_TAG: 8
  86. PGSQL_TAG: 13
  87. REDIS_TAG: 6
  88. run: |
  89. docker-compose \
  90. -f .ci/docker-compose-file/docker-compose-mongo-single-tcp.yaml \
  91. -f .ci/docker-compose-file/docker-compose-mongo-single-tls.yaml \
  92. -f .ci/docker-compose-file/docker-compose-mysql-tcp.yaml \
  93. -f .ci/docker-compose-file/docker-compose-mysql-tls.yaml \
  94. -f .ci/docker-compose-file/docker-compose-pgsql-tcp.yaml \
  95. -f .ci/docker-compose-file/docker-compose-pgsql-tls.yaml \
  96. -f .ci/docker-compose-file/docker-compose-redis-single-tcp.yaml \
  97. -f .ci/docker-compose-file/docker-compose-redis-single-tls.yaml \
  98. -f .ci/docker-compose-file/docker-compose.yaml \
  99. up -d --build
  100. # produces <app-name>.coverdata
  101. - name: run common test
  102. run: |
  103. docker exec -i ${{ matrix.otp_release }} bash -c "make ${{ matrix.app_name }}-ct"
  104. - uses: actions/upload-artifact@v1
  105. if: matrix.otp_release == 'erlang24'
  106. with:
  107. name: coverdata
  108. path: _build/test/cover
  109. - uses: actions/upload-artifact@v1
  110. if: failure()
  111. with:
  112. name: logs_${{ matrix.otp_release }}
  113. path: _build/test/logs
  114. ct:
  115. needs: find_apps
  116. strategy:
  117. fail-fast: false
  118. matrix:
  119. app_name: ${{ fromJson(needs.find_apps.outputs.fast_ct_apps) }}
  120. otp:
  121. - 24.2.1-1
  122. elixir:
  123. - 1.13.3
  124. os:
  125. - ubuntu20.04
  126. arch:
  127. - amd64
  128. runs-on: ubuntu-20.04
  129. container: "ghcr.io/emqx/emqx-builder/5.0-8:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os }}"
  130. defaults:
  131. run:
  132. shell: bash
  133. steps:
  134. - uses: actions/checkout@v2
  135. # produces <app-name>.coverdata
  136. - name: run common test
  137. run: |
  138. make ${{ matrix.app_name }}-ct
  139. - uses: actions/upload-artifact@v1
  140. if: matrix.otp == '24.2.1-1'
  141. with:
  142. name: coverdata
  143. path: _build/test/cover
  144. - uses: actions/upload-artifact@v1
  145. if: failure()
  146. with:
  147. name: logs_${{ matrix.otp_release }}
  148. path: _build/test/logs
  149. make_cover:
  150. needs:
  151. - eunit_and_proper
  152. - ct
  153. - ct_docker
  154. strategy:
  155. matrix:
  156. otp:
  157. - 24.2.1-1
  158. elixir:
  159. - 1.13.3
  160. os:
  161. - ubuntu20.04
  162. arch:
  163. - amd64
  164. runs-on: ubuntu-20.04
  165. container: "ghcr.io/emqx/emqx-builder/5.0-8:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os }}"
  166. steps:
  167. - uses: actions/checkout@v2
  168. - name: Get deps git refs for cache
  169. id: deps-refs
  170. run: |
  171. scripts/get-dep-refs.sh
  172. make clean-all
  173. - name: load quicer cache
  174. uses: actions/cache@v2
  175. with:
  176. path: source/_build/default/lib/quicer/
  177. key: ${{ matrix.os }}-${{ matrix.otp }}-${{ matrix.arch }}-${{ steps.deps-refs.outputs.DEP_QUICER_REF }}
  178. - uses: actions/download-artifact@v2
  179. name: download coverdata
  180. with:
  181. name: coverdata
  182. path: _build/test/cover
  183. - name: make cover
  184. run: make cover
  185. - name: send to coveralls
  186. env:
  187. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  188. run: make coveralls
  189. # do this in a separate job
  190. finish:
  191. needs: make_cover
  192. runs-on: ubuntu-20.04
  193. steps:
  194. - name: Coveralls Finished
  195. env:
  196. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  197. run: |
  198. curl -v -k https://coveralls.io/webhook \
  199. --header "Content-Type: application/json" \
  200. --data "{\"repo_name\":\"$GITHUB_REPOSITORY\",\"repo_token\":\"$GITHUB_TOKEN\",\"payload\":{\"build_num\":$GITHUB_RUN_ID,\"status\":\"done\"}}" || true