From c7bb14f36989d14ce58d2f6a22948bc7f05e9d42 Mon Sep 17 00:00:00 2001 From: "Claude (noether)" Date: Wed, 20 May 2026 11:48:46 +0200 Subject: [PATCH] ci: skip jobs when package already published MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Wire .gitea/scripts/check-already-published.sh into every job in build.yml. New step `skip if already published` (id: skip-check) lands right after actions/checkout@v4 and runs the helper against the job's recipe-dir. Subsequent steps gain `if: steps.skip-check.outputs.skip != '1'`, except `wipe secrets` which keeps its existing `if: always()`. Recipe-dir per job is taken from each job's existing `cp -r arch/...` or `cd debian/...` line — no guessing. Effect: on push where only e.g. firefox-fourier changed, 13 jobs HEAD the pool, see 200, and short-circuit; only firefox-fourier rebuilds. Verified live against packages.reauktion.de — current branch tip would skip 10/14 jobs. Patch is text-based (no PyYAML round-trip) so comments and blank lines stay where they were. Diff is 190 lines added, 0 removed. --- .gitea/workflows/build.yml | 190 +++++++++++++++++++++++++++++++++++++ 1 file changed, 190 insertions(+) diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index 50d853a56..95d473dfd 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -16,13 +16,23 @@ jobs: steps: - uses: actions/checkout@v4 + - name: skip if already published + id: skip-check + run: | + set -e + result=$(./.gitea/scripts/check-already-published.sh arch/distcc-avahi) + echo "$result" >> "$GITHUB_OUTPUT" + echo "decision: $result" + - name: bootstrap runner (idempotent) + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } retry pacman -Syu --noconfirm --needed base-devel git rsync gnupg openssh sudo avahi popt python python-setuptools - name: import signing key + if: steps.skip-check.outputs.skip != '1' env: PRIV: ${{ secrets.MARFRIT_REPO_PRIVATE_KEY }} PASS: ${{ secrets.MARFRIT_REPO_PASSPHRASE }} @@ -37,6 +47,7 @@ jobs: echo "92D5E96D8F63C75E4116AA1FF5C8C4603D0D250C:6:" | gpg --import-ownertrust - name: install deploy ssh key + if: steps.skip-check.outputs.skip != '1' env: KEY: ${{ secrets.MARFRIT_REPO_DEPLOY_KEY }} run: | @@ -46,6 +57,7 @@ jobs: ssh-keyscan -t ed25519 nc.reauktion.de > /root/.ssh/known_hosts 2>/dev/null - name: makepkg distcc-avahi + if: steps.skip-check.outputs.skip != '1' run: | set -e rm -rf /tmp/build-distcc-avahi @@ -56,6 +68,7 @@ jobs: ls -la *.pkg.tar.* | grep -v "\.sig$" - name: sign distcc-avahi + if: steps.skip-check.outputs.skip != '1' run: | set -e cd /tmp/build-distcc-avahi @@ -66,6 +79,7 @@ jobs: done - name: update aarch64 repo db + if: steps.skip-check.outputs.skip != '1' run: | set -e mkdir -p /tmp/arch-stage @@ -105,6 +119,7 @@ jobs: rm -f marfrit.files.sig - name: publish to aarch64 + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } @@ -129,13 +144,23 @@ jobs: steps: - uses: actions/checkout@v4 + - name: skip if already published + id: skip-check + run: | + set -e + result=$(./.gitea/scripts/check-already-published.sh debian/lmcp) + echo "$result" >> "$GITHUB_OUTPUT" + echo "decision: $result" + - name: install dpkg + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } retry pacman -Syu --noconfirm --needed dpkg openssh rsync curl - name: install hertz deploy ssh key + if: steps.skip-check.outputs.skip != '1' env: KEY: ${{ secrets.MARFRIT_REPO_HERTZ_KEY }} run: | @@ -145,6 +170,7 @@ jobs: ssh-keyscan -t ed25519 hertz.fritz.box >> /root/.ssh/known_hosts 2>/dev/null - name: build lmcp .deb + if: steps.skip-check.outputs.skip != '1' run: | set -e cd debian/lmcp @@ -152,6 +178,7 @@ jobs: ls -la *.deb - name: upload + publish to suites + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } @@ -182,13 +209,23 @@ jobs: steps: - uses: actions/checkout@v4 + - name: skip if already published + id: skip-check + run: | + set -e + result=$(./.gitea/scripts/check-already-published.sh arch/lmcp) + echo "$result" >> "$GITHUB_OUTPUT" + echo "decision: $result" + - name: bootstrap runner (idempotent) + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } retry pacman -Syu --noconfirm --needed base-devel git rsync gnupg openssh sudo lua lua-socket - name: import signing key + if: steps.skip-check.outputs.skip != '1' env: PRIV: ${{ secrets.MARFRIT_REPO_PRIVATE_KEY }} PASS: ${{ secrets.MARFRIT_REPO_PASSPHRASE }} @@ -203,6 +240,7 @@ jobs: echo "92D5E96D8F63C75E4116AA1FF5C8C4603D0D250C:6:" | gpg --import-ownertrust - name: install deploy ssh key + if: steps.skip-check.outputs.skip != '1' env: KEY: ${{ secrets.MARFRIT_REPO_DEPLOY_KEY }} run: | @@ -212,6 +250,7 @@ jobs: ssh-keyscan -t ed25519 nc.reauktion.de > /root/.ssh/known_hosts 2>/dev/null - name: makepkg lmcp + if: steps.skip-check.outputs.skip != '1' run: | set -e rm -rf /tmp/build-lmcp @@ -222,6 +261,7 @@ jobs: ls -la *.pkg.tar.* | grep -v "\.sig$" - name: sign lmcp + if: steps.skip-check.outputs.skip != '1' run: | set -e cd /tmp/build-lmcp @@ -232,6 +272,7 @@ jobs: done - name: publish lmcp to both arches + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } @@ -283,13 +324,23 @@ jobs: steps: - uses: actions/checkout@v4 + - name: skip if already published + id: skip-check + run: | + set -e + result=$(./.gitea/scripts/check-already-published.sh arch/claude-his-agent) + echo "$result" >> "$GITHUB_OUTPUT" + echo "decision: $result" + - name: bootstrap runner (idempotent) + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } retry pacman -Syu --noconfirm --needed base-devel git rsync gnupg openssh sudo - name: import signing key + if: steps.skip-check.outputs.skip != '1' env: PRIV: ${{ secrets.MARFRIT_REPO_PRIVATE_KEY }} PASS: ${{ secrets.MARFRIT_REPO_PASSPHRASE }} @@ -304,6 +355,7 @@ jobs: echo "92D5E96D8F63C75E4116AA1FF5C8C4603D0D250C:6:" | gpg --import-ownertrust - name: install deploy ssh key + if: steps.skip-check.outputs.skip != '1' env: KEY: ${{ secrets.MARFRIT_REPO_DEPLOY_KEY }} run: | @@ -313,6 +365,7 @@ jobs: ssh-keyscan -t ed25519 nc.reauktion.de > /root/.ssh/known_hosts 2>/dev/null - name: makepkg claude-his-agent + if: steps.skip-check.outputs.skip != '1' run: | set -e rm -rf /tmp/build-his @@ -323,6 +376,7 @@ jobs: ls -la *.pkg.tar.* | grep -v "\.sig$" - name: sign claude-his-agent + if: steps.skip-check.outputs.skip != '1' run: | set -e cd /tmp/build-his @@ -333,6 +387,7 @@ jobs: done - name: publish claude-his-agent to both arches + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } @@ -387,13 +442,23 @@ jobs: steps: - uses: actions/checkout@v4 + - name: skip if already published + id: skip-check + run: | + set -e + result=$(./.gitea/scripts/check-already-published.sh arch/ffmpeg-v4l2-request-fourier) + echo "$result" >> "$GITHUB_OUTPUT" + echo "decision: $result" + - name: bootstrap runner (idempotent) + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } retry pacman -Syu --noconfirm --needed base-devel git rsync gnupg openssh sudo nasm - name: import signing key + if: steps.skip-check.outputs.skip != '1' env: PRIV: ${{ secrets.MARFRIT_REPO_PRIVATE_KEY }} PASS: ${{ secrets.MARFRIT_REPO_PASSPHRASE }} @@ -408,6 +473,7 @@ jobs: echo "92D5E96D8F63C75E4116AA1FF5C8C4603D0D250C:6:" | gpg --import-ownertrust - name: install deploy ssh key + if: steps.skip-check.outputs.skip != '1' env: KEY: ${{ secrets.MARFRIT_REPO_DEPLOY_KEY }} run: | @@ -417,6 +483,7 @@ jobs: ssh-keyscan -t ed25519 nc.reauktion.de > /root/.ssh/known_hosts 2>/dev/null - name: makepkg ffmpeg-v4l2-request-fourier + if: steps.skip-check.outputs.skip != '1' run: | set -e rm -rf /tmp/build-ffmpeg-v4l2 @@ -430,6 +497,7 @@ jobs: ls -la *.pkg.tar.* | grep -v "\.sig$" - name: sign ffmpeg-v4l2-request-fourier + if: steps.skip-check.outputs.skip != '1' run: | set -e cd /tmp/build-ffmpeg-v4l2 @@ -440,6 +508,7 @@ jobs: done - name: update aarch64 repo db + if: steps.skip-check.outputs.skip != '1' run: | set -e mkdir -p /tmp/arch-stage-ffmpeg @@ -475,6 +544,7 @@ jobs: rm -f marfrit.files.sig - name: publish to aarch64 + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } @@ -500,13 +570,23 @@ jobs: steps: - uses: actions/checkout@v4 + - name: skip if already published + id: skip-check + run: | + set -e + result=$(./.gitea/scripts/check-already-published.sh arch/libva-v4l2-request-fourier) + echo "$result" >> "$GITHUB_OUTPUT" + echo "decision: $result" + - name: bootstrap runner (idempotent) + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } retry pacman -Syu --noconfirm --needed base-devel git rsync gnupg openssh sudo - name: import signing key + if: steps.skip-check.outputs.skip != '1' env: PRIV: ${{ secrets.MARFRIT_REPO_PRIVATE_KEY }} PASS: ${{ secrets.MARFRIT_REPO_PASSPHRASE }} @@ -521,6 +601,7 @@ jobs: echo "92D5E96D8F63C75E4116AA1FF5C8C4603D0D250C:6:" | gpg --import-ownertrust - name: install deploy ssh key + if: steps.skip-check.outputs.skip != '1' env: KEY: ${{ secrets.MARFRIT_REPO_DEPLOY_KEY }} run: | @@ -530,6 +611,7 @@ jobs: ssh-keyscan -t ed25519 nc.reauktion.de > /root/.ssh/known_hosts 2>/dev/null - name: makepkg libva-v4l2-request-fourier + if: steps.skip-check.outputs.skip != '1' run: | set -e rm -rf /tmp/build-libva-v4l2 @@ -541,6 +623,7 @@ jobs: ls -la *.pkg.tar.* | grep -v "\.sig$" - name: sign libva-v4l2-request-fourier + if: steps.skip-check.outputs.skip != '1' run: | set -e cd /tmp/build-libva-v4l2 @@ -551,6 +634,7 @@ jobs: done - name: update aarch64 repo db + if: steps.skip-check.outputs.skip != '1' run: | set -e mkdir -p /tmp/arch-stage-libva @@ -586,6 +670,7 @@ jobs: rm -f marfrit.files.sig - name: publish to aarch64 + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } @@ -611,13 +696,23 @@ jobs: steps: - uses: actions/checkout@v4 + - name: skip if already published + id: skip-check + run: | + set -e + result=$(./.gitea/scripts/check-already-published.sh arch/mpv-fourier) + echo "$result" >> "$GITHUB_OUTPUT" + echo "decision: $result" + - name: bootstrap runner (idempotent) + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } retry pacman -Syu --noconfirm --needed base-devel git rsync gnupg openssh sudo - name: import signing key + if: steps.skip-check.outputs.skip != '1' env: PRIV: ${{ secrets.MARFRIT_REPO_PRIVATE_KEY }} PASS: ${{ secrets.MARFRIT_REPO_PASSPHRASE }} @@ -632,6 +727,7 @@ jobs: echo "92D5E96D8F63C75E4116AA1FF5C8C4603D0D250C:6:" | gpg --import-ownertrust - name: install deploy ssh key + if: steps.skip-check.outputs.skip != '1' env: KEY: ${{ secrets.MARFRIT_REPO_DEPLOY_KEY }} run: | @@ -641,6 +737,7 @@ jobs: ssh-keyscan -t ed25519 nc.reauktion.de > /root/.ssh/known_hosts 2>/dev/null - name: configure [marfrit] repo + pre-install ffmpeg-v4l2-request-fourier + if: steps.skip-check.outputs.skip != '1' run: | set -e # mpv-fourier links libavcodec at build time. If the build host pulls @@ -668,6 +765,7 @@ jobs: printf 'y\ny\ny\n' | pacman -S marfrit/ffmpeg-v4l2-request-fourier - name: makepkg mpv-fourier + if: steps.skip-check.outputs.skip != '1' run: | set -e rm -rf /tmp/build-mpv @@ -679,6 +777,7 @@ jobs: ls -la *.pkg.tar.* | grep -v "\.sig$" - name: sign mpv-fourier + if: steps.skip-check.outputs.skip != '1' run: | set -e cd /tmp/build-mpv @@ -689,6 +788,7 @@ jobs: done - name: update aarch64 repo db + if: steps.skip-check.outputs.skip != '1' run: | set -e mkdir -p /tmp/arch-stage-mpv @@ -724,6 +824,7 @@ jobs: rm -f marfrit.files.sig - name: publish to aarch64 + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } @@ -746,13 +847,23 @@ jobs: steps: - uses: actions/checkout@v4 + - name: skip if already published + id: skip-check + run: | + set -e + result=$(./.gitea/scripts/check-already-published.sh debian/claude-his-agent) + echo "$result" >> "$GITHUB_OUTPUT" + echo "decision: $result" + - name: install dpkg + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } retry pacman -Syu --noconfirm --needed dpkg openssh rsync curl - name: install hertz deploy ssh key + if: steps.skip-check.outputs.skip != '1' env: KEY: ${{ secrets.MARFRIT_REPO_HERTZ_KEY }} run: | @@ -762,6 +873,7 @@ jobs: ssh-keyscan -t ed25519 hertz.fritz.box >> /root/.ssh/known_hosts 2>/dev/null - name: build claude-his-agent .deb + if: steps.skip-check.outputs.skip != '1' run: | set -e cd debian/claude-his-agent @@ -769,6 +881,7 @@ jobs: ls -la *.deb - name: upload + publish to suites + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } @@ -798,7 +911,16 @@ jobs: steps: - uses: actions/checkout@v4 + - name: skip if already published + id: skip-check + run: | + set -e + result=$(./.gitea/scripts/check-already-published.sh debian/ffmpeg-v4l2-request-fourier) + echo "$result" >> "$GITHUB_OUTPUT" + echo "decision: $result" + - name: install build-deps (Arch pkg names; build-deb.sh links natively) + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } @@ -809,6 +931,7 @@ jobs: libvorbis libvpx libwebp x264 x265 libxml2 opus v4l-utils xz zlib - name: install hertz deploy ssh key + if: steps.skip-check.outputs.skip != '1' env: KEY: ${{ secrets.MARFRIT_REPO_HERTZ_KEY }} run: | @@ -818,6 +941,7 @@ jobs: ssh-keyscan -t ed25519 hertz.fritz.box >> /root/.ssh/known_hosts 2>/dev/null - name: build ffmpeg-v4l2-request-fourier .deb + if: steps.skip-check.outputs.skip != '1' run: | set -e cd debian/ffmpeg-v4l2-request-fourier @@ -825,6 +949,7 @@ jobs: ls -la *.deb - name: upload + publish to suites + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } @@ -851,7 +976,16 @@ jobs: steps: - uses: actions/checkout@v4 + - name: skip if already published + id: skip-check + run: | + set -e + result=$(./.gitea/scripts/check-already-published.sh debian/libva-v4l2-request-fourier) + echo "$result" >> "$GITHUB_OUTPUT" + echo "decision: $result" + - name: install build-deps + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } @@ -860,6 +994,7 @@ jobs: libva libdrm systemd-libs - name: install hertz deploy ssh key + if: steps.skip-check.outputs.skip != '1' env: KEY: ${{ secrets.MARFRIT_REPO_HERTZ_KEY }} run: | @@ -869,6 +1004,7 @@ jobs: ssh-keyscan -t ed25519 hertz.fritz.box >> /root/.ssh/known_hosts 2>/dev/null - name: build libva-v4l2-request-fourier .deb + if: steps.skip-check.outputs.skip != '1' run: | set -e cd debian/libva-v4l2-request-fourier @@ -876,6 +1012,7 @@ jobs: ls -la *.deb - name: upload + publish to suites + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } @@ -905,7 +1042,16 @@ jobs: steps: - uses: actions/checkout@v4 + - name: skip if already published + id: skip-check + run: | + set -e + result=$(./.gitea/scripts/check-already-published.sh debian/mpv-fourier) + echo "$result" >> "$GITHUB_OUTPUT" + echo "decision: $result" + - name: install build-deps + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } @@ -921,6 +1067,7 @@ jobs: vulkan-icd-loader wayland zlib - name: configure [marfrit] repo + pre-install ffmpeg-v4l2-request-fourier + if: steps.skip-check.outputs.skip != '1' run: | set -e curl -sLo /tmp/marfrit.gpg https://packages.reauktion.de/marfrit.gpg @@ -935,6 +1082,7 @@ jobs: printf 'y\ny\ny\n' | pacman -S marfrit/ffmpeg-v4l2-request-fourier - name: install hertz deploy ssh key + if: steps.skip-check.outputs.skip != '1' env: KEY: ${{ secrets.MARFRIT_REPO_HERTZ_KEY }} run: | @@ -944,6 +1092,7 @@ jobs: ssh-keyscan -t ed25519 hertz.fritz.box >> /root/.ssh/known_hosts 2>/dev/null - name: build mpv-fourier .deb + if: steps.skip-check.outputs.skip != '1' run: | set -e cd debian/mpv-fourier @@ -951,6 +1100,7 @@ jobs: ls -la *.deb - name: upload + publish to suites + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } @@ -978,7 +1128,16 @@ jobs: steps: - uses: actions/checkout@v4 + - name: skip if already published + id: skip-check + run: | + set -e + result=$(./.gitea/scripts/check-already-published.sh debian/daedalus-v4l2) + echo "$result" >> "$GITHUB_OUTPUT" + echo "decision: $result" + - name: install build-deps (sans ffmpeg — see [marfrit] step) + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } @@ -994,6 +1153,7 @@ jobs: libdrm - name: ensure ffmpeg-v4l2-request-fourier installed (link-time ABI source) + if: steps.skip-check.outputs.skip != '1' run: | set -e # Idempotent: pre-install the marfrit fourier ffmpeg so cmake @@ -1011,6 +1171,7 @@ jobs: printf 'y\ny\ny\n' | pacman -S --needed marfrit/ffmpeg-v4l2-request-fourier - name: install hertz deploy ssh key + if: steps.skip-check.outputs.skip != '1' env: KEY: ${{ secrets.MARFRIT_REPO_HERTZ_KEY }} run: | @@ -1020,6 +1181,7 @@ jobs: ssh-keyscan -t ed25519 hertz.fritz.box >> /root/.ssh/known_hosts 2>/dev/null - name: build daedalus-v4l2 .deb + if: steps.skip-check.outputs.skip != '1' run: | set -e cd debian/daedalus-v4l2 @@ -1027,6 +1189,7 @@ jobs: ls -la *.deb - name: upload + publish to suites + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } @@ -1054,13 +1217,23 @@ jobs: steps: - uses: actions/checkout@v4 + - name: skip if already published + id: skip-check + run: | + set -e + result=$(./.gitea/scripts/check-already-published.sh debian/daedalus-v4l2-dkms) + echo "$result" >> "$GITHUB_OUTPUT" + echo "decision: $result" + - name: install tooling + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } retry pacman -Syu --noconfirm --needed dpkg openssh rsync curl tar gzip - name: install hertz deploy ssh key + if: steps.skip-check.outputs.skip != '1' env: KEY: ${{ secrets.MARFRIT_REPO_HERTZ_KEY }} run: | @@ -1070,6 +1243,7 @@ jobs: ssh-keyscan -t ed25519 hertz.fritz.box >> /root/.ssh/known_hosts 2>/dev/null - name: build daedalus-v4l2-dkms .deb + if: steps.skip-check.outputs.skip != '1' run: | set -e cd debian/daedalus-v4l2-dkms @@ -1077,6 +1251,7 @@ jobs: ls -la *.deb - name: upload + publish to suites + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } @@ -1110,13 +1285,23 @@ jobs: steps: - uses: actions/checkout@v4 + - name: skip if already published + id: skip-check + run: | + set -e + result=$(./.gitea/scripts/check-already-published.sh arch/mesa-panvk-bifrost) + echo "$result" >> "$GITHUB_OUTPUT" + echo "decision: $result" + - name: bootstrap runner (idempotent) + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; } retry pacman -Syu --noconfirm --needed base-devel git rsync gnupg openssh sudo - name: import signing key + if: steps.skip-check.outputs.skip != '1' env: PRIV: ${{ secrets.MARFRIT_REPO_PRIVATE_KEY }} PASS: ${{ secrets.MARFRIT_REPO_PASSPHRASE }} @@ -1131,6 +1316,7 @@ jobs: echo "92D5E96D8F63C75E4116AA1FF5C8C4603D0D250C:6:" | gpg --import-ownertrust - name: install deploy ssh key + if: steps.skip-check.outputs.skip != '1' env: KEY: ${{ secrets.MARFRIT_REPO_DEPLOY_KEY }} run: | @@ -1140,6 +1326,7 @@ jobs: ssh-keyscan -t ed25519 nc.reauktion.de > /root/.ssh/known_hosts 2>/dev/null - name: makepkg mesa-panvk-bifrost + if: steps.skip-check.outputs.skip != '1' run: | set -e rm -rf /tmp/build-mesa-panvk-bifrost @@ -1154,6 +1341,7 @@ jobs: ls -la *.pkg.tar.* | grep -v "\.sig$" - name: sign mesa-panvk-bifrost + if: steps.skip-check.outputs.skip != '1' run: | set -e cd /tmp/build-mesa-panvk-bifrost @@ -1164,6 +1352,7 @@ jobs: done - name: update aarch64 repo db + if: steps.skip-check.outputs.skip != '1' run: | set -e mkdir -p /tmp/arch-stage-mesa-panvk @@ -1199,6 +1388,7 @@ jobs: rm -f marfrit.files.sig - name: publish to aarch64 + if: steps.skip-check.outputs.skip != '1' run: | set -e retry() { for i in 1 2 3; do "$@" && return 0; rc=$?; echo "retry $i (exit=$rc)" >&2; sleep $((i*5)); done; return 1; }