Skip to content

Commit 40ce53d

Browse files
committed
fixup! chore: push base image to registry; update smoke tests to pull images
Signed-off-by: Oleksii Kurinnyi <[email protected]>
1 parent 6e70d37 commit 40ce53d

File tree

3 files changed

+220
-94
lines changed

3 files changed

+220
-94
lines changed

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

Lines changed: 109 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ env:
1818

1919
jobs:
2020
build-base-image:
21-
name: Build base image
21+
name: Build base image (UBI10)
2222
strategy:
2323
fail-fast: false
2424
matrix:
@@ -27,6 +27,8 @@ jobs:
2727
steps:
2828
- name: Checkout
2929
uses: actions/checkout@v4
30+
with:
31+
ref: ${{ github.event.pull_request.head.sha }}
3032
- name: Set arch environment variable
3133
run: |
3234
if [[ ${{matrix.runners}} == 'ubuntu-22.04' ]]; then
@@ -38,35 +40,45 @@ jobs:
3840
run: sudo rm -rf /usr/local/lib/android
3941
- name: Cleanup docker images
4042
run: docker system prune -af
41-
- name: Add expiration label to base Dockerfile
43+
- name: Add expiration label to base Dockerfile (UBI10)
4244
run: sed -i '/^FROM/a LABEL quay.expires-after=4w' base/ubi10/Dockerfile
45+
- name: Set up Docker Buildx
46+
uses: docker/setup-buildx-action@v3
4347
- name: Login to Registry
4448
uses: docker/login-action@v3
4549
with:
4650
registry: ${{ env.REGISTRY }}
4751
username: ${{ secrets.QUAY_USERNAME }}
4852
password: ${{ secrets.QUAY_PASSWORD }}
49-
- name: Build base image
53+
- name: Build base image (UBI10)
5054
run: |
55+
echo "=========================================="
56+
echo "Building UBI10 base image for ${{env.arch}}"
57+
echo "=========================================="
5158
cd base/ubi10 && docker buildx build \
5259
--platform linux/${{env.arch}} \
5360
--progress=plain \
5461
--push \
55-
-t ${{ env.REGISTRY }}/base-developer-image:${{env.arch}}-ubi10-pr-${{github.event.number}} \
56-
-t base-developer-image-${{env.arch}} .
62+
-t ${{ env.REGISTRY }}/base-developer-image:${{env.arch}}-ubi10-pr-${{github.event.number}} .
63+
- name: Verify base image is available (UBI10)
64+
run: |
65+
echo "Verifying base image is available in registry..."
66+
for i in {1..5}; do
67+
if docker manifest inspect ${{ env.REGISTRY }}/base-developer-image:${{env.arch}}-ubi10-pr-${{github.event.number}} >/dev/null 2>&1; then
68+
echo "Base image is available!"
69+
exit 0
70+
fi
71+
echo "Waiting for image to be available... ($i/5)"
72+
sleep 10
73+
done
74+
echo "ERROR: Base image not available after 5 attempts"
75+
exit 1
5776
- name: Display docker images
5877
run: docker images
59-
- name: Compress image to a file
60-
run: docker save base-developer-image-${{env.arch}} | gzip > base-developer-image-${{env.arch}}.tgz
61-
- name: Upload image artifact
62-
uses: actions/upload-artifact@v4
63-
with:
64-
name: base-developer-image-${{env.arch}}
65-
path: base-developer-image-${{env.arch}}.tgz
6678

6779

