Skip to content

Commit feda50d

Browse files
committed
some fixes
1 parent aa1a7e8 commit feda50d

File tree

6 files changed

+63
-58
lines changed

6 files changed

+63
-58
lines changed

.github/workflows/create-major-minor-rc.yml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ jobs:
1717
rc_version: ${{ steps.create_rc.outputs.RC_VERSION }}
1818
release_branch: ${{ steps.create_rc.outputs.RELEASE_BRANCH }}
1919
main_version: ${{ steps.create_rc.outputs.MAIN_VERSION }}
20+
release_root_tag: ${{ steps.create_rc.outputs.RELEASE_ROOT_TAG }}
2021
steps:
2122
- name: Output Inputs
2223
run: echo "${{ toJSON(github.event.inputs) }}"
@@ -104,9 +105,10 @@ jobs:
104105
- **Rust**: Use git tag reference in Cargo.toml
105106
106107
### Voting Instructions
107-
Please test the RC artifacts and vote:
108-
- 👍 (:+1:) to approve
109-
- 👎 (:-1:) if issues found (please comment with details)
108+
Please test the RC artifacts and vote by commenting:
109+
- **+1** to approve
110+
- **0** to abstain or neutral
111+
- **-1** if issues found (please include details)
110112
111113
### Next Steps
112114
- If approved: Promote to stable using \`promote-to-stable\` workflow

.github/workflows/create-rc.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,10 @@ A new release candidate has been created and is ready for voting.
9898

9999
## Voting
100100

101-
Please test the RC and vote using reactions:
102-
- 👍 (:+1:) to approve
103-
- 👎 (:-1:) if issues found (please comment with details)
101+
Please test the RC and vote by commenting:
102+
- **+1** to approve
103+
- **0** to abstain or neutral
104+
- **-1** if issues found (please include details)
104105

105106
## Timeline
106107

.github/workflows/publish-beta.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ jobs:
2020
outputs:
2121
beta_version: ${{ steps.publish.outputs.BETA_VERSION }}
2222
beta_tag: ${{ steps.publish.outputs.BETA_TAG }}
23+
release_root_tag: ${{ steps.publish.outputs.RELEASE_ROOT_TAG }}
2324
steps:
2425
- name: Output Inputs
2526
run: echo "${{ toJSON(github.event.inputs) }}"

ci/create_major_minor_rc.sh

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,15 +69,15 @@ if [ "${BREAKING_CHANGES}" = "true" ]; then
6969

7070
if [ "${CURR_MAJOR}" -gt "${BASE_RC_MAJOR}" ]; then
7171
echo "Major version already bumped from ${BASE_RC_MAJOR} to ${CURR_MAJOR}"
72-
RC_VERSION="${BASE_VERSION}-rc.0"
72+
RC_VERSION="${BASE_VERSION}-rc.1"
7373
else
7474
echo "Breaking changes require major version bump"
7575
RC_MAJOR=$((CURR_MAJOR + 1))
76-
RC_VERSION="${RC_MAJOR}.0.0-rc.0"
76+
RC_VERSION="${RC_MAJOR}.0.0-rc.1"
7777
fi
7878
else
7979
# No breaking changes, use current base version
80-
RC_VERSION="${BASE_VERSION}-rc.0"
80+
RC_VERSION="${BASE_VERSION}-rc.1"
8181
fi
8282

8383
echo "Creating RC version: ${RC_VERSION}"

ci/publish_beta.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ if [[ "${BRANCH}" == "main" ]] && [[ "${CURRENT_VERSION}" =~ -beta\.[0-9]+$ ]];
7676
PREV_BASE_VERSION=$(echo "${CURRENT_VERSION}" | sed 's/-beta\.[0-9]*$//')
7777
# Decrement major to get what the "RC" would have been
7878
PREV_MAJOR=$((NEXT_MAJOR - 1))
79-
BASE_RC_VERSION="${PREV_MAJOR}.${CURR_MINOR}.${CURR_PATCH}-rc.0"
79+
BASE_RC_VERSION="${PREV_MAJOR}.${CURR_MINOR}.${CURR_PATCH}-rc.1"
8080
git tag -a "${NEW_RELEASE_ROOT_TAG}" "${PREV_COMMIT}" -m "Base: ${BASE_RC_VERSION}
8181
Release root for ${NEXT_VERSION}-beta.N series (created during major bump)"
8282

release_process.md

Lines changed: 49 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,9 @@ flowchart LR
7676
7777
subgraph release["Release Branch: release/v1.3"]
7878
direction LR
79-
R1["1.3.0-rc.0<br/>🏷️ v1.3.0-rc.0"] --> R2["1.3.0<br/>🏷️ v1.3.0"]
79+
R1["1.3.0-rc.1<br/>🏷️ v1.3.0-rc.1"] --> R2["1.3.0<br/>🏷️ v1.3.0"]
8080
R2 --> R3["1.3.1-beta.0"]
81-
R3 --> R4["1.3.1-rc.0<br/>🏷️ v1.3.1-rc.0"]
81+
R3 --> R4["1.3.1-rc.1<br/>🏷️ v1.3.1-rc.1"]
8282
R4 --> R5["1.3.1<br/>🏷️ v1.3.1"]
8383
R5 --> R6["1.3.2-beta.0"]
8484
end
@@ -87,10 +87,10 @@ flowchart LR
8787
```
8888

