Skip to content

Commit 340ac16

Browse files
committed
add releasing guidelines
1 parent edd7ee6 commit 340ac16

File tree

1 file changed

+50
-5
lines changed

1 file changed

+50
-5
lines changed

docs/devel.md

+50-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
Ignite is a Go project using well-known libraries like:
44

5-
- github.com/spf13/cobra
6-
- github.com/spf13/pflag
7-
- k8s.io/apimachinery
8-
- sigs.k8s.io/yaml
9-
- github.com/firecracker-microvm/firecracker-go-sdk
5+
- github.com/spf13/cobra
6+
- github.com/spf13/pflag
7+
- k8s.io/apimachinery
8+
- sigs.k8s.io/yaml
9+
- github.com/firecracker-microvm/firecracker-go-sdk
1010

1111
and so on.
1212

@@ -17,11 +17,13 @@ It uses Go modules as the vendoring mechanism.
1717
The only build requirement is Docker.
1818

1919
To build `ignite`, `ignited` and `ignite-spawn` for all supported architectures, run:
20+
2021
```console
2122
make build-all
2223
```
2324

2425
To only build for a specific architecture, append the architecture to the command:
26+
2527
```console
2628
make build-all-amd64
2729
make build-all-arm64
@@ -42,3 +44,46 @@ make autogen tidy
4244
make -C images WHAT=ubuntu
4345
make -C images WHAT=centos
4446
```
47+
48+
## Generic instructions on releasing a version
49+
50+
- Fix all issues in the `v0.X.Y` milestone
51+
- Create a `v0.X.Y` tracking issue (like https://github.com/weaveworks/ignite/issues/379)
52+
- Update documentation for the latest version (like https://github.com/weaveworks/ignite/pull/378)
53+
- Make sure your git remote `upstream` points to `[email protected]:weaveworks/ignite.git`, and `origin` to `[email protected]:<user>/ignite.git`
54+
- Get a Github API token with `repo` access, and put it in `bin/gren_token` for automatic release note generation
55+
- Make sure you have access to push to the `weaveworks/ignite*` repositories to Docker Hub
56+
57+
## Releasing a minor version
58+
59+
- A minor version is done based off the `master` branch
60+
- Set the environment variable to tell what minor version to release: `export MINOR=X`
61+
- If this is a prerelease, set e.g. `export EXTRA=-alpha.1`, `export EXTRA=-beta.1`, or `export EXTRA=-rc.1`
62+
- The script to run is `hack/minor-release.sh all`. It will:
63+
- Tidy your environment by running `make tidy autogen graph` and doing a commit
64+
- Autogenerate the changelog, provisionally using [GREN](https://github.com/github-tools/github-release-notes). The script will wait for you to open an editor and manually fixup `docs/releases/v0.X.0.md`. Then proceed with `Y`, which will create the commit to be tagged `v0.X.0`
65+
- Create the `v0.X.0` tag using `git tag`
66+
- Build the release binaries to `bin/releases/v0.X.0` and push the `weaveworks/ignite:v0.X.0` images and manifest list to Docker Hub
67+
- Push the tag, and latest commits to the `master` and newly-created `release-0.X` branch
68+
69+
## Releasing a patch version
70+
71+
- A patch version is done based off the `release-0.X` branch
72+
- **Note:** Before running the release, `git cherrypick` relevant commits into the release branch
73+
- Set the environment variables to tell what patch version to release: `export MINOR=X` and `export PATCH=Y`
74+
- If this is a prerelease, set e.g. `export EXTRA=-alpha.1`, `export EXTRA=-beta.1`, or `export EXTRA=-rc.1`
75+
- The script to run is `hack/patch-release.sh all`
76+
- Tidy your environment by running `make tidy autogen graph` and doing a commit
77+
- Autogenerate the changelog, provisionally using [GREN](https://github.com/github-tools/github-release-notes). The script will wait for you to open an editor and manually fixup `docs/releases/v0.X.Y.md`. Then proceed with `Y`, which will create the commit to be tagged `v0.X.Y`
78+
- Create the `v0.X.Y` tag using `git tag`
79+
- Build the release binaries to `bin/releases/v0.X.Y` and push the `weaveworks/ignite:v0.X.Y` images and manifest list to Docker Hub
80+
- Push the tag, and latest commits to the `release-0.X` branch
81+
82+
## Publishing a release
83+
84+
- Go to `Project Releases` in the Github UI, and select `Draft a new release`
85+
- Select the tag you've just created `v0.X.Y` from either the `master` (minor releases) or `release-0.X` branch
86+
- Let the release title be `v0.X.Y`
87+
- Paste the content in `docs/releases/v0.X.Y.md` in the release description, and add installing guidelines as per the earlier releases
88+
- Upload the binaries in `bin/releases/v0.X.Y` named as `{ignite,ignited}-{amd64,arm64}`
89+
- Click `Publish Release` and announce to everyone you know!

0 commit comments

Comments
 (0)