To release a new <version>
of kotlinx-coroutines
:
-
Checkout the
develop
branch:
git checkout develop
-
Retrieve the most recent
develop
:
git pull
-
Make sure the
master
branch is fully merged intodevelop
:git merge origin/master
-
Search & replace
<old-version>
with<version>
across the project files. Should replace in:- Docs
README.md
(native, core, test, debug, modules)kotlinx-coroutines-debug/README.md
kotlinx-coroutines-test/README.md
coroutines-guide-ui.md
- Properties
- Make sure to exclude
CHANGES.md
from replacements.
As an alternative approach, you can use
./bump-version.sh new_version
- Docs
-
Write release notes in
CHANGES.md
:- Use the old releases for style guidance.
- Write each change on a single line (don't wrap with CR).
- Look through the commit messages since the previous release.
-
Create the branch for this release:
git checkout -b version-<version>
-
Commit the updated files to the new version branch:
git commit -a -m "Version <version>"
-
Push the new version to GitHub:
git push -u origin version-<version>
-
Create a Pull-Request on GitHub from the
version-<version>
branch intomaster
:- Review it.
- Make sure it builds on CI.
- Get approval for it.
-
On TeamCity integration server:
- Wait until "Build" configuration for committed
version-<version>
branch passes tests. - Run "Deploy (Configure, RUN THIS ONE)" configuration with the corresponding new version:
- Use the
version-<version>
branch - Set the
DeployVersion
build parameter to<version>
- Use the
- Wait until all four "Deploy" configurations finish.
- Wait until "Build" configuration for committed
-
In Nexus admin interface:
- Close the repository and wait for it to verify.
- Release the repository.
-
Merge the new version branch into
master
:
git checkout master
git merge version-<version>
git push
-
In GitHub interface:
- Create a release named
<version>
, creating the<version>
tag. - Cut & paste lines from
CHANGES.md
into description.
- Create a release named
-
Announce the new release in Slack
-
Switch onto the
develop
branch:
git checkout develop
-
Fetch the latest
master
:
git fetch
-
Merge the release from
master
:
git merge origin/master
-
Push the updates to GitHub:
git push
-
Propose the website documentation update:
- Set new value for
KOTLINX_COROUTINES_RELEASE_TAG
, creating a Pull Request in the website's repository.
- Set new value for