8989
**Flow explanation:**
90-
- **Main branch** at `1.3.0-beta.2` (has release-root tag) → create RC checks for breaking changes → if none, RC is `1.3.0-rc.0`, main bumps to `1.4.0-beta.0` with new release-root tag → `1.4.0-beta.1` (preview, tagged) → create RC for v1.4.0 → main bumps to `1.5.0-beta.0`
91-
- **Release branch** `release/v1.3` created from main at `1.3.0-beta.2`, starts at `1.3.0-rc.0` (tagged) → `1.3.0` (stable, tagged) → `1.3.1-beta.0``1.3.1-rc.0` (tagged) → `1.3.1` (stable, tagged) → `1.3.2-beta.0`
90+
- **Main branch** at `1.3.0-beta.2` (has release-root tag) → create RC checks for breaking changes → if none, RC is `1.3.0-rc.1`, main bumps to `1.4.0-beta.0` with new release-root tag → `1.4.0-beta.1` (preview, tagged) → create RC for v1.4.0 → main bumps to `1.5.0-beta.0`
91+
- **Release branch** `release/v1.3` created from main at `1.3.0-beta.2`, starts at `1.3.0-rc.1` (tagged) → `1.3.0` (stable, tagged) → `1.3.1-beta.0``1.3.1-rc.1` (tagged) → `1.3.1` (stable, tagged) → `1.3.2-beta.0`
9292
- **Tags**: 🏷️ = version tag, 📍 = release-root tag (for breaking change detection)
93-
- **Breaking changes**: If breaking changes detected when cutting RC from `1.3.0-beta.2`, the RC would be `2.0.0-rc.0` and main would bump to `2.1.0-beta.0`
93+
- **Breaking changes**: If breaking changes detected when cutting RC from `1.3.0-beta.2`, the RC would be `2.0.0-rc.1` and main would bump to `2.1.0-beta.0`
9494

9595
**Note**: All commits are linear on their respective branches. `beta.0` = unreleased, `beta.1+` = published previews.
9696

@@ -114,19 +114,20 @@ Trigger the **"Publish Beta"** workflow:
114114
- **dry_run**: Test first with `true`
115115

116116
This workflow:
117-
- For main branch at `beta.0` (unreleased): Checks for breaking changes and bumps version accordingly
118-
- **Breaking changes found**: Bumps to next major `beta.1` (e.g., `1.4.0-beta.0``2.0.0-beta.1`)
119-
- **No breaking changes**: Keep current version, bump to `beta.1` (e.g., `1.4.0-beta.0``1.4.0-beta.1`)
120-
- For other beta versions: Bumps beta prerelease number (`beta.N``beta.N+1`)
117+
- For main branch: Checks for breaking changes and bumps version accordingly
118+
- **Breaking changes found AND current major == base major**: Bumps to next major `beta.1` (e.g., `1.4.0-beta.1``2.0.0-beta.1`)
119+
- **Breaking changes found AND current major > base major**: Already bumped, just increment beta (e.g., `2.0.0-beta.1``2.0.0-beta.2`)
120+
- **No breaking changes**: Keep current major, bump to next beta (e.g., `1.4.0-beta.0``1.4.0-beta.1`)
121+
- For release branches: Bumps beta prerelease number (`beta.N``beta.N+1`)
121122
- Creates beta tag
122-
- Publishes artifacts to fury.io
123+
- Publishes artifacts
123124

124-
**Note**: The version was already incremented during RC creation, so without breaking changes we just convert `beta.0` to `beta.1`.
125+
**Note**: Breaking change detection happens on every beta publish from main. Major version bumps occur when breaking changes are first detected, and the major version is only bumped once per breaking change detection cycle.
125126

