From 56b9dc98e7977f89b3ec091e47b83e466db39ec8 Mon Sep 17 00:00:00 2001 From: Kenji Miyake <31987104+kenji-miyake@users.noreply.github.com> Date: Mon, 23 May 2022 21:48:12 +0900 Subject: [PATCH] ci(update-docker-manifest): create main distro manifest (#335) * ci(update-docker-manifest): create main distro manifest Signed-off-by: Kenji Miyake * fix grep Signed-off-by: Kenji Miyake * add latest-prebuilt Signed-off-by: Kenji Miyake --- .../action.yaml | 6 +- .../create-main-distro-alias/action.yaml | 67 +++++++++++++++++++ .github/workflows/update-docker-manifest.yaml | 10 ++- 3 files changed, 78 insertions(+), 5 deletions(-) rename .github/actions/{update-docker-manifest => combine-multi-arch-images}/action.yaml (94%) create mode 100644 .github/actions/create-main-distro-alias/action.yaml diff --git a/.github/actions/update-docker-manifest/action.yaml b/.github/actions/combine-multi-arch-images/action.yaml similarity index 94% rename from .github/actions/update-docker-manifest/action.yaml rename to .github/actions/combine-multi-arch-images/action.yaml index 7efa21e5..93b6a54e 100644 --- a/.github/actions/update-docker-manifest/action.yaml +++ b/.github/actions/combine-multi-arch-images/action.yaml @@ -1,4 +1,4 @@ -name: update-docker-manifest +name: combine-multi-arch-images description: "" inputs: @@ -72,8 +72,8 @@ runs: for base_tag in $BASE_TAGS; do echo -e "\nbase_tag: $base_tag" - amd64_tag=$(printf "%s\n" $ALL_TAGS | grep "$base_tag\-amd64" || true) - arm64_tag=$(printf "%s\n" $ALL_TAGS | grep "$base_tag\-arm64" || true) + amd64_tag=$(printf "%s\n" $ALL_TAGS | grep "^$base_tag\-amd64" || true) + arm64_tag=$(printf "%s\n" $ALL_TAGS | grep "^$base_tag\-arm64" || true) echo "amd64_tag: $amd64_tag" echo "arm64_tag: $arm64_tag" diff --git a/.github/actions/create-main-distro-alias/action.yaml b/.github/actions/create-main-distro-alias/action.yaml new file mode 100644 index 00000000..0709cd6b --- /dev/null +++ b/.github/actions/create-main-distro-alias/action.yaml @@ -0,0 +1,67 @@ +name: create-main-distro-alias +description: "" + +inputs: + package-name: + description: "" + required: true + rosdistro: + description: "" + required: true + +runs: + using: composite + steps: + - name: Login to GitHub Container Registry + uses: docker/login-action@v2 + with: + registry: ghcr.io + username: ${{ github.repository_owner }} + password: ${{ github.token }} + + - name: Set image name + id: set-image-name + run: echo "::set-output name=image-name::ghcr.io/${{ github.repository_owner }}/${{ inputs.package-name }}" + shell: bash + + - name: Create Docker manifest for latest + run: | + # Check image existence + distro_image="${{ steps.set-image-name.outputs.image-name }}:${{ inputs.rosdistro }}-latest" + if docker manifest inspect "$distro_image-amd64" >/dev/null 2>&1; then + amd64_image="$distro_image-amd64" + fi + if docker manifest inspect "$distro_image-arm64" >/dev/null 2>&1; then + amd64_image="$distro_image-arm64" + fi + + echo "amd64_image: $amd64_image" + echo "arm64_image: $arm64_image" + + docker manifest create --amend ${{ steps.set-image-name.outputs.image-name }}:latest \ + $amd64_image \ + $arm64_image + + docker manifest push ${{ steps.set-image-name.outputs.image-name }}:latest + shell: bash + + - name: Create Docker manifest for latest-prebuilt + run: | + # Check image existence + distro_image="${{ steps.set-image-name.outputs.image-name }}:${{ inputs.rosdistro }}-latest-prebuilt" + if docker manifest inspect "$distro_image-amd64" >/dev/null 2>&1; then + amd64_image="$distro_image-amd64" + fi + if docker manifest inspect "$distro_image-arm64" >/dev/null 2>&1; then + amd64_image="$distro_image-arm64" + fi + + echo "amd64_image: $amd64_image" + echo "arm64_image: $arm64_image" + + docker manifest create --amend ${{ steps.set-image-name.outputs.image-name }}:latest-prebuilt \ + $amd64_image \ + $arm64_image + + docker manifest push ${{ steps.set-image-name.outputs.image-name }}:latest-prebuilt + shell: bash diff --git a/.github/workflows/update-docker-manifest.yaml b/.github/workflows/update-docker-manifest.yaml index 84c7f25f..d1090083 100644 --- a/.github/workflows/update-docker-manifest.yaml +++ b/.github/workflows/update-docker-manifest.yaml @@ -12,7 +12,13 @@ jobs: - name: Check out repository uses: actions/checkout@v3 - - name: Update Docker manifest for 'autoware-universe' - uses: ./.github/actions/update-docker-manifest + - name: Combine multi arch images for 'autoware-universe' + uses: ./.github/actions/combine-multi-arch-images with: package-name: autoware-universe + + - name: Create main distro alias for 'autoware-universe' + uses: ./.github/actions/create-main-distro-alias + with: + package-name: autoware-universe + rosdistro: galactic