name: Build on: push env: MAKEFLAGS: "-j4 GITVERSION=${{ github.sha }}" jobs: bios: name: BIOS / ${{ matrix.arch }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: arch: - i386 - x86_64 container: image: ghcr.io/ipxe/ipxe-builder-${{ matrix.arch }} env: bindir: >- ${{ matrix.arch == 'i386' && 'bin' || 'bin-x86_64-pcbios' }} steps: - name: Check out code uses: actions/checkout@v6 - name: Build working-directory: src run: | make ${{ env.bindir }}/10ec8139.rom \ ${{ env.bindir }}/8086100e.mrom \ ${{ env.bindir }}/ipxe.dsk \ ${{ env.bindir }}/ipxe.iso \ ${{ env.bindir }}/ipxe.pxe \ ${{ env.bindir }}/ipxe.usb \ ${{ env.bindir }}/undionly.kpxe sbi: name: SBI / ${{ matrix.arch }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: arch: - riscv32 - riscv64 container: image: ghcr.io/ipxe/ipxe-builder-${{ matrix.arch }} env: bindir: bin-${{ matrix.arch }} steps: - name: Check out code uses: actions/checkout@v6 - name: Build working-directory: src run: | make ${{ env.bindir }}/ipxe.pf32 \ ${{ env.bindir }}/ipxe.lkrn \ ${{ env.bindir }}/ipxe.sbi uefi: name: UEFI / ${{ matrix.arch }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: arch: - arm32 - arm64 - i386 - loong64 - riscv32 - riscv64 - x86_64 container: image: ghcr.io/ipxe/ipxe-builder-${{ matrix.arch }} env: bindir: bin-${{ matrix.arch }}-efi steps: - name: Check out code uses: actions/checkout@v6 - name: Build working-directory: src run: | make ${{ env.bindir }}/ipxe.efi \ ${{ env.bindir }}/ipxe.iso \ ${{ env.bindir }}/ipxe.usb \ ${{ env.bindir }}/snponly.efi tests: name: Tests / ${{ matrix.arch }} runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - arch: arm32 exec: qemu-arm-static - arch: arm64 exec: qemu-aarch64-static - arch: i386 exec: valgrind - arch: loong64 exec: qemu-loongarch64-static - arch: riscv32 exec: qemu-riscv32-static - arch: riscv64 exec: qemu-riscv64-static - arch: x86_64 exec: valgrind container: image: ghcr.io/ipxe/ipxe-builder-${{ matrix.arch }} env: bindir: bin-${{ matrix.arch }}-linux steps: - name: Check out code uses: actions/checkout@v6 - name: Build working-directory: src run: | make ${{ env.bindir }}/tests.linux - name: Test working-directory: src run: | ${{ matrix.exec }} ${{ env.bindir }}/tests.linux