name: Docker image tests concurrency: group: docker-tests-${{ github.event_name }}-${{ github.ref }} cancel-in-progress: true on: workflow_call: inputs: runner: required: true type: string version-emqx: required: true type: string version-emqx-enterprise: required: true type: string # on: # push: # branches: # - master # - 'ci/**' # tags: # - v* # pull_request: jobs: basic-tests: runs-on: ${{ inputs.runner }} strategy: fail-fast: false matrix: profile: - ["emqx", "5.0.16"] - ["emqx-elixir", "5.0.16"] - ["emqx-enterprise", "5.0.1"] env: EMQX_NAME: ${{ matrix.profile[0] }} PKG_VSN: ${{ matrix.profile[0] == 'emqx-enterprise' && inputs.version-emqx-enterprise || inputs.version-emqx }} EMQX_IMAGE_OLD_VERSION_TAG: emqx/${{ matrix.profile[0] }}:${{ matrix.profile[1] }} steps: - uses: actions/checkout@v3 - uses: actions/download-artifact@v3 with: name: ${{ env.EMQX_NAME }}-docker path: /tmp - name: load docker image run: | EMQX_IMAGE_TAG=$(docker load < /tmp/${EMQX_NAME}-${PKG_VSN}.tar.gz 2>/dev/null | sed 's/Loaded image: //g') echo "EMQX_IMAGE_TAG=$EMQX_IMAGE_TAG" >> $GITHUB_ENV - name: test two nodes cluster with proto_dist=inet_tls in docker run: | ./scripts/test/start-two-nodes-in-docker.sh -P $EMQX_IMAGE_TAG $EMQX_IMAGE_OLD_VERSION_TAG HTTP_PORT=$(docker inspect --format='{{(index (index .NetworkSettings.Ports "18083/tcp") 0).HostPort}}' haproxy) ./scripts/test/emqx-smoke-test.sh localhost $HTTP_PORT ./scripts/test/start-two-nodes-in-docker.sh -c - name: dashboard tests working-directory: ./scripts/ui-tests run: | set -eu docker compose up --abort-on-container-exit --exit-code-from selenium - name: cleanup if: always() working-directory: ./scripts/ui-tests run: | docker compose rm -fs pytest: runs-on: ${{ inputs.runner }} env: EMQX_NAME: ${{ matrix.profile }} PKG_VSN: ${{ matrix.profile == 'emqx-enterprise' && inputs.version-emqx-enterprise || inputs.version-emqx }} DB_BACKEND: ${{ matrix.cluster_db_backend }} strategy: fail-fast: false matrix: profile: - emqx - emqx-enterprise - emqx-elixir cluster_db_backend: - mnesia - rlog steps: - uses: AutoModality/action-clean@v1 - uses: actions/checkout@v3 - uses: actions/download-artifact@v3 with: name: ${{ env.EMQX_NAME }}-docker path: /tmp - name: load docker image run: | EMQX_IMAGE_TAG=$(docker load < /tmp/${EMQX_NAME}-${PKG_VSN}.tar.gz 2>/dev/null | sed 's/Loaded image: //g') echo "EMQX_IMAGE_TAG=$EMQX_IMAGE_TAG" >> $GITHUB_ENV - name: run emqx timeout-minutes: 5 run: | ./.ci/docker-compose-file/scripts/run-emqx.sh $EMQX_IMAGE_TAG $DB_BACKEND - name: make paho tests run: | if ! docker exec -i python /scripts/pytest.sh "$DB_BACKEND"; then echo "DUMP_CONTAINER_LOGS_BGN" echo "============== haproxy ==============" docker logs haproxy echo "============== node1 ==============" docker logs node1.emqx.io echo "============== node2 ==============" docker logs node2.emqx.io echo "DUMP_CONTAINER_LOGS_END" exit 1 fi # simple smoke test for node_dump - name: test node_dump run: | docker exec -u root node1.emqx.io apt update && apt install -y net-tools docker exec node1.emqx.io node_dump