From 2cafd02e298a5f69d7340995f123d535cfd82538 Mon Sep 17 00:00:00 2001 From: rajames Date: Sat, 1 Aug 2026 12:11:41 -0400 Subject: [PATCH] ci: add Gitea Actions build workflow (amd64/aarch64 ISO, riscv64 disk image) --- .gitea/workflows/build.yml | 87 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 .gitea/workflows/build.yml diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..138d8c6 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -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