1212jobs :
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