From b90d3718360e513730b28ecfc24ba3a09288d30f Mon Sep 17 00:00:00 2001 From: Ivan Dyachkov Date: Wed, 15 Feb 2023 15:18:52 +0100 Subject: [PATCH] ci: export docker image in build-slim-packages --- .github/workflows/build_slim_packages.yaml | 41 ++++++++++++++++++++++ build | 18 +++++----- deploy/docker/Dockerfile | 2 -- 3 files changed, 51 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build_slim_packages.yaml b/.github/workflows/build_slim_packages.yaml index 434d1e790..83d7588ef 100644 --- a/.github/workflows/build_slim_packages.yaml +++ b/.github/workflows/build_slim_packages.yaml @@ -154,6 +154,47 @@ jobs: name: ${{ matrix.os }} path: _packages/**/* + docker: + runs-on: ubuntu-20.04 + + strategy: + fail-fast: false + matrix: + profile: + - emqx + - emqx-enterprise + + steps: + - uses: actions/checkout@v3 + - name: prepare + run: | + echo "EMQX_NAME=${{ matrix.profile }}" >> $GITHUB_ENV + - name: build and test docker image + 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) + HTTP_PORT=$(docker inspect --format='{{(index (index .NetworkSettings.Ports "18083/tcp") 0).HostPort}}' $CID) + IDLE_TIME=0 + 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 save $EMQX_IMAGE_TAG | gzip > $EMQX_NAME-$PKG_VSN.tar.gz + - uses: actions/upload-artifact@v3 + with: + name: "${{ matrix.profile }}-docker" + path: "*.tar.gz" + spellcheck: needs: linux strategy: diff --git a/build b/build index 195464612..82946eb7f 100755 --- a/build +++ b/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 { diff --git a/deploy/docker/Dockerfile b/deploy/docker/Dockerfile index d424fb027..f26926bce 100644 --- a/deploy/docker/Dockerfile +++ b/deploy/docker/Dockerfile @@ -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 \