]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[ci] Produce combined BIOS/UEFI ISO and USB images
authorMichael Brown <mcb30@ipxe.org>
Wed, 28 Jan 2026 21:09:51 +0000 (21:09 +0000)
committerMichael Brown <mcb30@ipxe.org>
Thu, 29 Jan 2026 14:51:35 +0000 (14:51 +0000)
Use util/genfsimg to combine the 64-bit BIOS and all UEFI builds into
a single multi-architecture image in both ISO and USB formats.

Include an editable autoexec.ipxe script (that matches the default
iPXE behaviour) in the USB image, so that users can just mount and
edit this file.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
.github/workflows/build.yml

index 6daadfc7f454a5987b903df226b4a7aa728217da..a474775df43659ee9bf1c21a79b896c282db3dab 100644 (file)
@@ -33,6 +33,7 @@ jobs:
                ${{ env.bindir }}/8086100e.mrom \
                ${{ env.bindir }}/ipxe.dsk \
                ${{ env.bindir }}/ipxe.iso \
+               ${{ env.bindir }}/ipxe.lkrn \
                ${{ env.bindir }}/ipxe.pxe \
                ${{ env.bindir }}/ipxe.usb \
                ${{ env.bindir }}/undionly.kpxe
@@ -43,9 +44,8 @@ jobs:
           name: ${{ env.bindir }}
           if-no-files-found: error
           path: |
-            src/${{ env.bindir }}/ipxe.iso
+            src/${{ env.bindir }}/ipxe.lkrn
             src/${{ env.bindir }}/ipxe.pxe
-            src/${{ env.bindir }}/ipxe.usb
             src/${{ env.bindir }}/undionly.kpxe
 
   sbi:
@@ -120,8 +120,6 @@ jobs:
           if-no-files-found: error
           path: |
             src/${{ env.bindir }}/ipxe.efi
-            src/${{ env.bindir }}/ipxe.iso
-            src/${{ env.bindir }}/ipxe.usb
             src/${{ env.bindir }}/snponly.efi
 
   tests:
@@ -163,3 +161,53 @@ jobs:
         working-directory: src
         run: |
           ${{ matrix.exec }} ${{ env.bindir }}/tests.linux
+
+  combine:
+    name: BIOS + UEFI
+    runs-on: ubuntu-latest
+    needs:
+      - bios
+      - uefi
+    container:
+      image: ghcr.io/ipxe/ipxe-signer
+    env:
+      binaries: >-
+        bin-x86_64-pcbios/ipxe.lkrn
+        bin-arm32-efi/ipxe.efi
+        bin-arm64-efi/ipxe.efi
+        bin-i386-efi/ipxe.efi
+        bin-loong64-efi/ipxe.efi
+        bin-riscv32-efi/ipxe.efi
+        bin-riscv64-efi/ipxe.efi
+        bin-x86_64-efi/ipxe.efi
+    steps:
+
+      - name: Check out code
+        uses: actions/checkout@v6
+
+      - name: Download
+        uses: actions/download-artifact@v7
+        with:
+          pattern: "{bin-x86_64-pcbios,bin-*-efi}"
+
+      - name: Combine
+        run: |
+          # Provide an editable placeholder autoexec.ipxe for the USB image
+          cat > autoexec.ipxe <<'EOF'
+          #!ipxe
+          echo
+          prompt --key 0x02 --timeout 2000 \
+              Press Ctrl-B for the iPXE command line... \
+              && shell || autoboot
+          EOF
+          ./src/util/genfsimg -o ipxe.iso ${{ env.binaries }}
+          ./src/util/genfsimg -o ipxe.usb -s autoexec.ipxe ${{ env.binaries }}
+
+      - name: Upload
+        uses: actions/upload-artifact@v6
+        with:
+          name: bin-combined
+          if-no-files-found: error
+          path: |
+            ipxe.iso
+            ipxe.usb