113 lines
4.2 KiB
Markdown
113 lines
4.2 KiB
Markdown
# Steps to Release Minikube
|
|
|
|
## Create a Release Notes PR
|
|
|
|
Assemble all the meaningful changes since the last release into the CHANGELOG.md file.
|
|
See [this PR](https://github.com/kubernetes/minikube/pull/164) for an example.
|
|
|
|
## Build and Release a New ISO
|
|
|
|
This step isn't always required. Check if there were changes in the deploy directory.
|
|
If you do this, bump the ISO URL to point to the new ISO, and send a PR.
|
|
To do this, build the new iso by running:
|
|
```shell
|
|
deploy/iso/build.sh
|
|
```
|
|
This will generate a new iso at 'deploy/iso/minikube.iso'. Then upload the iso and shasum using the following command:
|
|
```shell
|
|
gsutil cp deploy/iso/minikube.iso gs://minikube/minikube-<increment.version>.iso
|
|
gsutil cp deploy/iso/minikube.iso.sha256 gs://minikube/minikube-<increment.version>.iso.sha256
|
|
```
|
|
|
|
## Run integration tests
|
|
|
|
Run this command:
|
|
```shell
|
|
make integration
|
|
```
|
|
Investigate and fix any failures.
|
|
|
|
## Bump the version in the Makefile and Update Docs to reflect this
|
|
|
|
See [this PR](https://github.com/kubernetes/minikube/pull/165) for an example.
|
|
Also run `make gendocs` once this change has been made
|
|
|
|
|
|
##Send an initial commit with the Makefile change:
|
|
|
|
Send a PR for the Makefile change and wait until it is merged. Once the commit is merged, continue.
|
|
|
|
## Build the Release
|
|
|
|
Run this command:
|
|
|
|
```shell
|
|
make cross checksum
|
|
```
|
|
|
|
## Add the version to the releases.json file
|
|
|
|
Add an entry **to the top** of deploy/minikube/releases.json with the **version** and **checksums**.
|
|
Send a PR.
|
|
This file controls the auto update notifications in minikube.
|
|
Only add entries to this file that should be released to all users (no pre-release, alpha or beta releases).
|
|
The file must be uploaded to GCS before notifications will go out. That step comes at the end.
|
|
|
|
The schema for this file can be found in deploy/minikube/schema.json.
|
|
|
|
An automated test to verify the schema runs in Travis before each submit.
|
|
|
|
## Upload to GCS:
|
|
|
|
```shell
|
|
gsutil cp out/minikube-linux-amd64 gs://minikube/releases/$RELEASE/
|
|
gsutil cp out/minikube-linux-amd64.sha256 gs://minikube/releases/$RELEASE/
|
|
gsutil cp out/minikube-darwin-amd64 gs://minikube/releases/$RELEASE/
|
|
gsutil cp out/minikube-darwin-amd64.sha256 gs://minikube/releases/$RELEASE/
|
|
gsutil cp out/minikube-windows-amd64.exe gs://minikube/releases/$RELEASE/
|
|
gsutil cp out/minikube-windows-amd64.exe.sha256 gs://minikube/releases/$RELEASE/
|
|
```
|
|
|
|
## Tag the Release
|
|
|
|
Run a command like this to tag it locally: `git tag -a v0.2.0 -m "0.2.0 Release"`.
|
|
|
|
And run a command like this to push the tag: `git push upstream v0.2.0`.
|
|
|
|
## Create a Release in Github
|
|
|
|
Create a new release based on your tag, like [this one](https://github.com/kubernetes/minikube/releases/tag/v0.2.0).
|
|
|
|
Upload the files, and calculated checksums.
|
|
|
|
## Upload the releases.json file to GCS
|
|
|
|
This step makes the new release trigger update notifications in old versions of Minikube.
|
|
Use this command from a clean git repo:
|
|
|
|
```shell
|
|
gsutil cp deploy/minikube/releases.json gs://minikube/releases.json
|
|
```
|
|
|
|
## Mark the release as `latest` in GCS:
|
|
|
|
```shell
|
|
gsutil cp -r gs://minikube/releases/$RELEASE/* gs://minikube/releases/latest/
|
|
```
|
|
|
|
## Package managers which include minikube
|
|
|
|
These are downstream packages that are being maintained by others and how to upgrade them to make sure they have the latest versions
|
|
|
|
| Package Manager | URL | TODO |
|
|
| --- | --- | --- |
|
|
| Arch Linux AUR | https://aur.archlinux.org/packages/minikube/ | "Flag as package out-of-date"
|
|
| Brew Cask | https://github.com/caskroom/homebrew-cask/blob/master/Casks/minikube.rb | Create a new PR in [caskroom/homebrew-cask](https://github.com/caskroom/homebrew-cask) with an updated version and appcast checkpoint
|
|
|
|
#### [How to Generate an Appcast Checkpoint for Homebrew](https://github.com/caskroom/homebrew-cask/blob/master/doc/cask_language_reference/stanzas/appcast.md)
|
|
`curl --compressed --location --user-agent 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.152 Safari/537.36' "https://github.com/kubernetes/minikube/releases.atom" | sed 's|<pubDate>[^<]*</pubDate>||g' | shasum --algorithm 256`
|
|
|
|
## Release Verification
|
|
|
|
After you've finished the release, run this command from the release commit to verify the release was done correctly:
|
|
`make check-release`. |