Skip to content

Latest commit

 

History

History
67 lines (55 loc) · 2.83 KB

releasing.md

File metadata and controls

67 lines (55 loc) · 2.83 KB

Releasing

Publishing is driven by version tags and npm Trusted Publishing. GitHub Actions uses a short-lived OpenID Connect identity, so the repository does not need an npm token.

npm trusted publisher

The solid-objects package must authorize this GitHub Actions identity:

  • Organization or user: cardmagic
  • Repository: solid-objects-js
  • Workflow filename: ci.yml
  • Environment: none
  • Allowed action: npm publish

The relationship can be created while authenticated as a package owner:

npm trust github solid-objects \
  --repo cardmagic/solid-objects-js \
  --file ci.yml \
  --allow-publish \
  --yes

Release procedure

  1. Update the version in package.json and src/version.ts. Refresh the lockfile when necessary. Move the release notes out of the Unreleased section in CHANGELOG.md into a dated section for the new version. The publish job reads that section, so a version without one fails the release.

  2. Run pnpm run format:check, pnpm run check, pnpm run test:coverage, pnpm run build, pnpm run pack:check, pnpm run test:package, pnpm run test:recovery, pnpm run test:browser, and pnpm audit --audit-level=high. Run the PostgreSQL, MySQL, and Redis jobs against the versions in the support matrix.

  3. Read docs/virtual-actors.md and docs/agents.md against the release. Correct any requirement, compatibility, or guarantee statement that the release changed. pnpm run check:documentation fails when the category guide no longer embeds examples/ticket-sale.ts, or when the agent guide no longer embeds the files in examples/browser/. pnpm run test:package runs the ticket sale example against the packed tarball, and pnpm run test:browser runs the browser example in Chromium.

  4. Commit and push main.

  5. Create and push an annotated tag matching the package version:

    git tag -a v0.13.3 -m "Version 0.13.3"
    git push origin v0.13.3

The tag runs the complete CI matrix. The publish job starts only after every quality, database, Redis, and browser job succeeds. It rejects tags that do not match package.json, safely skips versions already present in npm, and publishes new versions with npm provenance.

The job then builds the release notes with scripts/release-notes.mjs. That script prints the CHANGELOG.md section for the tagged version. The job then creates the GitHub release for the tag. If you run the job again on a tag that npm already holds, it still creates a missing release.

After the tag publishes, refresh the solidobjects.dev documentation snapshot from the tag and redeploy the site. The site's check:release step refuses a snapshot that is not the latest published tag. The Context7 refresh workflow refreshes the index after each push to main that changes the documentation. Confirm that its run succeeded.