ci: export docker image in build-slim-packages

This commit is contained in:
Ivan Dyachkov 2023-02-15 15:18:52 +01:00
parent 321f86032f
commit b90d371836
3 changed files with 51 additions and 10 deletions

View File

@ -154,6 +154,47 @@ jobs:
name: ${{ matrix.os }} name: ${{ matrix.os }}
path: _packages/**/* 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: spellcheck:
needs: linux needs: linux
strategy: strategy:

18
build
View File

@ -1,18 +1,12 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# This script helps to build release artifacts. # 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 # arg2: artifact, e.g. rel | relup | tgz | pkg
if [[ -n "$DEBUG" ]]; then
set -x
fi
set -euo pipefail set -euo pipefail
DEBUG="${DEBUG:-0}" [ ${DEBUG:-0} -eq 1 ] && set -x
if [ "$DEBUG" -eq 1 ]; then
set -x
fi
PROFILE_ARG="$1" PROFILE_ARG="$1"
ARTIFACT="$2" ARTIFACT="$2"
@ -318,6 +312,12 @@ make_tgz() {
log "Archive sha256sum: $(cat "${target}.sha256")" 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 ## This function builds the default docker image based on debian 11
make_docker() { make_docker() {
EMQX_BUILDER="${EMQX_BUILDER:-${EMQX_DEFAULT_BUILDER}}" EMQX_BUILDER="${EMQX_BUILDER:-${EMQX_DEFAULT_BUILDER}}"
@ -329,6 +329,7 @@ make_docker() {
local default_tag="emqx/${PROFILE%%-elixir}:${PKG_VSN}" local default_tag="emqx/${PROFILE%%-elixir}:${PKG_VSN}"
EMQX_IMAGE_TAG="${EMQX_IMAGE_TAG:-$default_tag}" EMQX_IMAGE_TAG="${EMQX_IMAGE_TAG:-$default_tag}"
echo '_build' >> ./.dockerignore
set -x set -x
docker build --no-cache --pull \ docker build --no-cache --pull \
--build-arg BUILD_FROM="${EMQX_BUILDER}" \ --build-arg BUILD_FROM="${EMQX_BUILDER}" \
@ -336,6 +337,7 @@ make_docker() {
--build-arg EMQX_NAME="$PROFILE" \ --build-arg EMQX_NAME="$PROFILE" \
--tag "${EMQX_IMAGE_TAG}" \ --tag "${EMQX_IMAGE_TAG}" \
-f "${EMQX_DOCKERFILE}" . -f "${EMQX_DOCKERFILE}" .
[[ "${DEBUG:-}" -eq 1 ]] || set +x
} }
function join { function join {

View File

@ -10,11 +10,9 @@ ENV EMQX_RELUP=false
RUN export PROFILE=${EMQX_NAME%%-elixir} \ RUN export PROFILE=${EMQX_NAME%%-elixir} \
&& export EMQX_NAME1=$EMQX_NAME \ && export EMQX_NAME1=$EMQX_NAME \
&& export EMQX_NAME=$PROFILE \ && 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_PATH="/emqx/_build/$EMQX_NAME/rel/emqx" \
&& export EMQX_REL_FORM='docker' \ && export EMQX_REL_FORM='docker' \
&& cd /emqx \ && cd /emqx \
&& rm -rf $EMQX_LIB_PATH \
&& make $EMQX_NAME1 \ && make $EMQX_NAME1 \
&& rm -f $EMQX_REL_PATH/*.tar.gz \ && rm -f $EMQX_REL_PATH/*.tar.gz \
&& mkdir -p /emqx-rel \ && mkdir -p /emqx-rel \