ci: add Gitea Actions build workflow (amd64/aarch64 ISO, riscv64 disk image)

This commit is contained in:
2026-08-01 12:11:41 -04:00
parent a5ed8c3d87
commit 2cafd02e29
+87
View File
@@ -0,0 +1,87 @@
name: Build
on:
push:
branches:
- master
jobs:
build-amd64-iso:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build kernel (amd64)
run: make -f Makefile.starkernel ARCH=amd64
- name: Pack El Torito ISO (amd64)
run: |
set -e
BUILD_DIR=build/amd64/kernel
mkdir -p "$BUILD_DIR/iso"
dd if=/dev/zero of="$BUILD_DIR/iso/efi.img" bs=512 count=8192
mformat -i "$BUILD_DIR/iso/efi.img" ::
mmd -i "$BUILD_DIR/iso/efi.img" ::/EFI
mmd -i "$BUILD_DIR/iso/efi.img" ::/EFI/BOOT
mcopy -i "$BUILD_DIR/iso/efi.img" "$BUILD_DIR/starkernel_loader.efi" ::/EFI/BOOT/BOOTX64.EFI
xorriso -as mkisofs -r -J -e efi.img -no-emul-boot \
-o "$BUILD_DIR/starkernel.iso" "$BUILD_DIR/iso"
- uses: actions/upload-artifact@v4
with:
name: lithosananke-amd64-iso
path: build/amd64/kernel/starkernel.iso
build-aarch64-iso:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build kernel (aarch64)
env:
PATH: /usr/lib/llvm-18/bin:/usr/bin:/bin
run: make -f Makefile.starkernel ARCH=aarch64
- name: Pack El Torito ISO (aarch64)
run: |
set -e
BUILD_DIR=build/aarch64/kernel
mkdir -p "$BUILD_DIR/iso/EFI/BOOT"
cp "$BUILD_DIR/starkernel_loader.efi" "$BUILD_DIR/iso/EFI/BOOT/BOOTAA64.EFI"
printf "FS0:\\\\EFI\\\\BOOT\\\\BOOTAA64.EFI\r\n" > "$BUILD_DIR/iso/startup.nsh"
dd if=/dev/zero of="$BUILD_DIR/iso/efi.img" bs=512 count=8192
mformat -i "$BUILD_DIR/iso/efi.img" ::
mmd -i "$BUILD_DIR/iso/efi.img" ::/EFI
mmd -i "$BUILD_DIR/iso/efi.img" ::/EFI/BOOT
mcopy -i "$BUILD_DIR/iso/efi.img" "$BUILD_DIR/starkernel_loader.efi" ::/EFI/BOOT/BOOTAA64.EFI
xorriso -as mkisofs -r -J -e efi.img -no-emul-boot \
-o "$BUILD_DIR/starkernel.iso" "$BUILD_DIR/iso"
- uses: actions/upload-artifact@v4
with:
name: lithosananke-aarch64-iso
path: build/aarch64/kernel/starkernel.iso
build-riscv64-img:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build kernel (riscv64)
run: make -f Makefile.starkernel ARCH=riscv64
- name: Pack GPT/FAT32 disk image (riscv64)
# El Torito ISO and -bios QEMU mode don't work on riscv64 virt,
# so this arch ships a raw GPT disk image instead of an ISO
# (same distinction Makefile.starkernel's own qemu target makes).
run: |
set -e
BUILD_DIR=build/riscv64/kernel
DISK="$BUILD_DIR/starkernel_rv64.img"
dd if=/dev/zero of="$DISK" bs=1M count=64
sgdisk -n 1:2048:131038 -t 1:ef00 -c 1:"EFI System" "$DISK"
dd if=/dev/zero of="$BUILD_DIR/esp_rv64.img" bs=512 count=128991
mkfs.fat -F 32 -n "ESP" "$BUILD_DIR/esp_rv64.img"
mmd -i "$BUILD_DIR/esp_rv64.img" ::/EFI
mmd -i "$BUILD_DIR/esp_rv64.img" ::/EFI/BOOT
mcopy -i "$BUILD_DIR/esp_rv64.img" "$BUILD_DIR/starkernel_loader.efi" ::/EFI/BOOT/BOOTRISCV64.EFI
mcopy -i "$BUILD_DIR/esp_rv64.img" "$BUILD_DIR/starkernel_kernel.elf" ::/kernel.elf
printf 'FS0:\\EFI\\BOOT\\BOOTRISCV64.EFI\r\n' > "$BUILD_DIR/startup.nsh"
mcopy -i "$BUILD_DIR/esp_rv64.img" "$BUILD_DIR/startup.nsh" ::/startup.nsh
dd if="$BUILD_DIR/esp_rv64.img" of="$DISK" bs=512 seek=2048 conv=notrunc
- uses: actions/upload-artifact@v4
with:
name: lithosananke-riscv64-img
path: build/riscv64/kernel/starkernel_rv64.img