Merge pull request #9975 from id/ci-export-docker-image-in-build-slim-packages
ci: export docker image in build-slim-packages
This commit is contained in:
commit
62988c9698
|
@ -154,6 +154,50 @@ jobs:
|
|||
name: ${{ matrix.os }}
|
||||
path: _packages/**/*
|
||||
|
||||
docker:
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
profile:
|
||||
- emqx
|
||||
- emqx-enterprise
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: prepare
|
||||
run: |
|
||||
EMQX_NAME=${{ matrix.profile }}
|
||||
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: |
|
||||
CID=$(docker run -d --rm -P $EMQX_IMAGE_TAG)
|
||||
HTTP_PORT=$(docker inspect --format='{{(index (index .NetworkSettings.Ports "18083/tcp") 0).HostPort}}' $CID)
|
||||
./scripts/test/emqx-smoke-test.sh localhost $HTTP_PORT
|
||||
docker stop $CID
|
||||
- name: export docker image
|
||||
run: |
|
||||
docker save $EMQX_IMAGE_TAG | gzip > $EMQX_NAME-$PKG_VSN.tar.gz
|
||||
- uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: "${{ matrix.profile }}-docker"
|
||||
path: "${{ env.EMQX_NAME }}-${{ env.PKG_VSN }}.tar.gz"
|
||||
|
||||
spellcheck:
|
||||
needs: linux
|
||||
strategy:
|
||||
|
|
18
build
18
build
|
@ -1,18 +1,12 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# This script helps to build release artifacts.
|
||||
# arg1: profile, e.g. emqx | emqx-pkg
|
||||
# arg1: profile, e.g. emqx | emqx-enterprise
|
||||
# arg2: artifact, e.g. rel | relup | tgz | pkg
|
||||
|
||||
if [[ -n "$DEBUG" ]]; then
|
||||
set -x
|
||||
fi
|
||||
set -euo pipefail
|
||||
|
||||
DEBUG="${DEBUG:-0}"
|
||||
if [ "$DEBUG" -eq 1 ]; then
|
||||
set -x
|
||||
fi
|
||||
[ "${DEBUG:-0}" -eq 1 ] && set -x
|
||||
|
||||
PROFILE_ARG="$1"
|
||||
ARTIFACT="$2"
|
||||
|
@ -318,6 +312,12 @@ make_tgz() {
|
|||
log "Archive sha256sum: $(cat "${target}.sha256")"
|
||||
}
|
||||
|
||||
trap docker_cleanup EXIT
|
||||
|
||||
docker_cleanup() {
|
||||
rm -f ./.dockerignore >/dev/null
|
||||
}
|
||||
|
||||
## This function builds the default docker image based on debian 11
|
||||
make_docker() {
|
||||
EMQX_BUILDER="${EMQX_BUILDER:-${EMQX_DEFAULT_BUILDER}}"
|
||||
|
@ -329,6 +329,7 @@ make_docker() {
|
|||
local default_tag="emqx/${PROFILE%%-elixir}:${PKG_VSN}"
|
||||
EMQX_IMAGE_TAG="${EMQX_IMAGE_TAG:-$default_tag}"
|
||||
|
||||
echo '_build' >> ./.dockerignore
|
||||
set -x
|
||||
docker build --no-cache --pull \
|
||||
--build-arg BUILD_FROM="${EMQX_BUILDER}" \
|
||||
|
@ -336,6 +337,7 @@ make_docker() {
|
|||
--build-arg EMQX_NAME="$PROFILE" \
|
||||
--tag "${EMQX_IMAGE_TAG}" \
|
||||
-f "${EMQX_DOCKERFILE}" .
|
||||
[[ "${DEBUG:-}" -eq 1 ]] || set +x
|
||||
}
|
||||
|
||||
function join {
|
||||
|
|
|
@ -10,11 +10,9 @@ ENV EMQX_RELUP=false
|
|||
RUN export PROFILE=${EMQX_NAME%%-elixir} \
|
||||
&& export EMQX_NAME1=$EMQX_NAME \
|
||||
&& export EMQX_NAME=$PROFILE \
|
||||
&& export EMQX_LIB_PATH="_build/$EMQX_NAME/lib" \
|
||||
&& export EMQX_REL_PATH="/emqx/_build/$EMQX_NAME/rel/emqx" \
|
||||
&& export EMQX_REL_FORM='docker' \
|
||||
&& cd /emqx \
|
||||
&& rm -rf $EMQX_LIB_PATH \
|
||||
&& make $EMQX_NAME1 \
|
||||
&& rm -f $EMQX_REL_PATH/*.tar.gz \
|
||||
&& mkdir -p /emqx-rel \
|
||||
|
|
|
@ -103,16 +103,7 @@ emqx_test(){
|
|||
cat "${PACKAGE_PATH}"/emqx/log/emqx.log.1 || true
|
||||
exit 1
|
||||
fi
|
||||
IDLE_TIME=0
|
||||
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
|
||||
"$SCRIPTS/test/emqx-smoke-test.sh" 127.0.0.1 18083
|
||||
pytest -v /paho-mqtt-testing/interoperability/test_client/V5/test_connect.py::test_basic
|
||||
if ! "${PACKAGE_PATH}"/emqx/bin/emqx stop; then
|
||||
cat "${PACKAGE_PATH}"/emqx/log/erlang.log.1 || true
|
||||
|
@ -208,16 +199,7 @@ EOF
|
|||
cat /var/log/emqx/emqx.log.1 || true
|
||||
exit 1
|
||||
fi
|
||||
IDLE_TIME=0
|
||||
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
|
||||
"$SCRIPTS/test/emqx-smoke-test.sh" 127.0.0.1 18083
|
||||
pytest -v /paho-mqtt-testing/interoperability/test_client/V5/test_connect.py::test_basic
|
||||
# shellcheck disable=SC2009 # pgrep does not support Extended Regular Expressions
|
||||
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