Skip to content

fix(ci): change staging tag format to avoid release-please collision#326

Merged
FSM1 merged 1 commit into
mainfrom
fix/staging-tag-format
Mar 23, 2026
Merged

fix(ci): change staging tag format to avoid release-please collision#326
FSM1 merged 1 commit into
mainfrom
fix/staging-tag-format

Conversation

@FSM1

@FSM1 FSM1 commented Mar 23, 2026

Copy link
Copy Markdown
Owner

Summary

  • Changes staging tag format from v{version}-staging-rc-{N} to staging-v{version}-rc-{N}
  • Adds packages/crypto to release-please config for independent semver versioning

Root Cause

Release-please scans all GitHub Releases to find the "latest release" for each configured package path. The root package (.) uses include-component-in-tag: false, so its tag pattern is v{version}. Staging pre-release tags like v0.26.0-staging-rc-1 matched this pattern, causing release-please to either match them to path . (wrong version) or skip the actual v0.26.0 release entirely. This resulted in "Missing 1 paths: ." followed by "There are untagged, merged release PRs outstanding - aborting".

The staging- prefix ensures staging tags never collide with v{version}.

Cleanup performed

  • Deleted 4 old-format staging GitHub Releases (v0.26.2-staging-rc-1, v0.26.0-staging-rc-1, v0.25.2-staging-rc-1, v0.25.1-staging-rc-1) and their tags
  • Manually created v0.26.1 release to unblock release-please
  • Flipped PR chore: release main #323 label from autorelease: pending to autorelease: tagged

Test plan

  • Merge this PR
  • Verify release-please creates next release PR correctly (no "untagged merged release PRs" error)
  • Deploy to staging using new tag format: staging-v{version}-rc-1

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Updated staging deployment workflow to use a new tag naming pattern for automated deployments
    • Modified staging release candidate tag generation and discovery process
    • Added crypto package to release management system configuration

Staging tags previously used `v{version}-staging-rc-{N}` format which
matches release-please's root package tag pattern `v{version}`. This
caused release-please to match staging pre-releases to path "." during
release discovery, preventing it from finding the actual root release
and blocking tag creation with "untagged merged release PRs outstanding".

New format: `staging-v{version}-rc-{N}` (e.g., `staging-v0.26.0-rc-1`).
The `staging-` prefix ensures no collision with `v{version}`.

Also adds packages/crypto to release-please config for independent
semver versioning (was removed from extra-files in #316 but never
added as its own package entry).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Entire-Checkpoint: 78733a8d9174
@coderabbitai

coderabbitai Bot commented Mar 23, 2026

Copy link
Copy Markdown

Caution

Review failed

Pull request was closed or merged during review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 0c627629-21cf-414d-82bf-7479f89ae448

📥 Commits

Reviewing files that changed from the base of the PR and between e7d7a5a and 5cee1e0.

📒 Files selected for processing (4)
  • .github/workflows/deploy-staging.yml
  • .github/workflows/tag-staging.yml
  • .release-please-manifest.json
  • release-please-config.json

Walkthrough

This PR updates staging deployment workflows to use a new tag naming pattern (staging-v*) and corresponding RC tag logic (staging-${TAG}-rc-${NEXT_RC}), while configuring the packages/crypto package in release-please for automated versioning.

Changes

Cohort / File(s) Summary
Staging Deployment Workflows
.github/workflows/deploy-staging.yml, .github/workflows/tag-staging.yml
Updated trigger tag pattern from v*-staging* to staging-v* and refactored RC tag discovery logic to build STAGING_PREFIX="staging-${TAG}-rc" with new naming format ${STAGING_PREFIX}-${NEXT_RC}.
Release-Please Configuration
.release-please-manifest.json, release-please-config.json
Added packages/crypto package entry to manifest with version 0.25.1 and configured it as a Node release package with component tag @cipherbox/crypto and bump-minor-pre-major=true.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Possibly related PRs

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately describes the main change: updating the staging tag format to resolve a release-please collision issue, which is the core objective of this PR.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/staging-tag-format

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@FSM1 FSM1 enabled auto-merge (squash) March 23, 2026 03:10
@FSM1 FSM1 requested a review from Copilot March 23, 2026 03:10
@FSM1 FSM1 merged commit 293019b into main Mar 23, 2026
17 of 18 checks passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Adjusts CI/release tooling to prevent staging pre-release tags from being mistaken for production release tags by release-please, and enables independent versioning for packages/crypto.

Changes:

  • Updates staging tag format to staging-v{version}-rc-{N} to avoid collisions with v{version}.
  • Extends release-please configuration/manifests to include packages/crypto as an independently versioned package.
  • Updates staging deploy workflow tag trigger to match the new staging tag prefix.

Reviewed changes

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

File Description
release-please-config.json Adds packages/crypto to release-please packages config for independent releases.
.release-please-manifest.json Adds an initial tracked version entry for packages/crypto.
.github/workflows/tag-staging.yml Changes how staging RC tags are computed/created to use the new staging- prefix.
.github/workflows/deploy-staging.yml Updates tag trigger filter to staging-v* to match new staging tag format.

LAST_RC=$(git tag -l "${TAG}-staging-rc-*" | sed "s/${TAG}-staging-rc-//" | sort -n | tail -1)
# New format: staging-v0.26.0-rc-N (avoids collision with release-please v{version} pattern)
STAGING_PREFIX="staging-${TAG}-rc"
LAST_RC=$(git tag -l "${STAGING_PREFIX}-*" | sed "s/${STAGING_PREFIX}-//" | sort -n | tail -1)

Copilot AI Mar 23, 2026

Copy link

Choose a reason for hiding this comment

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

sed "s/${STAGING_PREFIX}-//" treats STAGING_PREFIX as a regex; since TAG contains dots (e.g. v0.26.0), . will match any character and can strip the wrong prefix if similarly-named tags exist, leading to an incorrect LAST_RC/NEXT_RC. Prefer a non-regex approach (e.g., bash ${t#${STAGING_PREFIX}-}) or escape/anchor the pattern before passing it to sed.

Suggested change
LAST_RC=$(git tag -l "${STAGING_PREFIX}-*" | sed "s/${STAGING_PREFIX}-//" | sort -n | tail -1)
LAST_RC=$(
git tag -l "${STAGING_PREFIX}-*" |
while read -r t; do
t=${t#${STAGING_PREFIX}-}
echo "$t"
done |
sort -n |
tail -1
)

Copilot uses AI. Check for mistakes.
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