1# kotlinx.coroutines release checklist 2 3To release a new `<version>` of `kotlinx-coroutines`: 4 51. Checkout the `develop` branch: <br> 6 `git checkout develop` 7 82. Retrieve the most recent `develop`: <br> 9 `git pull` 10 113. Make sure the `master` branch is fully merged into `develop`: 12 `git merge origin/master` 13 144. Search & replace `<old-version>` with `<version>` across the project files. Should replace in: 15 * Docs 16 * [`README.md`](README.md) (native, core, test, debug, modules) 17 * [`kotlinx-coroutines-debug/README.md`](kotlinx-coroutines-debug/README.md) 18 * [`kotlinx-coroutines-test/README.md`](kotlinx-coroutines-test/README.md) 19 * [`coroutines-guide-ui.md`](ui/coroutines-guide-ui.md) 20 * Properties 21 * [`gradle.properties`](gradle.properties) 22 * [`integration-testing/gradle.properties`](integration-testing/gradle.properties) 23 * Make sure to **exclude** `CHANGES.md` from replacements. 24 25 As an alternative approach, you can use `./bump-version.sh new_version` 26 275. Write release notes in [`CHANGES.md`](CHANGES.md): 28 * Use the old releases for style guidance. 29 * Write each change on a single line (don't wrap with CR). 30 * Look through the commit messages since the previous release. 31 326. Create the branch for this release: 33 `git checkout -b version-<version>` 34 357. Commit the updated files to the new version branch:<br> 36 `git commit -a -m "Version <version>"` 37 388. Push the new version to GitHub:<br> 39 `git push -u origin version-<version>` 40 419. Create a Pull-Request on GitHub from the `version-<version>` branch into `master`: 42 * Review it. 43 * Make sure it builds on CI. 44 * Get approval for it. 45 460. On [TeamCity integration server](https://teamcity.jetbrains.com/project.html?projectId=KotlinTools_KotlinxCoroutines): 47 * Wait until "Build" configuration for committed `version-<version>` branch passes tests. 48 * Run "Deploy (Configure, RUN THIS ONE)" configuration with the corresponding new version: 49 - Use the `version-<version>` branch 50 - Set the `DeployVersion` build parameter to `<version>` 51 * Wait until all four "Deploy" configurations finish. 52 531. In [Nexus](https://oss.sonatype.org/#stagingRepositories) admin interface: 54 * Close the repository and wait for it to verify. 55 * Release the repository. 56 572. Merge the new version branch into `master`:<br> 58 `git checkout master`<br> 59 `git merge version-<version>`<br> 60 `git push` 61 623. In [GitHub](https://github.com/kotlin/kotlinx.coroutines) interface: 63 * Create a release named `<version>`, creating the `<version>` tag. 64 * Cut & paste lines from [`CHANGES.md`](CHANGES.md) into description. 65 664. Announce the new release in [Slack](https://kotlinlang.slack.com) 67 685. Switch onto the `develop` branch:<br> 69 `git checkout develop` 70 716. Fetch the latest `master`:<br> 72 `git fetch` 73 747. Merge the release from `master`:<br> 75 `git merge origin/master` 76 778. Push the updates to GitHub:<br> 78 `git push` 79 809. Propose the website documentation update: <br> 81 * Set new value for [`KOTLINX_COROUTINES_RELEASE_TAG`](https://github.com/JetBrains/kotlin-web-site/blob/master/.teamcity/BuildParams.kt), creating a Pull Request in the website's repository. 82