From 9e5c3ab5f8eb6da4ef8eda7323232f9e351c7127 Mon Sep 17 00:00:00 2001 From: Ivan Dyachkov Date: Fri, 17 Mar 2023 14:08:33 +0100 Subject: [PATCH] ci: export docker image in build_slim_packages --- .github/workflows/build_slim_packages.yaml | 90 +++++++++++++++++++++- 1 file changed, 89 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build_slim_packages.yaml b/.github/workflows/build_slim_packages.yaml index 089be83a6..576bd356f 100644 --- a/.github/workflows/build_slim_packages.yaml +++ b/.github/workflows/build_slim_packages.yaml @@ -10,7 +10,7 @@ on: workflow_dispatch: jobs: - build: + linux: runs-on: ${{ matrix.runs-on }} strategy: @@ -152,3 +152,91 @@ jobs: with: name: ${{ matrix.os }} path: _packages/**/*.zip + + docker: + runs-on: ${{ matrix.runs-on }} + + strategy: + fail-fast: false + matrix: + otp: + - 24.3.4.2-1 + runs-on: + - aws-amd64 + - ubuntu-22.04 + use-self-hosted: + - ${{ github.repository_owner == 'emqx' }} + exclude: + - runs-on: ubuntu-22.04 + use-self-hosted: true + - runs-on: aws-amd64 + use-self-hosted: false + + steps: + - uses: AutoModality/action-clean@v1 + - uses: actions/checkout@v3 + with: + fetch-depth: 0 # clone full git history + - name: fix-git-unsafe-repository + run: git config --global --add safe.directory /__w/emqx/emqx + - name: prepare + run: | + if [ -f 'EMQX_ENTERPRISE' ]; then + EMQX_NAME=emqx-ee + else + EMQX_NAME=emqx + fi + EMQX_IMAGE_TAG=localhost:5000/${{ github.repository_owner }}/$EMQX_NAME + PKG_VSN=${PKG_VSN:-$(./pkg-vsn.sh $EMQX_NAME)} + echo "EMQX_NAME=$EMQX_NAME" >> $GITHUB_ENV + echo "PKG_VSN=$PKG_VSN" >> $GITHUB_ENV + echo "EMQX_IMAGE_TAG=$EMQX_IMAGE_TAG" >> $GITHUB_ENV + - name: ensure access to github + if: endsWith(github.repository, 'enterprise') + run: | + echo "https://ci%40emqx.io:${{ secrets.CI_GIT_TOKEN }}@github.com" > $HOME/.git-credentials + git config --global credential.helper store + - uses: docker/setup-buildx-action@v2 + - uses: docker/metadata-action@v4 + id: meta + with: + images: ${{ env.EMQX_IMAGE_TAG }} + flavor: | + latest=false + tags: | + type=ref,event=branch + type=ref,event=pr + type=match,pattern=[v|e](.*),group=1 + labels: + org.opencontainers.image.otp.version=${{ matrix.otp }} + - uses: docker/build-push-action@v4 + if: endsWith(github.repository, 'emqx') + with: + load: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-args: | + BUILD_FROM=ghcr.io/emqx/emqx-builder/4.4-24:${{ matrix.otp }}-alpine3.15.1 + RUN_FROM=alpine:3.15.1 + EMQX_NAME=${{ env.EMQX_NAME }} + file: deploy/docker/Dockerfile + context: . + - uses: docker/build-push-action@v4 + if: endsWith(github.repository, 'enterprise') + with: + load: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + build-args: | + BUILD_FROM=ghcr.io/emqx/emqx-builder/4.4-24:${{ matrix.otp }}-alpine3.15.1 + RUN_FROM=alpine:3.15.1 + EMQX_NAME=${{ env.EMQX_NAME }} + file: deploy/docker/Dockerfile.enterprise + context: . + - name: export docker image + run: | + docker save ${{ steps.meta.outputs.tags }} | gzip > $EMQX_NAME-$PKG_VSN.tar.gz + - uses: actions/upload-artifact@v3 + with: + name: "${{ env.EMQX_NAME }}-docker" + path: "${{ env.EMQX_NAME }}-${{ env.PKG_VSN }}.tar.gz"