Skip to content

Commit 6e70d37

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

File tree

4 files changed

+126
-44
lines changed

4 files changed

+126
-44
lines changed

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

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@
1212

1313
name: Empty workspace smoke test on udi10
1414
on:
15-
pull_request:
16-
paths-ignore:
17-
- '**/*.md'
18-
- .devfile.yaml
19-
- LICENSE
15+
workflow_run:
16+
workflows: ["Pull Request Check UBI 10"]
17+
types:
18+
- completed
19+
branches:
20+
- '**'
2021

2122
env:
2223
# Use repository variable if set, otherwise fallback to default registry
@@ -28,6 +29,7 @@ env:
2829

2930
jobs:
3031
workspace-api-tests-on-minikube:
32+
if: github.event.workflow_run.conclusion == 'success'
3133
strategy:
3234
fail-fast: false
3335
matrix:
@@ -40,11 +42,17 @@ jobs:
4042
- name: Free runner space
4143
run: |
4244
sudo rm -rf /usr/local/lib/android
43-
# obtain the PR number for tagging the image
4445
- name: Get PR number
4546
id: get_pr_number
4647
run: |
47-
pr_number=$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')
48+
pr_number="${{ github.event.workflow_run.pull_requests[0].number }}"
49+
if [ -z "$pr_number" ] || [ "$pr_number" == "null" ]; then
50+
pr_number=$(echo "${{ github.event.workflow_run.head_branch }}" | grep -oE '[0-9]+' | head -1 || echo "")
51+
fi
52+
if [ -z "$pr_number" ]; then
53+
echo "Error: Could not extract PR number from workflow_run event"
54+
exit 1
55+
fi
4856
echo "PR_NUMBER=$pr_number" >> $GITHUB_ENV
4957
echo ">>>>>>>>>>>$pr_number"
5058
@@ -67,18 +75,18 @@ jobs:
6775
install minikube-linux-${{env.arch}} /usr/local/bin/minikube && rm minikube-linux-${{env.arch}}
6876
minikube start --vm-driver=docker --addons=ingress --cpus 2 --memory 6500
6977
70-
# connect with docker daemon in the minikube and build an image there
71-
# we need to build the image in the minikube because we have just 14 GB of space on the runner
72-
# the UBI have more than 9 GB size this approach saves the disk space
73-
- name: Build base image
74-
run: |
75-
eval $(minikube docker-env)
76-
cd base/ubi10 && docker build -t ${{ env.REGISTRY }}/base-developer-image:ubi10-latest .
78+
- name: Login to Registry
79+
uses: docker/login-action@v3
80+
with:
81+
registry: ${{ env.REGISTRY }}
82+
username: ${{ secrets.QUAY_USERNAME }}
83+
password: ${{ secrets.QUAY_PASSWORD }}
7784

78-
- name: Build universal image
85+
- name: Pull UDI image into minikube
7986
run: |
8087
eval $(minikube docker-env)
81-
cd universal/ubi10 && docker build -t ${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{ env.PR_NUMBER }} .
88+
docker pull ${{ env.REGISTRY }}/universal-developer-image:${{env.arch}}-ubi10-pr-${{ env.PR_NUMBER }}
89+
docker tag ${{ env.REGISTRY }}/universal-developer-image:${{env.arch}}-ubi10-pr-${{ env.PR_NUMBER }} ${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{ env.PR_NUMBER }}
8290
8391
- name: Checkout DWO
8492
uses: actions/checkout@master
@@ -105,8 +113,6 @@ jobs:
105113
106114
- name: Check that UDI is present in the image list
107115
run: |
108-
# we used it for the build above and do not need it anymore. It saves the disk space
109-
minikube image rm ${{ env.REGISTRY }}/base-developer-image:ubi10-latest
110116
minikube image list --format table
111117
112118
- name: Install NodeJs

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

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,12 @@
1212

