70 lines
1.8 KiB
Markdown
70 lines
1.8 KiB
Markdown
|
# Releasing Kubeclient
|
||
|
|
||
|
## Versioning
|
||
|
Kubeclient release versioning follows [SemVer](https://semver.org/).
|
||
|
At some point in time it is decided to release version x.y.z.
|
||
|
|
||
|
```bash
|
||
|
RELEASE_BRANCH="master"
|
||
|
```
|
||
|
|
||
|
## 0. (once) Install gem-release, needed for several commands here:
|
||
|
|
||
|
```bash
|
||
|
gem install gem-release
|
||
|
```
|
||
|
|
||
|
## 1. PR(s) for changelog & bump
|
||
|
|
||
|
Edit `CHANGELOG.md` as necessary. Even if all included changes remembered to update it, you should replace "Unreleased" section header with appropriate "x.y.z — 20yy-mm-dd" header.
|
||
|
|
||
|
Bump `lib/kubeclient/version.rb` manually, or by using:
|
||
|
```bash
|
||
|
RELEASE_VERSION=x.y.z
|
||
|
|
||
|
git checkout -b "release-$RELEASE_VERSION" $RELEASE_BRANCH
|
||
|
# Won't work with uncommitted changes, you have to commit the changelog first.
|
||
|
gem bump --version $RELEASE_VERSION
|
||
|
git show # View version bump change.
|
||
|
```
|
||
|
|
||
|
Open a PR with target branch $RELEASE_BRANCH and get it reviewed & merged (if open for long, remember to update date in CHANGELOG to actual day of release).
|
||
|
|
||
|
## 2. (once) Grabbing an authentication token for rubygems.org api
|
||
|
```bash
|
||
|
RUBYGEMS_USERNAME=bob
|
||
|
curl -u $RUBYGEMS_USERNAME https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials; chmod 0600 ~/.gem/credentials
|
||
|
|
||
|
cat ~/.gem/credentials
|
||
|
# Should look like this:
|
||
|
:rubygems_api_key: ****
|
||
|
```
|
||
|
|
||
|
## 3. Actual release
|
||
|
|
||
|
Make sure we're locally after the bump PR *merge commit*:
|
||
|
```bash
|
||
|
git checkout $RELEASE_BRANCH
|
||
|
git status # Make sure there are no local changes
|
||
|
git pull --ff-only https://github.com/abonas/kubeclient $RELEASE_BRANCH
|
||
|
git log -n1
|
||
|
```
|
||
|
|
||
|
Last sanity check:
|
||
|
```bash
|
||
|
bundle install
|
||
|
bundle exec rake test rubocop
|
||
|
```
|
||
|
|
||
|
Create and push the tag:
|
||
|
```bash
|
||
|
gem tag --no-push
|
||
|
git push --tags --dry-run https://github.com/abonas/kubeclient # Check for unexpected tags
|
||
|
git push --tags https://github.com/abonas/kubeclient
|
||
|
```
|
||
|
|
||
|
Release onto rubygems.org:
|
||
|
```bash
|
||
|
gem release
|
||
|
```
|