Skip to content

feat: migrate to napi-rs v3 and update release workflow - #27

Merged
mkmeral merged 1 commit into
strands-agents:mainfrom
zastrowm:ci-release-workflows
Jun 16, 2026
Merged

mkmeral merged 1 commit into
strands-agents:mainfrom
zastrowm:ci-release-workflows

Conversation

@zastrowm

@zastrowm zastrowm commented Jun 16, 2026

Copy link
Copy Markdown
Member

Description

Updates the release workflow so that cutting a vX.Y.Z tag is the only release action needed, following the existing convention from strands-sdk.

Callouts:

  • napi-rs v3 migrationnapi/napi-derive upgraded to v3, CLI to @napi-rs/cli@^3.7.2
  • Version derived from git tag — Manifests carry 0.0.0; .github/actions/stamp-version stamps the tag at build time
  • OIDC trusted publishing — npm publish uses id-token: write (no NPM_TOKEN secret)
  • Per-platform npm publish matrix — 4 platform packages publish independently (fail-fast: false) so that each are retriable independently. The main package is published following the platform specific items.
  • Pre-publish safety gatesnode-pack and python-inspect upload downloadable artifacts for local testing

Example workflow: https://github.com/zastrowm/shell/actions/runs/27622359408 (fails on release because we haven't set up publishing yet)

Related Issues

Addresses the release pipeline requirements from #1.

Documentation PR

N/A — CI/workflow changes only.

Type of Change

New feature

Testing

Validated end-to-end across 6 CI runs on a fork (zastrowm/shell, tags v0.2.0 through v0.2.6):

  • All build, pack, and inspection jobs pass green
  • Publish jobs fail as expected (no OIDC trusted publisher configured on the fork)
  • Downloaded npm-packages artifact, published to a local Verdaccio registry, confirmed npm install @strands-agents/shell auto-resolves the correct platform optionalDependency
  • Downloaded pypi-dist-bundle, installed via pip install --find-links, confirmed platform tag resolution picks the correct wheel
  • Both Node and Python packages run successfully after install

  • I ran the relevant test suites for the bindings I touched (cargo test --workspace --all-targets, pytest tests/python, npm test)
  • If I touched Rust, I ran cargo fmt and cargo clippy

Checklist

  • I have read the CONTRIBUTING document
  • I have reviewed and understand every line of code in this PR, including any generated by AI tools, and I can explain why it works
  • My change is focused and reasonably small; I have split unrelated work into separate PRs
  • I have added any necessary tests that prove my fix is effective or my feature works
  • I have updated the documentation accordingly
  • I have added an appropriate example to the documentation to outline the feature, or no new docs are needed
  • My changes generate no new warnings
  • Any dependent changes have been merged and published

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

- Upgrade napi/napi-derive to v3, CLI to @napi-rs/cli@^3.7.2
- Derive version from git tag via .github/actions/stamp-version
- Switch npm publish to OIDC trusted publishing (no NPM_TOKEN)
- Split npm publish into per-platform matrix (independently retriable)
- Add pre-publish safety gates (node-pack, python-inspect)
- Upload artifacts for local testing before publish
- Fix aarch64-linux cross-compile for both Node and Python
- Bump CI action versions (checkout v6, setup-python v6, setup-node v6)
@zastrowm
zastrowm marked this pull request as ready for review June 16, 2026 14:31
@mkmeral
mkmeral merged commit b8bb9aa into strands-agents:main Jun 16, 2026
41 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.

2 participants