1313
name: Empty workspace smoke test on udi9
1414
on:
15-
pull_request:
16-
paths-ignore:
17-
- '**/*.md'
18-
- .devfile.yaml
19-
- LICENSE
15+
workflow_run:
16+
workflows: ["Pull Request Check"]
17+
types:
18+
- completed
19+
branches:
20+
- '**'
2021

2122
env:
2223
# Use repository variable if set, otherwise fallback to default registry
@@ -28,6 +29,7 @@ env:
2829

2930
jobs:
3031
workspace-api-tests-on-minikube:
32+
if: github.event.workflow_run.conclusion == 'success'
3133
strategy:
3234
fail-fast: false
3335
matrix:
@@ -40,11 +42,17 @@ jobs:
4042
- name: Free runner space
4143
run: |
4244
sudo rm -rf /usr/local/lib/android
43-
# obtain the PR number for tagging the image
4445
- name: Get PR number
4546
id: get_pr_number
4647
run: |
47-
pr_number=$(echo $GITHUB_REF | awk 'BEGIN { FS = "/" } ; { print $3 }')
48+
pr_number="${{ github.event.workflow_run.pull_requests[0].number }}"
49+
if [ -z "$pr_number" ] || [ "$pr_number" == "null" ]; then
50+
pr_number=$(echo "${{ github.event.workflow_run.head_branch }}" | grep -oE '[0-9]+' | head -1 || echo "")
51+
fi
52+
if [ -z "$pr_number" ]; then
53+
echo "Error: Could not extract PR number from workflow_run event"
54+
exit 1
55+
fi
4856
echo "PR_NUMBER=$pr_number" >> $GITHUB_ENV
4957
echo ">>>>>>>>>>>$pr_number"
5058
@@ -67,18 +75,18 @@ jobs:
6775
install minikube-linux-${{env.arch}} /usr/local/bin/minikube && rm minikube-linux-${{env.arch}}
6876
minikube start --vm-driver=docker --addons=ingress --cpus 2 --memory 6500
6977
70-
# connect with docker daemon in the minikube and build an image there
71-
# we need to build the image in the minikube because we have just 14 GB of space on the runner
72-
# the UBI have more than 9 GB size this approach saves the disk space
73-
- name: Build base image
74-
run: |
75-
eval $(minikube docker-env)
76-
cd base/ubi9 && docker build -t ${{ env.REGISTRY }}/base-developer-image:ubi9-latest .
78+
- name: Login to Registry
79+
uses: docker/login-action@v3
80+
with:
81+
registry: ${{ env.REGISTRY }}
82+
username: ${{ secrets.QUAY_USERNAME }}
83+
password: ${{ secrets.QUAY_PASSWORD }}
7784

78-
- name: Build universal image
85+
- name: Pull UDI image into minikube
7986
run: |
8087
eval $(minikube docker-env)
81-
cd universal/ubi9 && docker build -t ${{ env.REGISTRY }}/universal-developer-image:ubi9-pr-${{ env.PR_NUMBER }} .
88+
docker pull ${{ env.REGISTRY }}/universal-developer-image:${{env.arch}}-pr-${{ env.PR_NUMBER }}
89+
docker tag ${{ env.REGISTRY }}/universal-developer-image:${{env.arch}}-pr-${{ env.PR_NUMBER }} ${{ env.REGISTRY }}/universal-developer-image:ubi9-pr-${{ env.PR_NUMBER }}
8290
8391
- name: Checkout DWO
8492
uses: actions/checkout@master
@@ -105,8 +113,6 @@ jobs:
105113
106114
- name: Check that UDI is present in the image list
107115
run: |
108-
# we used it for the build above and do not need it anymore. It saves the disk space
109-
minikube image rm ${{ env.REGISTRY }}/base-developer-image:ubi9-latest
110116
minikube image list --format table
111117
112118
- name: Install NodeJs

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

