diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6daadfc7f..a474775df 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -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