You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- Remove BuildNumber append from VersionPrefix; use FileVersion for
4-segment build traceability instead
- Resolve-version now checks tag existence for release idempotency:
only bumped versions trigger a release, repeated pushes are CI-only
- Simplify full_version to equal version (no run_number suffix)
- Remove BuildNumber concatenation from NUKE GenerateReleaseManifest
- Update docs and README to reflect SemVer tags (v0.2.0 not v0.2.0.42)
Made-with: Cursor
-**CI appends the build number** on release: `0.2.0` becomes `0.2.0.42`
100
-
-**Tags are created automatically**: `v0.2.0.42`
101
-
- No manual tagging. No version input fields. The single source of truth is `VersionPrefix` in `Directory.Build.props`.
99
+
-**`VersionPrefix` in `Directory.Build.props`** is the single source of truth (e.g., `0.2.0`)
100
+
-**Tags are created automatically**: `v0.2.0` — release triggers only when the tag doesn't exist yet
101
+
-**`FileVersion`** includes the CI build number for traceability (e.g., `0.2.0.42`), visible in DLL properties
102
+
- No manual tagging. No version input fields. Bump `VersionPrefix` via PR to trigger a release.
102
103
103
104
### Version commands
104
105
@@ -146,7 +147,7 @@ env:
146
147
147
148
## Concurrency
148
149
149
-
Multiple `CI and Release` runs execute **in parallel by default**. Each run gets a unique `run_number`, so versions never conflict.
150
+
Multiple `CI and Release` runs execute **in parallel by default**.
150
151
151
152
To serialize runs on the same branch (only one active at a time), set repository variables in **Settings > Secrets and variables > Actions > Variables**:
@@ -42,9 +42,9 @@ For a quick release walkthrough, see: [Quick Start Release](quick-start-release.
42
42
## 2) Job Details
43
43
44
44
### `resolve-version`
45
-
- Reads `VersionPrefix` from `Directory.Build.props`, validates semver format
46
-
- Determines if this is a release (main push = true, PR = false)
47
-
- Computes the build matrix: PR uses ubuntu only, main push includes win/linux/osx
45
+
- Reads `VersionPrefix` from `Directory.Build.props`, validates semver format (3-segment: `Major.Minor.Patch`)
46
+
- Determines if this is a release: main push + tag `v{version}` does not exist yet = release; otherwise CI-only
47
+
- Computes the build matrix: PR uses ubuntu only, release includes win/linux/osx
48
48
49
49
### `build-and-test`
50
50
- Matrix build: each platform runs Build + Test
@@ -80,7 +80,7 @@ For a quick release walkthrough, see: [Quick Start Release](quick-start-release.
80
80
Approve the `release` environment.
81
81
82
82
3. Check the Releases page:
83
-
- A tag was created (e.g., `v0.2.0.42`)
83
+
- A tag was created (e.g., `v0.2.0`)
84
84
- The GitHub Release contains platform installer zips
85
85
- A corresponding package version exists on NuGet.org (if `NUGET_API_KEY` is configured)
86
86
@@ -121,7 +121,7 @@ The version comes from `VersionPrefix` in `Directory.Build.props`. CI does not a
121
121
After making changes, merge to `main` via PR. CI automatically builds with the new version.
122
122
123
123
### Q3: Can the same version be re-published?
124
-
Each main push generates a unique 4-segment version number (e.g., `0.2.0.42`), so the same push won't conflict. To publish a new version(e.g., `0.3.0`), modify `VersionPrefix` via PR.
124
+
No. Each version can only be released once. If the tag `v{version}` already exists, the release is skipped and the run becomes CI-only. To publish a new version, bump `VersionPrefix` via PR (e.g., `0.2.0` → `0.3.0`).
125
125
126
126
### Q4: What is the release manifest?
127
127
`release-manifest.json` records the SHA256 hash and version information for each NuGet package. During the release phase, package files are verified against the manifest to prevent tampering or corruption during artifact transfer.
Copy file name to clipboardExpand all lines: docs/quick-start-release.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -41,7 +41,7 @@ After pushing to `main`:
41
41
42
42
After a successful run, you should see:
43
43
44
-
- A new tag (e.g., `v0.2.0.42`)
44
+
- A new tag (e.g., `v0.2.0`)
45
45
- A new GitHub Release
46
46
- Release assets including platform installer zips (`app-linux-x64.zip`, `app-win-x64.zip`, etc.) and the SBOM file
47
47
- A corresponding package version on NuGet.org (if `NUGET_API_KEY` is configured)
@@ -51,7 +51,7 @@ After a successful run, you should see:
51
51
52
52
## 4) Version Management (Must Read)
53
53
54
-
The version comes from `VersionPrefix` in `Directory.Build.props`. CI automatically appends the build number (e.g., `0.2.0.42`).
54
+
The version comes from `VersionPrefix` in `Directory.Build.props` — a pure 3-segment SemVer (e.g., `0.2.0`). A release is triggered only when this version differs from the latest git tag.
0 commit comments