6880
build-udi:
69-
name: Build udi
81+
name: Build udi (UDI10)
7082
strategy:
7183
fail-fast: false
7284
matrix:
@@ -83,42 +95,45 @@ jobs:
8395
fi
8496
- name: Checkout
8597
uses: actions/checkout@v4
98+
with:
99+
ref: ${{ github.event.pull_request.head.sha }}
86100
- name: Free runner space
87101
run: sudo rm -rf /usr/local/lib/android
88102
- name: Cleanup docker images
89103
run: docker system prune -af
90-
- name: Download BDI artifacts
91-
uses: actions/download-artifact@v4
92-
with:
93-
pattern: base-developer-image-*
94-
merge-multiple: true
95-
path: .
96-
- name: List downloaded files
97-
run: ls -lah
98-
- name: Load docker images
99-
run: docker load -i base-developer-image-${{env.arch}}.tgz
100-
- name: Display docker images
101-
run: docker images
102-
- name: Update UDI Dockerfile
103-
run: sed "s|quay.io/devfile/base-developer-image:ubi10-latest|base-developer-image-${{env.arch}}|" -i "universal/ubi10/Dockerfile"
104-
- name: Add expiration label to UDI Dockerfile
105-
run: sed -i '/^FROM/a LABEL quay.expires-after=4w' universal/ubi10/Dockerfile
104+
- name: Set up Docker Buildx
105+
uses: docker/setup-buildx-action@v3
106106
- name: Login to Registry
107107
uses: docker/login-action@v3
108108
with:
109109
registry: ${{ env.REGISTRY }}
110110
username: ${{ secrets.QUAY_USERNAME }}
111111
password: ${{ secrets.QUAY_PASSWORD }}
112-
- name: Build udi
112+
- name: Verify base image exists before UDI build (UDI10)
113+
run: |
114+
echo "Verifying base image exists in registry..."
115+
docker manifest inspect ${{ env.REGISTRY }}/base-developer-image:${{env.arch}}-ubi10-pr-${{github.event.number}} || {
116+
echo "ERROR: Base image not found: ${{ env.REGISTRY }}/base-developer-image:${{env.arch}}-ubi10-pr-${{github.event.number}}"
117+
exit 1
118+
}
119+
echo "Base image verified successfully!"
120+
- name: Update UDI Dockerfile (UDI10)
121+
run: sed "s|quay.io/devfile/base-developer-image:ubi10-latest|${{ env.REGISTRY }}/base-developer-image:${{env.arch}}-ubi10-pr-${{github.event.number}}|" -i "universal/ubi10/Dockerfile"
122+
- name: Add expiration label to UDI Dockerfile (UDI10)
123+
run: sed -i '/^FROM/a LABEL quay.expires-after=4w' universal/ubi10/Dockerfile
124+
- name: Build udi (UDI10)
113125
run: |
126+
echo "=========================================="
127+
echo "Building UDI10 image for ${{env.arch}}"
128+
echo "=========================================="
114129
cd universal/ubi10 && docker buildx build \
115130
--platform linux/${{env.arch}} \
116131
--progress=plain \
117132
--push \
118133
-t ${{ env.REGISTRY }}/universal-developer-image:${{env.arch}}-ubi10-pr-${{github.event.number}} .
119134
120135
publish-base-image:
121-
name: Publish base image
136+
name: Publish base image (UBI10)
122137
runs-on: ubuntu-22.04
123138
needs: build-base-image
124139
steps:
@@ -128,23 +143,47 @@ jobs:
128143
registry: ${{ env.REGISTRY }}
129144
username: ${{ secrets.QUAY_USERNAME }}
130145
password: ${{ secrets.QUAY_PASSWORD }}
131-
- name: publish
146+
- name: Publish UBI10 base image manifest
132147
run: |
148+
echo "=========================================="
149+
echo "Publishing UBI10 base image manifest"
150+
echo "=========================================="
151+
echo "Verifying both architecture images exist..."
152+
docker manifest inspect ${{ env.REGISTRY }}/base-developer-image:amd64-ubi10-pr-${{github.event.number}} || {
153+
echo "ERROR: amd64 base image not found"
154+
exit 1
155+
}
156+
docker manifest inspect ${{ env.REGISTRY }}/base-developer-image:arm64-ubi10-pr-${{github.event.number}} || {
157+
echo "ERROR: arm64 base image not found"
158+
exit 1
159+
}
160+
echo "Both images verified, extracting digests..."
161+
162+
# Extract the actual image digest for each architecture from the manifest list
163+
AMD64_DIGEST=$(docker manifest inspect ${{ env.REGISTRY }}/base-developer-image:amd64-ubi10-pr-${{github.event.number}} | \
164+
jq -r '.manifests[] | select(.platform.architecture == "amd64") | .digest')
165+
ARM64_DIGEST=$(docker manifest inspect ${{ env.REGISTRY }}/base-developer-image:arm64-ubi10-pr-${{github.event.number}} | \
166+
jq -r '.manifests[] | select(.platform.architecture == "arm64") | .digest')
167+
168+
echo "AMD64 digest: $AMD64_DIGEST"
169+
echo "ARM64 digest: $ARM64_DIGEST"
170+
171+
echo "Creating multi-arch manifest..."
133172
docker manifest create ${{ env.REGISTRY }}/base-developer-image:ubi10-pr-${{github.event.number}} \
134-
--amend ${{ env.REGISTRY }}/base-developer-image:amd64-ubi10-pr-${{github.event.number}} \
135-
--amend ${{ env.REGISTRY }}/base-developer-image:arm64-ubi10-pr-${{github.event.number}}
136-
173+
--amend ${{ env.REGISTRY }}/base-developer-image@$AMD64_DIGEST \
174+
--amend ${{ env.REGISTRY }}/base-developer-image@$ARM64_DIGEST
175+
137176
docker manifest annotate ${{ env.REGISTRY }}/base-developer-image:ubi10-pr-${{github.event.number}} \
138-
${{ env.REGISTRY }}/base-developer-image:amd64-ubi10-pr-${{github.event.number}} \
177+
${{ env.REGISTRY }}/base-developer-image@$AMD64_DIGEST \
139178
--os linux --arch amd64
140179
docker manifest annotate ${{ env.REGISTRY }}/base-developer-image:ubi10-pr-${{github.event.number}} \
141-
${{ env.REGISTRY }}/base-developer-image:arm64-ubi10-pr-${{github.event.number}} \
180+
${{ env.REGISTRY }}/base-developer-image@$ARM64_DIGEST \
142181
--os linux --arch arm64
143-
182+
144183
docker manifest push ${{ env.REGISTRY }}/base-developer-image:ubi10-pr-${{github.event.number}}
145184
146185
publish-udi:
147-
name: Publish udi
186+
name: Publish udi (UDI10)
148187
runs-on: ubuntu-22.04
149188
needs: build-udi
150189
steps:
@@ -154,19 +193,43 @@ jobs:
154193
registry: ${{ env.REGISTRY }}
155194
username: ${{ secrets.QUAY_USERNAME }}
156195
password: ${{ secrets.QUAY_PASSWORD }}
157-
- name: publish
196+
- name: Publish UDI10 manifest
158197
run: |
198+
echo "=========================================="
199+
echo "Publishing UDI10 manifest"
200+
echo "=========================================="
201+
echo "Verifying both architecture images exist..."
202+
docker manifest inspect ${{ env.REGISTRY }}/universal-developer-image:amd64-ubi10-pr-${{github.event.number}} || {
203+
echo "ERROR: amd64 UDI image not found"
204+
exit 1
205+
}
206+
docker manifest inspect ${{ env.REGISTRY }}/universal-developer-image:arm64-ubi10-pr-${{github.event.number}} || {
207+
echo "ERROR: arm64 UDI image not found"
208+
exit 1
209+
}
210+
echo "Both images verified, extracting digests..."
211+
212+
# Extract the actual image digest for each architecture from the manifest list
213+
AMD64_DIGEST=$(docker manifest inspect ${{ env.REGISTRY }}/universal-developer-image:amd64-ubi10-pr-${{github.event.number}} | \
214+
jq -r '.manifests[] | select(.platform.architecture == "amd64") | .digest')
215+
ARM64_DIGEST=$(docker manifest inspect ${{ env.REGISTRY }}/universal-developer-image:arm64-ubi10-pr-${{github.event.number}} | \
216+
jq -r '.manifests[] | select(.platform.architecture == "arm64") | .digest')
217+
218+
echo "AMD64 digest: $AMD64_DIGEST"
219+
echo "ARM64 digest: $ARM64_DIGEST"
220+
221+
echo "Creating multi-arch manifest..."
159222
docker manifest create ${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{github.event.number}} \
160-
--amend ${{ env.REGISTRY }}/universal-developer-image:amd64-ubi10-pr-${{github.event.number}} \
161-
--amend ${{ env.REGISTRY }}/universal-developer-image:arm64-ubi10-pr-${{github.event.number}}
162-
223+
--amend ${{ env.REGISTRY }}/universal-developer-image@$AMD64_DIGEST \
224+
--amend ${{ env.REGISTRY }}/universal-developer-image@$ARM64_DIGEST
225+
163226
docker manifest annotate ${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{github.event.number}} \
164-
${{ env.REGISTRY }}/universal-developer-image:amd64-ubi10-pr-${{github.event.number}} \
227+
${{ env.REGISTRY }}/universal-developer-image@$AMD64_DIGEST \
165228
--os linux --arch amd64
166229
docker manifest annotate ${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{github.event.number}} \
167-
${{ env.REGISTRY }}/universal-developer-image:arm64-ubi10-pr-${{github.event.number}} \
230+
${{ env.REGISTRY }}/universal-developer-image@$ARM64_DIGEST \
168231
--os linux --arch arm64
169-
232+
170233
docker manifest push ${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{github.event.number}}
171234
- name: 'Comment PR'
172235
uses: actions/github-script@v7

0 commit comments

Comments
 (0)