summaryrefslogtreecommitdiffstats
path: root/.github/workflows/build.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/build.yml')
-rw-r--r--.github/workflows/build.yml215
1 files changed, 114 insertions, 101 deletions
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index c6988a11f..bafd5d8f4 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -2,120 +2,133 @@ name: Build
on: push
+env:
+ MAKEFLAGS: "-j4 GITVERSION=${{ github.sha }}"
+
jobs:
- cache:
- name: Cache
- runs-on: ubuntu-22.04
+ 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: Cache permissions
- run: |
- sudo chown $(id -un) /var/cache/apt/archives
- - name: Cache packages
- uses: actions/cache@v4
- with:
- path: /var/cache/apt/archives/*.deb
- key: apt-cache-${{ github.run_id }}-${{ github.run_attempt }}
- restore-keys: |
- apt-cache-
- - name: Download packages
+
+ - name: Check out code
+ uses: actions/checkout@v6
+
+ - name: Build
+ working-directory: src
run: |
- sudo apt update
- sudo apt install -y -d -o Acquire::Retries=50 \
- mtools syslinux isolinux \
- libc6-dev-i386 valgrind \
- gcc-arm-none-eabi gcc-aarch64-linux-gnu
-
- x86:
- name: x86
- runs-on: ubuntu-22.04
- needs: cache
+ 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@v4
- with:
- fetch-depth: 0
- - name: Cache permissions
- run: |
- sudo chown $(id -un) /var/cache/apt/archives
- - name: Cache packages
- uses: actions/cache/restore@v4
- with:
- path: /var/cache/apt/archives/*.deb
- key: apt-cache-${{ github.run_id }}-${{ github.run_attempt }}
- - name: Install packages
- run: |
- sudo dpkg --add-architecture i386
- sudo apt update
- sudo apt install -y -o Acquire::Retries=50 \
- mtools syslinux isolinux \
- libc6-dev-i386 valgrind \
- libgcc-s1:i386 libc6-dbg:i386
- - name: Build (BIOS)
- run: |
- make -j 4 -C src
- - name: Build (Everything)
- run: |
- make -j 4 -C src everything
- - name: Test
+ uses: actions/checkout@v6
+
+ - name: Build
+ working-directory: src
run: |
- valgrind ./src/bin-i386-linux/tests.linux
- valgrind ./src/bin-x86_64-linux/tests.linux
+ make ${{ env.bindir }}/ipxe.pf32 \
+ ${{ env.bindir }}/ipxe.lkrn \
+ ${{ env.bindir }}/ipxe.sbi
- arm32:
- name: ARM32
- runs-on: ubuntu-22.04
- needs: cache
+ 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@v4
- with:
- fetch-depth: 0
- - name: Cache permissions
- run: |
- sudo chown $(id -un) /var/cache/apt/archives
- - name: Cache packages
- uses: actions/cache/restore@v4
- with:
- path: /var/cache/apt/archives/*.deb
- key: apt-cache-${{ github.run_id }}-${{ github.run_attempt }}
- - name: Install packages
- run: |
- sudo apt update
- sudo apt install -y -o Acquire::Retries=50 \
- mtools syslinux isolinux gcc-arm-none-eabi
+ uses: actions/checkout@v6
+
- name: Build
+ working-directory: src
run: |
- make -j 4 -C src CROSS=arm-none-eabi- \
- bin-arm32-efi/intel.efi \
- bin-arm32-efi/intel.usb \
- bin-arm32-efi/intel.iso
-
- arm64:
- name: ARM64
- runs-on: ubuntu-22.04
- needs: cache
+ 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@v4
- with:
- fetch-depth: 0
- - name: Cache permissions
- run: |
- sudo chown $(id -un) /var/cache/apt/archives
- - name: Cache packages
- uses: actions/cache/restore@v4
- with:
- path: /var/cache/apt/archives/*.deb
- key: apt-cache-${{ github.run_id }}-${{ github.run_attempt }}
- - name: Install packages
- run: |
- sudo apt update
- sudo apt install -y -o Acquire::Retries=50 \
- mtools syslinux isolinux gcc-aarch64-linux-gnu
+ uses: actions/checkout@v6
+
- name: Build
+ working-directory: src
+ run: |
+ make ${{ env.bindir }}/tests.linux
+
+ - name: Test
+ working-directory: src
run: |
- make -j 4 -C src CROSS=aarch64-linux-gnu- \
- bin-arm64-efi/ipxe.efi \
- bin-arm64-efi/ipxe.usb \
- bin-arm64-efi/ipxe.iso
+ ${{ matrix.exec }} ${{ env.bindir }}/tests.linux