From 4bb0363e50214cbae2790c5e46e03f52f3461a12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Oliver=20K=C3=A4stner?= Date: Fri, 23 Aug 2024 23:59:39 +0200 Subject: [PATCH] actions: add upload-packages job --- .github/workflows/build-and-test.yml | 75 ++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index 204406a..c2e4d9f 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -2,6 +2,8 @@ name: Build and test on: push: branches: [ "main" ] + tags: + - 'v*' pull_request: branches: [ "main" ] workflow_dispatch: @@ -26,3 +28,76 @@ jobs: - name: Compile run: | ninja -C build + + upload-packages: + runs-on: ubuntu-24.04 + timeout-minutes: 60 + strategy: + matrix: + arch: + - amd64 + - armhf + - arm64 + + permissions: + contents: write + + env: + DEB_DISTRO: bookworm + + steps: + - uses: actions/checkout@v4 + + - uses: actions/cache@v4 + id: chroot-cache + with: + path: ~/.cache/sbuild/ + key: ${{ env.DEB_DISTRO }}-${{ matrix.arch }}-chroot + + - name: install dependencies + run: | + sudo apt-get update && sudo apt-get install -y \ + debhelper sbuild mmdebstrap uidmap debian-archive-keyring \ + qemu-user-static binfmt-support + + - name: prepare sbuild + run: | + cat << "EOF" > ~/.sbuildrc + $chroot_mode = 'unshare'; + $ENV{'DEB_BUILD_OPTIONS'} = 'parallel=auto'; + #$run_autopkgtest = 1; + $autopkgtest_root_args = ''; + $autopkgtest_opts = [ '--apt-upgrade', '--', 'unshare', '--release', '%r', '--arch', '%a' ]; + EOF + + - name: create chroot + if: steps.chroot-cache.outputs.cache-hit != 'true' + run: | + mkdir -p ~/.cache/sbuild + mkdir -p ~/work/output + mmdebstrap --variant=buildd --arch=${{ matrix.arch }} \ + --include=pkg-config,lintian \ + --aptopt='APT::Install-Recommends 0;' \ + --aptopt='Acquire::PDiffs "false";' \ + --dpkgopt='force-unsafe-io' \ + ${{ env.DEB_DISTRO }} ~/.cache/sbuild/${{ env.DEB_DISTRO }}-${{ matrix.arch }}.tar.zst + + - name: build packages + run: sbuild --build-dir ~/work/output --arch=${{ matrix.arch }} -d ${{ env.DEB_DISTRO }} -v + + - uses: actions/upload-artifact@v4 + with: + name: packages-${{ env.DEB_DISTRO }}-${{ matrix.arch }} + path: ~/work/output/*.deb + + - name: Create Release + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') + with: + files: | + ~/work/output/*.deb + + - name: Setup tmate session + uses: mxschmitt/action-tmate@v3 + if: failure() + timeout-minutes: 10