Fix release pipeline: escape shell vars so cross-compiled assets build #16

Merged
benvin merged 1 commits from benvin/fix-release-cross-compile into main 2026-07-16 23:08:09 +10:00
Owner

Why

The v0.5.3 release pipeline failed at the asset-upload step with open node-lookup-linux-amd64: no such file or directory, and release notes came out empty. Woodpecker substitutes ${...} expressions in commands at parse time, treating them as pipeline variables. The build loop's shell parameter expansions (${name}, ${osarch%/*}, ${pkg}) and the release step's ${PREV_TAG}/${NOTES} were blanked before the shell ran, so the per-os/arch binaries were written to garbled names and never matched the upload list.

The RPM itself was unaffected (it's built via make build, internal to the Makefile) and node-lookup-0.5.3-1.x86_64.rpm published to rpm-internal correctly — only the Gitea release binary assets and notes were broken.

Changes

  • Escape all shell variables and command substitutions in the build loop and the release-notes block as $$, matching the existing upload-rpm step's convention. Genuine Woodpecker vars (${CI_COMMIT_TAG}, ${CI_REPO}) stay single-$.

Follow-up

The v0.5.3 Gitea release assets are being backfilled manually; this fix ensures v0.5.4+ produce them automatically.

## Why The **v0.5.3** release pipeline failed at the asset-upload step with `open node-lookup-linux-amd64: no such file or directory`, and release notes came out empty. Woodpecker substitutes `${...}` expressions in `commands` **at parse time**, treating them as pipeline variables. The build loop's shell parameter expansions (`${name}`, `${osarch%/*}`, `${pkg}`) and the release step's `${PREV_TAG}`/`${NOTES}` were blanked before the shell ran, so the per-os/arch binaries were written to garbled names and never matched the upload list. The RPM itself was unaffected (it's built via `make build`, internal to the Makefile) and `node-lookup-0.5.3-1.x86_64.rpm` published to `rpm-internal` correctly — only the Gitea release binary assets and notes were broken. ## Changes - Escape all shell variables and command substitutions in the build loop and the release-notes block as `$$`, matching the existing `upload-rpm` step's convention. Genuine Woodpecker vars (`${CI_COMMIT_TAG}`, `${CI_REPO}`) stay single-`$`. ## Follow-up The v0.5.3 Gitea release assets are being backfilled manually; this fix ensures v0.5.4+ produce them automatically.
unkinben added 1 commit 2026-07-16 22:55:52 +10:00
Fix release pipeline: escape shell vars so cross-compiled assets build
ci/woodpecker/pr/build Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
1e662a406a
The v0.5.3 release failed to attach binaries ("open node-lookup-linux-amd64:
no such file or directory"). Woodpecker substitutes ${...} expressions in
`commands` at parse time, so the build loop's shell parameter expansions
(${name}, ${osarch%/*}, ${pkg}) and the release step's ${PREV_TAG}/${NOTES}
were blanked before the shell ran — the per-os/arch binaries were written to
garbled names and the release notes came out empty.

- Escape all shell variables and command substitutions in the build loop and
  release-notes block as $$, matching the existing upload-rpm step. Real
  Woodpecker vars (${CI_COMMIT_TAG}, ${CI_REPO}) stay single-$.
benvin merged commit 2aaffd7e31 into main 2026-07-16 23:08:09 +10:00
benvin deleted branch benvin/fix-release-cross-compile 2026-07-16 23:08:10 +10:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: unkin/node-lookup#16