ci: add Gitea Actions build workflow (amd64/aarch64 ISO, riscv64 disk image)
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user