run_test_cases.yaml 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. name: Run test case
  2. on:
  3. push:
  4. tags:
  5. - v*
  6. - e*
  7. release:
  8. types:
  9. - published
  10. pull_request:
  11. jobs:
  12. run_static_analysis:
  13. runs-on: ubuntu-20.04
  14. container: emqx/build-env:erl23.2.7.2-emqx-1-ubuntu20.04
  15. steps:
  16. - uses: actions/checkout@v2
  17. - name: set git credentials
  18. run: |
  19. if make emqx-ee --dry-run > /dev/null 2>&1; then
  20. echo "https://ci%40emqx.io:${{ secrets.CI_GIT_TOKEN }}@github.com" > $HOME/.git-credentials
  21. git config --global credential.helper store
  22. fi
  23. - name: xref
  24. run: make xref
  25. - name: dialyzer
  26. run: make dialyzer
  27. run_proper_test:
  28. runs-on: ubuntu-20.04
  29. container: emqx/build-env:erl23.2.7.2-emqx-1-ubuntu20.04
  30. steps:
  31. - uses: actions/checkout@v2
  32. - name: set git credentials
  33. run: |
  34. if make emqx-ee --dry-run > /dev/null 2>&1; then
  35. echo "https://ci%40emqx.io:${{ secrets.CI_GIT_TOKEN }}@github.com" > $HOME/.git-credentials
  36. git config --global credential.helper store
  37. fi
  38. - name: proper
  39. run: make proper
  40. run_common_test:
  41. runs-on: ubuntu-20.04
  42. steps:
  43. - uses: actions/checkout@v2
  44. - name: set edition
  45. id: set_edition
  46. run: |
  47. if make emqx-ee --dry-run > /dev/null 2>&1; then
  48. echo "EDITION=enterprise" >> $GITHUB_ENV
  49. else
  50. echo "EDITION=opensource" >> $GITHUB_ENV
  51. fi
  52. - name: docker compose up
  53. if: env.EDITION == 'opensource'
  54. env:
  55. MYSQL_TAG: 8
  56. REDIS_TAG: 6
  57. MONGO_TAG: 4
  58. PGSQL_TAG: 13
  59. LDAP_TAG: 2.4.50
  60. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  61. run: |
  62. docker-compose \
  63. -f .ci/docker-compose-file/docker-compose.yaml \
  64. -f .ci/docker-compose-file/docker-compose-ldap-tcp.yaml \
  65. -f .ci/docker-compose-file/docker-compose-mongo-tcp.yaml \
  66. -f .ci/docker-compose-file/docker-compose-mysql-tcp.yaml \
  67. -f .ci/docker-compose-file/docker-compose-pgsql-tcp.yaml \
  68. -f .ci/docker-compose-file/docker-compose-redis-single-tcp.yaml \
  69. up -d --build
  70. - name: docker compose up
  71. if: env.EDITION == 'enterprise'
  72. env:
  73. MYSQL_TAG: 8
  74. REDIS_TAG: 6
  75. MONGO_TAG: 4
  76. PGSQL_TAG: 13
  77. LDAP_TAG: 2.4.50
  78. OPENTSDB_TAG: latest
  79. INFLUXDB_TAG: 1.7.6
  80. DYNAMODB_TAG: 1.11.477
  81. TIMESCALE_TAG: latest-pg11
  82. CASSANDRA_TAG: 3.11.6
  83. RABBITMQ_TAG: 3.7
  84. KAFKA_TAG: 2.5.0
  85. PULSAR_TAG: 2.3.2
  86. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  87. timeout-minutes: 20
  88. run: |
  89. docker-compose \
  90. -f .ci/docker-compose-file/docker-compose.yaml \
  91. -f .ci/docker-compose-file/docker-compose-ldap-tcp.yaml \
  92. -f .ci/docker-compose-file/docker-compose-mongo-tcp.yaml \
  93. -f .ci/docker-compose-file/docker-compose-mysql-tcp.yaml \
  94. -f .ci/docker-compose-file/docker-compose-pgsql-tcp.yaml \
  95. -f .ci/docker-compose-file/docker-compose-redis-single-tcp.yaml \
  96. -f .ci/docker-compose-file/docker-compose-enterprise.yaml \
  97. -f .ci/docker-compose-file/docker-compose-enterprise-cassandra-tcp.yaml \
  98. -f .ci/docker-compose-file/docker-compose-enterprise-dynamodb-tcp.yaml \
  99. -f .ci/docker-compose-file/docker-compose-enterprise-influxdb-tcp.yaml \
  100. -f .ci/docker-compose-file/docker-compose-enterprise-kafka-tcp.yaml \
  101. -f .ci/docker-compose-file/docker-compose-enterprise-opentsdb-tcp.yaml \
  102. -f .ci/docker-compose-file/docker-compose-enterprise-pulsar-tcp.yaml \
  103. -f .ci/docker-compose-file/docker-compose-enterprise-rabbit-tcp.yaml \
  104. -f .ci/docker-compose-file/docker-compose-enterprise-timescale-tcp.yaml \
  105. -f .ci/docker-compose-file/docker-compose-enterprise-mysql-client.yaml \
  106. -f .ci/docker-compose-file/docker-compose-enterprise-pgsql-and-timescale-client.yaml \
  107. up -d --build
  108. docker exec -i erlang bash -c "echo \"https://ci%40emqx.io:${{ secrets.CI_GIT_TOKEN }}@github.com\" > /root/.git-credentials && git config --global credential.helper store"
  109. while [ $(docker ps -a --filter name=client --filter exited=0 | wc -l) \
  110. != $(docker ps -a --filter name=client | wc -l) ]; do
  111. sleep 5
  112. done
  113. - name: run eunit
  114. run: |
  115. docker exec -i erlang bash -c "make eunit"
  116. - name: run common test
  117. run: |
  118. docker exec -i erlang bash -c "make ct"
  119. - name: run cover
  120. run: |
  121. printenv > .env
  122. docker exec -i erlang bash -c "make cover"
  123. docker exec --env-file .env -i erlang bash -c "make coveralls"
  124. - uses: actions/upload-artifact@v1
  125. if: failure()
  126. with:
  127. name: logs
  128. path: _build/test/logs
  129. - uses: actions/upload-artifact@v1
  130. with:
  131. name: cover
  132. path: _build/test/cover
  133. finish:
  134. needs: run_common_test
  135. runs-on: ubuntu-20.04
  136. steps:
  137. - name: Coveralls Finished
  138. env:
  139. GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
  140. run: |
  141. curl -v -k https://coveralls.io/webhook \
  142. --header "Content-Type: application/json" \
  143. --data "{\"repo_name\":\"$GITHUB_REPOSITORY\",\"repo_token\":\"$GITHUB_TOKEN\",\"payload\":{\"build_num\":$GITHUB_RUN_ID,\"status\":\"done\"}}" || true