Skip to content

fix: address autorelease publish failures#85

Merged
goosewobbler merged 7 commits intomainfrom
fix/autorelease-publish
Mar 31, 2026
Merged

fix: address autorelease publish failures#85
goosewobbler merged 7 commits intomainfrom
fix/autorelease-publish

Conversation

@goosewobbler
Copy link
Copy Markdown
Owner

@goosewobbler goosewobbler commented Mar 31, 2026

  1. always-auth warnings
  2. npm publish fails - these publishes work in the regular release workflow
  3. when the npm publish fails, the workflow continues and tags / version commits are pushed.
  4. rationalise fail-fast vs. continue to publish

goosewobbler and others added 3 commits March 31, 2026 12:22
…bort

Three issues in the autorelease workflow:

1. always-auth warnings: OIDC isolation was writing always-auth=false
   to the temp .npmrc and setting NPM_CONFIG_ALWAYS_AUTH=false, both of
   which npm 10+ treats as unknown and warns about. Removed both.

2. ENEEDAUTH on npm publish: actions/setup-node writes a project .npmrc
   with _authToken=${NODE_AUTH_TOKEN}. When NODE_AUTH_TOKEN is unset,
   npm expands this to an empty token and fails. Our user-config override
   does not affect the project config. Fix: add a workflow step to delete
   .npmrc before the release step in OIDC mode, allowing npm trusted
   publishing to use the OIDC exchange unimpeded.

3. Pipeline continues after all-publish-failure: publishSucceeded was set
   unconditionally to true after the publish stages, so the git push and
   GitHub release always ran. Now derived from actual per-package results;
   if every attempted package failed the pipeline throws (non-zero exit)
   preventing the version commit and tag being pushed. GitHub release is
   also gated on ctx.output.git.pushed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Previously, per-package publish errors were caught and warned about,
allowing the pipeline to continue. This let the version commit and tag
be pushed even when all packages failed.

Now the first failure throws immediately, propagating up through the
pipeline's outer catch so git push and GitHub release are never reached.
The failed package result is still recorded before throwing so callers
have full context.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 31, 2026

Release Preview — 4 packages

This PR is labeled for a minor release.

This PR will trigger the following release when merged:

Packages

Package Version
@releasekit/version 0.4.0
@releasekit/notes 0.4.0
@releasekit/publish 0.4.0
@releasekit/release 0.4.0

Changelog

Project-wide changes

Added

