Skip to content

Commit 11e4f5c

Browse files
authored
Add PR check (#1)
Signed-off-by: Anatolii Bazko <[email protected]>
1 parent 399e406 commit 11e4f5c

File tree

1 file changed

+138
-0
lines changed

1 file changed

+138
-0
lines changed

.github/workflows/pr-check.yaml

+138
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
#
2+
# Copyright (c) 2021-2025 Red Hat, Inc.
3+
# This program and the accompanying materials are made
4+
# available under the terms of the Eclipse Public License 2.0
5+
# which is available at https://www.eclipse.org/legal/epl-2.0/
6+
#
7+
# SPDX-License-Identifier: EPL-2.0
8+
#
9+
10+
name: Pull Request Check
11+
12+
# Trigger the workflow on pull request
13+
on: [pull_request]
14+
15+
jobs:
16+
build_base_ubi9_image:
17+
name: Build BDI9
18+
strategy:
19+
fail-fast: false
20+
matrix:
21+
runners: ['ubuntu-22.04', 'ubuntu-22.04-arm']
22+
runs-on: ${{matrix.runners}}
23+
steps:
24+
- name: Checkout
25+
uses: actions/checkout@v4
26+
- name: Set arch environment variable
27+
run: |
28+
if [[ ${{matrix.runners}} == 'ubuntu-22.04' ]]; then
29+
echo arch="amd64" >> $GITHUB_ENV
30+
else
31+
echo arch="arm64" >> $GITHUB_ENV
32+
fi
33+
- name: Free runner space
34+
run: sudo rm -rf /usr/local/lib/android
35+
- name: Cleanup docker images
36+
run: docker system prune -af
37+
- name: Docker BDI9 image
38+
run: |
39+
cd base/ubi9 && docker buildx build \
40+
--platform linux/${{env.arch}} \
41+
--progress=plain \
42+
-t base-developer-image-${{env.arch}} .
43+
- name: Display docker images
44+
run: docker images
45+
- name: Compress image to a file
46+
run: docker save base-developer-image-${{env.arch}} | gzip > base-developer-image-${{env.arch}}.tgz
47+
- name: Upload image artifact
48+
uses: actions/upload-artifact@v4
49+
with:
50+
name: base-developer-image-${{env.arch}}
51+
path: base-developer-image-${{env.arch}}.tgz
52+
53+
build_universal_ubi9_image:
54+
name: Build UDI9 image
55+
strategy:
56+
fail-fast: false
57+
matrix:
58+
runners: ['ubuntu-22.04', 'ubuntu-22.04-arm']
59+
runs-on: ${{matrix.runners}}
60+
needs: build_base_ubi9_image
61+
steps:
62+
- name: Set arch environment variable
63+
run: |
64+
if [[ ${{matrix.runners}} == 'ubuntu-22.04' ]]; then
65+
echo arch="amd64" >> $GITHUB_ENV
66+
else
67+
echo arch="arm64" >> $GITHUB_ENV
68+
fi
69+
- name: Checkout
70+
uses: actions/checkout@v4
71+
- name: Free runner space
72+
run: sudo rm -rf /usr/local/lib/android
73+
- name: Cleanup docker images
74+
run: docker system prune -af
75+
- name: Download BDI artifacts
76+
uses: actions/download-artifact@v4
77+
with:
78+
pattern: base-developer-image-*
79+
merge-multiple: true
80+
path: .
81+
- name: List downloaded files
82+
run: ls -lah
83+
- name: Load docker images
84+
run: docker load -i base-developer-image-${{env.arch}}.tgz
85+
- name: Display docker images
86+
run: docker images
87+
- name: Update UDI Dockerfile
88+
run: sed "s|quay.io/devfile/base-developer-image:ubi9-latest|base-developer-image-${{env.arch}}|" -i "universal/ubi9/Dockerfile"
89+
- name: Login to Quay.io
90+
uses: docker/login-action@v2
91+
with:
92+
registry: quay.io
93+
username: ${{ secrets.QUAY_USERNAME }}
94+
password: ${{ secrets.QUAY_PASSWORD }}
95+
- name: Build UDI9 image
96+
run: |
97+
cd universal/ubi9 && docker buildx build \
98+
--platform linux/${{env.arch}} \
99+
--progress=plain \
100+
--push \
101+
-t quay.io/devfile/universal-developer-image:${{env.arch}}-pr-${{github.event.number}} .
102+
103+
publish-images:
104+
name: publish image from the pull request
105+
runs-on: ubuntu-22.04
106+
needs: build_universal_ubi9_image
107+
steps:
108+
- name: Login to Quay.io
109+
uses: docker/login-action@v2
110+
with:
111+
registry: quay.io
112+
username: ${{ secrets.QUAY_USERNAME }}
113+
password: ${{ secrets.QUAY_PASSWORD }}
114+
- name: publish
115+
run: |
116+
docker manifest create quay.io/devfile/universal-developer-image:pr-${{github.event.number}} \
117+
--amend quay.io/devfile/universal-developer-image:amd64-pr-${{github.event.number}} \
118+
--amend quay.io/devfile/universal-developer-image:arm64-pr-${{github.event.number}}
119+
120+
docker manifest annotate quay.io/devfile/universal-developer-image:pr-${{github.event.number}} \
121+
quay.io/devfile/universal-developer-image:amd64-pr-${{github.event.number}} \
122+
--os linux --arch amd64
123+
docker manifest annotate quay.io/devfile/universal-developer-image:pr-${{github.event.number}} \
124+
quay.io/devfile/universal-developer-image:arm64-pr-${{github.event.number}} \
125+
--os linux --arch arm64
126+
127+
docker manifest push quay.io/devfile/universal-developer-image:pr-${{github.event.number}}
128+
- name: 'Comment PR'
129+
uses: actions/github-script@v7
130+
with:
131+
script: |
132+
const { repo: { owner, repo } } = context;
133+
await github.rest.issues.createComment({
134+
issue_number: ${{github.event.number}},
135+
owner: context.repo.owner,
136+
repo: context.repo.repo,
137+
body: `Pull Request images published ✨\n\nUDI: [quay.io/devfile/universal-developer-image:pr-${{github.event.number}}](https://quay.io/devfile/universal-developer-image:pr-${{github.event.number}})`
138+
})

0 commit comments

Comments
 (0)