126127
**Use cases**:
127128
- Testing features before RC
128129
- Regular preview releases for early adopters
129-
- Converting unreleased beta.0 to published beta.1 (triggers breaking change detection on main)
130+
- Incremental beta releases with automatic breaking change detection
130131

131132
## Breaking Change Detection
132133

@@ -142,12 +143,12 @@ Release root tags mark the base commits for breaking change detection. The tag n
142143
**Tag Format**: `release-root/{major}.{minor}.{patch}-beta.N`
143144
- The tag name indicates which beta version series uses this base
144145
- The tag points to the commit on main branch before the RC was created (the comparison base)
145-
- The tag message stores the base RC version (e.g., "Base: 1.3.0-rc.0") - this is what we compare against to detect major version bumps
146+
- The tag message stores the base RC version (e.g., "Base: 1.3.0-rc.1") - this is what we compare against to detect major version bumps
146147
- The base RC version in the message stays constant even when multiple release-root tags point to the same commit
147148

148149
**When created**:
149150
1. **When creating a major/minor RC**: After bumping main to the next version
150-
- Example: After cutting v1.3.0-rc.1, create `release-root/1.4.0-beta.N` pointing to the RC commit
151+
- Example: After cutting v1.3.0-rc.1, create `release-root/1.4.0-beta.N` pointing to the commit before the RC branch was created (the last commit on main before branching)
151152
2. **When breaking changes bump major version**: When major version is bumped during beta publish
152153
- Example: When bumping 1.4.0-beta.5 → 2.0.0-beta.1, create `release-root/2.0.0-beta.N` pointing to the SAME commit with the SAME base RC version
153154

@@ -164,7 +165,7 @@ Breaking change detection happens **on every beta publish from main branch**. Th
164165

165166
1. **Find release-root tag**: Look for `release-root/{current_version}-beta.N`
166167
- If NOT found → Bump to next major immediately (no comparison base exists)
167-
2. **Extract base RC version**: Read from tag message (e.g., "Base: 1.3.0-rc.0" → base major is `1`)
168+
2. **Extract base RC version**: Read from tag message (e.g., "Base: 1.3.0-rc.1" → base major is `1`)
168169
3. **Compare**: Check for breaking changes since the commit pointed to by the release-root tag
169170
4. **Determine action**:
170171
- If breaking changes AND current_major == base_major → bump to next major
@@ -173,10 +174,10 @@ Breaking change detection happens **on every beta publish from main branch**. Th
173174

174175
**Examples:**
175176

