ci: test docker images and packages in the same way
This commit is contained in:
parent
b90d371836
commit
739455d844
|
@ -155,7 +155,7 @@ jobs:
|
||||||
path: _packages/**/*
|
path: _packages/**/*
|
||||||
|
|
||||||
docker:
|
docker:
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-22.04
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
|
@ -168,32 +168,35 @@ jobs:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: prepare
|
- name: prepare
|
||||||
run: |
|
run: |
|
||||||
echo "EMQX_NAME=${{ matrix.profile }}" >> $GITHUB_ENV
|
EMQX_NAME=${{ matrix.profile }}
|
||||||
- name: build and test docker image
|
PKG_VSN=${PKG_VSN:-$(./pkg-vsn.sh $EMQX_NAME)}
|
||||||
|
EMQX_IMAGE_TAG=emqx/$EMQX_NAME:test
|
||||||
|
echo "EMQX_NAME=$EMQX_NAME" >> $GITHUB_ENV
|
||||||
|
echo "PKG_VSN=$PKG_VSN" >> $GITHUB_ENV
|
||||||
|
echo "EMQX_IMAGE_TAG=$EMQX_IMAGE_TAG" >> $GITHUB_ENV
|
||||||
|
- uses: docker/setup-buildx-action@v2
|
||||||
|
- name: build and export to Docker
|
||||||
|
uses: docker/build-push-action@v4
|
||||||
|
with:
|
||||||
|
context: .
|
||||||
|
file: ./deploy/docker/Dockerfile
|
||||||
|
load: true
|
||||||
|
tags: ${{ env.EMQX_IMAGE_TAG }}
|
||||||
|
build-args: |
|
||||||
|
EMQX_NAME=${{ env.EMQX_NAME }}
|
||||||
|
- name: test docker image
|
||||||
run: |
|
run: |
|
||||||
set -x
|
|
||||||
make $EMQX_NAME-docker
|
|
||||||
PKG_VSN="${PKG_VSN:-$(./pkg-vsn.sh $EMQX_NAME)}"
|
|
||||||
EMQX_IMAGE_TAG="${EMQX_IMAGE_TAG:-emqx/$EMQX_NAME:$PKG_VSN}"
|
|
||||||
CID=$(docker run -d --rm -P $EMQX_IMAGE_TAG)
|
CID=$(docker run -d --rm -P $EMQX_IMAGE_TAG)
|
||||||
HTTP_PORT=$(docker inspect --format='{{(index (index .NetworkSettings.Ports "18083/tcp") 0).HostPort}}' $CID)
|
HTTP_PORT=$(docker inspect --format='{{(index (index .NetworkSettings.Ports "18083/tcp") 0).HostPort}}' $CID)
|
||||||
IDLE_TIME=0
|
./scripts/test/emqx-smoke-test.sh localhost $HTTP_PORT
|
||||||
while ! curl http://127.0.0.1:$HTTP_PORT/status >/dev/null 2>&1; do
|
|
||||||
if [ $IDLE_TIME -gt 5 ]
|
|
||||||
then
|
|
||||||
echo "emqx running error"
|
|
||||||
docker rm -f $CID
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
sleep 5
|
|
||||||
IDLE_TIME=$((IDLE_TIME+1))
|
|
||||||
done
|
|
||||||
docker stop $CID
|
docker stop $CID
|
||||||
|
- name: export docker image
|
||||||
|
run: |
|
||||||
docker save $EMQX_IMAGE_TAG | gzip > $EMQX_NAME-$PKG_VSN.tar.gz
|
docker save $EMQX_IMAGE_TAG | gzip > $EMQX_NAME-$PKG_VSN.tar.gz
|
||||||
- uses: actions/upload-artifact@v3
|
- uses: actions/upload-artifact@v3
|
||||||
with:
|
with:
|
||||||
name: "${{ matrix.profile }}-docker"
|
name: "${{ matrix.profile }}-docker"
|
||||||
path: "*.tar.gz"
|
path: "${{ env.EMQX_NAME }}-${{ env.PKG_VSN }}.tar.gz"
|
||||||
|
|
||||||
spellcheck:
|
spellcheck:
|
||||||
needs: linux
|
needs: linux
|
||||||
|
|
2
build
2
build
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
[ ${DEBUG:-0} -eq 1 ] && set -x
|
[ "${DEBUG:-0}" -eq 1 ] && set -x
|
||||||
|
|
||||||
PROFILE_ARG="$1"
|
PROFILE_ARG="$1"
|
||||||
ARTIFACT="$2"
|
ARTIFACT="$2"
|
||||||
|
|
|
@ -103,16 +103,7 @@ emqx_test(){
|
||||||
cat "${PACKAGE_PATH}"/emqx/log/emqx.log.1 || true
|
cat "${PACKAGE_PATH}"/emqx/log/emqx.log.1 || true
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
IDLE_TIME=0
|
"$SCRIPTS/test/emqx-smoke-test.sh" 127.0.0.1 18083
|
||||||
while ! curl http://127.0.0.1:18083/status >/dev/null 2>&1; do
|
|
||||||
if [ $IDLE_TIME -gt 10 ]
|
|
||||||
then
|
|
||||||
echo "emqx running error"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
sleep 10
|
|
||||||
IDLE_TIME=$((IDLE_TIME+1))
|
|
||||||
done
|
|
||||||
pytest -v /paho-mqtt-testing/interoperability/test_client/V5/test_connect.py::test_basic
|
pytest -v /paho-mqtt-testing/interoperability/test_client/V5/test_connect.py::test_basic
|
||||||
if ! "${PACKAGE_PATH}"/emqx/bin/emqx stop; then
|
if ! "${PACKAGE_PATH}"/emqx/bin/emqx stop; then
|
||||||
cat "${PACKAGE_PATH}"/emqx/log/erlang.log.1 || true
|
cat "${PACKAGE_PATH}"/emqx/log/erlang.log.1 || true
|
||||||
|
@ -208,16 +199,7 @@ EOF
|
||||||
cat /var/log/emqx/emqx.log.1 || true
|
cat /var/log/emqx/emqx.log.1 || true
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
IDLE_TIME=0
|
"$SCRIPTS/test/emqx-smoke-test.sh" 127.0.0.1 18083
|
||||||
while ! curl http://127.0.0.1:18083/status >/dev/null 2>&1; do
|
|
||||||
if [ $IDLE_TIME -gt 10 ]
|
|
||||||
then
|
|
||||||
echo "emqx running error"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
sleep 10
|
|
||||||
IDLE_TIME=$((IDLE_TIME+1))
|
|
||||||
done
|
|
||||||
pytest -v /paho-mqtt-testing/interoperability/test_client/V5/test_connect.py::test_basic
|
pytest -v /paho-mqtt-testing/interoperability/test_client/V5/test_connect.py::test_basic
|
||||||
# shellcheck disable=SC2009 # pgrep does not support Extended Regular Expressions
|
# shellcheck disable=SC2009 # pgrep does not support Extended Regular Expressions
|
||||||
ps -ef | grep -E '\-progname\s.+emqx\s'
|
ps -ef | grep -E '\-progname\s.+emqx\s'
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
[ $# -ne 2 ] && { echo "Usage: $0 ip port"; exit 1; }
|
||||||
|
|
||||||
|
IP=$1
|
||||||
|
PORT=$2
|
||||||
|
URL="http://$IP:$PORT/status"
|
||||||
|
|
||||||
|
ATTEMPTS=10
|
||||||
|
while ! curl "$URL" >/dev/null 2>&1; do
|
||||||
|
if [ $ATTEMPTS -eq 0 ]; then
|
||||||
|
echo "emqx is not responding on $URL"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
sleep 5
|
||||||
|
ATTEMPTS=$((ATTEMPTS-1))
|
||||||
|
done
|
Loading…
Reference in New Issue