summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2020-11-19 15:40:33 +0100
committerGitHub <noreply@github.com>2020-11-19 15:40:33 +0100
commit024b169aef854da2190703081a75180057afede1 (patch)
treeba957c1bee023cee759fce443e827a417583def2
parente33ada1c6984285a046fe48baa8e198a2e3c9c08 (diff)
parent8ece70b20770103a283f2abd2d7af85b31f9c21e (diff)
downloadostree-024b169aef854da2190703081a75180057afede1.tar.gz
Merge pull request #2244 from lucab/ups/docs-release-guide
templates: add release-checklist
-rw-r--r--.github/ISSUE_TEMPLATE/release-checklist.md62
-rw-r--r--cfg.mk2
-rw-r--r--configure.ac8
-rw-r--r--docs/CONTRIBUTING.md6
4 files changed, 70 insertions, 8 deletions
diff --git a/.github/ISSUE_TEMPLATE/release-checklist.md b/.github/ISSUE_TEMPLATE/release-checklist.md
new file mode 100644
index 00000000..3b02847f
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/release-checklist.md
@@ -0,0 +1,62 @@
+# Release process
+
+The release process follows the usual PR-and-review flow, allowing an external reviewer to have a final check before publishing a release.
+
+## Requirements
+
+This guide requires:
+
+ * a web browser (and network connectivity)
+ * `git`
+ * GPG setup and personal key for signing
+ * [git-evtag](https://github.com/cgwalters/git-evtag/)
+ * write access to the git repository
+ * upload access to this project on GitHub
+
+## Release checklist
+
+- Prepare local environment:
+ - [ ] `git remote get-url --push origin`
+ - [ ] validate that the output above points to `git@github.com:ostreedev/ostree.git`
+ - [ ] `git checkout master && git pull`
+ - [ ] `git clean -fd`
+ - [ ] `RELEASE_VER=yyyy.n` (matching `package_version` in `configure.ac`)
+ - [ ] `git checkout -b release-${RELEASE_VER}`
+
+- Prepare the release commits:
+ - [ ] `sed -i -e 's/^is_release_build=no/is_release_build=yes/' configure.ac`
+ - [ ] move the new-symbols stanza (if any) from `src/libostree/libostree-devel.sym` to `src/libostree/libostree-released.sym`
+ - [ ] comment the `src/libostree/libostree-devel.sym` include in `Makefile-libostree.am`
+ - [ ] update `tests/test-symbols.sh` with the new digest from `sha256sum src/libostree/libostree-released.sym`
+ - [ ] `git commit -a -m "Release ${RELEASE_VER}"`
+ - [ ] `RELEASE_COMMIT=$(git rev-parse HEAD)`
+ - [ ] `./autogen.sh && make dist`
+ - [ ] update `year_version` and `release_version` in `configure.ac` for the next development cycle
+ - [ ] `sed -i -e 's/^is_release_build=yes/is_release_build=no/' configure.ac`
+ - [ ] `git commit -a -m 'configure: post-release version bump'`
+
+- Open a PR to create the release:
+ - [ ] `git push -u origin release-${RELEASE_VER}`
+ - [ ] open a web browser and create a PR for the branch above, titled `Release ${RELEASE_VER}`
+ - [ ] make sure the resulting PR contains two commits
+ - [ ] in the PR body, write a short summary of relevant changes since last release (using `git shortlog` too)
+
+- [ ] get the PR reviewed, approved and merged
+
+- Publish the tag:
+ - [ ] `git fetch origin && git checkout ${RELEASE_COMMIT}`
+ - [ ] `git-evtag sign v${RELEASE_VER}`
+ - [ ] `git push --tags origin v${RELEASE_VER}`
+
+- Publish the release and artifacts on GitHub:
+ - [ ] find the new tag in the [GitHub tag list](https://github.com/ostreedev/ostree/tags) and click the triple dots menu, then create a release for it
+ - [ ] write a short changelog (i.e. re-use the PR content)
+ - [ ] attach `libostree-{RELEASE_VER}.tar.xz`
+ - [ ] publish release
+
+- Clean up:
+ - [ ] `git clean -fd`
+ - [ ] `git checkout master`
+ - [ ] `git pull`
+ - [ ] `git push origin :release-${RELEASE_VER}`
+ - [ ] `git branch -d release-${RELEASE_VER}`
diff --git a/cfg.mk b/cfg.mk
index 5947a141..1f5108b7 100644
--- a/cfg.mk
+++ b/cfg.mk
@@ -39,4 +39,4 @@ sc_glnx_no_fd_close:
show-vc-list-except:
@$(VC_LIST_EXCEPT)
-VC_LIST_ALWAYS_EXCLUDE_REGEX = ^ABOUT-NLS|cfg.mk|maint.mk|*.gpg|*.sig|.xz|.gz$$
+VC_LIST_ALWAYS_EXCLUDE_REGEX = ^ABOUT-NLS|cfg.mk|maint.mk|*.md|*.gpg|*.sig|.xz|.gz$$
diff --git a/configure.ac b/configure.ac
index 758fc49e..8ffdf64b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,11 +1,5 @@
AC_PREREQ([2.63])
-dnl To do a release: follow the instructions to update libostree-released.sym from
-dnl libostree-devel.sym, update the checksum in test-symbols.sh, set is_release_build=yes
-dnl below. Then make another post-release commit to bump the version and set
-dnl is_release_build=no.
-dnl Seed the release notes with `git-shortlog-with-prs <previous-release>..`. Then use
-dnl `git-evtag` to create the tag and push it. Finally, create a GitHub release and attach
-dnl the tarball from `make dist`.
+dnl To perform a release, follow the instructions in `docs/CONTRIBUTING.md`.
m4_define([year_version], [2020])
m4_define([release_version], [9])
m4_define([package_version], [year_version.release_version])
diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md
index 912ea4a8..1cf6250d 100644
--- a/docs/CONTRIBUTING.md
+++ b/docs/CONTRIBUTING.md
@@ -177,3 +177,9 @@ Instead do this:
## Contributing Tutorial
For a detailed walk-through on building, modifying, and testing, see this [tutorial on how to start contributing to OSTree](contributing-tutorial.md).
+
+## Release process
+
+Releases can be performed by [creating a new release ticket][new-release-ticket] and following the steps in the checklist there.
+
+[new-release-ticket]: https://github.com/ostreedev/ostree/new?labels=kind/release&template=release-checklist.md