Skip to content

Merge pull request #7 from loopholelabs/bump-kconfigs #24

Merge pull request #7 from loopholelabs/bump-kconfigs

Merge pull request #7 from loopholelabs/bump-kconfigs #24

Workflow file for this run

name: Kernel CI
on:
- push
jobs:
build-oci-image:
runs-on: ${{ matrix.target.runner }}
permissions:
contents: read
packages: write
id-token: write
strategy:
matrix:
target:
- src: .
image: ghcr.io/loopholelabs/linux-pvm-ci-build-base
arch: "linux/amd64" # linux/arm/v5,linux/arm/v7,linux/arm64/v8,linux/386,linux/s390x,linux/mips64le,linux/ppc64le
runner: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Login to registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Set up metadata
id: meta
uses: docker/metadata-action@v5
with:
images: ${{ matrix.target.image }}
tags: type=semver,pattern={{version}}
- name: Build image
uses: docker/build-push-action@v5
with:
context: ${{ matrix.target.src }}
file: ${{ matrix.target.src }}/Dockerfile
platforms: ${{ matrix.target.arch }}
push: false
tags: ${{ matrix.target.image }}:${{ github.ref_name }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Push pre-release image to registry
if: ${{ github.ref == 'refs/heads/main' }}
uses: docker/build-push-action@v5
with:
context: ${{ matrix.target.src }}
file: ${{ matrix.target.src }}/Dockerfile
platforms: ${{ matrix.target.arch }}
push: true
tags: ${{ matrix.target.image }}:${{ github.ref_name }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
- name: Push release image to registry
if: startsWith(github.ref, 'refs/tags/v')
uses: docker/build-push-action@v5
with:
context: ${{ matrix.target.src }}
file: ${{ matrix.target.src }}/Dockerfile
platforms: ${{ matrix.target.arch }}
push: true
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
cache-from: type=gha
cache-to: type=gha,mode=max
build-kernel:
runs-on: ${{ matrix.target.runner }}
needs: build-oci-image
permissions:
contents: read
strategy:
matrix:
target:
- id: fedora-baremetal
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile fedora baremetal
dst: out/*
runner: depot-ubuntu-22.04-32
- id: fedora-hetzner
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile fedora hetzner
dst: out/*
runner: depot-ubuntu-22.04-32
- id: fedora-digitalocean
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile fedora digitalocean
dst: out/*
runner: depot-ubuntu-22.04-32
- id: fedora-aws
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile fedora aws
dst: out/*
runner: depot-ubuntu-22.04-32
- id: fedora-gcp
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile fedora gcp
dst: out/*
runner: depot-ubuntu-22.04-32
- id: fedora-ovh
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile fedora ovh
dst: out/*
runner: depot-ubuntu-22.04-32
- id: fedora-linode
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile fedora linode
dst: out/*
runner: depot-ubuntu-22.04-32
- id: rocky-baremetal
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile rocky baremetal
dst: out/*
runner: depot-ubuntu-22.04-32
- id: rocky-hetzner
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile rocky hetzner
dst: out/*
runner: depot-ubuntu-22.04-32
- id: rocky-digitalocean
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile rocky digitalocean
dst: out/*
runner: depot-ubuntu-22.04-32
- id: rocky-aws
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile rocky aws
dst: out/*
runner: depot-ubuntu-22.04-32
- id: rocky-gcp
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile rocky gcp
dst: out/*
runner: depot-ubuntu-22.04-32
- id: rocky-equinix
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile rocky equinix
dst: out/*
runner: depot-ubuntu-22.04-32
- id: rocky-ovh
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile rocky ovh
dst: out/*
runner: depot-ubuntu-22.04-32
- id: rocky-azure
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile rocky azure
dst: out/*
runner: depot-ubuntu-22.04-32
- id: rocky-civo
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile rocky civo
dst: out/*
runner: depot-ubuntu-22.04-32
- id: rocky-linode
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile rocky linode
dst: out/*
runner: depot-ubuntu-22.04-32
- id: alma-baremetal
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile alma baremetal
dst: out/*
runner: depot-ubuntu-22.04-32
- id: alma-hetzner
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile alma hetzner
dst: out/*
runner: depot-ubuntu-22.04-32
- id: alma-digitalocean
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile alma digitalocean
dst: out/*
runner: depot-ubuntu-22.04-32
- id: alma-aws
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile alma aws
dst: out/*
runner: depot-ubuntu-22.04-32
- id: alma-gcp
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile alma gcp
dst: out/*
runner: depot-ubuntu-22.04-32
- id: alma-equinix
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile alma equinix
dst: out/*
runner: depot-ubuntu-22.04-32
- id: alma-ovh
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile alma ovh
dst: out/*
runner: depot-ubuntu-22.04-32
- id: alma-azure
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile alma azure
dst: out/*
runner: depot-ubuntu-22.04-32
- id: alma-linode
src: .
os: ghcr.io/loopholelabs/linux-pvm-ci-build-base:main
cmd: ./Hydrunfile alma linode
dst: out/*
runner: depot-ubuntu-22.04-32
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Restore ccache
uses: actions/cache/restore@v4
with:
path: |
${{ runner.temp }}/${{ matrix.target.id }}/.cache/ccache
key: cache-ccache-${{ matrix.target.id }}
- name: Build with Docker
working-directory: ${{ matrix.target.src }}
env:
PGP_KEY: ${{ secrets.PGP_KEY }}
PGP_KEY_PASSWORD: ${{ secrets.PGP_KEY_PASSWORD }}
PGP_KEY_ID: ${{ secrets.PGP_KEY_ID }}
run: docker run -v "${{ runner.temp }}/${{ matrix.target.id }}/.cache/ccache:/root/.cache/ccache" -v "${PWD}:/data" -e "PGP_KEY=${PGP_KEY}" -e "PGP_KEY_PASSWORD=${PGP_KEY_PASSWORD}" -e "PGP_KEY_ID=${PGP_KEY_ID}" ${{ matrix.target.os }} bash -c "cd /data && ${{ matrix.target.cmd }}"
- name: Fix permissions for output
run: sudo chown -R $USER .
- name: Save ccache
uses: actions/cache/save@v4
with:
path: |
${{ runner.temp }}/${{ matrix.target.id }}/.cache/ccache
key: cache-ccache-${{ matrix.target.id }}
- name: Upload output
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.target.id }}
path: ${{ matrix.target.dst }}
publish-kernel:
runs-on: ubuntu-latest
permissions:
contents: write
pages: write
id-token: write
needs: build-kernel
if: ${{ github.ref == 'refs/heads/main' }}
environment:
name: github-pages
url: ${{ steps.publish.outputs.page_url }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Download output
uses: actions/download-artifact@v4
with:
path: ${{ runner.temp }}/out
- name: Isolate the repositories
run: |
mkdir -p ${{ runner.temp }}/github-pages
for dir in ${{ runner.temp }}/out/*/; do
rsync -a "${dir}"/ ${{ runner.temp }}/github-pages/
done
touch ${{ runner.temp }}/github-pages/.nojekyll
- name: Setup GitHub Pages
uses: actions/configure-pages@v5
- name: Upload GitHub Pages artifact
uses: actions/upload-pages-artifact@v3
with:
path: ${{ runner.temp }}/github-pages/
- name: Publish to GitHub pages
id: publish
uses: actions/deploy-pages@v4