Skip to content

Port release CI from python-node#60

Open
Qard wants to merge 1 commit intomainfrom
triggered-releases
Open

Port release CI from python-node#60
Qard wants to merge 1 commit intomainfrom
triggered-releases

Conversation

@Qard
Copy link
Member

@Qard Qard commented Mar 23, 2026

Summary

  • Extracts build and test jobs from monolithic CI.yml into a reusable build-and-test.yml (workflow_call) workflow
  • Adds a bundle job that assembles a release-bundle artifact from all platform binaries + entrypoints
  • Simplifies CI.yml to a thin wrapper that calls build-and-test.yml
  • Adds release.yml for manual workflow_dispatch releases (replaces the auto-publish-on-commit-message pattern)
  • Adds scripts/update-version.mjs for bumping package.json version at release time

Key changes vs old CI

  • Publishing is now triggered manually via release.yml instead of automatically on commit message pattern match
  • Artifact names prefixed with npm- to support bundle job's pattern: npm-* download
  • release.yml uses NODE_AUTH_TOKEN from setup-node instead of manually configuring NPM_TOKEN
  • release.yml uses GitHub environment npm (matching python-node) for secrets scoping

Test plan

  • Verify CI workflow triggers on PR and push to main
  • Confirm build artifacts are uploaded as npm-darwin-arm64 and npm-linux-x64-gnu
  • Confirm release-bundle artifact is assembled correctly in bundle job
  • Test scripts/update-version.mjs locally: node scripts/update-version.mjs 1.5.0
  • Trigger release.yml manually via GitHub Actions UI after merging

🤖 Generated with Claude Code

@Qard Qard requested review from ShogunPanda and mcollina March 23, 2026 19:43
@Qard Qard self-assigned this Mar 23, 2026
@Qard Qard added the enhancement New feature or request label Mar 23, 2026
ShogunPanda
ShogunPanda previously approved these changes Mar 23, 2026
mcollina
mcollina previously approved these changes Mar 24, 2026
Copy link
Member

@mcollina mcollina left a comment

Choose a reason for hiding this comment

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

lgtm

@mcollina
Copy link
Member

One of the builds is failign

- Add reusable build-and-test.yml workflow called by both CI and release
- Add manual release.yml workflow with version/prerelease/skip-tests inputs
- Simplify CI.yml to a thin wrapper
- Add scripts/update-version.mjs for version bumping at release time

CI fixes:
- Use clang-16 (with LIBCLANG_PATH set to versioned .so.1) to avoid
  clang-14 emmintrin.h regression in node:22-slim
- Cache key includes -llvm16 suffix to bust old clang-14 compiled cache
- Run cargo test inside Docker to avoid root-owned target/ permissions
- Use LD_PRELOAD to resolve PHP symbols in doctests (linker --as-needed
  drops libphp from DT_NEEDED)
- Mark Embed::handle and lib.rs doctests as no_run to fix SIGSEGV from
  nested block_on in Drop impl

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@Qard Qard force-pushed the triggered-releases branch from 4b76bcc to 3898245 Compare March 24, 2026 15:29
@Qard Qard requested review from ShogunPanda and mcollina March 24, 2026 15:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants