name: Run test case on: push: tags: - v* - e* release: types: - published pull_request: jobs: run_static_analysis: runs-on: ubuntu-20.04 container: emqx/build-env:erl23.2.7.2-emqx-2-ubuntu20.04 steps: - uses: actions/checkout@v2 - name: set git credentials run: | if make emqx-ee --dry-run > /dev/null 2>&1; then echo "https://ci%40emqx.io:${{ secrets.CI_GIT_TOKEN }}@github.com" > $HOME/.git-credentials git config --global credential.helper store fi - name: xref run: make xref - name: dialyzer run: make dialyzer run_proper_test: runs-on: ubuntu-20.04 container: emqx/build-env:erl23.2.7.2-emqx-2-ubuntu20.04 steps: - uses: actions/checkout@v2 - name: set git credentials run: | if make emqx-ee --dry-run > /dev/null 2>&1; then echo "https://ci%40emqx.io:${{ secrets.CI_GIT_TOKEN }}@github.com" > $HOME/.git-credentials git config --global credential.helper store fi - name: proper run: make proper run_common_test: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - name: set edition id: set_edition run: | if make emqx-ee --dry-run > /dev/null 2>&1; then echo "EDITION=enterprise" >> $GITHUB_ENV else echo "EDITION=opensource" >> $GITHUB_ENV fi - name: docker compose up if: env.EDITION == 'opensource' env: MYSQL_TAG: 8 REDIS_TAG: 6 MONGO_TAG: 4 PGSQL_TAG: 13 LDAP_TAG: 2.4.50 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | docker-compose \ -f .ci/docker-compose-file/docker-compose.yaml \ -f .ci/docker-compose-file/docker-compose-ldap-tcp.yaml \ -f .ci/docker-compose-file/docker-compose-mongo-tcp.yaml \ -f .ci/docker-compose-file/docker-compose-mysql-tcp.yaml \ -f .ci/docker-compose-file/docker-compose-pgsql-tcp.yaml \ -f .ci/docker-compose-file/docker-compose-redis-single-tcp.yaml \ up -d --build - name: docker compose up if: env.EDITION == 'enterprise' env: MYSQL_TAG: 8 REDIS_TAG: 6 MONGO_TAG: 4 PGSQL_TAG: 13 LDAP_TAG: 2.4.50 OPENTSDB_TAG: latest INFLUXDB_TAG: 1.7.6 DYNAMODB_TAG: 1.11.477 TIMESCALE_TAG: latest-pg11 CASSANDRA_TAG: 3.11.6 RABBITMQ_TAG: 3.7 KAFKA_TAG: 2.5.0 PULSAR_TAG: 2.3.2 GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} timeout-minutes: 20 run: | docker-compose \ -f .ci/docker-compose-file/docker-compose.yaml \ -f .ci/docker-compose-file/docker-compose-ldap-tcp.yaml \ -f .ci/docker-compose-file/docker-compose-mongo-tcp.yaml \ -f .ci/docker-compose-file/docker-compose-mysql-tcp.yaml \ -f .ci/docker-compose-file/docker-compose-pgsql-tcp.yaml \ -f .ci/docker-compose-file/docker-compose-redis-single-tcp.yaml \ -f .ci/docker-compose-file/docker-compose-enterprise.yaml \ -f .ci/docker-compose-file/docker-compose-enterprise-cassandra-tcp.yaml \ -f .ci/docker-compose-file/docker-compose-enterprise-dynamodb-tcp.yaml \ -f .ci/docker-compose-file/docker-compose-enterprise-influxdb-tcp.yaml \ -f .ci/docker-compose-file/docker-compose-enterprise-kafka-tcp.yaml \ -f .ci/docker-compose-file/docker-compose-enterprise-opentsdb-tcp.yaml \ -f .ci/docker-compose-file/docker-compose-enterprise-pulsar-tcp.yaml \ -f .ci/docker-compose-file/docker-compose-enterprise-rabbit-tcp.yaml \ -f .ci/docker-compose-file/docker-compose-enterprise-timescale-tcp.yaml \ -f .ci/docker-compose-file/docker-compose-enterprise-mysql-client.yaml \ -f .ci/docker-compose-file/docker-compose-enterprise-pgsql-and-timescale-client.yaml \ up -d --build 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" while [ $(docker ps -a --filter name=client --filter exited=0 | wc -l) \ != $(docker ps -a --filter name=client | wc -l) ]; do sleep 5 done - name: run eunit run: | docker exec -i erlang bash -c "make eunit" - name: run common test run: | docker exec -i erlang bash -c "make ct" - name: run cover run: | printenv > .env docker exec -i erlang bash -c "make cover" docker exec --env-file .env -i erlang bash -c "make coveralls" - name: cat rebar.crashdump if: failure() run: if [ -f 'rebar3.crashdump' ];then cat 'rebar3.crashdump' fi - uses: actions/upload-artifact@v1 if: failure() with: name: logs path: _build/test/logs - uses: actions/upload-artifact@v1 with: name: cover path: _build/test/cover finish: needs: run_common_test runs-on: ubuntu-20.04 steps: - name: Coveralls Finished env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | curl -v -k https://coveralls.io/webhook \ --header "Content-Type: application/json" \ --data "{\"repo_name\":\"$GITHUB_REPOSITORY\",\"repo_token\":\"$GITHUB_TOKEN\",\"payload\":{\"build_num\":$GITHUB_RUN_ID,\"status\":\"done\"}}" || true