Skip to content

Commit 5998e93

Browse files
committed
Matrix strat
Signed-off-by: Joseph <[email protected]>
1 parent bc65059 commit 5998e93

File tree

1 file changed

+66
-24
lines changed

1 file changed

+66
-24
lines changed

.github/workflows/quay_binaries_push.yml

Lines changed: 66 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -12,48 +12,90 @@ on:
1212
jobs:
1313

1414
multi-arch-build:
15-
name: Multi-Arch Build
15+
name: Build Multi-Arch Images
1616
runs-on: ubuntu-latest
17+
strategy:
18+
matrix:
19+
arch: [amd64, arm64, ppc64le, s390x]
1720
steps:
1821

1922
- name: Checkout code
2023
uses: actions/checkout@v4
2124

25+
- name: Set up Go
26+
uses: actions/setup-go@v5
27+
with:
28+
go-version-file: go.mod
29+
cache: true
30+
2231
- name: Install qemu dependency
2332
run: |
2433
sudo apt-get update
2534
sudo apt-get install -y qemu-user-static
2635
27-
- name: Build Image
28-
id: build_image_multiarch
36+
- name: Build Image for ${{ matrix.arch }}
37+
id: build_image
2938
uses: redhat-actions/buildah-build@v2
3039
with:
31-
image: quay.io/konveyor/oadp-cli-binaries
32-
tags: ${{ github.ref_type == 'tag' && format('latest {0}', github.ref_name) || 'test' }}
33-
archs: amd64,arm64,ppc64le,s390x
40+
image: oadp-cli-binaries-local
41+
tags: ${{ matrix.arch }}
42+
archs: ${{ matrix.arch }}
3443
containerfiles: |
3544
./Containerfile.download
3645
37-
- name: Echo Outputs
46+
- name: Save image as tar
3847
run: |
39-
echo "Image: ${{ steps.build_image_multiarch.outputs.image }}"
40-
echo "Tags: ${{ steps.build_image_multiarch.outputs.tags }}"
41-
echo "Tagged Image: ${{ steps.build_image_multiarch.outputs.image-with-tag }}"
42-
43-
- name: Check images created
44-
run: buildah images | grep 'quay.io/konveyor/oadp-cli-binaries'
48+
buildah push ${{ steps.build_image.outputs.image-with-tag }} oci-archive:oadp-cli-${{ matrix.arch }}.tar
49+
50+
- name: Upload image artifact
51+
uses: actions/upload-artifact@v4
52+
with:
53+
name: oadp-cli-image-${{ matrix.arch }}
54+
path: oadp-cli-${{ matrix.arch }}.tar
55+
retention-days: 1
56+
57+
push-manifest:
58+
name: Create and Push Multi-Arch Manifest
59+
runs-on: ubuntu-latest
60+
needs: multi-arch-build
61+
if: startsWith(github.ref_name, 'v')
62+
steps:
63+
- name: Download all artifacts
64+
uses: actions/download-artifact@v4
65+
with:
66+
pattern: oadp-cli-image-*
4567

46-
- name: Check manifest
68+
- name: Load images and create manifest
4769
run: |
48-
set -x
49-
buildah manifest inspect ${{ steps.build_image_multiarch.outputs.image-with-tag }}
70+
# Load all arch images
71+
buildah pull oci-archive:oadp-cli-image-amd64/oadp-cli-amd64.tar
72+
buildah pull oci-archive:oadp-cli-image-arm64/oadp-cli-arm64.tar
73+
buildah pull oci-archive:oadp-cli-image-ppc64le/oadp-cli-ppc64le.tar
74+
buildah pull oci-archive:oadp-cli-image-s390x/oadp-cli-s390x.tar
75+
76+
# Tag them for manifest
77+
buildah tag localhost/oadp-cli-binaries-local:amd64 quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }}-amd64
78+
buildah tag localhost/oadp-cli-binaries-local:arm64 quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }}-arm64
79+
buildah tag localhost/oadp-cli-binaries-local:ppc64le quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }}-ppc64le
80+
buildah tag localhost/oadp-cli-binaries-local:s390x quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }}-s390x
81+
5082
- name: Buildah login
5183
run: buildah login -u ${{ secrets.QUAY_USER }} -p ${{ secrets.QUAY_TOKEN }} quay.io
52-
53-
- name: Buildah push version tag
54-
if: startsWith(github.ref_name, 'v')
55-
run: buildah manifest push ${{ steps.build_image_multiarch.outputs.image-with-tag }} quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }}
56-
57-
- name: Buildah push latest tag
58-
if: startsWith(github.ref_name, 'v')
59-
run: buildah manifest push ${{ steps.build_image_multiarch.outputs.image-with-tag }} quay.io/konveyor/oadp-cli-binaries:latest
84+
85+
- name: Create and push version manifest
86+
run: |
87+
buildah manifest create quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }}
88+
buildah manifest add quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }} quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }}-amd64
89+
buildah manifest add quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }} quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }}-arm64
90+
buildah manifest add quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }} quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }}-ppc64le
91+
buildah manifest add quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }} quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }}-s390x
92+
buildah manifest push --all quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }}
93+
94+
- name: Create and push latest manifest
95+
run: |
96+
buildah manifest create quay.io/konveyor/oadp-cli-binaries:latest
97+
buildah manifest add quay.io/konveyor/oadp-cli-binaries:latest quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }}-amd64
98+
buildah manifest add quay.io/konveyor/oadp-cli-binaries:latest quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }}-arm64
99+
buildah manifest add quay.io/konveyor/oadp-cli-binaries:latest quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }}-ppc64le
100+
buildah manifest add quay.io/konveyor/oadp-cli-binaries:latest quay.io/konveyor/oadp-cli-binaries:${{ github.ref_name }}-s390x
101+
buildah manifest push --all quay.io/konveyor/oadp-cli-binaries:latest

0 commit comments

Comments
 (0)