run_test_cases.yaml 5.4 KB

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