176-
Starting from v1.3.0-rc.0 cut, main at 1.4.0-beta.0 with `release-root/1.4.0-beta.N` (Base: 1.3.0-rc.0):
177+
Starting from v1.3.0-rc.1 cut, main at 1.4.0-beta.0 with `release-root/1.4.0-beta.N` (Base: 1.3.0-rc.1):
177178
- `1.4.0-beta.0` + no breaking → `1.4.0-beta.1`
178179
- `1.4.0-beta.1` + breaking → `2.0.0-beta.1`
179-
- Creates `release-root/2.0.0-beta.N` pointing to same commit, message still "Base: 1.3.0-rc.0"
180+
- Creates `release-root/2.0.0-beta.N` pointing to same commit, message still "Base: 1.3.0-rc.1"
180181
- Base major from tag message is 1, current major is 1, so bump to 2
181182
- `2.0.0-beta.1` + breaking → `2.0.0-beta.2`
182183
- Base major from `release-root/2.0.0-beta.N` tag message is 1, current major is 2
@@ -187,7 +188,7 @@ Starting from v1.3.0-rc.0 cut, main at 1.4.0-beta.0 with `release-root/1.4.0-bet
187188
- `1.4.0-beta.1` but `release-root/1.4.0-beta.N` doesn't exist → `2.0.0-beta.1`
188189
- No comparison base, automatically bump to next major
189190
- Creates `release-root/2.0.0-beta.N` pointing to the commit before the version bump
190-
- Tag message: "Base: 1.4.0-rc.0" (the hypothetical RC version we're comparing against)
191+
- Tag message: "Base: 1.4.0-rc.1" (the hypothetical RC version we're comparing against)
191192
- Future beta publishes from 2.0.0 series will compare against this base
192193
- Useful for migration or when starting fresh
193194

@@ -238,20 +239,20 @@ This workflow:
238239
- Reads current version from main (e.g., `1.3.0-beta.2`)
239240
- Checks for breaking changes since the release-root tag
240241
- If breaking changes detected:
241-
- Creates RC with bumped major version: `2.0.0-rc.0`
242+
- Creates RC with bumped major version: `2.0.0-rc.1`
242243
- Bumps main to: `2.1.0-beta.0`
243244
- If no breaking changes:
244-
- Creates RC with current version: `1.3.0-rc.0`
245+
- Creates RC with current version: `1.3.0-rc.1`
245246
- Bumps main to: `1.4.0-beta.0`
246247
- Creates `release/v{major}.{minor}` branch from main HEAD
247-
- Tags the RC: `v{version}-rc.0`
248-
- Creates `release-root/{next_version}-beta.N` tag at the RC commit for future breaking change comparison
248+
- Tags the RC: `v{version}-rc.1`
249+
- Creates `release-root/{next_version}-beta.N` tag at the commit before the RC branch (for future breaking change comparison)
249250
- Creates GitHub Discussion for voting
250251

251252
**Important**:
252253
- Always creates RC from the tip of main branch (HEAD)
253-
- Breaking change detection happens during RC creation, not during beta publish
254-
- If breaking changes are found, both RC and next main version get major version bump
254+
- Breaking change detection happens during both RC creation AND beta publish
255+
- If breaking changes are found during RC creation, both RC and next main version get major version bump
255256

256257
### Step 2: Vote on Release Candidate
257258

@@ -343,7 +344,7 @@ Workflow: Publish Beta
343344
branch: main
344345
Result:
345346
- Looks for release-root/1.4.0-beta.N → found
346-
- Extracts base: 1.3.0-rc.0 (major: 1) from tag message
347+
- Extracts base: 1.3.0-rc.1 (major: 1) from tag message
347348
- No breaking changes detected
348349
- Bumped to 1.4.0-beta.1
349350
- Tagged v1.4.0-beta.1
@@ -354,10 +355,10 @@ Workflow: Publish Beta
354355
branch: main
355356
Result:
356357
- Looks for release-root/1.4.0-beta.N → found
357-
- Extracts base: 1.3.0-rc.0 (major: 1) from tag message
358+
- Extracts base: 1.3.0-rc.1 (major: 1) from tag message
358359
- Breaking changes detected, current major (1) == base major (1)
359360
- Bumped to 2.0.0-beta.1 (beta resets on major bump)
360-
- Created release-root/2.0.0-beta.N → same commit, message "Base: 1.3.0-rc.0"
361+
- Created release-root/2.0.0-beta.N → same commit, message "Base: 1.3.0-rc.1"
361362
- Tagged v2.0.0-beta.1
362363
- Published artifacts
363364

@@ -366,7 +367,7 @@ Workflow: Publish Beta
366367
branch: main
367368
Result:
368369
- Looks for release-root/2.0.0-beta.N → found
369-
- Extracts base: 1.3.0-rc.0 (major: 1) from tag message
370+
- Extracts base: 1.3.0-rc.1 (major: 1) from tag message
370371
- Breaking changes detected, but current major (2) > base major (1)
371372
- No major bump needed (already bumped)
372373
- Bumped to 2.0.0-beta.2
@@ -383,10 +384,10 @@ Workflow: Create Major/Minor RC
383384
Result:
384385
- Checks for breaking changes since release-root/1.3.0-beta.N
385386
- No breaking changes detected
386-
- Created release/v1.3 at 1.3.0-rc.0
387-
- Tagged v1.3.0-rc.0
387+
- Created release/v1.3 at 1.3.0-rc.1
388+
- Tagged v1.3.0-rc.1
388389
- Bumped main to 1.4.0-beta.0 (unreleased)
389-
- Tagged release-root/1.4.0-beta.N → points to commit before RC branch, message "Base: 1.3.0-rc.0"
390+
- Tagged release-root/1.4.0-beta.N → points to commit before RC branch, message "Base: 1.3.0-rc.1"
390391
- GitHub Discussion created
391392

392393
# 3. Vote on RC
@@ -396,7 +397,7 @@ Workflow: Create Major/Minor RC
396397

397398
# 4. Promote to stable
398399
Workflow: Promote RC to Stable
399-
rc_tag: v1.3.0-rc.0
400+
rc_tag: v1.3.0-rc.1
400401
Result:
401402
- release/v1.3 @ 1.3.0 (stable)
402403
- Tagged v1.3.0
@@ -409,7 +410,7 @@ Workflow: Publish Beta
409410
branch: main
410411
Result:
411412
- Looks for release-root/1.4.0-beta.N → found
412-
- Extracts base: 1.3.0-rc.0 (major: 1) from tag message
413+
- Extracts base: 1.3.0-rc.1 (major: 1) from tag message
413414
- No breaking changes detected
414415
- Bumped from 1.4.0-beta.0 to 1.4.0-beta.1
415416
- Tagged v1.4.0-beta.1
@@ -420,10 +421,10 @@ Workflow: Publish Beta
420421
branch: main
421422
Result:
422423
- Looks for release-root/1.4.0-beta.N → found
423-
- Extracts base: 1.3.0-rc.0 (major: 1) from tag message
424+
- Extracts base: 1.3.0-rc.1 (major: 1) from tag message
424425
- Breaking changes detected, current major (1) == base major (1)
425426
- Bumped from 1.4.0-beta.1 to 2.0.0-beta.1 (beta resets on major bump)
426-
- Created release-root/2.0.0-beta.N → same commit, message "Base: 1.3.0-rc.0"
427+
- Created release-root/2.0.0-beta.N → same commit, message "Base: 1.3.0-rc.1"
427428
- Tagged v2.0.0-beta.1
428429
- Published artifacts
429430

@@ -432,7 +433,7 @@ Workflow: Publish Beta
432433
branch: main
433434
Result:
434435
- Looks for release-root/2.0.0-beta.N → found
435-
- Extracts base: 1.3.0-rc.0 (major: 1) from tag message
436+
- Extracts base: 1.3.0-rc.1 (major: 1) from tag message
436437
- Breaking changes detected, but current major (2) > base major (1)
437438
- No major bump needed (already bumped from base)
438439
- Bumped to 2.0.0-beta.2
@@ -445,10 +446,10 @@ Workflow: Create Major/Minor RC
445446
- Main at 2.0.0-beta.2
446447
- Checks for breaking changes since release-root/2.0.0-beta.N
447448
- No additional breaking changes (major already bumped)
448-
- Created release/v2.0 at 2.0.0-rc.0
449-
- Tagged v2.0.0-rc.0
449+
- Created release/v2.0 at 2.0.0-rc.1
450+
- Tagged v2.0.0-rc.1
450451
- Bumped main to 2.1.0-beta.0
451-
- Tagged release-root/2.1.0-beta.N → points to commit before RC branch, message "Base: 2.0.0-rc.0"
452+
- Tagged release-root/2.1.0-beta.N → points to commit before RC branch, message "Base: 2.0.0-rc.1"
452453
```
453454