Changed

  • update OIDC setup to use sed instead of rm for .npmrc
  • add debug step to log .npmrc existence and contents in OIDC mode
  • update for init command move, fail-fast, and OIDC setup
  • revert versions to 0.3.1
  • release @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release@0.4.0 [skip ci]
  • improve documentation (docs: improve documentation #80)
  • add missing ci property (chore(schema): add missing ci property #81) (schema)
  • rework configuration (refactor: rework configuration #76)
  • bump actions/upload-pages-artifact from 3 to 4 (chore(deps): bump actions/upload-pages-artifact from 3 to 4 #77) (deps)
  • bump actions/deploy-pages from 4 to 5 (chore(deps): bump actions/deploy-pages from 4 to 5 #78) (deps)
  • improve error handling for API key validation (refactor(notes): improve error handling for API key validation #75) (notes)
  • bump handlebars from 4.7.8 to 4.7.9 (chore(deps): bump handlebars from 4.7.8 to 4.7.9 #71) (deps)
  • use local releasekit (ci)
  • update note formatting in release previews (refactor(release): update note formatting in release previews #67) (release)
  • update releasekit version to 0.3.1 in workflow
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.1 (release)
  • reorder setup steps in release workflow, add build step
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0 (release)
  • bump smol-toml from 1.6.0 to 1.6.1 (chore(deps): bump smol-toml from 1.6.0 to 1.6.1 #54) (deps)
  • skip dependabot devdep commits (chore: skip dependabot devdep commits #55)
  • update release workflow to use releasekit from npm (chore: update release workflow to use releasekit from npm #42)
  • upgrade actions/checkout to v6 in CI workflow examples
  • rename package-versioner to releasekit-version (version)
  • remove backwards-compatible alias for BaseVersionError (version)
  • update function names for consistency (release)
  • rename package-versioner to version output (notes)
  • clean up error handling and imports (notes)
  • update tag retrieval to use chronological ordering (version)
  • remove unused (notes)
  • improve dry run logging for changelog and release notes (notes)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.1 (release)
  • set private packages to 0.0.0
  • downgrade package versions
  • remove pages.yml from workflow paths to avoid unnecessary schema redeploys
  • update README files to clarify configuration setup
  • update lockfile
  • run package tests on all OSs
  • update README files to emphasize ESM support
  • ESM only
  • enhance package testing workflow in test-packages.ts
  • update CI build workflow to pack all core packages
  • run package tests on CI
  • update tsup configuration to externalize all bare specifiers
  • update tsup configuration for all packages to include external dependencies
  • simplify build scripts and add tsup configuration files for all packages
  • bump dorny/paths-filter from 3 to 4 (chore(deps): bump dorny/paths-filter from 3 to 4 #33) (deps)
  • update GitHub Actions permissions in PR workflow
  • remove PLAN.md file
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.4 (release)
  • add OLLAMA_API_KEY to release workflows
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.3 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.2 (release)
  • update schema
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.1 (release)
  • add step to create bin stubs for CLI packages
  • simplify header assignment and remove unused case in validateScope (ollama)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.0 (release)
  • update package description and format keywords and files for consistency (notes)
  • clarify description (notes)
  • improve error logging in release process (workflow)
  • streamline runPipeline and enhance monorepo handling (pipeline)
  • update GitHub release schema to enhance release notes handling (config)
  • update GitHub release configuration and commit handling (publish)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0 (release)
  • move config items into top-level git section
  • enable skipHooks option in releasekit configuration
  • add git.skipHooks configuration option
  • update GitHub Actions setup to use latest versions of pnpm and Node.js
  • improve readmes
  • simplify job name in release workflow
  • use correct label text
  • remove unused release workflows and scripts
  • update README for GitHub Actions configuration
  • bump the production-dependencies group across 1 directory with 4 updates (deps)
  • bump liquidjs from 10.24.0 to 10.25.0 (deps)
  • remove LLM config override
  • bump the development-dependencies group with 2 updates (deps-dev)
  • remove bootstrap link
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.12 (release)
  • remove the Bootstrap Guide document, which outlined the initial setup for the self-referential release workflow. This document is no longer needed as the workflow has been streamlined and automated.
  • add release package to issue templates
  • update zod and other package versions (notes)
  • update deps
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.11 (release)
  • bump amannn/action-semantic-pull-request from 5 to 6 (deps)
  • update version handling in generateCompareUrl function (notes)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.10 (release)
  • enhance version extraction for compare URLs (notes)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.9 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.8 (release)
  • update releasekit configuration categories and descriptions (config)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.7 (release)
  • set fetch-depth to 0 for checkout step in release post workflow (workflow)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.6 (release)
  • simplify logging message for LLM processing (pipeline)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.5 (release)
  • update package table to include version badges (README)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.4 (release)
  • unify logging to console.error for all log levels (logger)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.3 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.2 (release)
  • enhance release workflow and notes generation for specific packages
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.1 (release)
  • update package versions to 0.2.0-next.0 for all releasekit packages
  • update release workflow and enhance type safety in categorization
  • refine npm publishing workflow and improve type handling in categorization
  • update npm publishing workflow to unset NODE_AUTH_TOKEN
  • enhance npm publishing workflow with OIDC configuration
  • streamline npm publish process by specifying registry URL
  • update npm publish command and add registry URL
  • refactor package publishing function to include package directory
  • update Node.js version requirements and add .nvmrc file
  • improve release workflow by ensuring local tags are deleted before creation
  • downgrade version of @releasekit/notes to 0.1.0 to align with versioning strategy
  • downgrade package versions to 0.1.0 for @releasekit/publish, @releasekit/release, and @releasekit/version
  • refine release workflow by separating commit and push steps
  • add mismatch strategy to releasekit configuration
  • update package publishing command to include provenance and public access
  • enhance release workflows with package and bump inputs
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.0 (release)
  • update release workflows to support prerelease versioning
  • enhance release workflows with improved summary formatting and package details
  • update release workflow to use built version of CLI for version bumps
  • update release workflow to use pnpm for script execution
  • update release workflow permissions for contents
  • update release workflow permissions
  • update package descriptions and READMEs
  • npm fixes
  • update bootstrap doc for new package
  • update ci for new package
  • add automation plan
  • bump actions/checkout from 4 to 6 (deps)
  • bump actions/download-artifact from 4 to 8 (deps)
  • bump actions/upload-artifact from 4 to 7 (deps)
  • show realistic usage patterns for composable tools
  • update CI workflows to include additional conditions and OS support
  • enhance CLI execution logic for package handling
  • simplify E2E testing workflow and update dependencies
  • refactor versioning CLI and enhance build process
  • bump github/codeql-action from 3 to 4 (deps)
  • add tsx support and enhance CI workflows
  • remove compiled artifacts
  • simplify changelog comments in version strategies
  • enhance CI/CD workflows and configuration management
  • add issue templates for bug reports and feature requests
  • add Code of Conduct, Contributing guidelines, and Security Policy
  • add more deps to catalog
  • improved code sharing
  • migrate logging utilities to @releasekit/core
  • Initialize ReleaseKit monorepo with core packages, CI/CD workflows, and configuration files

Fixed

  • strip setup-node auth from .npmrc instead of deleting it
  • fail-fast on first publish failure (publish)
  • correct OIDC auth, always-auth warnings, and pipeline abort (publish)
  • add PUBLISH and RELEASE conditions to CI detection logic (fix(ci): add PUBLISH and RELEASE conditions to CI detection logic #68) (ci)
  • implement shared entry deduplication in release previews (fix(release): implement shared entry deduplication in release previews #53) (release)
  • update schema URL in releasekit.schema.json
  • update command execution in test-packages.ts
  • improve output labeling for changelogs and release notes (notes)
  • update LLM model version in releasekit configuration (config)
  • update test for unresolved environment variable handling (notes)
  • handle sole variable references in substitution (config)
  • update JSON mode logging behavior (logger)
  • adjust always-auth handling for OIDC and token authentication (publish)
  • improve token-based HTTPS authentication handling (publish)
  • codeQL alert no. 9: Useless regular-expression character escape
  • enhance escaping in setGitConfig to prevent shell injection (version)
  • use optional chaining for categoryMap updates (notes)
  • improve regex handling in formatCommitMessage for special characters (version)
  • escape double quotes in setGitConfig to prevent shell injection (version)
  • improve tag retrieval for package-specific versions (tags)
  • allow markdown output to be written to stdout (output)
  • refine commit extraction logic in changelog parser
  • fix dry run update bug, add tests (version)
  • run integration tests when E2E files change (ci)
  • implement changelog generation in sync versioning strategy
  • update cache key output in CI workflow
@releasekit/version v0.3.1 → 0.4.0

Added

Changed

  • revert versions to 0.3.1
  • release @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release@0.4.0 [skip ci]
  • improve documentation (docs: improve documentation #80)
  • rework configuration (refactor: rework configuration #76)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.1 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0 (release)
  • upgrade actions/checkout to v6 in CI workflow examples
  • rename package-versioner to releasekit-version (version)
  • remove backwards-compatible alias for BaseVersionError (version)
  • update tag retrieval to use chronological ordering (version)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.1 (release)
  • downgrade package versions
  • update README files to emphasize ESM support
  • ESM only
  • update tsup configuration to externalize all bare specifiers
  • update tsup configuration for all packages to include external dependencies
  • simplify build scripts and add tsup configuration files for all packages
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.4 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.3 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.2 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.1 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.0 (release)
  • update GitHub release configuration and commit handling (publish)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0 (release)
  • move config items into top-level git section
  • bump the production-dependencies group across 1 directory with 4 updates (deps)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.12 (release)
  • update deps
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.11 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.10 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.9 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.8 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.7 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.6 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.5 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.4 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.3 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.2 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.1 (release)
  • update package versions to 0.2.0-next.0 for all releasekit packages
  • update Node.js version requirements and add .nvmrc file
  • downgrade package versions to 0.1.0 for @releasekit/publish, @releasekit/release, and @releasekit/version
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0 (release)
  • update package descriptions and READMEs
  • npm fixes
  • refactor versioning CLI and enhance build process
  • simplify changelog comments in version strategies
  • add more deps to catalog
  • improved code sharing
  • Initialize ReleaseKit monorepo with core packages, CI/CD workflows, and configuration files

Fixed

  • implement shared entry deduplication in release previews (fix(release): implement shared entry deduplication in release previews #53) (release)
  • update JSON mode logging behavior (logger)
  • codeQL alert no. 9: Useless regular-expression character escape
  • enhance escaping in setGitConfig to prevent shell injection (version)
  • improve regex handling in formatCommitMessage for special characters (version)
  • escape double quotes in setGitConfig to prevent shell injection (version)
  • improve tag retrieval for package-specific versions (tags)
  • allow markdown output to be written to stdout (output)
  • refine commit extraction logic in changelog parser
  • fix dry run update bug, add tests (version)
  • implement changelog generation in sync versioning strategy
@releasekit/notes v0.3.1 → 0.4.0

Added

  • init command (feat: init command #83)
  • add version header & separators to release notes template (feat(templates): add version header & separators to release notes template #69) (templates)
  • display release notes in release workflow summary (feat: display release notes in release workflow summary #66)
  • rework CLI structure, add dispatcher (feat: rework CLI structure, add dispatcher #52)
  • implement ordered category building for enhanced data (notes)
  • pass user-configured LLM options to provider (notes)
  • enhance JSON extraction from LLM responses (notes)
  • include package name in changelog version headers (notes)
  • enable package names in per-package root changelogs (notes)
  • introduce scope and prompt configurations for LLM tasks (notes)
  • enhance categorizeEntries to validate scopes and clear existing ones (notes)
  • implement retry logic for LLM calls (enhance-and-categorize)
  • implement enhanceAndCategorize function for combined LLM processing
  • introduce releasekit configuration and enhance LLM processing
  • enhance LLM configuration and processing
  • add @releasekit/config package for shared configuration management
  • implement @releasekit/publish package for publishing to npm and crates.io

Changed

  • update for init command move, fail-fast, and OIDC setup
  • revert versions to 0.3.1
  • release @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release@0.4.0 [skip ci]
  • improve documentation (docs: improve documentation #80)
  • rework configuration (refactor: rework configuration #76)
  • improve error handling for API key validation (refactor(notes): improve error handling for API key validation #75) (notes)
  • bump handlebars from 4.7.8 to 4.7.9 (chore(deps): bump handlebars from 4.7.8 to 4.7.9 #71) (deps)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.1 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0 (release)
  • rename package-versioner to version output (notes)
  • clean up error handling and imports (notes)
  • remove unused (notes)
  • improve dry run logging for changelog and release notes (notes)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.1 (release)
  • downgrade package versions
  • update README files to emphasize ESM support
  • ESM only
  • update tsup configuration to externalize all bare specifiers
  • update tsup configuration for all packages to include external dependencies
  • simplify build scripts and add tsup configuration files for all packages
  • remove PLAN.md file
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.4 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.3 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.2 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.1 (release)
  • simplify header assignment and remove unused case in validateScope (ollama)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.0 (release)
  • update package description and format keywords and files for consistency (notes)
  • clarify description (notes)
  • streamline runPipeline and enhance monorepo handling (pipeline)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0 (release)
  • improve readmes
  • bump liquidjs from 10.24.0 to 10.25.0 (deps)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.12 (release)
  • update zod and other package versions (notes)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.11 (release)
  • update version handling in generateCompareUrl function (notes)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.10 (release)
  • enhance version extraction for compare URLs (notes)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.9 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.8 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.7 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.6 (release)
  • simplify logging message for LLM processing (pipeline)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.5 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.4 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.3 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.2 (release)
  • enhance release workflow and notes generation for specific packages
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.1 (release)
  • update package versions to 0.2.0-next.0 for all releasekit packages
  • update release workflow and enhance type safety in categorization
  • refine npm publishing workflow and improve type handling in categorization
  • update Node.js version requirements and add .nvmrc file
  • downgrade version of @releasekit/notes to 0.1.0 to align with versioning strategy
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0 (release)
  • update package descriptions and READMEs
  • npm fixes
  • add tsx support and enhance CI workflows
  • remove compiled artifacts
  • migrate logging utilities to @releasekit/core
  • Initialize ReleaseKit monorepo with core packages, CI/CD workflows, and configuration files

Fixed

  • improve output labeling for changelogs and release notes (notes)
  • update test for unresolved environment variable handling (notes)
  • use optional chaining for categoryMap updates (notes)
  • allow markdown output to be written to stdout (output)
@releasekit/publish v0.3.1 → 0.4.0

Added

Changed

  • update for init command move, fail-fast, and OIDC setup
  • revert versions to 0.3.1
  • release @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release@0.4.0 [skip ci]
  • improve documentation (docs: improve documentation #80)
  • rework configuration (refactor: rework configuration #76)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.1 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.1 (release)
  • downgrade package versions
  • update README files to emphasize ESM support
  • ESM only
  • update tsup configuration to externalize all bare specifiers
  • update tsup configuration for all packages to include external dependencies
  • simplify build scripts and add tsup configuration files for all packages
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.4 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.3 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.2 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.1 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.0 (release)
  • streamline runPipeline and enhance monorepo handling (pipeline)
  • update GitHub release configuration and commit handling (publish)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0 (release)
  • move config items into top-level git section
  • update README for GitHub Actions configuration
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.12 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.11 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.10 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.9 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.8 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.7 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.6 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.5 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.4 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.3 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.2 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.1 (release)
  • update package versions to 0.2.0-next.0 for all releasekit packages
  • update Node.js version requirements and add .nvmrc file
  • downgrade package versions to 0.1.0 for @releasekit/publish, @releasekit/release, and @releasekit/version
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0 (release)
  • update package descriptions and READMEs
  • npm fixes
  • add Code of Conduct, Contributing guidelines, and Security Policy
  • add more deps to catalog
  • improved code sharing

Fixed

  • strip setup-node auth from .npmrc instead of deleting it
  • fail-fast on first publish failure (publish)
  • correct OIDC auth, always-auth warnings, and pipeline abort (publish)
  • adjust always-auth handling for OIDC and token authentication (publish)
  • improve token-based HTTPS authentication handling (publish)
  • allow markdown output to be written to stdout (output)
@releasekit/release v0.3.1 → 0.4.0

Added

Changed

  • update OIDC setup to use sed instead of rm for .npmrc
  • update for init command move, fail-fast, and OIDC setup
  • revert versions to 0.3.1
  • release @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release@0.4.0 [skip ci]
  • improve documentation (docs: improve documentation #80)
  • rework configuration (refactor: rework configuration #76)
  • update note formatting in release previews (refactor(release): update note formatting in release previews #67) (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.1 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0 (release)
  • upgrade actions/checkout to v6 in CI workflow examples
  • update function names for consistency (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.1 (release)
  • downgrade package versions
  • update README files to clarify configuration setup
  • update README files to emphasize ESM support
  • ESM only
  • update tsup configuration to externalize all bare specifiers
  • update tsup configuration for all packages to include external dependencies
  • simplify build scripts and add tsup configuration files for all packages
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.4 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.3 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.2 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.1 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.3.0-next.0 (release)
  • update GitHub release configuration and commit handling (publish)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0 (release)
  • update README for GitHub Actions configuration
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.12 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.11 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.10 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.9 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.8 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.7 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.6 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.5 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.4 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.3 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.2 (release)
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0-next.1 (release)
  • update package versions to 0.2.0-next.0 for all releasekit packages
  • update Node.js version requirements and add .nvmrc file
  • downgrade package versions to 0.1.0 for @releasekit/publish, @releasekit/release, and @releasekit/version
  • @releasekit/version, @releasekit/notes, @releasekit/publish, @releasekit/release 0.2.0 (release)
  • update package descriptions and READMEs
  • npm fixes

Fixed

Tags

  • releasekit-version-v0.4.0
  • releasekit-notes-v0.4.0
  • releasekit-publish-v0.4.0
  • releasekit-release-v0.4.0

Updated automatically by ReleaseKit

@goosewobbler goosewobbler changed the title fix: autorelease publish fix(publish): address autorelease publish failures Mar 31, 2026
@goosewobbler goosewobbler added the bump:minor Release a minor version label Mar 31, 2026
- notes/README: remove releasekit-notes init (command was removed)
- release/README: document releasekit init command
- release/docs/ci-setup: document .npmrc deletion requirement for OIDC
  trusted publishing; setup-node's injected _authToken causes ENEEDAUTH
  if not removed before running releasekit in OIDC mode
- publish/README: note fail-fast pipeline behaviour

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Mar 31, 2026

Greptile Summary

This PR fixes autorelease publish failures by addressing three root causes in the OIDC npm publish path, the error-handling strategy in the publish stages, and the ordering of git push relative to GitHub release creation.

Key changes:

  • Workflow (.github/workflows/_release.reusable.yml): adds a sed step that removes the registry auth-token line and always-auth line that actions/setup-node injects into the project .npmrc, preventing spurious authentication failures during OIDC trusted publishing. A "Debug" diagnostic step also logs the file contents and should be removed once the fix is confirmed stable.
  • npm-publish and cargo-publish stages: error strategy changed from per-package catch-and-continue to fail-fast — the first publish failure records the failed result and throws, aborting the pipeline so git push and GitHub release never run against an unpublished version.
  • npm-env.ts: removes the always-auth env-var override from the subprocess isolation layer, since the new workflow step handles stripping it from the project config directly.
  • pipeline/index.ts: GitHub release is now gated on the git push having actually succeeded, preventing a GitHub release from referencing a tag that exists only locally.
  • Package versions: all packages rolled back from 0.4.0 to 0.3.1 to retry the previously failed release.

Confidence Score: 5/5

Safe to merge — all remaining findings are minor P2 style suggestions that do not affect correctness.

The core logic is sound: fail-fast publish, git.pushed guard for GitHub release, and the sed-based .npmrc cleanup are all correctly implemented and covered by updated tests. The two P2 comments are a debug step that should be cleaned up post-validation and a minor style note on the redundant .every() check — neither blocks merge.

.github/workflows/_release.reusable.yml — the Debug .npmrc step should be removed once the fix is confirmed stable in production.

Important Files Changed

Filename Overview
.github/workflows/_release.reusable.yml Adds a sed step to strip setup-node auth lines from .npmrc before OIDC publish. Also adds a debug step that logs .npmrc on every OIDC non-dry-run — flagged as a temporary artifact that should be removed.
packages/publish/src/pipeline/index.ts Switches publishSucceeded to a redundant .every() check (safe, fail-fast invariant guarantees true). Adds a git.pushed guard to the GitHub release stage, preventing a release from being created when the tag hasn't reached the remote.
packages/publish/src/stages/npm-publish.ts Changes error strategy from per-package catch (warn and continue) to fail-fast: first publish failure pushes the failed result and immediately throws, aborting the stage.
packages/publish/src/stages/cargo-publish.ts Same fail-fast transition as npm-publish: crate failures now throw immediately instead of warning and continuing.
packages/publish/src/utils/npm-env.ts Removes the always-auth override and related env vars for OIDC mode; the workflow sed step now handles stripping those lines from the project .npmrc directly.
packages/publish/test/unit/pipeline.spec.ts Switches clearAllMocks to resetAllMocks; updates runGitPushStage mock to set git.pushed=true so the GitHub release stage runs in the happy-path order test.
packages/publish/test/unit/stages/npm-publish.spec.ts Adds a fail-fast test verifying that a publish error throws and records the failed result before propagating.
packages/publish/test/unit/utils/npm-env.spec.ts Updates assertions to confirm always-auth is no longer written to the temp .npmrc.
packages/publish/README.md Documents the new fail-fast pipeline behaviour.
packages/release/docs/ci-setup.md Adds ENEEDAUTH root cause explanation and a concrete workflow snippet for the required sed step before OIDC publish.

Sequence Diagram

sequenceDiagram
    participant WF as GitHub Actions Workflow
    participant PN as Pipeline (runPipeline)
    participant NPM as npm-publish stage
    participant GIT as git-push stage
    participant GHR as github-release stage

    WF->>WF: sed strip auth-token & always-auth from .npmrc
    WF->>PN: run releasekit publish

    PN->>PN: prepare + git-commit

    PN->>NPM: runNpmPublishStage(ctx)
    alt publish succeeds
        NPM-->>PN: result.success=true pushed
    else publish fails (fail-fast)
        NPM-->>PN: result.success=false pushed → THROW
        PN-->>WF: PipelineError (git push & release skipped)
    end

    PN->>PN: publishSucceeded = true

    PN->>GIT: runGitPushStage(ctx)
    GIT->>GIT: git push branch + tags
    GIT-->>PN: ctx.output.git.pushed = true

    alt git.pushed == true
        PN->>GHR: runGithubReleaseStage(ctx)
        GHR-->>PN: release created
    else git.pushed == false
        PN->>PN: skip GitHub release
    end

    PN-->>WF: PublishOutput
Loading

Fix All in Claude Code Fix All in Cursor

Reviews (4): Last reviewed commit: "docs: update OIDC setup to use sed inste..." | Re-trigger Greptile

Comment thread .github/workflows/_release.reusable.yml Outdated
Comment thread packages/publish/src/utils/npm-env.ts Outdated
@goosewobbler goosewobbler changed the title fix(publish): address autorelease publish failures fix: address autorelease publish failures Mar 31, 2026
@goosewobbler goosewobbler merged commit db5c8b3 into main Mar 31, 2026
20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bump:minor Release a minor version

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant