From d2a7e549a2fd5f3e0d42c00edf065b16fe4998c3 Mon Sep 17 00:00:00 2001 From: William Yang Date: Mon, 31 Jan 2022 16:12:44 +0100 Subject: [PATCH] ci(docker): update for the elixir parts --- .github/workflows/build_packages.yaml | 124 ++++++++++++++------------ 1 file changed, 66 insertions(+), 58 deletions(-) diff --git a/.github/workflows/build_packages.yaml b/.github/workflows/build_packages.yaml index a2dc00e64..711c61c0c 100644 --- a/.github/workflows/build_packages.yaml +++ b/.github/workflows/build_packages.yaml @@ -463,10 +463,10 @@ jobs: - aws-arm64 - ubuntu-20.04 exclude: - - arch: arm64 - build_machine: ubuntu-20.04 - - arch: amd64 - build_machine: aws-arm64 + - arch: arm64 + build_machine: ubuntu-20.04 + - arch: amd64 + build_machine: aws-arm64 include: - os: alpine3.14 profile: emqx @@ -503,39 +503,39 @@ jobs: source/deps/quicer/ key: ${{ matrix.os }}-${{ matrix.otp }}-${{ matrix.arch }}-${{ needs.prepare.outputs.DEP_QUICER_REF }} + - name: prepare for docker-action-parms + id: pre-meta + run: | + img=$(echo ${{ matrix.os }} | sed 's#\([0-9.]\+\)$#:\1#g') + emqx_name=${{ matrix.profile }} + img_suffix=${{ matrix.arch }} + img_labels="org.opencontainers.image.otp.version=${{ matrix.otp }}" + + if [ ${{ matrix.build_elixir }} = "with_elixir" ]; then + emqx_name="emqx-elixir" + img_suffix="elixir-{{ matrix.arch }}" + img_labels="org.opencontainers.image.elixir.version=${{ matrix.elixir }}\n${img_labels}" + fi + echo "::set-output name=img::${img}" + echo "::set-output name=emqx_name::${emqx_name}" + echo "::set-output name=img_suffix::${img_suffix}" + echo "::set-output name=img_labels::${img_labels}" + # NOTE, Pls make sure this is identical as the one in job 'docker-push-multi-arch-manifest' - uses: docker/metadata-action@v3 id: meta - if: ${{ matrix.build_elixir == 'no_elixir' }} with: images: ${{ github.repository_owner }}/${{ matrix.profile }} flavor: | latest=${{ github.event_name == 'release' && !github.event.release.prerelease }} - suffix=-${{ matrix.arch }} + suffix=-${{ steps.pre-meta.outputs.img_suffix }} tags: | type=ref,event=branch type=ref,event=pr type=ref,event=tag type=semver,pattern={{version}} labels: - org.opencontainers.image.otp.version=${{ matrix.otp }} - - name: docker metadata for elixir image - uses: docker/metadata-action@v3 - if: ${{ matrix.build_elixir == 'with_elixir' }} - id: meta-elixir - with: - images: ${{ github.repository_owner }}/${{ matrix.profile }} - flavor: | - latest=${{ github.event_name == 'release' && !github.event.release.prerelease }} - suffix=-elixir - tags: | - type=ref,event=branch - type=ref,event=pr - type=ref,event=tag - type=semver,pattern={{version}} - labels: | - org.opencontainers.image.otp.version=${{ matrix.otp }} - org.opencontainers.image.elixir.version=${{ matrix.elixir }} + ${{ steps.pre-meta.outputs.img_labels }} - uses: docker/login-action@v1 if: > ${{ (github.event_name == 'release' && !github.event.release.prerelease) @@ -544,14 +544,7 @@ jobs: username: ${{ secrets.DOCKER_HUB_USER }} password: ${{ secrets.DOCKER_HUB_TOKEN }} - - name: export os image from matrix.os - id: os-img - run: | - img=$(echo ${{ matrix.os }} | sed 's#\([0-9.]\+\)$#:\1#g') - echo "::set-output name=img::${img}" - - uses: docker/build-push-action@v2 - if: ${{ matrix.build_elixir == 'no_elixir' }} with: push: > ${{ (github.event_name == 'release' && !github.event.release.prerelease) @@ -563,24 +556,8 @@ jobs: labels: ${{ steps.meta.outputs.labels }} build-args: | BUILD_FROM=ghcr.io/emqx/emqx-builder/5.0-5:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os }} - RUN_FROM=${{ steps.os-img.outputs.img }} - EMQX_NAME=${{ matrix.profile }} - file: source/deploy/docker/Dockerfile - context: source - - name: build docker image with elixir - uses: docker/build-push-action@v2 - if: ${{ matrix.profile == 'emqx' && matrix.build_elixir == 'with_elixir' }} - with: - push: ${{ github.event_name == 'release' && !github.event.release.prerelease }} - pull: true - no-cache: true - platforms: linux/${{ matrix.arch }} - tags: ${{ steps.meta-elixir.outputs.tags }} - labels: ${{ steps.meta-elixir.outputs.labels }} - build-args: | - BUILD_FROM=ghcr.io/emqx/emqx-builder/5.0-5:${{ matrix.elixir }}-${{ matrix.otp }}-${{ matrix.os }} - RUN_FROM=${{ steps.os-img.outputs.img }} - EMQX_NAME=emqx-elixir + RUN_FROM=${{ steps.pre-meta.outputs.img }} + EMQX_NAME=${{ steps.pre-meta.outputs.emqx_name }} file: source/deploy/docker/Dockerfile context: source - uses: aws-actions/configure-aws-credentials@v1 @@ -622,20 +599,33 @@ jobs: - emqx-edge - emqx - emqx-enterprise + # NOTE: for docker, only support latest otp version, not a matrix + otp: + - 24.1.5-4 # update to latest + # + elixir: + - 1.13.2 # update to latest arch: - amd64 - arm64 + build_elixir: + - no_elixir build_machine: - aws-arm64 - ubuntu-20.04 exclude: - - arch: arm64 - build_machine: ubuntu-20.04 - - arch: amd64 - build_machine: aws-arm64 - # NOTE: for docker, only support latest otp version, not a matrix - otp: - - 24.1.5-3 # update to latest + - arch: arm64 + build_machine: ubuntu-20.04 + - arch: amd64 + build_machine: aws-arm64 + include: + - os: alpine3.14 + profile: emqx + otp: 24.1.5-4 + elixir: 1.13.2 + arch: amd64 + build_elixir: with_elixir + build_machine: ubuntu-20.04 steps: - uses: actions/download-artifact@v2 @@ -654,6 +644,24 @@ jobs: username: ${{ secrets.DOCKER_HUB_USER }} password: ${{ secrets.DOCKER_HUB_TOKEN }} + - name: prepare for docker-action-parms + id: pre-meta + run: | + img=$(echo ${{ matrix.os }} | sed 's#\([0-9.]\+\)$#:\1#g') + emqx_name=${{ matrix.profile }} + img_suffix=${{ matrix.arch }} + img_labels="org.opencontainers.image.otp.version=${{ matrix.otp }}" + + if [ ${{ matrix.build_elixir }} = "with_elixir" ]; then + emqx_name="emqx-elixir" + img_suffix="elixir-{{ matrix.arch }}" + img_labels="org.opencontainers.image.elixir.version=${{ matrix.elixir }}\n$img_labels" + fi + echo "::set-output name=img::${img}" + echo "::set-output name=emqx_name::${emqx_name}" + echo "::set-output name=img_suffix::${img_suffix}" + echo "::set-output name=img_labels::${img_labels}" + # NOTE, Pls make sure this is identical as the one in job 'docker' - uses: docker/metadata-action@v3 if: matrix.arch == 'amd64' @@ -662,14 +670,14 @@ jobs: images: ${{ github.repository_owner }}/${{ matrix.profile }} flavor: | latest=false - suffix=-${{ matrix.arch }} + suffix=-${{ steps.pre-meta.outputs.img_suffix }} tags: | type=ref,event=branch type=ref,event=pr type=ref,event=tag type=semver,pattern={{version}} labels: - org.opencontainers.image.otp.version=${{ matrix.otp }} + ${{ steps.pre-meta.outputs.img_labels }} - name: update manifest for multiarch image if: matrix.arch == 'amd64'