diff --git a/.github/workflows/rawdisk-container.yml b/.github/workflows/rawdisk-container.yml new file mode 100644 index 00000000..d85e7a20 --- /dev/null +++ b/.github/workflows/rawdisk-container.yml @@ -0,0 +1,60 @@ +name: Build and Push raw disk image + +on: + schedule: + - cron: "50 */4 * * *" + + workflow_dispatch: + +env: + REGISTRY_NS: quay.io/centos-bootc + # TODO use quay once it supports artifacts + DISKIMAGE_REGISTRY: ghcr.io + +jobs: + build-and-push-raw-disk: + runs-on: ubuntu-latest + + strategy: + matrix: + # os: [fedora, centos] + os: [fedora] + include: + - os: fedora + tag: eln + - os: centos + tag: stream9 + + steps: + # TODO replace with https://github.com/containers/buildah/issues/5091 + - name: Install oras + run: | + VERSION="1.1.0" + curl -L "https://github.com/oras-project/oras/releases/download/v${VERSION}/oras_${VERSION}_linux_amd64.tar.gz" | tar zxvf - + sudo mv oras /usr/bin + + - name: Install podman + run: sudo apt install podman + + - name: Checkout repository + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + + - name: Login to quay.io + run: podman login --authfile auth.json -u ${{ github.triggering_actor }} --password ${{ secrets.GITHUB_TOKEN }} ${{ env.DISKIMAGE_REGISTRY }} + + - name: Build raw disk image + run: | + mkdir -p output + truncate -s 10G output/image.raw + sudo podman run --rm -it --privileged --pid=host --pull=newer \ + -v $(pwd)/output:/output \ + ${{ env.REGISTRY_NS }}/${{ matrix.os }}-bootc-dev:${{ matrix.tag }} \ + bootc install to-disk --generic-image --via-loopback /output/image.raw + zstd --rm --sparse output/image.raw + + - name: Push + run: | + IMAGE_NAME=${{ env.DISKIMAGE_REGISTRY }}/${{ github.repository_owner }}/${{ matrix.os }}-bootc-dev-rawdisk:${{ matrix.tag }} + IMAGE_NAME=$(echo $IMAGE_NAME | tr '[A-Z]' '[a-z]') + oras push --debug --registry-config auth.json $IMAGE_NAME \ + image.raw.zst:application/x-raw-disk+zstd