From 5cda65147fa2e0607ac6ca5608e8c4cbd99d73c6 Mon Sep 17 00:00:00 2001 From: Lokesh Mandvekar Date: Thu, 30 Nov 2023 14:45:32 +0530 Subject: [PATCH] [CI:BUILD] GHA to build podman machine images [NO NEW TESTS NEEDED] Signed-off-by: Lokesh Mandvekar --- .github/workflows/fcos-machine-images.yml | 38 +++++++++++++++++++ .github/workflows/fcos-podman-next-build.yml | 5 +++ .../podman-next/fcos-podmanimage/cosa-alias | 28 ++++++++++++++ 3 files changed, 71 insertions(+) create mode 100644 .github/workflows/fcos-machine-images.yml create mode 100644 contrib/podman-next/fcos-podmanimage/cosa-alias diff --git a/.github/workflows/fcos-machine-images.yml b/.github/workflows/fcos-machine-images.yml new file mode 100644 index 0000000000..5ad0734066 --- /dev/null +++ b/.github/workflows/fcos-machine-images.yml @@ -0,0 +1,38 @@ +# This should get merged into fcos-podman-next-build.yml once ready +name: Build machine images with podman-next + +on: + pull_request: + branches: + - main + +env: + IMAGE_NAME: fcos + # IMAGE_ARCHS has to be comma separated + IMAGE_ARCHS: amd64, arm64 + IMAGE_REGISTRY: quay.io/podman + COPR_OWNER: rhcontainerbot + COPR_PROJECT: podman-next + +jobs: + fcos-podman-next-image-build: + runs-on: ubuntu-latest + + steps: + - name: Install qemu dependency + run: | + sudo apt update + sudo apt -y install qemu-user-static podman + + - name: Set up cosa + run: | + podman pull quay.io/coreos-assembler/coreos-assembler + cat ./contrib/podman-next/fcos-podmanimage/cosa-alias >> ~/.bashrc + cosa init https://github.com/coreos/fedora-coreos-config + + - name: Build vhdx and qcow2 images + run: | + cosa fetch + cosa build + + #- name: Push to quay.io/podman/playground diff --git a/.github/workflows/fcos-podman-next-build.yml b/.github/workflows/fcos-podman-next-build.yml index cb24a46fdf..5970f380c6 100644 --- a/.github/workflows/fcos-podman-next-build.yml +++ b/.github/workflows/fcos-podman-next-build.yml @@ -63,6 +63,11 @@ jobs: org.opencontainers.image.description=FCOS image with rpms from rhcontainerbot/podman-next copr org.opencontainers.image.revision=${{ github.sha }} + # TODO: Build qemu and vhdx images with cosa + # Is that doable here itself? + # 1. Clone cosa + # 2. cosa fetch + # 3. cosa build qcow, hyperv - name: Echo Outputs run: | diff --git a/contrib/podman-next/fcos-podmanimage/cosa-alias b/contrib/podman-next/fcos-podmanimage/cosa-alias new file mode 100644 index 0000000000..012c892cfc --- /dev/null +++ b/contrib/podman-next/fcos-podmanimage/cosa-alias @@ -0,0 +1,28 @@ + +cosa() { + env | grep COREOS_ASSEMBLER + local -r COREOS_ASSEMBLER_CONTAINER_LATEST="quay.io/coreos-assembler/coreos-assembler:latest" + if [[ -z ${COREOS_ASSEMBLER_CONTAINER} ]] && $(podman image exists ${COREOS_ASSEMBLER_CONTAINER_LATEST}); then + local -r cosa_build_date_str="$(podman inspect -f "{{.Created}}" ${COREOS_ASSEMBLER_CONTAINER_LATEST} | awk '{print $1}')" + local -r cosa_build_date="$(date -d ${cosa_build_date_str} +%s)" + if [[ $(date +%s) -ge $((cosa_build_date + 60*60*24*7)) ]] ; then + echo -e "\e[0;33m----" >&2 + echo "The COSA container image is more that a week old and likely outdated." >&2 + echo "You should pull the latest version with:" >&2 + echo "podman pull ${COREOS_ASSEMBLER_CONTAINER_LATEST}" >&2 + echo -e "----\e[0m" >&2 + sleep 10 + fi + fi + set -x + podman run --rm -ti --security-opt=label=disable --privileged \ + --uidmap=1000:0:1 --uidmap=0:1:1000 --uidmap=1001:1001:64536 \ + -v=${PWD}:/srv/ --device=/dev/kvm --device=/dev/fuse \ + --tmpfs=/tmp -v=/var/tmp:/var/tmp --name=cosa \ + ${COREOS_ASSEMBLER_CONFIG_GIT:+-v=$COREOS_ASSEMBLER_CONFIG_GIT:/srv/src/config/:ro} \ + ${COREOS_ASSEMBLER_GIT:+-v=$COREOS_ASSEMBLER_GIT/src/:/usr/lib/coreos-assembler/:ro} \ + ${COREOS_ASSEMBLER_ADD_CERTS:+-v=/etc/pki/ca-trust:/etc/pki/ca-trust:ro} \ + ${COREOS_ASSEMBLER_CONTAINER_RUNTIME_ARGS} \ + ${COREOS_ASSEMBLER_CONTAINER:-$COREOS_ASSEMBLER_CONTAINER_LATEST} "$@" + rc=$?; set +x; return $rc +}