Skip to content

Commit 94c7ac0

Browse files
authored
Add ppc64le support for base image (#243)
* Enhance architecture support for tool installations Refactor installation steps for various tools to support multiple architectures and improve error handling. Signed-off-by: Prabhu K <Prabhu.K@ibm.com> * Enhance UBI 9 build workflow for multi-arch support Updated the GitHub Actions workflow to support multi-architecture builds for UBI 9 base images, including amd64, arm64, and ppc64le. Adjusted the build and publish steps accordingly. Signed-off-by: Prabhu K <Prabhu.K@ibm.com> * Refactor UBI9 build workflow and update steps Refactor UBI9 build workflow for improved clarity and functionality. Signed-off-by: Prabhu K <Prabhu.K@ibm.com> * Refactor GitHub Actions workflow for multi-architecture builds Enhanced for ppc64le arch Signed-off-by: Prabhu K <Prabhu.K@ibm.com> * Refactor PR check workflow for multi-architecture builds Enhanced for ppc64le arch Signed-off-by: Prabhu K <Prabhu.K@ibm.com> * Refactor architecture-specific installation logic Signed-off-by: Prabhu K <Prabhu.K@ibm.com> * Update .github/workflows/ubi9-build.yaml Signed-off-by: Prabhu K <Prabhu.K@ibm.com> * Added QEMU setup in pr-check workflow Signed-off-by: Prabhu K <Prabhu.K@ibm.com> * Added a support of ppc64le for developer image Signed-off-by: Prabhu K <prabhu.k@ibm.com> * Updated new changes with rebase Signed-off-by: Prabhu K <prabhu.k@ibm.com> * Update .github/workflows/pr-check.yaml Signed-off-by: Prabhu K <Prabhu.K@ibm.com> * Update default Node.js version to 20.18.1 Signed-off-by: Prabhu K <Prabhu.K@ibm.com> * Added Ubi10 and Udi10 support for ppc64le Signed-off-by: Prabhu K <Prabhu.K@ibm.com> --------- Signed-off-by: Prabhu K <Prabhu.K@ibm.com> Signed-off-by: Prabhu K <prabhu.k@ibm.com>
1 parent e420701 commit 94c7ac0

10 files changed

Lines changed: 809 additions & 355 deletions

.github/workflows/empty-workspace-smoke-test-on-minikube-ubi10.yaml

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,17 @@ jobs:
3131
strategy:
3232
fail-fast: false
3333
matrix:
34-
runners: ['ubuntu-22.04', 'ubuntu-22.04-arm']
35-
runs-on: ${{matrix.runners}}
34+
include:
35+
- name: amd64-build
36+
runner: ubuntu-22.04
37+
arch: amd64
38+
- name: arm64-build
39+
runner: ubuntu-22.04-arm
40+
arch: arm64
41+
- name: ppc64le-build
42+
runner: ubuntu-22.04
43+
arch: ppc64le
44+
runs-on: ${{ matrix.runner }}
3645
steps:
3746

3847
- name: Checkout
@@ -59,12 +68,7 @@ jobs:
5968
docker rmi -f $(docker images -aq)
6069
6170
- name: Set arch environment variable
62-
run: |
63-
if [[ ${{matrix.runners}} == 'ubuntu-22.04' ]]; then
64-
echo arch="amd64" >> $GITHUB_ENV
65-
else
66-
echo arch="arm64" >> $GITHUB_ENV
67-
fi
71+
run: echo "arch=${{ matrix.arch }}" >> $GITHUB_ENV
6872

6973
- name: Start minikube cluster
7074
run: |

.github/workflows/empty-workspace-smoke-test-on-minikube-ubi9.yaml

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,17 @@ jobs:
3131
strategy:
3232
fail-fast: false
3333
matrix:
34-
runners: ['ubuntu-22.04', 'ubuntu-22.04-arm']
35-
runs-on: ${{matrix.runners}}
34+
include:
35+
- name: amd64-build
36+
runner: ubuntu-22.04
37+
arch: amd64
38+
- name: arm64-build
39+
runner: ubuntu-22.04-arm
40+
arch: arm64
41+
- name: ppc64le-build
42+
runner: ubuntu-22.04
43+
arch: ppc64le
44+
runs-on: ${{ matrix.runner }}
3645
steps:
3746

3847
- name: Checkout
@@ -59,12 +68,7 @@ jobs:
5968
docker rmi -f $(docker images -aq)
6069
6170
- name: Set arch environment variable
62-
run: |
63-
if [[ ${{matrix.runners}} == 'ubuntu-22.04' ]]; then
64-
echo arch="amd64" >> $GITHUB_ENV
65-
else
66-
echo arch="arm64" >> $GITHUB_ENV
67-
fi
71+
run: echo "arch=${{ matrix.arch }}" >> $GITHUB_ENV
6872

6973
- name: Start minikube cluster
7074
run: |

.github/workflows/pr-check-ubi10.yaml

Lines changed: 62 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)