ci(docker): scripts/docker-create-push-manifests.sh
This commit is contained in:
parent
06cf419f02
commit
177d42cad4
|
@ -588,6 +588,7 @@ jobs:
|
|||
docker push public.ecr.aws/emqx/emqx:${version#v}
|
||||
|
||||
docker-push-multi-arch-manifest:
|
||||
# note, we only run on amd64
|
||||
if: github.event_name == 'release'
|
||||
needs: docker
|
||||
runs-on: ubuntu-latest
|
||||
|
@ -614,6 +615,16 @@ jobs:
|
|||
- 24.1.5-3 # update to latest
|
||||
|
||||
steps:
|
||||
- uses: actions/download-artifact@v2
|
||||
if: matrix.arch == 'amd64'
|
||||
with:
|
||||
name: source
|
||||
path: .
|
||||
|
||||
- name: unzip source code
|
||||
if: matrix.arch == 'amd64'
|
||||
run: unzip -q source.zip
|
||||
|
||||
- uses: docker/login-action@v1
|
||||
if: matrix.arch == 'amd64'
|
||||
with:
|
||||
|
@ -638,32 +649,11 @@ jobs:
|
|||
org.opencontainers.image.otp.version=${{ matrix.otp }}
|
||||
|
||||
- name: update manifest for multiarch image
|
||||
# we only run on amd64
|
||||
if: matrix.arch == 'amd64'
|
||||
run: |
|
||||
set -xeu
|
||||
img_amd64="${{ steps.meta.outputs.tags }}"
|
||||
img_arm64=$(echo ${img_amd64} | sed 's/-amd64$/-arm64/g')
|
||||
img_march=${img_amd64%-amd64}
|
||||
docker pull "$img_amd64"
|
||||
docker pull --platform linux/arm64 "$img_arm64"
|
||||
img_amd64_digest=$(docker inspect --format='{{index .RepoDigests 0}}' "$img_amd64")
|
||||
img_arm64_digest=$(docker inspect --format='{{index .RepoDigests 0}}' "$img_arm64")
|
||||
echo "sha256 of amd64 is $img_amd64_digest"
|
||||
echo "sha256 of arm64 is $img_arm64_digest"
|
||||
docker manifest create "${img_march}" \
|
||||
--amend "$img_amd64_digest" \
|
||||
--amend "$img_arm64_digest"
|
||||
docker manifest push "${img_march}"
|
||||
IsPushLatest=${{ github.event_name == 'release' && !github.event.release.prerelease }};
|
||||
scripts/docker-create-push-manifest "${{ steps.meta.outputs.tags }}" "$IsPushLatest"
|
||||
|
||||
# PUSH latest if it is a release build
|
||||
if ${{ github.event_name == 'release' && !github.event.release.prerelease }}; then
|
||||
img_latest="${{ github.repository_owner }}/${{ matrix.profile }}:latest"
|
||||
docker manifest create "${img_latest}" \
|
||||
--amend "$img_amd64_digest" \
|
||||
--amend "$img_arm64_digest"
|
||||
docker manifest push "${img_latest}"
|
||||
fi
|
||||
|
||||
delete-artifact:
|
||||
runs-on: ubuntu-20.04
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
##!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
img_amd64=$1
|
||||
IsPushLatest=$2
|
||||
|
||||
img_arm64=$(echo ${img_amd64} | sed 's/-amd64$/-arm64/g')
|
||||
img_march=${img_amd64%-amd64}
|
||||
docker pull "$img_amd64"
|
||||
docker pull --platform linux/arm64 "$img_arm64"
|
||||
img_amd64_digest=$(docker inspect --format='{{index .RepoDigests 0}}' "$img_amd64")
|
||||
img_arm64_digest=$(docker inspect --format='{{index .RepoDigests 0}}' "$img_arm64")
|
||||
echo "sha256 of amd64 is $img_amd64_digest"
|
||||
echo "sha256 of arm64 is $img_arm64_digest"
|
||||
docker manifest create "${img_march}" \
|
||||
--amend "$img_amd64_digest" \
|
||||
--amend "$img_arm64_digest"
|
||||
docker manifest push "${img_march}"
|
||||
|
||||
# PUSH latest if it is a release build
|
||||
if [ "$IsPushLatest" = "true" ]; then
|
||||
|
||||
img_latest=$(echo "$img_arm64" | cut -d: -f 1):latest
|
||||
docker manifest create "${img_latest}" \
|
||||
--amend "$img_amd64_digest" \
|
||||
--amend "$img_arm64_digest"
|
||||
docker manifest push "${img_latest}"
|
||||
fi
|
Loading…
Reference in New Issue