Skip to content

Automated release workflow with AI-generated release notes#10

Merged
taoeffect merged 9 commits into
masterfrom
issue-8
Jun 13, 2026
Merged

Automated release workflow with AI-generated release notes#10
taoeffect merged 9 commits into
masterfrom
issue-8

Conversation

@taoeffect

@taoeffect taoeffect commented Jun 12, 2026

Copy link
Copy Markdown
Member

Closes #8

Pushing a v* tag (or manually dispatching with a tag) now builds both release artifacts and publishes a GitHub Release automatically — no more building releases by hand.

What it does

  • Builds strings.linux.tar.gz via Docker and strings.mac (Apple silicon) on a macOS runner, each with a smoke test.
  • Publishes a GitHub Release with SHA256 checksums and the usual per-platform setup/usage instructions, plus a ## Changes section summarized from commit messages by Z.ai's GLM model. Notes are best-effort: if generation fails or there's nothing noteworthy, the release still goes out, just without that section.
  • Re-runs are safe: the workflow updates an existing release instead of failing, and retries for old tags that predate the notes script simply skip the Changes section.

Also included

  • src/quickjs/dune now globs Homebrew Cellar paths for libomp.a, so any installed libomp version works (needed for the macOS CI build, helps local dev too).
  • Version bumped to 2.3.0; release process documented in DEVELOPMENT.md.

AI Disclosure

Assisted with Fable 5.

Hardcoded libomp versions broke the macOS build whenever Homebrew
bumped the package; globbing makes the dune rule version-agnostic.
On every v* tag (or manual dispatch), builds strings.linux.tar.gz via
Docker and an arm64-only strings.mac, then publishes a GitHub Release
with SHA256 checksums, install instructions, and a Changes section
generated by Z.ai (GLM-5.1 by default).
Moves the inline node heredoc out of release.yml for readability and
local testability; validated with actionlint and a no-credentials dry
run of the fallback path.
Adds a Releases section to DEVELOPMENT.md (tag-push flow, required
ZAI_API_KEY secret, arm64-only macOS support) and updates AGENTS.md
release and libomp notes accordingly.
- Key concurrency group off inputs.tag on workflow_dispatch so retries
  for a tag share a group with its push run instead of racing it
- Skip the Changes section (with a warning) when dispatching on a tag
  that predates scripts/generate-release-notes.mjs, instead of failing
  the release
- Omit the Changes section entirely when the model reports no important
  changes, rather than emitting an attribution-only section
- Cap release-notes input at 200 commits to bound the API payload when
  no previous tag is found
- Smoke test: escape/anchor the tar grep pattern, add
  DEBIAN_FRONTEND=noninteractive, drop unneeded mkdir (-version runs
  before the project-root check)

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds an automated release pipeline that builds Linux/macOS artifacts on tag pushes and publishes a GitHub Release, optionally appending AI-generated “## Changes” notes. This also updates build configuration and documentation to support the new workflow and bumps the project version.

Changes:

  • Add .github/workflows/release.yml to build and upload release artifacts on v* tags or manual dispatch, and publish/update a GitHub Release with checksums and usage instructions.
  • Add scripts/generate-release-notes.mjs to generate a best-effort “## Changes” section from commit messages via Z.ai (fails open).
  • Update QuickJS libomp path detection (Homebrew globs), bump version to 2.3.0, and document the release process.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/quickjs/dune Use Homebrew Cellar globs for libomp.a so any installed version can be found.
src/cli/strings.ml Bump CLI version string to 2.3.0.
scripts/generate-release-notes.mjs New script to generate best-effort AI release notes into dist/changes.md.
README.md Fix Linux usage command to ./strings.linux and add AI usage disclosure section.
DEVELOPMENT.md Document automated release workflow, tagging process, and required repo configuration.
AGENTS.md Update contributor/agent notes to reflect globbed libomp paths and automated releases.
.github/workflows/release.yml New release workflow: build Linux via Docker, build macOS arm64, generate notes, publish/update GitHub Release.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread scripts/generate-release-notes.mjs Outdated
GitHub Actions only processes workflow commands from stdout, so the
release-notes failure warning sent via console.error was not guaranteed
to surface as an annotation.
@taoeffect taoeffect merged commit 4752636 into master Jun 13, 2026
3 checks passed
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.

Automate releases via GHA

2 participants