chore: Bump base image and start introducing new repo config syntax #27
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |