From 8ccba9dea99e4443583b53d542db1e3cc6040027 Mon Sep 17 00:00:00 2001 From: Andrew Anderson Date: Sun, 25 Oct 2026 09:28:31 -0400 Subject: [PATCH 1/2] =?UTF-8?q?=F0=9F=90=9B=20crux-sync:=20do=20not=20pipe?= =?UTF-8?q?=20the=20commit=20summary=20through=20head=20under=20pipefail?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The first full sync produced a 700-file stat; head closed the pipe and the step died with SIGPIPE (141) after the commit, before the push. Refs #14138 Signed-off-by: Andrew Anderson --- .github/workflows/crux-sync.yml | 2 +- changelog.d/fixed-14138-crux-sync-sigpipe.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 changelog.d/fixed-14138-crux-sync-sigpipe.md diff --git a/.github/workflows/crux-sync.yml b/.github/workflows/crux-sync.yml index 079b40d8f8..bde9bb793d 100644 --- a/.github/workflows/crux-sync.yml +++ b/.github/workflows/crux-sync.yml @@ -131,7 +131,7 @@ jobs: -m "Module path rewritten github.com/hivecommons/hive/crux -> github.com/hivecommons/crux by src/scripts/crux-publish.sh. File issues and pull requests in hivecommons/hive." echo "changed=true" >> "$GITHUB_OUTPUT" echo "sha=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT" - git --no-pager show --stat HEAD | head -40 + git --no-pager show --shortstat --format="%H %s" HEAD - name: Upload publish tree uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7.0.2 diff --git a/changelog.d/fixed-14138-crux-sync-sigpipe.md b/changelog.d/fixed-14138-crux-sync-sigpipe.md new file mode 100644 index 0000000000..10f835457e --- /dev/null +++ b/changelog.d/fixed-14138-crux-sync-sigpipe.md @@ -0,0 +1 @@ +- The `crux-sync` workflow no longer aborts after committing the publish tree: the commit summary was piped through `head`, which under `pipefail` turned into exit 141 on a large first sync (#14138). From d21f5e9934e6828490cc83a7ce84dcd018eef5c7 Mon Sep 17 00:00:00 2001 From: Andrew Anderson Date: Sun, 25 Oct 2026 09:40:19 -0400 Subject: [PATCH 2/2] =?UTF-8?q?=F0=9F=90=9B=20crux-sync:=20a=20.hive-sync?= =?UTF-8?q?=20timestamp=20alone=20is=20not=20a=20change?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refs #14138 Signed-off-by: Andrew Anderson --- .github/workflows/crux-sync.yml | 4 ++++ changelog.d/fixed-14138-crux-sync-sigpipe.md | 1 + 2 files changed, 5 insertions(+) diff --git a/.github/workflows/crux-sync.yml b/.github/workflows/crux-sync.yml index bde9bb793d..837df39a7d 100644 --- a/.github/workflows/crux-sync.yml +++ b/.github/workflows/crux-sync.yml @@ -119,6 +119,10 @@ jobs: git config user.name "hive-release[bot]" git config user.email "hive-release@hive.kubestellar.io" git add -A + # .hive-sync carries a timestamp, so it alone is not a change worth a commit. + if [ "$(git diff --cached --name-only)" = ".hive-sync" ]; then + git restore --staged --worktree .hive-sync + fi if git diff --cached --quiet; then echo "changed=false" >> "$GITHUB_OUTPUT" echo "Publish tree already matches hive@${HIVE_SHA:0:12}; nothing to commit." | tee -a "$GITHUB_STEP_SUMMARY" diff --git a/changelog.d/fixed-14138-crux-sync-sigpipe.md b/changelog.d/fixed-14138-crux-sync-sigpipe.md index 10f835457e..2c74b67138 100644 --- a/changelog.d/fixed-14138-crux-sync-sigpipe.md +++ b/changelog.d/fixed-14138-crux-sync-sigpipe.md @@ -1 +1,2 @@ - The `crux-sync` workflow no longer aborts after committing the publish tree: the commit summary was piped through `head`, which under `pipefail` turned into exit 141 on a large first sync (#14138). +- `crux-sync` no longer commits when the only difference is the `.hive-sync` timestamp, so tag-only runs and re-dispatches do not add empty syncs (#14138).