From 57bdca03df5640facc5df3dbd136d17d84ce2dc6 Mon Sep 17 00:00:00 2001 From: Tom Withers Date: Wed, 3 Apr 2024 21:16:52 +0100 Subject: [PATCH] Modify build and add release step --- .github/workflows/build.yml | 165 +++++++++++++++--------------------- 1 file changed, 69 insertions(+), 96 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c6988a11f..e39a24b77 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,121 +1,94 @@ -name: Build +name: Build and Release on: push jobs: - - cache: - name: Cache + build: + name: Build on ${{ matrix.arch }} runs-on: ubuntu-22.04 - 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 - 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 + strategy: + matrix: + include: + - arch: x86 + packages: "mtools syslinux isolinux libc6-dev-i386 valgrind libgcc-s1:i386 libc6-dbg:i386" + build_commands: | + make -j 4 -C src + make -j 4 -C src everything + - arch: arm32 + packages: "mtools syslinux isolinux gcc-arm-none-eabi" + build_commands: | + make -j 4 -C src CROSS=arm-none-eabi- bin-arm32-efi/intel.efi bin-arm32-efi/intel.usb bin-arm32-efi/intel.iso + - arch: arm64 + packages: "mtools syslinux isolinux gcc-aarch64-linux-gnu" + build_commands: | + make -j 4 -C src CROSS=aarch64-linux-gnu- bin-arm64-efi/ipxe.efi bin-arm64-efi/ipxe.usb bin-arm64-efi/ipxe.iso 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 - run: | - valgrind ./src/bin-i386-linux/tests.linux - valgrind ./src/bin-x86_64-linux/tests.linux - arm32: - name: ARM32 - runs-on: ubuntu-22.04 - needs: cache - 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 + sudo apt install -y -o Acquire::Retries=50 ${{ matrix.packages }} + - name: Build 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 + ${{ matrix.build_commands }} - arm64: - name: ARM64 + - name: Upload artifacts to workflow + uses: actions/upload-artifact@v2 + with: + name: ${{ matrix.arch }}-artifacts + path: | + src/bin-* + + release: + name: Release and Upload Artifacts runs-on: ubuntu-22.04 - needs: cache + needs: build 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 + + - name: Bump version + id: bump_version + uses: anothrNick/github-tag-action@1.67.0 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + INITIAL_VERSION: 1.21.1 + DEFAULT_BUMP: minor + PRERELEASE: true + PRERELEASE_SUFFIX: ${{ env.BRANCH_NAME }} + RELEASE_BRANCHES: master + WITH_V: true + + - name: Create Release + id: create_release + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - path: /var/cache/apt/archives/*.deb - key: apt-cache-${{ github.run_id }}-${{ github.run_attempt }} - - name: Install packages + tag_name: ${{ steps.bump_version.outputs.tag }} + release_name: Release ${{ steps.bump_version.outputs.tag }} + draft: false + prerelease: false + + - name: Download all artifacts + uses: actions/download-artifact@v2 + + # The following step assumes artifacts are structured in a way that the release job can easily access and upload them. + # You may need to adjust the script based on your actual artifact structure and names. + - name: Upload Artifacts to Release run: | - sudo apt update - sudo apt install -y -o Acquire::Retries=50 \ - mtools syslinux isolinux gcc-aarch64-linux-gnu - - name: Build - 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 + for artifact in $(ls -1); do + if [[ -d "$artifact" ]]; then + echo "Uploading $artifact..." + gh release upload ${{ github.ref_name }} "${artifact}/*" --clobber -R ${{ github.repository }} + fi + done + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file