github.com/leeclow-ops/gophercloud@v1.2.1/RELEASE.md (about) 1 # Gophercloud release 2 3 ## Contributions 4 5 ### The semver label 6 7 Gophercloud follows [semver](https://semver.org/). 8 9 Each Pull request must have a label indicating its impact on the API: 10 * `semver:patch` for changes that don't impact the API 11 * `semver:minor` for changes that impact the API in a backwards-compatible fashion 12 * `semver:major` for changes that introduce a breaking change in the API 13 14 Automation prevents merges if the label is not present. 15 16 ### Metadata 17 18 The release notes for a given release are generated based on the PR title and its milestone: 19 * make sure that the PR title is descriptive 20 * add a milestone based on the semver label: x++ if major, y++ if minor, z++ if patch. 21 22 ## Release of a new version 23 24 ### Step 1: Check the metadata 25 26 Check that all pull requests merged since the last release have the right milestone. 27 28 ### Step 2: Release notes and version string 29 30 Once all PRs have a sensible title and are added to the right milestone, generate the release notes with the [`gh`](https://github.com/cli/cli) tool: 31 ```shell 32 gh pr list \ 33 --state merged \ 34 --search 'milestone:vx.y.z' \ 35 --json number,title \ 36 --template \ 37 '{{range .}}* {{ printf "[GH-%v](https://github.com/gophercloud/gophercloud/pull/%v)" .number .number }} {{ .title }} 38 {{end}}' 39 ``` 40 41 Replace `x.y.z` with the current milestone. 42 43 Add that to the top of `CHANGELOG.md`. Also add any information that could be useful to consumers willing to upgrade. 44 45 **Set the new version string in the `DefaultUserAgent` constant in `provider_client.go`.** 46 47 Create a PR with these two changes. The new PR should be labeled with the semver label corresponding to the type of bump, and the milestone corresponding to its version. 48 49 ### Step 3: Git tag and Github release 50 51 The Go mod system relies on Git tags. In order to simulate a review mechanism, we rely on Github to create the tag through the Release mechanism. 52 53 * [Prepare a new release](https://github.com/gophercloud/gophercloud/releases/new) 54 * Let Github generate the release notes by clicking on Generate release notes 55 * Click on **Save draft** 56 * Ask another Gophercloud maintainer to review and publish the release 57 58 _Note: never change a release or force-push a tag. Tags are almost immediately picked up by the Go proxy and changing the commit it points to will be detected as tampering._