@@ -22,28 +22,37 @@ jobs:
2222 strategy :
2323 fail-fast : false
2424 matrix :
25- runners : ['ubuntu-22.04', 'ubuntu-22.04-arm']
26- runs-on : ${{matrix.runners}}
25+ include :
26+ - name : amd64-build
27+ runner : ubuntu-22.04
28+ arch : amd64
29+ - name : arm64-build
30+ runner : ubuntu-22.04-arm
31+ arch : arm64
32+ - name : ppc64le-build
33+ runner : ubuntu-22.04
34+ arch : ppc64le
35+ runs-on : ${{ matrix.runner }}
2736 steps :
2837 - name : Checkout
2938 uses : actions/checkout@v4
3039 with :
3140 ref : ${{ github.event.pull_request.head.sha }}
3241 - name : Set arch environment variable
33- run : |
34- if [[ ${{matrix.runners}} == 'ubuntu-22.04' ]]; then
35- echo arch="amd64" >> $GITHUB_ENV
36- else
37- echo arch="arm64" >> $GITHUB_ENV
38- fi
42+ run : echo "arch=${{ matrix.arch }}" >> $GITHUB_ENV
3943 - name : Free runner space
4044 run : sudo rm -rf /usr/local/lib/android
4145 - name : Cleanup docker images
4246 run : docker system prune -af
4347 - name : Add expiration label to base Dockerfile (UBI10)
4448 run : sed -i '/^FROM/a LABEL quay.expires-after=4w' base/ubi10/Dockerfile
49+ - name : Set up QEMU
50+ uses : docker/setup-qemu-action@v2
4551 - name : Set up Docker Buildx
4652 uses : docker/setup-buildx-action@v3
53+ with :
54+ driver : docker-container
55+ platforms : linux/amd64,linux/arm64,linux/ppc64le
4756 - name : Login to Registry
4857 uses : docker/login-action@v3
4958 with :
@@ -82,17 +91,21 @@ jobs:
8291 strategy :
8392 fail-fast : false
8493 matrix :
85- runners : ['ubuntu-22.04', 'ubuntu-22.04-arm']
86- runs-on : ${{matrix.runners}}
94+ include :
95+ - name : amd64-build
96+ runner : ubuntu-22.04
97+ arch : amd64
98+ - name : arm64-build
99+ runner : ubuntu-22.04-arm
100+ arch : arm64
101+ - name : ppc64le-build
102+ runner : ubuntu-22.04
103+ arch : ppc64le
104+ runs-on : ${{ matrix.runner }}
87105 needs : build-base-image
88106 steps :
89107 - name : Set arch environment variable
90- run : |
91- if [[ ${{matrix.runners}} == 'ubuntu-22.04' ]]; then
92- echo arch="amd64" >> $GITHUB_ENV
93- else
94- echo arch="arm64" >> $GITHUB_ENV
95- fi
108+ run : echo "arch=${{ matrix.arch }}" >> $GITHUB_ENV
96109 - name : Checkout
97110 uses : actions/checkout@v4
98111 with :
@@ -101,8 +114,13 @@ jobs:
101114 run : sudo rm -rf /usr/local/lib/android
102115 - name : Cleanup docker images
103116 run : docker system prune -af
117+ - name : Set up QEMU
118+ uses : docker/setup-qemu-action@v2
104119 - name : Set up Docker Buildx
105120 uses : docker/setup-buildx-action@v3
121+ with :
122+ driver : docker-container
123+ platforms : linux/amd64,linux/arm64,linux/ppc64le
106124 - name : Login to Registry
107125 uses : docker/login-action@v3
108126 with :
@@ -148,7 +166,7 @@ jobs:
148166 echo "=========================================="
149167 echo "Publishing UBI10 base image manifest"
150168 echo "=========================================="
151- echo "Verifying both architecture images exist..."
169+ echo "Verifying all architecture images exist..."
152170 docker manifest inspect ${{ env.REGISTRY }}/base-developer-image:amd64-ubi10-pr-${{github.event.number}} || {
153171 echo "ERROR: amd64 base image not found"
154172 exit 1
@@ -157,28 +175,39 @@ jobs:
157175 echo "ERROR: arm64 base image not found"
158176 exit 1
159177 }
160- echo "Both images verified, extracting digests..."
178+ docker manifest inspect ${{ env.REGISTRY }}/base-developer-image:ppc64le-ubi10-pr-${{github.event.number}} || {
179+ echo "ERROR: ppc64le base image not found"
180+ exit 1
181+ }
182+ echo "All images verified, extracting digests..."
161183
162184 # Extract the actual image digest for each architecture from the manifest list
163185 AMD64_DIGEST=$(docker manifest inspect ${{ env.REGISTRY }}/base-developer-image:amd64-ubi10-pr-${{github.event.number}} | \
164186 jq -r '.manifests[] | select(.platform.architecture == "amd64") | .digest')
165187 ARM64_DIGEST=$(docker manifest inspect ${{ env.REGISTRY }}/base-developer-image:arm64-ubi10-pr-${{github.event.number}} | \
166188 jq -r '.manifests[] | select(.platform.architecture == "arm64") | .digest')
189+ PPC64LE_DIGEST=$(docker manifest inspect ${{ env.REGISTRY }}/base-developer-image:ppc64le-ubi10-pr-${{github.event.number}} | \
190+ jq -r '.manifests[] | select(.platform.architecture == "ppc64le") | .digest')
167191
168192 echo "AMD64 digest: $AMD64_DIGEST"
169193 echo "ARM64 digest: $ARM64_DIGEST"
194+ echo "PPC64LE digest: $PPC64LE_DIGEST"
170195
171196 echo "Creating multi-arch manifest..."
172197 docker manifest create ${{ env.REGISTRY }}/base-developer-image:ubi10-pr-${{github.event.number}} \
173198 --amend ${{ env.REGISTRY }}/base-developer-image@$AMD64_DIGEST \
174- --amend ${{ env.REGISTRY }}/base-developer-image@$ARM64_DIGEST
199+ --amend ${{ env.REGISTRY }}/base-developer-image@$ARM64_DIGEST \
200+ --amend ${{ env.REGISTRY }}/base-developer-image@$PPC64LE_DIGEST
175201
176202 docker manifest annotate ${{ env.REGISTRY }}/base-developer-image:ubi10-pr-${{github.event.number}} \
177203 ${{ env.REGISTRY }}/base-developer-image@$AMD64_DIGEST \
178204 --os linux --arch amd64
179205 docker manifest annotate ${{ env.REGISTRY }}/base-developer-image:ubi10-pr-${{github.event.number}} \
180206 ${{ env.REGISTRY }}/base-developer-image@$ARM64_DIGEST \
181207 --os linux --arch arm64
208+ docker manifest annotate ${{ env.REGISTRY }}/base-developer-image:ubi10-pr-${{github.event.number}} \
209+ ${{ env.REGISTRY }}/base-developer-image@$PPC64LE_DIGEST \
210+ --os linux --arch ppc64le
182211
183212 docker manifest push ${{ env.REGISTRY }}/base-developer-image:ubi10-pr-${{github.event.number}}
184213
@@ -198,7 +227,7 @@ jobs:
198227 echo "=========================================="
199228 echo "Publishing UDI10 manifest"
200229 echo "=========================================="
201- echo "Verifying both architecture images exist..."
230+ echo "Verifying all architecture images exist..."
202231 docker manifest inspect ${{ env.REGISTRY }}/universal-developer-image:amd64-ubi10-pr-${{github.event.number}} || {
203232 echo "ERROR: amd64 UDI image not found"
204233 exit 1
@@ -207,28 +236,39 @@ jobs:
207236 echo "ERROR: arm64 UDI image not found"
208237 exit 1
209238 }
210- echo "Both images verified, extracting digests..."
239+ docker manifest inspect ${{ env.REGISTRY }}/universal-developer-image:ppc64le-ubi10-pr-${{github.event.number}} || {
240+ echo "ERROR: ppc64le UDI image not found"
241+ exit 1
242+ }
243+ echo "All images verified, extracting digests..."
211244
212245 # Extract the actual image digest for each architecture from the manifest list
213246 AMD64_DIGEST=$(docker manifest inspect ${{ env.REGISTRY }}/universal-developer-image:amd64-ubi10-pr-${{github.event.number}} | \
214247 jq -r '.manifests[] | select(.platform.architecture == "amd64") | .digest')
215248 ARM64_DIGEST=$(docker manifest inspect ${{ env.REGISTRY }}/universal-developer-image:arm64-ubi10-pr-${{github.event.number}} | \
216249 jq -r '.manifests[] | select(.platform.architecture == "arm64") | .digest')
250+ PPC64LE_DIGEST=$(docker manifest inspect ${{ env.REGISTRY }}/universal-developer-image:ppc64le-ubi10-pr-${{github.event.number}} | \
251+ jq -r '.manifests[] | select(.platform.architecture == "ppc64le") | .digest')
217252
218253 echo "AMD64 digest: $AMD64_DIGEST"
219254 echo "ARM64 digest: $ARM64_DIGEST"
255+ echo "PPC64LE digest: $ARM64_DIGEST"
220256
221257 echo "Creating multi-arch manifest..."
222258 docker manifest create ${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{github.event.number}} \
223259 --amend ${{ env.REGISTRY }}/universal-developer-image@$AMD64_DIGEST \
224- --amend ${{ env.REGISTRY }}/universal-developer-image@$ARM64_DIGEST
260+ --amend ${{ env.REGISTRY }}/universal-developer-image@$ARM64_DIGEST \
261+ --amend ${{ env.REGISTRY }}/universal-developer-image@$PPC64LE_DIGEST
225262
226263 docker manifest annotate ${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{github.event.number}} \
227264 ${{ env.REGISTRY }}/universal-developer-image@$AMD64_DIGEST \
228265 --os linux --arch amd64
229266 docker manifest annotate ${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{github.event.number}} \
230267 ${{ env.REGISTRY }}/universal-developer-image@$ARM64_DIGEST \
231268 --os linux --arch arm64
269+ docker manifest annotate ${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{github.event.number}} \
270+ ${{ env.REGISTRY }}/universal-developer-image@$PPC64LE_DIGEST \
271+ --os linux --arch ppc64le
232272
233273 docker manifest push ${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{github.event.number}}
234274 - name : ' Comment PR'
0 commit comments