Skip to content

Merge pull request #14 from dfinity/or-sep-kernel-cfg #1

Merge pull request #14 from dfinity/or-sep-kernel-cfg

Merge pull request #14 from dfinity/or-sep-kernel-cfg #1

Workflow file for this run

name: ovmf
on:
push:
branches:
- main
paths:
- build/kernel.sh
- cfg/**
- docker/Dockerfile.kernel
- image-ref/kernel.txt
jobs:
dockerfile-changes:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- id: filter
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36
with:
filters: |
kernel: docker/Dockerfile.kernel
outputs:
kernel: ${{ steps.filter.outputs.kernel }}
builder-kernel:
runs-on: ubuntu-latest
needs: dockerfile-changes
if: needs.dockerfile-changes.outputs.kernel == 'true'
permissions:
contents: read
packages: write
steps:
- uses: actions/checkout@v4
- name: Build image
run: |
docker buildx create \
--use \
--name builder \
--platform linux/amd64 \
--driver docker-container
docker buildx build \
-f docker/Dockerfile.kernel \
-t ghcr.io/dfinity/kernel-builder:${{ github.sha }} \
--platform linux/amd64 \
--build-arg SOURCE_DATE_EPOCH=0 \
--output type=docker,dest=archive.tar,rewrite-timestamp=true \
.
docker load -i archive.tar
- name: Login to container registry
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io \
-u ${{ github.actor }} \
--password-stdin
- name: Publish docker image
run: |
docker push ghcr.io/dfinity/kernel-builder:${{ github.sha }}
image-ref-changes:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- id: filter
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36
with:
filters: |
kernel: image-ref/kernel.txt
outputs:
kernel: ${{ steps.filter.outputs.kernel }}
build-script-changes:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- id: filter
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36
with:
filters: |
kernel: build/kernel.sh
outputs:
kernel: ${{ steps.filter.outputs.kernel }}
kernel-config-changes:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- id: filter
uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36
with:
filters: |
guest: cfg/.config.guest
host: cfg/.config.host
outputs:
guest: ${{ steps.filter.outputs.guest }}
host: ${{ steps.filter.outputs.host }}
kernel-guest:
runs-on: ubuntu-latest
needs: [image-ref-changes, build-script-changes, kernel-config-changes]
if: needs.image-ref-changes.outputs.kernel == 'true' || needs.build-script-changes.outputs.kernel == 'true' || needs.kernel-config-changes.outputs.guest == 'true'
strategy:
matrix:
include:
- target: guest
upstream: AMDESE/linux
ref: a38297e3fb012ddfa7ce0321a7e5a8daeb1872b6
steps:
- name: Clone self
uses: actions/checkout@v4
with:
path: ${{ github.workspace }}/local
- name: Clone upstream
uses: actions/checkout@v4
with:
repository: ${{ matrix.upstream }}
ref: ${{ matrix.ref }}
path: ${{ github.workspace }}/upstream
- name: Set builder from file
run: echo "BUILDER_REF=$(cat ${{ github.workspace }}/local/image-ref/kernel.txt)" >> $GITHUB_ENV
- name: Login to container registry
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io \
-u ${{ github.actor }} \
--password-stdin
- name: Build upstream
run: |
docker run --rm \
-v ${{ github.workspace }}/local:/local \
-v ${{ github.workspace }}/upstream:/upstream -w /upstream \
-v ${{ github.workspace }}/out:/out \
-e CONFIG_PATH="/local/cfg/.config.${{ matrix.target }}" \
-e OUT_DIR="/out" \
-e LOCALVERSION="-snp-${{ matrix.target }}-$(echo ${{ matrix.ref }} | cut -c -7)" \
-e KBUILD_BUILD_TIMESTAMP='1970-01-01' \
-e KBUILD_BUILD_HOST='host' \
-e SOURCE_DATE_EPOCH='0' \
ghcr.io/dfinity/kernel-builder:${{ env.BUILDER_REF }} \
bash /local/build/kernel.sh
- name: Set short sha
run: echo "SHORT_SHA=$(echo ${{ github.sha }} | cut -c -7)" >> $GITHUB_ENV
- name: Publish
uses: softprops/action-gh-release@v1
with:
token: ${{ secrets.RELEASE_ACCESS_TOKEN }}
tag_name: kernel-${{ matrix.target }}-${{ env.SHORT_SHA }}
files: |
${{ github.workspace }}/out/*
body: |
| Name | Value |
| ------------- | ------------- |
| Builder | [ghcr.io/dfinity/kernel-builder:${{ env.BUILDER_REF }}](https://github.com/${{ github.repository }}/pkgs/container/kernel-builder) |
| Local | [${{ github.repository }}:${{ github.sha }}](https://github.com/${{ github.repository }}/tree/${{ github.sha }}) |
| Upstream | [${{ matrix.upstream }}:${{ matrix.ref }}](https://github.com/${{ matrix.upstream }}/tree/${{ matrix.ref }}) |
kernel-host:
runs-on: ubuntu-latest
needs: [image-ref-changes, build-script-changes, kernel-config-changes]
if: needs.image-ref-changes.outputs.kernel == 'true' || needs.build-script-changes.outputs.kernel == 'true' || needs.kernel-config-changes.outputs.host == 'true'
strategy:
matrix:
include:
- target: host
upstream: AMDESE/linux
ref: 05b10142ac6a1a3b02d4be018e119c2648d1da6c
steps:
- name: Clone self
uses: actions/checkout@v4
with:
path: ${{ github.workspace }}/local
- name: Clone upstream
uses: actions/checkout@v4
with:
repository: ${{ matrix.upstream }}
ref: ${{ matrix.ref }}
path: ${{ github.workspace }}/upstream
- name: Set builder from file
run: echo "BUILDER_REF=$(cat ${{ github.workspace }}/local/image-ref/kernel.txt)" >> $GITHUB_ENV
- name: Login to container registry
run: |
echo "${{ secrets.GITHUB_TOKEN }}" | docker login ghcr.io \
-u ${{ github.actor }} \
--password-stdin
- name: Build upstream
run: |
docker run --rm \
-v ${{ github.workspace }}/local:/local \
-v ${{ github.workspace }}/upstream:/upstream -w /upstream \
-v ${{ github.workspace }}/out:/out \
-e CONFIG_PATH="/local/cfg/.config.${{ matrix.target }}" \
-e OUT_DIR="/out" \
-e LOCALVERSION="-snp-${{ matrix.target }}-$(echo ${{ matrix.ref }} | cut -c -7)" \
-e KBUILD_BUILD_TIMESTAMP='1970-01-01' \
-e KBUILD_BUILD_HOST='host' \
-e SOURCE_DATE_EPOCH='0' \
ghcr.io/dfinity/kernel-builder:${{ env.BUILDER_REF }} \
bash /local/build/kernel.sh
- name: Set short sha
run: echo "SHORT_SHA=$(echo ${{ github.sha }} | cut -c -7)" >> $GITHUB_ENV
- name: Publish
uses: softprops/action-gh-release@v1
with:
token: ${{ secrets.RELEASE_ACCESS_TOKEN }}
tag_name: kernel-${{ matrix.target }}-${{ env.SHORT_SHA }}
files: |
${{ github.workspace }}/out/*
body: |
| Name | Value |
| ------------- | ------------- |
| Builder | [ghcr.io/dfinity/kernel-builder:${{ env.BUILDER_REF }}](https://github.com/${{ github.repository }}/pkgs/container/kernel-builder) |
| Local | [${{ github.repository }}:${{ github.sha }}](https://github.com/${{ github.repository }}/tree/${{ github.sha }}) |
| Upstream | [${{ matrix.upstream }}:${{ matrix.ref }}](https://github.com/${{ matrix.upstream }}/tree/${{ matrix.ref }}) |