Lines changed: 39 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,20 +38,24 @@ jobs:
3838
run: sudo rm -rf /usr/local/lib/android
3939
- name: Cleanup docker images
4040
run: docker system prune -af
41+
- name: Add expiration label to base Dockerfile
42+
run: sed -i '/^FROM/a LABEL quay.expires-after=4w' base/ubi10/Dockerfile
43+
- name: Login to Registry
44+
uses: docker/login-action@v3
45+
with:
46+
registry: ${{ env.REGISTRY }}
47+
username: ${{ secrets.QUAY_USERNAME }}
48+
password: ${{ secrets.QUAY_PASSWORD }}
4149
- name: Build base image
4250
run: |
4351
cd base/ubi10 && docker buildx build \
4452
--platform linux/${{env.arch}} \
4553
--progress=plain \
54+
--push \
55+
-t ${{ env.REGISTRY }}/base-developer-image:${{env.arch}}-ubi10-pr-${{github.event.number}} \
4656
-t base-developer-image-${{env.arch}} .
4757
- name: Display docker images
4858
run: docker images
49-
- name: Login to Registry
50-
uses: docker/login-action@v3
51-
with:
52-
registry: ${{ env.REGISTRY }}
53-
username: ${{ secrets.QUAY_USERNAME }}
54-
password: ${{ secrets.QUAY_PASSWORD }}
5559
- name: Compress image to a file
5660
run: docker save base-developer-image-${{env.arch}} | gzip > base-developer-image-${{env.arch}}.tgz
5761
- name: Upload image artifact
@@ -97,6 +101,8 @@ jobs:
97101
run: docker images
98102
- name: Update UDI Dockerfile
99103
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
100106
- name: Login to Registry
101107
uses: docker/login-action@v3
102108
with:
@@ -111,6 +117,32 @@ jobs:
111117
--push \
112118
-t ${{ env.REGISTRY }}/universal-developer-image:${{env.arch}}-ubi10-pr-${{github.event.number}} .
113119
120+
publish-base-image:
121+
name: Publish base image
122+
runs-on: ubuntu-22.04
123+
needs: build-base-image
124+
steps:
125+
- name: Login to Registry
126+
uses: docker/login-action@v3
127+
with:
128+
registry: ${{ env.REGISTRY }}
129+
username: ${{ secrets.QUAY_USERNAME }}
130+
password: ${{ secrets.QUAY_PASSWORD }}
131+
- name: publish
132+
run: |
133+
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+
137+
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}} \
139+
--os linux --arch amd64
140+
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}} \
142+
--os linux --arch arm64
143+
144+
docker manifest push ${{ env.REGISTRY }}/base-developer-image:ubi10-pr-${{github.event.number}}
145+
114146
publish-udi:
115147
name: Publish udi
116148
runs-on: ubuntu-22.04
@@ -145,5 +177,5 @@ jobs:
145177
issue_number: ${{github.event.number}},
146178
owner: context.repo.owner,
147179
repo: context.repo.repo,
148-
body: `Pull Request UBI 10 images published ✨\n\nUDI: [${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{github.event.number}}](https://${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{github.event.number}})`
180+
body: `Pull Request UBI 10 images published ✨\n\nBase: [${{ env.REGISTRY }}/base-developer-image:ubi10-pr-${{github.event.number}}](https://${{ env.REGISTRY }}/base-developer-image:ubi10-pr-${{github.event.number}})\nUDI: [${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{github.event.number}}](https://${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{github.event.number}})`
149181
})

