ci: run start-two-nodes-in-docker.sh test script in CI
Closes: EMQX-8884
This commit is contained in:
parent
f4472f66de
commit
9f006d0e2a
|
@ -165,19 +165,21 @@ jobs:
|
||||||
fail-fast: false
|
fail-fast: false
|
||||||
matrix:
|
matrix:
|
||||||
profile:
|
profile:
|
||||||
- emqx
|
- ["emqx", "5.0.16"]
|
||||||
- emqx-enterprise
|
- ["emqx-enterprise", "5.0.1"]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v3
|
- uses: actions/checkout@v3
|
||||||
- name: prepare
|
- name: prepare
|
||||||
run: |
|
run: |
|
||||||
EMQX_NAME=${{ matrix.profile }}
|
EMQX_NAME=${{ matrix.profile[0] }}
|
||||||
PKG_VSN=${PKG_VSN:-$(./pkg-vsn.sh $EMQX_NAME)}
|
PKG_VSN=${PKG_VSN:-$(./pkg-vsn.sh $EMQX_NAME)}
|
||||||
EMQX_IMAGE_TAG=emqx/$EMQX_NAME:test
|
EMQX_IMAGE_TAG=emqx/$EMQX_NAME:test
|
||||||
|
EMQX_IMAGE_OLD_VERSION_TAG=emqx/$EMQX_NAME:${{ matrix.profile[1] }}
|
||||||
echo "EMQX_NAME=$EMQX_NAME" >> $GITHUB_ENV
|
echo "EMQX_NAME=$EMQX_NAME" >> $GITHUB_ENV
|
||||||
echo "PKG_VSN=$PKG_VSN" >> $GITHUB_ENV
|
echo "PKG_VSN=$PKG_VSN" >> $GITHUB_ENV
|
||||||
echo "EMQX_IMAGE_TAG=$EMQX_IMAGE_TAG" >> $GITHUB_ENV
|
echo "EMQX_IMAGE_TAG=$EMQX_IMAGE_TAG" >> $GITHUB_ENV
|
||||||
|
echo "EMQX_IMAGE_OLD_VERSION_TAG=$EMQX_IMAGE_OLD_VERSION_TAG" >> $GITHUB_ENV
|
||||||
- uses: docker/setup-buildx-action@v2
|
- uses: docker/setup-buildx-action@v2
|
||||||
- name: build and export to Docker
|
- name: build and export to Docker
|
||||||
uses: docker/build-push-action@v4
|
uses: docker/build-push-action@v4
|
||||||
|
@ -194,12 +196,19 @@ jobs:
|
||||||
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)
|
||||||
./scripts/test/emqx-smoke-test.sh localhost $HTTP_PORT
|
./scripts/test/emqx-smoke-test.sh localhost $HTTP_PORT
|
||||||
docker stop $CID
|
docker stop $CID
|
||||||
|
- 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
|
||||||
|
# cleanup
|
||||||
|
./scripts/test/start-two-nodes-in-docker.sh -c
|
||||||
- name: export docker image
|
- name: export docker image
|
||||||
run: |
|
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[0] }}-docker"
|
||||||
path: "${{ env.EMQX_NAME }}-${{ env.PKG_VSN }}.tar.gz"
|
path: "${{ env.EMQX_NAME }}-${{ env.PKG_VSN }}.tar.gz"
|
||||||
|
|
||||||
spellcheck:
|
spellcheck:
|
||||||
|
|
|
@ -10,19 +10,36 @@ set -euo pipefail
|
||||||
# ensure dir
|
# ensure dir
|
||||||
cd -P -- "$(dirname -- "$0")/../../"
|
cd -P -- "$(dirname -- "$0")/../../"
|
||||||
|
|
||||||
IMAGE1="${1}"
|
HAPROXY_PORTS=(-p 18083:18083 -p 8883:8883 -p 8084:8084)
|
||||||
IMAGE2="${2:-${IMAGE1}}"
|
|
||||||
|
|
||||||
NET='emqx.io'
|
NET='emqx.io'
|
||||||
NODE1="node1.$NET"
|
NODE1="node1.$NET"
|
||||||
NODE2="node2.$NET"
|
NODE2="node2.$NET"
|
||||||
COOKIE='this-is-a-secret'
|
COOKIE='this-is-a-secret'
|
||||||
|
|
||||||
## clean up
|
cleanup() {
|
||||||
docker rm -f haproxy >/dev/null 2>&1 || true
|
docker rm -f haproxy >/dev/null 2>&1 || true
|
||||||
docker rm -f "$NODE1" >/dev/null 2>&1 || true
|
docker rm -f "$NODE1" >/dev/null 2>&1 || true
|
||||||
docker rm -f "$NODE2" >/dev/null 2>&1 || true
|
docker rm -f "$NODE2" >/dev/null 2>&1 || true
|
||||||
docker network rm "$NET" >/dev/null 2>&1 || true
|
docker network rm "$NET" >/dev/null 2>&1 || true
|
||||||
|
}
|
||||||
|
|
||||||
|
while getopts ":Pc" opt
|
||||||
|
do
|
||||||
|
case $opt in
|
||||||
|
# -P option is treated similarly to docker run -P:
|
||||||
|
# publish ports to random available host ports
|
||||||
|
P) HAPROXY_PORTS=(-p 18083 -p 8883 -p 8084);;
|
||||||
|
c) cleanup; exit 0;;
|
||||||
|
*) ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
shift $((OPTIND - 1))
|
||||||
|
|
||||||
|
IMAGE1="${1}"
|
||||||
|
IMAGE2="${2:-${IMAGE1}}"
|
||||||
|
|
||||||
|
cleanup
|
||||||
|
|
||||||
docker network create "$NET"
|
docker network create "$NET"
|
||||||
|
|
||||||
|
@ -128,18 +145,18 @@ backend emqx_wss_back
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
|
|
||||||
docker run -d --name haproxy \
|
haproxy_cid=$(docker run -d --name haproxy \
|
||||||
--net "$NET" \
|
--net "$NET" \
|
||||||
-v "$(pwd)/tmp/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg" \
|
-v "$(pwd)/tmp/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg" \
|
||||||
-v "$(pwd)/apps/emqx/etc/certs:/usr/local/etc/haproxy/certs" \
|
-v "$(pwd)/apps/emqx/etc/certs:/usr/local/etc/haproxy/certs" \
|
||||||
-w /usr/local/etc/haproxy \
|
-w /usr/local/etc/haproxy \
|
||||||
-p 18083:18083 \
|
"${HAPROXY_PORTS[@]}" \
|
||||||
-p 8883:8883 \
|
|
||||||
-p 8084:8084 \
|
|
||||||
"haproxy:2.4" \
|
"haproxy:2.4" \
|
||||||
bash -c 'set -euo pipefail;
|
bash -c 'set -euo pipefail;
|
||||||
cat certs/cert.pem certs/key.pem > /tmp/emqx.pem;
|
cat certs/cert.pem certs/key.pem > /tmp/emqx.pem;
|
||||||
haproxy -f haproxy.cfg'
|
haproxy -f haproxy.cfg')
|
||||||
|
|
||||||
|
haproxy_ssl_port=$(docker inspect --format='{{(index (index .NetworkSettings.Ports "8084/tcp") 0).HostPort}}' "$haproxy_cid")
|
||||||
|
|
||||||
wait_limit=60
|
wait_limit=60
|
||||||
wait_for_emqx() {
|
wait_for_emqx() {
|
||||||
|
@ -165,7 +182,7 @@ wait_for_haproxy() {
|
||||||
-CAfile apps/emqx/etc/certs/cacert.pem \
|
-CAfile apps/emqx/etc/certs/cacert.pem \
|
||||||
-cert apps/emqx/etc/certs/cert.pem \
|
-cert apps/emqx/etc/certs/cert.pem \
|
||||||
-key apps/emqx/etc/certs/key.pem \
|
-key apps/emqx/etc/certs/key.pem \
|
||||||
localhost:8084 </dev/null; do
|
localhost:"$haproxy_ssl_port" </dev/null; do
|
||||||
wait_sec=$(( wait_sec + 1 ))
|
wait_sec=$(( wait_sec + 1 ))
|
||||||
if [ $wait_sec -gt "$wait_limit" ]; then
|
if [ $wait_sec -gt "$wait_limit" ]; then
|
||||||
echo "timeout wait for haproxy"
|
echo "timeout wait for haproxy"
|
||||||
|
|
Loading…
Reference in New Issue