build-process.yml
name: build container - fedora-multi-arch
run-name: Building container - Fedora Multi-Arch
on:
workflow_dispatch:
jobs:
build-container-fedora-arm64:
name: build-container-fedora-arm64
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-24.04-arm
steps:
- name: Install missing package
run: |
sudo apt-get update
sudo apt-get install -y \
podman
- name: Check out repository code
uses: actions/checkout@v4
- name: Run podman build - fedora-arm
run: |
podman build -t ghcr.io/gbraad-dotfiles/fedora:arm64 \
--build-arg=BASE_IMAGE="quay.io/fedora/fedora" \
--build-arg=BASE_VERSION=41 \
--build-arg=ARCH="aarch64" \
-f .devcontainer/fedora/Containerfile .
- name: Run podman save - fedora-arm
run: |
podman save ghcr.io/gbraad-dotfiles/fedora:arm64 \
--format=oci-dir -o oci-arm64
- uses: actions/upload-artifact@v4
with:
name: oci-arm64
path: oci-arm64/
build-container-fedora-amd64:
name: build-container-fedora-amd64
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os:
- ubuntu-latest
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Run podman build - fedora
run: |
podman build -t ghcr.io/gbraad-dotfiles/fedora:amd64 \
--build-arg=BASE_IMAGE="quay.io/fedora/fedora" \
--build-arg=BASE_VERSION=41 \
-f .devcontainer/fedora/Containerfile .
- name: Run podman save - fedora
run: |
podman save ghcr.io/gbraad-dotfiles/fedora:amd64 \
--format=oci-dir -o oci-amd64
- uses: actions/upload-artifact@v4
with:
name: oci-amd64
path: oci-amd64/
push-manifest:
name: build-container-fedora
needs:
- build-container-fedora-arm64
- build-container-fedora-amd64
runs-on: ubuntu-24.04
steps:
- name: Download arm64
uses: actions/download-artifact@v4
with:
name: oci-arm64
path: oci-arm64
- name: Download amd64
uses: actions/download-artifact@v4
with:
name: oci-amd64
path: oci-amd64
- name: Set release tag
id: get-tag
run: |
echo "TAG=$(date +'%y%m%d')" >> $GITHUB_OUTPUT
- name: Create manifest
run: |
podman manifest create fedora-manifest
- name: Add arm64 to manifest
run: |
podman
podman manifest add fedora-manifest oci:$(pwd)/oci-arm64
- name: Add amd64 to manifest
run: |
podman manifest add fedora-manifest oci:$(pwd)/oci-amd64
- name: Login to registry
run: |
podman login ghcr.io -u ${{ github.actor }} \
-p ${{ secrets.GITHUB_TOKEN }}
- name: Push container to registry
run: |
podman manifest push fedora-manifest docker://ghcr.io/gbraad-dotfiles/fedora:latest
podman manifest push fedora-manifest docker://ghcr.io/gbraad-dotfiles/fedora:41
podman manifest push fedora-manifest docker://ghcr.io/gbraad-dotfiles/fedora:${{steps.get-tag.outputs.TAG}}
podman create --name fedora-amd64 fedora-amd64
podman export fedora-amd64 -o fedora-amd64.tar
gzip fedora-amd64.tar
podman create --name fedora-arm64 fedora-arm64
podman export fedora-arm64 -o fedora-arm64.tar
gzip fedora-arm64.tar
retention-days:7