Skip to content

Add UBI10 support for UDI with updated tool versions #86

Add UBI10 support for UDI with updated tool versions

Add UBI10 support for UDI with updated tool versions #86

Workflow file for this run

#
# Copyright (c) 2021-2025 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
name: Pull Request Check
# Trigger the workflow on pull request
on: [pull_request]
env:
# Use repository variable if set, otherwise fallback to default registry
REGISTRY: ${{ vars.REGISTRY || 'quay.io/devfile' }}
jobs:
build-base-image:
name: Build base image
strategy:
fail-fast: false
matrix:
runners: ['ubuntu-22.04', 'ubuntu-22.04-arm']
runs-on: ${{matrix.runners}}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Set arch environment variable
run: |
if [[ ${{matrix.runners}} == 'ubuntu-22.04' ]]; then
echo arch="amd64" >> $GITHUB_ENV
else
echo arch="arm64" >> $GITHUB_ENV
fi
- name: Free runner space
run: sudo rm -rf /usr/local/lib/android
- name: Cleanup docker images
run: docker system prune -af
- name: Add expiration label to base Dockerfile
run: sed -i '/^FROM/a LABEL quay.expires-after=4w' base/ubi9/Dockerfile
- name: Login to Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_PASSWORD }}
- name: Build base image
run: |
cd base/ubi9 && docker buildx build \
--platform linux/${{env.arch}} \
--progress=plain \
--no-cache \
--push \
-t ${{ env.REGISTRY }}/base-developer-image:${{env.arch}}-pr-${{github.event.number}} .
- name: Display docker images
run: docker images
build-udi:
name: Build udi
strategy:
fail-fast: false
matrix:
runners: ['ubuntu-22.04', 'ubuntu-22.04-arm']
runs-on: ${{matrix.runners}}
needs: build-base-image
steps:
- name: Set arch environment variable
run: |
if [[ ${{matrix.runners}} == 'ubuntu-22.04' ]]; then
echo arch="amd64" >> $GITHUB_ENV
else
echo arch="arm64" >> $GITHUB_ENV
fi
- name: Checkout
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Free runner space
run: sudo rm -rf /usr/local/lib/android
- name: Cleanup docker images
run: docker system prune -af
- name: Login to Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_PASSWORD }}
- name: Update UDI Dockerfile
run: sed "s|quay.io/devfile/base-developer-image:ubi9-latest|${{ env.REGISTRY }}/base-developer-image:${{env.arch}}-pr-${{github.event.number}}|" -i "universal/ubi9/Dockerfile"
- name: Add expiration label to UDI Dockerfile
run: sed -i '/^FROM/a LABEL quay.expires-after=4w' universal/ubi9/Dockerfile
- name: Build udi
run: |
cd universal/ubi9 && docker buildx build \
--platform linux/${{env.arch}} \
--progress=plain \
--no-cache \
--push \
-t ${{ env.REGISTRY }}/universal-developer-image:${{env.arch}}-pr-${{github.event.number}} .
publish-base-image:
name: Publish base image
runs-on: ubuntu-22.04
needs: build-base-image
steps:
- name: Login to Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_PASSWORD }}
- name: publish
run: |
docker manifest create ${{ env.REGISTRY }}/base-developer-image:pr-${{github.event.number}} \
--amend ${{ env.REGISTRY }}/base-developer-image:amd64-pr-${{github.event.number}} \
--amend ${{ env.REGISTRY }}/base-developer-image:arm64-pr-${{github.event.number}}
docker manifest annotate ${{ env.REGISTRY }}/base-developer-image:pr-${{github.event.number}} \
${{ env.REGISTRY }}/base-developer-image:amd64-pr-${{github.event.number}} \
--os linux --arch amd64
docker manifest annotate ${{ env.REGISTRY }}/base-developer-image:pr-${{github.event.number}} \
${{ env.REGISTRY }}/base-developer-image:arm64-pr-${{github.event.number}} \
--os linux --arch arm64
docker manifest push ${{ env.REGISTRY }}/base-developer-image:pr-${{github.event.number}}
publish-udi:
name: Publish udi
runs-on: ubuntu-22.04
needs: build-udi
steps:
- name: Login to Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_PASSWORD }}
- name: publish
run: |
docker manifest create ${{ env.REGISTRY }}/universal-developer-image:pr-${{github.event.number}} \
--amend ${{ env.REGISTRY }}/universal-developer-image:amd64-pr-${{github.event.number}} \
--amend ${{ env.REGISTRY }}/universal-developer-image:arm64-pr-${{github.event.number}}
docker manifest annotate ${{ env.REGISTRY }}/universal-developer-image:pr-${{github.event.number}} \
${{ env.REGISTRY }}/universal-developer-image:amd64-pr-${{github.event.number}} \
--os linux --arch amd64
docker manifest annotate ${{ env.REGISTRY }}/universal-developer-image:pr-${{github.event.number}} \
${{ env.REGISTRY }}/universal-developer-image:arm64-pr-${{github.event.number}} \
--os linux --arch arm64
docker manifest push ${{ env.REGISTRY }}/universal-developer-image:pr-${{github.event.number}}
- name: 'Comment PR'
uses: actions/github-script@v7
with:
script: |
const { repo: { owner, repo } } = context;
await github.rest.issues.createComment({
issue_number: ${{github.event.number}},
owner: context.repo.owner,
repo: context.repo.repo,
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}})`
})