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 UBI 10
11+
12+ # Trigger the workflow on pull request
13+ on : [pull_request]
14+
15+ env :
16+ # Use repository variable if set, otherwise fallback to default registry
17+ REGISTRY : ${{ vars.REGISTRY || 'quay.io/devfile' }}
18+
19+ jobs :
20+ build-base-image :
21+ name : Build base image
22+ strategy :
23+ fail-fast : false
24+ matrix :
25+ runners : ['ubuntu-22.04', 'ubuntu-22.04-arm']
26+ runs-on : ${{matrix.runners}}
27+ steps :
28+ - name : Checkout
29+ uses : actions/checkout@v4
30+ - name : Set arch environment variable
31+ run : |
32+ if [[ ${{matrix.runners}} == 'ubuntu-22.04' ]]; then
33+ echo arch="amd64" >> $GITHUB_ENV
34+ else
35+ echo arch="arm64" >> $GITHUB_ENV
36+ fi
37+ - name : Free runner space
38+ run : sudo rm -rf /usr/local/lib/android
39+ - name : Cleanup docker images
40+ run : docker system prune -af
41+ - name : Build base image
42+ run : |
43+ cd base/ubi10 && docker buildx build \
44+ --platform linux/${{env.arch}} \
45+ --progress=plain \
46+ -t base-developer-image-${{env.arch}} .
47+ - name : Display docker images
48+ 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 }}
55+ # TODO: Remove this step once UDI on UBI 10 is ready and we have proper PR workflow for UDI
56+ # This temporary step pushes base image to registry for testing purposes
57+ - name : Tag and push base image for testing
58+ run : |
59+ docker tag base-developer-image-${{env.arch}} ${{ env.REGISTRY }}/base-developer-image:${{env.arch}}-ubi10-pr-${{github.event.number}}
60+ docker push ${{ env.REGISTRY }}/base-developer-image:${{env.arch}}-ubi10-pr-${{github.event.number}}
61+ - name : Compress image to a file
62+ run : docker save base-developer-image-${{env.arch}} | gzip > base-developer-image-${{env.arch}}.tgz
63+ - name : Upload image artifact
64+ uses : actions/upload-artifact@v4
65+ with :
66+ name : base-developer-image-${{env.arch}}
67+ path : base-developer-image-${{env.arch}}.tgz
68+
69+ publish-base-image :
70+ name : Publish base image
71+ runs-on : ubuntu-22.04
72+ needs : build-base-image
73+ steps :
74+ - name : Login to Registry
75+ uses : docker/login-action@v3
76+ with :
77+ registry : ${{ env.REGISTRY }}
78+ username : ${{ secrets.QUAY_USERNAME }}
79+ password : ${{ secrets.QUAY_PASSWORD }}
80+ # TODO: Remove this job once UDI on UBI 10 is ready and we have proper PR workflow for UDI
81+ # This temporary job publishes base image manifest for testing purposes
82+ - name : publish base image manifest
83+ run : |
84+ docker manifest create ${{ env.REGISTRY }}/base-developer-image:ubi10-pr-${{github.event.number}} \
85+ --amend ${{ env.REGISTRY }}/base-developer-image:amd64-ubi10-pr-${{github.event.number}} \
86+ --amend ${{ env.REGISTRY }}/base-developer-image:arm64-ubi10-pr-${{github.event.number}}
87+
88+ docker manifest annotate ${{ env.REGISTRY }}/base-developer-image:ubi10-pr-${{github.event.number}} \
89+ ${{ env.REGISTRY }}/base-developer-image:amd64-ubi10-pr-${{github.event.number}} \
90+ --os linux --arch amd64
91+ docker manifest annotate ${{ env.REGISTRY }}/base-developer-image:ubi10-pr-${{github.event.number}} \
92+ ${{ env.REGISTRY }}/base-developer-image:arm64-ubi10-pr-${{github.event.number}} \
93+ --os linux --arch arm64
94+
95+ docker manifest push ${{ env.REGISTRY }}/base-developer-image:ubi10-pr-${{github.event.number}}
96+ - name : ' Comment PR'
97+ uses : actions/github-script@v7
98+ with :
99+ script : |
100+ const { repo: { owner, repo } } = context;
101+ await github.rest.issues.createComment({
102+ issue_number: ${{github.event.number}},
103+ owner: context.repo.owner,
104+ repo: context.repo.repo,
105+ body: `Pull Request UBI 10 images published ✨\n\nBase Image: [${{ env.REGISTRY }}/base-developer-image:ubi10-pr-${{github.event.number}}](https://${{ env.REGISTRY }}/base-developer-image:ubi10-pr-${{github.event.number}})`
106+ })
107+
108+ # build-udi:
109+ # name: Build udi
110+ # strategy:
111+ # fail-fast: false
112+ # matrix:
113+ # runners: ['ubuntu-22.04', 'ubuntu-22.04-arm']
114+ # runs-on: ${{matrix.runners}}
115+ # needs: build-base-image
116+ # steps:
117+ # - name: Set arch environment variable
118+ # run: |
119+ # if [[ ${{matrix.runners}} == 'ubuntu-22.04' ]]; then
120+ # echo arch="amd64" >> $GITHUB_ENV
121+ # else
122+ # echo arch="arm64" >> $GITHUB_ENV
123+ # fi
124+ # - name: Checkout
125+ # uses: actions/checkout@v4
126+ # - name: Free runner space
127+ # run: sudo rm -rf /usr/local/lib/android
128+ # - name: Cleanup docker images
129+ # run: docker system prune -af
130+ # - name: Download BDI artifacts
131+ # uses: actions/download-artifact@v4
132+ # with:
133+ # pattern: base-developer-image-*
134+ # merge-multiple: true
135+ # path: .
136+ # - name: List downloaded files
137+ # run: ls -lah
138+ # - name: Load docker images
139+ # run: docker load -i base-developer-image-${{env.arch}}.tgz
140+ # - name: Display docker images
141+ # run: docker images
142+ # - name: Update UDI Dockerfile
143+ # run: sed "s|${{ env.REGISTRY }}/base-developer-image:ubi10-latest|base-developer-image-${{env.arch}}|" -i "universal/ubi10/Dockerfile"
144+ # - name: Login to Registry
145+ # uses: docker/login-action@v3
146+ # with:
147+ # registry: ${{ env.REGISTRY }}
148+ # username: ${{ secrets.QUAY_USERNAME }}
149+ # password: ${{ secrets.QUAY_PASSWORD }}
150+ # - name: Build udi
151+ # run: |
152+ # cd universal/ubi10 && docker buildx build \
153+ # --platform linux/${{env.arch}} \
154+ # --progress=plain \
155+ # --push \
156+ # -t ${{ env.REGISTRY }}/universal-developer-image:${{env.arch}}-ubi10-pr-${{github.event.number}} .
157+
158+ # publish-udi:
159+ # name: Publish udi
160+ # runs-on: ubuntu-22.04
161+ # needs: build-udi
162+ # steps:
163+ # - name: Login to Registry
164+ # uses: docker/login-action@v3
165+ # with:
166+ # registry: ${{ env.REGISTRY }}
167+ # username: ${{ secrets.QUAY_USERNAME }}
168+ # password: ${{ secrets.QUAY_PASSWORD }}
169+ # - name: publish
170+ # run: |
171+ # docker manifest create ${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{github.event.number}} \
172+ # --amend ${{ env.REGISTRY }}/universal-developer-image:amd64-ubi10-pr-${{github.event.number}} \
173+ # --amend ${{ env.REGISTRY }}/universal-developer-image:arm64-ubi10-pr-${{github.event.number}}
174+ #
175+ # docker manifest annotate ${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{github.event.number}} \
176+ # ${{ env.REGISTRY }}/universal-developer-image:amd64-ubi10-pr-${{github.event.number}} \
177+ # --os linux --arch amd64
178+ # docker manifest annotate ${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{github.event.number}} \
179+ # ${{ env.REGISTRY }}/universal-developer-image:arm64-ubi10-pr-${{github.event.number}} \
180+ # --os linux --arch arm64
181+ #
182+ # docker manifest push ${{ env.REGISTRY }}/universal-developer-image:ubi10-pr-${{github.event.number}}
183+ # - name: 'Comment PR'
184+ # uses: actions/github-script@v7
185+ # with:
186+ # script: |
187+ # const { repo: { owner, repo } } = context;
188+ # await github.rest.issues.createComment({
189+ # issue_number: ${{github.event.number}},
190+ # owner: context.repo.owner,
191+ # repo: context.repo.repo,
192+ # body: `Pull Request 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}})`
193+ # })
0 commit comments