From 3ca614742a496b66a9b92ce6be05ff555fdfc2c2 Mon Sep 17 00:00:00 2001 From: Phil Elwell Date: Mon, 23 Jan 2023 16:50:51 +0000 Subject: [PATCH] .github/workflows: Switch to a matrix build Remove the per-build duplication by putting build parameters in a matrix. Signed-off-by: Phil Elwell --- .github/workflows/kernel-build.yml | 293 ++++++----------------------- 1 file changed, 59 insertions(+), 234 deletions(-) --- a/.github/workflows/kernel-build.yml +++ b/.github/workflows/kernel-build.yml @@ -15,177 +15,40 @@ env: NUM_JOBS: 3 jobs: - build-bcm2835: - - runs-on: ubuntu-latest - - steps: - - name: Update install - run: - sudo apt-get update - - - name: Install toolchain - run: - sudo apt-get install gcc-arm-linux-gnueabihf - timeout-minutes: 5 - - - uses: actions/checkout@v3 - with: - fetch-depth: 1 - clean: true - - - name: Build kernel - run: | - mkdir ${{github.workspace}}/build - make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcm2835_defconfig - scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y - make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} zImage modules dtbs - mkdir -p ${{github.workspace}}/install/boot/overlays - make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install - cp ${{github.workspace}}/build/arch/arm/boot/dts/*.dtb ${{github.workspace}}/install/boot/ - cp ${{github.workspace}}/build/arch/arm/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ - cp ${{github.workspace}}/arch/arm/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ - cp ${{github.workspace}}/build/arch/arm/boot/zImage ${{github.workspace}}/install/boot/kernel.img - - - name: Tar build - run: tar -cvf bcm2835_build.tar -C ${{github.workspace}}/install . - - - name: Upload results - uses: actions/upload-artifact@v3 - with: - name: bcm2835_build - path: bcm2835_build.tar - retention-days: 7 - - build-arm64: - - runs-on: ubuntu-latest - - steps: - - name: Update install - run: - sudo apt-get update - - - name: Install toolchain - run: - sudo apt-get install gcc-aarch64-linux-gnu - timeout-minutes: 5 - - - uses: actions/checkout@v3 - with: - fetch-depth: 1 - clean: true - - - name: Build kernel - run: | - mkdir ${{github.workspace}}/build - make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build defconfig - scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y - make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} Image.gz modules dtbs - mkdir -p ${{github.workspace}}/install/boot/overlays - make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install - cp ${{github.workspace}}/build/arch/arm64/boot/dts/broadcom/*.dtb ${{github.workspace}}/install/boot/ - cp ${{github.workspace}}/build/arch/arm64/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ - cp ${{github.workspace}}/arch/arm64/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ - cp ${{github.workspace}}/build/arch/arm64/boot/Image.gz ${{github.workspace}}/install/boot/kernel8.img - - - name: Tar build - run: tar -cvf arm64_build.tar -C ${{github.workspace}}/install . - - - name: Upload results - uses: actions/upload-artifact@v3 - with: - name: arm64_build - path: arm64_build.tar - retention-days: 7 - - build-bcmrpi: - - runs-on: ubuntu-latest - - steps: - - name: Update install - run: - sudo apt-get update - - - name: Install toolchain - run: - sudo apt-get install gcc-arm-linux-gnueabihf - timeout-minutes: 5 - - - uses: actions/checkout@v3 - with: - fetch-depth: 1 - clean: true - - - name: Build kernel - run: | - mkdir ${{github.workspace}}/build - make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcmrpi_defconfig - scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y - make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} zImage modules dtbs - mkdir -p ${{github.workspace}}/install/boot/overlays - make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install - cp ${{github.workspace}}/build/arch/arm/boot/dts/*.dtb ${{github.workspace}}/install/boot/ - cp ${{github.workspace}}/build/arch/arm/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ - cp ${{github.workspace}}/arch/arm/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ - cp ${{github.workspace}}/build/arch/arm/boot/zImage ${{github.workspace}}/install/boot/kernel.img - - - name: Tar build - run: tar -cvf bcmrpi_build.tar -C ${{github.workspace}}/install . - - - name: Upload results - uses: actions/upload-artifact@v3 - with: - name: bcmrpi_build - path: bcmrpi_build.tar - retention-days: 7 - - build-bcm2709: - + build: runs-on: ubuntu-latest + strategy: + matrix: + include: + - name: bcm2835 + arch: arm + defconfig: bcm2835_defconfig + kernel: kernel - steps: - - name: Update install - run: - sudo apt-get update - - - name: Install toolchain - run: - sudo apt-get install gcc-arm-linux-gnueabihf - timeout-minutes: 5 - - - uses: actions/checkout@v3 - with: - fetch-depth: 1 - clean: true + - name: arm64 + arch: arm64 + defconfig: defconfig + kernel: kernel8 - - name: Build kernel - run: | - mkdir ${{github.workspace}}/build - make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcm2709_defconfig - scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y - make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} zImage modules dtbs - mkdir -p ${{github.workspace}}/install/boot/overlays - make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install - cp ${{github.workspace}}/build/arch/arm/boot/dts/*.dtb ${{github.workspace}}/install/boot/ - cp ${{github.workspace}}/build/arch/arm/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ - cp ${{github.workspace}}/arch/arm/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ - cp ${{github.workspace}}/build/arch/arm/boot/zImage ${{github.workspace}}/install/boot/kernel7.img + - name: bcmrpi + arch: arm + defconfig: bcmrpi_defconfig + kernel: kernel - - name: Tar build - run: tar -cvf bcm2709_build.tar -C ${{github.workspace}}/install . + - name: bcm2709 + arch: arm + defconfig: bcm2709_defconfig + kernel: kernel7 - - name: Upload results - uses: actions/upload-artifact@v3 - with: - name: bcm2709_build - path: bcm2709_build.tar - retention-days: 7 - - build-bcm2711: + - name: bcm2711 + arch: arm + defconfig: bcm2711_defconfig + kernel: kernel7l - runs-on: ubuntu-latest + - name: bcm2711_arm64 + arch: arm64 + defconfig: bcm2711_defconfig + kernel: kernel8 steps: - name: Update install @@ -194,59 +57,11 @@ jobs: - name: Install toolchain run: - sudo apt-get install gcc-arm-linux-gnueabihf - timeout-minutes: 5 - - - uses: actions/checkout@v3 - with: - fetch-depth: 1 - clean: true - - - name: Build kernel - run: | - mkdir ${{github.workspace}}/build - make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build bcm2711_defconfig - scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y - make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} zImage modules dtbs - mkdir -p ${{github.workspace}}/install/boot/overlays - make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install - cp ${{github.workspace}}/build/arch/arm/boot/dts/*.dtb ${{github.workspace}}/install/boot/ - cp ${{github.workspace}}/build/arch/arm/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ - cp ${{github.workspace}}/arch/arm/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ - cp ${{github.workspace}}/build/arch/arm/boot/zImage ${{github.workspace}}/install/boot/kernel7l.img - - - name: Tar build - run: tar -cvf bcm2711_build.tar -C ${{github.workspace}}/install . - - - name: Upload results - uses: actions/upload-artifact@v3 - with: - name: bcm2711_build - path: bcm2711_build.tar - retention-days: 7 - - build-bcm2711-arm64: - - runs-on: ubuntu-latest - - steps: - - name: Update install - run: - sudo apt-get update - - - name: Install toolchain - run: - sudo apt-get install gcc-arm-linux-gnueabihf - timeout-minutes: 5 - - - uses: actions/checkout@v3 - with: - fetch-depth: 1 - clean: true - - - name: Install toolchain - run: - sudo apt-get install gcc-aarch64-linux-gnu + if [[ "${{matrix.arch}}" == "arm64" ]]; then + sudo apt-get install gcc-aarch64-linux-gnu; + else + sudo apt-get install gcc-arm-linux-gnueabihf; + fi timeout-minutes: 5 - uses: actions/checkout@v3 @@ -254,25 +69,35 @@ jobs: fetch-depth: 1 clean: true - - name: Build kernel + - name: Build kernel ${{matrix.name}} run: | mkdir ${{github.workspace}}/build - make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build bcm2711_defconfig + export ARCH=${{matrix.arch}} + if [[ "$ARCH" == "arm64" ]]; then + export CROSS_COMPILE=aarch64-linux-gnu- + export DTS_SUBDIR=broadcom + export IMAGE=Image.gz + else + export CROSS_COMPILE=arm-linux-gnueabihf- + export DTS_SUBDIR= + export IMAGE=zImage + fi + make O=${{github.workspace}}/build ${{matrix.defconfig}} scripts/config --file ${{github.workspace}}/build/.config --set-val CONFIG_WERROR y - make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} Image.gz modules dtbs + make O=${{github.workspace}}/build -j ${{env.NUM_JOBS}} $IMAGE modules dtbs mkdir -p ${{github.workspace}}/install/boot/overlays - make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install - cp ${{github.workspace}}/build/arch/arm64/boot/dts/broadcom/*.dtb ${{github.workspace}}/install/boot/ - cp ${{github.workspace}}/build/arch/arm64/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ - cp ${{github.workspace}}/arch/arm64/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ - cp ${{github.workspace}}/build/arch/arm64/boot/Image.gz ${{github.workspace}}/install/boot/kernel8.img + make O=${{github.workspace}}/build INSTALL_MOD_PATH=${{github.workspace}}/install modules_install + cp ${{github.workspace}}/build/arch/${ARCH}/boot/dts/${DTS_SUBDIR}/*.dtb ${{github.workspace}}/install/boot/ + cp ${{github.workspace}}/build/arch/${ARCH}/boot/dts/overlays/*.dtb* ${{github.workspace}}/install/boot/overlays/ + cp ${{github.workspace}}/arch/${ARCH}/boot/dts/overlays/README ${{github.workspace}}/install/boot/overlays/ + cp ${{github.workspace}}/build/arch/${ARCH}/boot/$IMAGE ${{github.workspace}}/install/boot/${{matrix.kernel}}.img - name: Tar build - run: tar -cvf bcm2711_arm64_build.tar -C ${{github.workspace}}/install . + run: tar -cvf ${{matrix.name}}_build.tar -C ${{github.workspace}}/install . - name: Upload results uses: actions/upload-artifact@v3 with: - name: bcm2711_arm64_build - path: bcm2711_arm64_build.tar + name: ${{matrix.name}}_build + path: ${{matrix.name}}_build.tar retention-days: 7