Skip to content

Add ppc64le support for base image (#243) #8

Add ppc64le support for base image (#243)

Add ppc64le support for base image (#243) #8

Workflow file for this run

name: Build of UBI 10 based Developer Images
on:
push:
branches: [ main ]
workflow_dispatch:
workflow_call:
# Map the workflow outputs to job outputs
secrets:
QUAY_USERNAME:
required: true
QUAY_PASSWORD:
required: true
outputs:
uniq_tag:
description: "The unique tag for the universal developer image"
value: ${{ jobs.publish-udi.outputs.setTagName.uniq_tag }}
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:
include:
- name: amd64-build
runner: ubuntu-22.04
arch: amd64
- name: arm64-build
runner: ubuntu-22.04-arm
arch: arm64
- name: ppc64le-build
runner: ubuntu-22.04
arch: ppc64le
runs-on: ${{ matrix.runner }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set arch environment variable
run: echo "arch=${{ matrix.arch }}" >> $GITHUB_ENV
- name: Set short_sha environment variable
run: echo short_sha="$(git rev-parse --short=7 HEAD)" >> $GITHUB_ENV
- name: Free runner space
run: sudo rm -rf /usr/local/lib/android
- name: Cleanup docker images
run: docker system prune -af
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker-container
platforms: linux/amd64,linux/arm64,linux/ppc64le
- 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/ubi10 && docker buildx build \
--platform linux/${{env.arch}} \
--progress=plain \
--push \
-t ${{ env.REGISTRY }}/base-developer-image:${{env.arch}}-ubi10-${{env.short_sha}} .
publish-base-image:
name: Publish base image
runs-on: ubuntu-22.04
needs: build-base-image
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set short_sha environment variable
run: echo short_sha="$(git rev-parse --short=7 HEAD)" >> $GITHUB_ENV
- name: Login to Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_PASSWORD }}
- name: publish
run: |
for tag in ubi10-latest ubi10-${{env.short_sha}};
do
docker manifest create ${{ env.REGISTRY }}/base-developer-image:${tag} \
--amend ${{ env.REGISTRY }}/base-developer-image:amd64-ubi10-${{env.short_sha}} \
--amend ${{ env.REGISTRY }}/base-developer-image:arm64-ubi10-${{env.short_sha}} \
--amend ${{ env.REGISTRY }}/base-developer-image:ppc64le-ubi10-${{env.short_sha}}
docker manifest annotate ${{ env.REGISTRY }}/base-developer-image:${tag} \
${{ env.REGISTRY }}/base-developer-image:amd64-ubi10-${{env.short_sha}} \
--os linux --arch amd64
docker manifest annotate ${{ env.REGISTRY }}/base-developer-image:${tag} \
${{ env.REGISTRY }}/base-developer-image:arm64-ubi10-${{env.short_sha}} \
--os linux --arch arm64
docker manifest annotate ${{ env.REGISTRY }}/base-developer-image:${tag} \
${{ env.REGISTRY }}/base-developer-image:ppc64le-ubi10-${{env.short_sha}} \
--os linux --arch ppc64le
docker manifest push ${{ env.REGISTRY }}/base-developer-image:${tag}
done
build-udi:
name: Build udi
strategy:
fail-fast: false
matrix:
include:
- name: amd64-build
runner: ubuntu-22.04
arch: amd64
- name: arm64-build
runner: ubuntu-22.04-arm
arch: arm64
- name: ppc64le-build
runner: ubuntu-22.04
arch: ppc64le
runs-on: ${{ matrix.runner }}
needs: publish-base-image
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set arch environment variable
run: echo "arch=${{ matrix.arch }}" >> $GITHUB_ENV
- name: Set short_sha environment variable
run: echo short_sha="$(git rev-parse --short=7 HEAD)" >> $GITHUB_ENV
- name: Free runner space
run: sudo rm -rf /usr/local/lib/android
- name: Cleanup docker images
run: docker system prune -af
- name: Set up QEMU
uses: docker/setup-qemu-action@v2
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
with:
driver: docker-container
platforms: linux/amd64,linux/arm64,linux/ppc64le
- name: Login to Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_PASSWORD }}
- name: Build udi
run: |
cd universal/ubi10 && docker buildx build \
--platform linux/${{env.arch}} \
--progress=plain \
--push \
-t ${{ env.REGISTRY }}/universal-developer-image:${{env.arch}}-ubi10-${{env.short_sha}} .
publish-udi:
name: Publish udi
runs-on: ubuntu-22.04
needs: build-udi
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set short_sha environment variable
run: echo short_sha="$(git rev-parse --short=7 HEAD)" >> $GITHUB_ENV
- name: Login to Registry
uses: docker/login-action@v3
with:
registry: ${{ env.REGISTRY }}
username: ${{ secrets.QUAY_USERNAME }}
password: ${{ secrets.QUAY_PASSWORD }}
- name: publish
run: |
for tag in ubi10-latest ubi10-${{env.short_sha}};
do
docker manifest create ${{ env.REGISTRY }}/universal-developer-image:${tag} \
--amend ${{ env.REGISTRY }}/universal-developer-image:amd64-ubi10-${{env.short_sha}} \
--amend ${{ env.REGISTRY }}/universal-developer-image:arm64-ubi10-${{env.short_sha}} \
--amend ${{ env.REGISTRY }}/universal-developer-image:ppc64le-ubi10-${{env.short_sha}}
docker manifest annotate ${{ env.REGISTRY }}/universal-developer-image:${tag} \
${{ env.REGISTRY }}/universal-developer-image:amd64-ubi10-${{env.short_sha}} \
--os linux --arch amd64
docker manifest annotate ${{ env.REGISTRY }}/universal-developer-image:${tag} \
${{ env.REGISTRY }}/universal-developer-image:arm64-ubi10-${{env.short_sha}} \
--os linux --arch arm64
docker manifest annotate ${{ env.REGISTRY }}/universal-developer-image:${tag} \
${{ env.REGISTRY }}/universal-developer-image:ppc64le-ubi10-${{env.short_sha}} \
--os linux --arch ppc64le
docker manifest push ${{ env.REGISTRY }}/universal-developer-image:${tag}
done
- name: Get tag with uniq prefix
id: setTagName
run: |
echo "uniq_tag=${{ env.REGISTRY }}/universal-developer-image:ubi10-${{env.short_sha}}" >> $GITHUB_OUTPUT