454455
### Patch Release
@@ -462,13 +463,13 @@ Workflow: Create RC
462463
release_branch: release/v1.3
463464
Result:
464465
- Branch at 1.3.1-beta.0
465-
- Created 1.3.1-rc.0
466-
- Tagged v1.3.1-rc.0
466+
- Created 1.3.1-rc.1
467+
- Tagged v1.3.1-rc.1
467468

468469
# 5. Vote passes
469470
# 6. Promote patch RC
470471
Workflow: Promote RC to Stable
471-
rc_tag: v1.3.1-rc.0
472+
rc_tag: v1.3.1-rc.1
472473
Result:
473474
- release/v1.3 @ 1.3.1
474475
- Tagged v1.3.1
@@ -481,22 +482,22 @@ Workflow: Promote RC to Stable
481482

482483
```bash
483484
# 1. Create initial RC
484-
RC: v1.3.0-rc.0 on release/v1.3
485+
RC: v1.3.0-rc.1 on release/v1.3
485486

486487
# 2. Issue found during testing
487488
# 3. Fix committed to release/v1.3 branch
488489
# 4. Create new RC
489490
Workflow: Create RC
490491
release_branch: release/v1.3
491492
Result:
492-
- Branch at 1.3.0-rc.0
493-
- Auto-incremented to 1.3.0-rc.1
494-
- Tagged v1.3.0-rc.1
493+
- Branch at 1.3.0-rc.1
494+
- Auto-incremented to 1.3.0-rc.2
495+
- Tagged v1.3.0-rc.2
495496

496497
# 5. Vote passes
497-
# 6. Promote rc.1 to stable
498+
# 6. Promote rc.2 to stable
498499
Workflow: Promote RC to Stable
499-
rc_tag: v1.3.0-rc.1
500+
rc_tag: v1.3.0-rc.2
500501
Result:
501502
- release/v1.3 @ 1.3.0
502503
- Tagged v1.3.0

0 commit comments

Comments
 (0)