name: Build container images/parallel
on: workflow_dispatch
env:
REGISTRY_USER: ${{ github.actor }}
REGISTRY_PASSWORD: ${{ github.token }}
IMAGE_REGISTRY: ghcr.io/${{ github.repository_owner }}
jobs:
create-manifest:
runs-on: ubuntu-latest
steps:
- name: Create Podman manifest
run: podman manifest create dash-mpd-cli
build-amd64:
needs: [create-manifest, build-riscv64]
runs-on: ubuntu-latest
steps:
- name: Install qemu
run: sudo apt-get update && sudo apt-get -y install qemu-user-static
- name: Checkout sources
uses: actions/checkout@v6
- name: Build image/amd64
run: buildah build -f etc/Containerfile_linux_amd64 --platform linux/amd64 --tag dash-mpd-cli-linux-amd64 --manifest dash-mpd-cli .
build-aarch64:
needs: [create-manifest, build-riscv64]
runs-on: ubuntu-latest
steps:
- name: Install qemu
run: sudo apt-get -y install qemu-user-static
- name: Checkout sources
uses: actions/checkout@v6
- name: Build image/aarch64
run: buildah build -f etc/Containerfile_linux_aarch64 --platform linux/arm64 --tag dash-mpd-cli-linux-aarch64 --manifest dash-mpd-cli .
build-armv7:
needs: [create-manifest, build-riscv64]
runs-on: ubuntu-latest
steps:
- name: Install recent qemu build
run: |
sudo apt-get -y install qemu-user-static
podman pull docker.io/hectorm/qemu-user-static
podman create --name qemutmp docker.io/hectorm/qemu-user-static
podman export qemutmp > /tmp/qemu-user-static.tar
podman rm qemutmp
mkdir -p /tmp/qemubin
tar xf /tmp/qemu-user-static.tar -C /tmp/qemubin --wildcards "usr/bin/qemu-*"
rm /tmp/qemu-user-static.tar
sudo cp /tmp/qemubin/usr/bin/qemu* /usr/local/bin
sudo rm /usr/libexec/qemu-binfmt/arm-binfmt-P
sudo ln -s /usr/local/bin/qemu-arm-static /usr/libexec/qemu-binfmt/arm-binfmt-P
- name: Checkout sources
uses: actions/checkout@v6
- name: Build image/armv7
run: buildah build -f etc/Containerfile_linux_armv7 --platform linux/arm/v7 --tag dash-mpd-cli-linux-armv7 --manifest dash-mpd-cli .
build-riscv64:
needs: create-manifest
runs-on: ubuntu-latest
steps:
- name: Install recent qemu build
run: |
sudo apt-get install -y qemu-user-static
podman pull docker.io/hectorm/qemu-user-static
podman create --name qemutmp docker.io/hectorm/qemu-user-static
podman export qemutmp > /tmp/qemu-user-static.tar
podman rm qemutmp
mkdir -p /tmp/qemubin
tar xf /tmp/qemu-user-static.tar -C /tmp/qemubin --wildcards "usr/bin/qemu-*"
rm /tmp/qemu-user-static.tar
sudo cp /tmp/qemubin/usr/bin/qemu* /usr/local/bin
sudo rm /usr/libexec/qemu-binfmt/riscv64-binfmt-P
sudo ln -s /usr/local/bin/qemu-riscv64-static /usr/libexec/qemu-binfmt/riscv64-binfmt-P
- name: Checkout sources
uses: actions/checkout@v6
- name: Build image/riscv64
run: buildah build -f etc/Containerfile_linux_riscv64 --platform linux/riscv64 --tag dash-mpd-cli-linux-riscv64 --manifest dash-mpd-cli .
push-image:
needs: [build-riscv64, build-amd64, build-aarch64, build-armv7]
runs-on: ubuntu-latest
permissions:
contents: read
packages: write
name: Push container to registry
steps:
- name: Log in to ghcr.io
uses: redhat-actions/podman-login@v1
with:
username: ${{ env.REGISTRY_USER }}
password: ${{ env.REGISTRY_PASSWORD }}
registry: ${{ env.IMAGE_REGISTRY }}
- name: Push container image
id: push-to-registry
uses: redhat-actions/push-to-registry@v2
with:
image: dash-mpd-cli
tags: latest
registry: ${{ env.IMAGE_REGISTRY }}