Skip to content

Commit e5c68f9

Browse files
authored
docs: update docs for release process (#193)
Signed-off-by: Shiwei Zhang <shizh@microsoft.com>
1 parent 8c458e2 commit e5c68f9

File tree

4 files changed

+33
-36
lines changed

4 files changed

+33
-36
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,6 @@ vendor/
2424
.DS_Store
2525
/cose-fuzz.zip
2626
/workdir/
27+
28+
# Editor files
29+
.vscode/

.vscode/settings.json

Lines changed: 0 additions & 5 deletions
This file was deleted.

release-checklist.md

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,18 @@ This document describes the checklist to publish a release via GitHub workflow.
66

77
The maintainers may periodically update this checklist based on feedback.
88

9-
NOTE: Make sure the dependencies in `go.mod` file are expected by the release.
10-
For example, if there are dependencies on certain version of notation library (notation-go or notation-core-go) or ORAS library (oras-go), make sure that version of library is released first, and the version number is updated accordingly in `go.mod` file.
11-
After updating go.mod file, run `go mod tidy` to ensure the go.sum file is also updated with any potential changes.
9+
> [!NOTE]
10+
> Make sure the dependencies in `go.mod` file are expected by the release.
11+
> After updating `go.mod` file, run `go mod tidy` to ensure the `go.sum` file is also updated with any potential changes.
1212
1313
## Release Process
1414

15-
1. Determine a [SemVer2](https://semver.org/)-valid version prefixed with the letter `v` for release.
16-
For example, `version="v1.0.0-alpha.1"`.
17-
1. Bump up the `Version` in [internal/version/version.go](internal/version/version.go#L5) and open a PR for the changes.
18-
1. Wait for the PR merge.
19-
1. Be on the main branch connected to the actual repository (not a fork) and `git pull`.
20-
Ensure `git log -1` shows the latest commit on the main branch.
21-
1. Create a tag `git tag -am $version $version`
22-
1. `git tag` and ensure the name in the list added looks correct, then push the tag directly to the repository by `git push --follow-tags`.
23-
1. Wait for the completion of the GitHub action [release-github](https://github.com/veraison/go-cose/blob/main/.github/workflows/ci.yml).
24-
1. Check the new draft release, revise the release description, and publish the release.
15+
1. Determine a [SemVer2](https://semver.org/)-valid version prefixed with the letter `v` for release. For example, `v1.0.0-alpha.1`.
16+
1. Determine the commit to be tagged and released.
17+
1. Create an issue for voting with title similar to `vote: tag v1.0.0-alpha.1` with the proposed commit.
18+
1. Wait for the vote pass.
19+
1. Cut a release branch `release-X.Y` (e.g. `release-1.0`) if it does not exist. The voted commit MUST be the head of the release branch.
20+
- To cut a release branch directly on GitHub, navigate to `https://github.com/veraison/go-cose/tree/{commit}` and then follow the [creating a branch](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/creating-and-deleting-branches-within-your-repository#creating-a-branch-using-the-branch-dropdown) doc.
21+
1. Draft a new release from the release branch by following the [creating a release](https://docs.github.com/en/repositories/releasing-projects-on-github/managing-releases-in-a-repository#creating-a-release) doc. Set release title to the voted version and create a tag in the **Choose a tag** dropdown menu with the voted version as the tag name.
22+
1. Proofread the draft release, and publish the release.
2523
1. Announce the release in the community.

release-management.md

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,31 +14,32 @@ The maintainers may periodically update this policy based on feedback.
1414

1515
## Release Versioning
1616

17-
Consumers of the go-cose project may build directly from main, or pull from released builds.
18-
Builds from main must reference the git-commit as the version: `v1.0.0-2300d5c`
17+
Consumers of the go-cose module may reference `main` directly, or reference released tags.
1918

2019
All go-cose [releases][releases] follow a go-lang flavored derivation (`v*`) of the [semver][sem-ver] format, with optional pre-release labels.
2120

22-
Logical Progression of a release: `v1.0.0-2300d5c` --> `v1.0.0-alpha.1` --> `v1.0.0-alpha.2` --> `v1.0.0-rc.1` --> `v1.0.0`
21+
Logical Progression of a release: `v1.0.0-alpha.1` --> `v1.0.0-alpha.2` --> `v1.0.0-rc.1` --> `v1.0.0`
2322

24-
A new major or minor release will not have an automated build/release posted until the branch reaches alpha quality.
23+
A new major or minor release will not have an automated release posted until the branch reaches alpha quality.
2524

26-
- all versions use a preface of `v`
27-
- `X` is the [Major](#major-releases) version
28-
- `Y` is the [Minor](#minor-releases) version
29-
- `Z` is the [Patch](#patch-releases) version
25+
- All versions use a preface of `v`
26+
- Given a version `vX.Y.Z`,
27+
- `X` is the [Major](#major-releases) version
28+
- `Y` is the [Minor](#minor-releases) version
29+
- `Z` is the [Patch](#patch-releases) version
3030
- _Optional_ `-alpha.n` | `-rc.n` [pre-release](#pre-release) version
3131
- Each incremental alpha or rc build will bump the suffix (`n`) number.
3232
- It's not expected to have more than 9 alphas or rcs.
3333
The suffix will be a single digit.
3434
- If > 9 builds do occur, the format will simply use two digit indicators (`v1.0.0-alpha.10`)
3535

36-
_**Note**: Pre-releases will NOT use the github pre-release flag._
36+
> [!IMPORTANT]
37+
> Pre-releases will NOT use the github pre-release flag.
3738
3839
## Branch Management
3940

4041
To meet the projects stability goals, go-cose does not currently operate with multiple feature branches.
41-
All active development happens in main.
42+
All active development happens in `main`.
4243
For each release, a branch is created for servicing, following the versioning name.
4344
`v1.0.0-alpha-1` would have an associated [v1.0.0-alpha.1](https://github.com/veraison/go-cose/tree/v1.0.0-alpha.1) branch.
4445
All version and branch names are lower case.
@@ -76,30 +77,30 @@ Principals of a patch release:
7677
- No breaking changes.
7778
- No feature or surface area changes.
7879
- A "bug fix" that may be a breaking change may require a major release.
79-
- Applicable fixes, including security fixes, may be cherry-picked from main into the latest supported minor release-X.Y branches.
80-
- Patch releases are cut from a release-X.Y.Z branch.
80+
- Applicable fixes, including security fixes, may be cherry-picked from main into the latest supported minor `release-X.Y` branches.
81+
- Patch releases are cut from a `release-X.Y` branch.
8182

8283
Each patch release will go through one or more `-alpha.n` and `-rc.n` pre-release phases.
8384

8485
### Pre-Release
8586

86-
As builds of main become stable, and a pending release is planned, a pre-release build will be made.
87+
As builds of `main` become stable, and a pending release is planned, a pre-release build will be made.
8788
Pre-releases go through one or more `-alpha.n` releases, followed by one or more incremental `-rc.n` releases.
8889

8990
- **alpha.n:** `X.Y.Z-alpha.n`
9091
- alpha release, cut from the branch where development occurs.
9192
To minimize branch management, no additional branches are maintained for each incremental release.
9293
- Considered an unstable release which should only be used for early development purposes.
9394
- Released incrementally until no additional issues and prs are made against the release.
94-
- Once no triaged issues or pull requests (prs) are scoped to the release, a release candidate (rc) is cut.
95+
- Once no triaged issues or pull requests (prs) are scoped to the release, a release candidate (`rc`) is cut.
9596
- To minimize confusion, and the risk of an alpha being widely deployed, alpha branches and released binaries may be removed at the discretion, and a [two-thirds supermajority][super-majority] vote, of the maintainers.
9697
Maintainers will create an Issue, and vote upon it for transparency to the decision to remove a release and/or branch.
9798
- Not [supported](#supported-releases)
9899
- **rc.n:** `X.Y.Z-rc.n`
99100
- Released as needed before a final version is released
100101
- Bugfixes on new features only as reported through usage
101-
- An rc is not expected to revert to an alpha release.
102-
- Once no triaged issues or prs are scoped to the release, an final version is cut.
102+
- An `rc` is not expected to revert to an alpha release.
103+
- Once no triaged issues or PRs are scoped to the release, an final version is cut.
103104
- A release candidate will typically have at least two weeks of bake time, providing the community time to provide feedback.
104105
- Release candidates are cut from the branch where the work is done.
105106
- To minimize confusion, and the risk of an rc being widely deployed, rc branches and released binaries may be removed at the discretion, and a [two-thirds supermajority][super-majority] vote, of the maintainers.
@@ -108,9 +109,9 @@ Maintainers will create an Issue, and vote upon it for transparency to the decis
108109

109110
## Supported Releases
110111

111-
The go-cose maintainers expect to "support" n (current) and n-1 major.minor releases.
112+
The go-cose maintainers expect to "support" n (current) and `n-1` major.minor releases.
112113
"Support" means we expect users to be running that version in production.
113-
For example, when v1.3.0 comes out, v1.1.x will no longer be supported for patches, and the maintainers encourage users to upgrade to a supported version as soon as possible.
114+
For example, when `v1.3.0` comes out, `v1.1.x` will no longer be supported for patches, and the maintainers encourage users to upgrade to a supported version as soon as possible.
114115
Support will be provided best effort by the maintainers via GitHub issues and pull requests from the community.
115116

116117
The go-cose maintainers expect users to stay up-to-date with the versions of go-cose release they use in production, but understand that it may take time to upgrade.

0 commit comments

Comments
 (0)