.github/workflows/pr-check.yaml

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,21 @@ jobs:
3838
run: sudo rm -rf /usr/local/lib/android
3939
- name: Cleanup docker images
4040
run: docker system prune -af
41+
- name: Add expiration label to base Dockerfile
42+
run: sed -i '/^FROM/a LABEL quay.expires-after=4w' base/ubi9/Dockerfile
43+
- name: Login to Registry
44+
uses: docker/login-action@v3
45+
with:
46+
registry: ${{ env.REGISTRY }}
47+
username: ${{ secrets.QUAY_USERNAME }}
48+
password: ${{ secrets.QUAY_PASSWORD }}
4149
- name: Build base image
4250
run: |
4351
cd base/ubi9 && docker buildx build \
4452
--platform linux/${{env.arch}} \
4553
--progress=plain \
54+
--push \
55+
-t ${{ env.REGISTRY }}/base-developer-image:${{env.arch}}-pr-${{github.event.number}} \
4656
-t base-developer-image-${{env.arch}} .
4757
- name: Display docker images
4858
run: docker images
@@ -90,6 +100,8 @@ jobs:
90100
run: docker images
91101
- name: Update UDI Dockerfile
92102
run: sed "s|quay.io/devfile/base-developer-image:ubi9-latest|base-developer-image-${{env.arch}}|" -i "universal/ubi9/Dockerfile"
103+
- name: Add expiration label to UDI Dockerfile
104+
run: sed -i '/^FROM/a LABEL quay.expires-after=4w' universal/ubi9/Dockerfile
93105
- name: Login to Registry
94106
uses: docker/login-action@v3
95107
with:
@@ -104,6 +116,32 @@ jobs:
104116
--push \
105117
-t ${{ env.REGISTRY }}/universal-developer-image:${{env.arch}}-pr-${{github.event.number}} .
106118
119+
publish-base-image:
120+
name: Publish base image
121+
runs-on: ubuntu-22.04
122+
needs: build-base-image
123+
steps:
124+
- name: Login to Registry
125+
uses: docker/login-action@v3
126+
with:
127+
registry: ${{ env.REGISTRY }}
128+
username: ${{ secrets.QUAY_USERNAME }}
129+
password: ${{ secrets.QUAY_PASSWORD }}
130+
- name: publish
131+
run: |
132+
docker manifest create ${{ env.REGISTRY }}/base-developer-image:pr-${{github.event.number}} \
133+
--amend ${{ env.REGISTRY }}/base-developer-image:amd64-pr-${{github.event.number}} \
134+
--amend ${{ env.REGISTRY }}/base-developer-image:arm64-pr-${{github.event.number}}
135+
136+
docker manifest annotate ${{ env.REGISTRY }}/base-developer-image:pr-${{github.event.number}} \
137+
${{ env.REGISTRY }}/base-developer-image:amd64-pr-${{github.event.number}} \
138+
--os linux --arch amd64
139+
docker manifest annotate ${{ env.REGISTRY }}/base-developer-image:pr-${{github.event.number}} \
140+
${{ env.REGISTRY }}/base-developer-image:arm64-pr-${{github.event.number}} \
141+
--os linux --arch arm64
142+
143+
docker manifest push ${{ env.REGISTRY }}/base-developer-image:pr-${{github.event.number}}
144+
107145
publish-udi:
108146
name: Publish udi
109147
runs-on: ubuntu-22.04
@@ -138,5 +176,5 @@ jobs:
138176
issue_number: ${{github.event.number}},
139177
owner: context.repo.owner,
140178
repo: context.repo.repo,
141-
body: `Pull Request images published ✨\n\nUDI: [${{ env.REGISTRY }}/universal-developer-image:pr-${{github.event.number}}](https://${{ env.REGISTRY }}/universal-developer-image:pr-${{github.event.number}})`
179+
body: `Pull Request images published ✨\n\nBase: [${{ env.REGISTRY }}/base-developer-image:pr-${{github.event.number}}](https://${{ env.REGISTRY }}/base-developer-image:pr-${{github.event.number}})\nUDI: [${{ env.REGISTRY }}/universal-developer-image:pr-${{github.event.number}}](https://${{ env.REGISTRY }}/universal-developer-image:pr-${{github.event.number}})`
142180
})

0 commit comments

Comments
 (0)