@@ -0,0 +1,47 @@
1+# Release
2+
3+Here's how OAuth2_Proxy releases are created.
4+
5+## Schedule
6+
7+Our aim is to release once a quarter, but bug fixes will be prioritised and might be released earlier.
8+
9+## The Process
10+
11+Note this uses `v4.1.0` as an example release number.
12+
13+1. Create a draft Github release
14+ * Use format `v4.1.0` for both the tag and title
15+2. Update [CHANGELOG.md](CHANGELOG.md)
16+ * Write the release highlights
17+ * Copy in headings ready for the next release
18+3. Create release commit
19+ ```
20+ git checkout -b release-v4.1.0
21+ ```
22+4. Create pull request getting other maintainers to review
23+5. Copy the release notes in to the draft Github release, adding a link to [CHANGELOG.md](CHANGELOG.md)
24+6. Update you local master branch
25+ ```
26+ git checkout master
27+ git pull
28+ ```
29+7. Create & push the tag
30+ ```
31+ git tag v4.1.0
32+ git push --tags
33+ ```
34+8. Make the release artefacts
35+ ```
36+ make release
37+ ```
38+9. Upload all the files (not the folders) from the `/release` folder to Github release as binary artefacts. There should be both the tarballs (`tar.gz`) and the checksum files (`sha256sum.txt`).
39+10. Publish release in Github
40+11. Make and push docker images to Quay
41+ ```
42+ make docker-all
43+ make docker-push-all
44+ ```
45+ Note: Ensure the docker tags don't include `-dirty`. This means you have uncommitted changes.
46+
47+12. Verify everything looks good at [quay](https://quay.io/repository/pusher/oauth2_proxy?tag=latest&tab=tags) and [github](https://github.com/pusher/oauth2_proxy/releases)