Add UBI10 support for UDI with updated tool versions #86
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # | |
| # 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}})` | |
| }) |