Просмотр исходного кода

ci: export docker image in build-slim-packages

Ivan Dyachkov 3 лет назад
Родитель
Сommit
b90d371836
3 измененных файлов с 51 добавлено и 10 удалено
  1. 41 0
      .github/workflows/build_slim_packages.yaml
  2. 10 8
      build
  3. 0 2
      deploy/docker/Dockerfile

+ 41 - 0
.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:

+ 10 - 8
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 {

+ 0 - 2
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 \