Skip to content

fix(ci): release notes dropped backtick identifiers - #20

Merged
adlio merged 1 commit into
mainfrom
fix/release-notes-backtick-escaping
Oct 22, 2026
Merged

adlio merged 1 commit into
mainfrom
fix/release-notes-backtick-escaping

Conversation

@adlio

@adlio adlio commented Oct 22, 2026

Copy link
Copy Markdown
Owner

Bug

release.yml passed changelog notes into gh release create/gh release edit via inline GitHub Actions interpolation: --notes "${{ steps.changelog.outputs.notes }}".

The changelog notes contain markdown inline-code spans like jackc/pgx/v4. When that text is interpolated into a double-quoted shell argument, each backtick pair is treated as shell command substitution — the shell tries to execute the backticked text as a command and substitutes its (empty, erroring) output. The result: every inline-code identifier is silently deleted from the published release body.

Confirmed on the live v1.3.0 release: the body reads "migrated from to " with both identifiers blanked, while CHANGELOG.md has them correct.

Fix

Write the extracted notes to a file (notes.md) instead of a GITHUB_OUTPUT multiline variable, and pass them to gh release create/edit with --notes-file notes.md instead of --notes "...". A file path on the command line is never re-parsed by the shell, so backticks (and any other shell metacharacters) in the notes content are inert.

As a secondary hardening, the changelog-extraction awk script also used to interpolate ${{ steps.version.outputs.version }} directly into the awk pattern string; this now goes through an env: var (VERSION) and awk -v, closing that interpolation surface too, consistent with the same fix.

Verification

  • Validated the updated workflow with python3 -c "import yaml; yaml.safe_load(open('.github/workflows/release.yml'))" — parses cleanly.
  • Ran the new awk extraction locally against CHANGELOG.md for version 1.3.0; output correctly retains jackc/pgx/v4, jackc/pgx/v5, etc.

Follow-up for maintainer

This PR only fixes the workflow going forward. The existing v1.3.0 GitHub release still has the corrupted body (identifiers blanked). After merging, the maintainer will need to either delete + re-push the v1.3.0 tag or otherwise re-trigger the release workflow so gh release edit regenerates the notes correctly from the fixed pipeline.

@codecov

codecov Bot commented Oct 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (b4f508d) to head (838b29c).

Additional details and impacted files
@@            Coverage Diff            @@
##              main       #20   +/-   ##
=========================================
  Coverage   100.00%   100.00%           
=========================================
  Files            7         7           
  Lines          216       216           
=========================================
  Hits           216       216           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@adlio
adlio merged commit 23ed16d into main Oct 22, 2026
6 checks passed
@adlio
adlio deleted the fix/release-notes-backtick-escaping branch October 22, 2026 06:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant