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 * Make sure to **exclude** `CHANGES.md` from replacements. 23 24 As an alternative approach, you can use `./bump-version.sh old_version new_version` 25 265. Write release notes in [`CHANGES.md`](CHANGES.md): 27 * Use the old releases for style guidance. 28 * Write each change on a single line (don't wrap with CR). 29 * Look through the commit messages since the previous release. 30 316. Create the branch for this release: 32 `git checkout -b version-<version>` 33 347. Commit the updated files to the new version branch:<br> 35 `git commit -a -m "Version <version>"` 36 378. Push the new version to GitHub:<br> 38 `git push -u origin version-<version>` 39 409. Create a Pull-Request on GitHub from the `version-<version>` branch into `master`: 41 * Review it. 42 * Make sure it builds on CI. 43 * Get approval for it. 44 450. On [TeamCity integration server](https://teamcity.jetbrains.com/project.html?projectId=KotlinTools_KotlinxCoroutines): 46 * Wait until "Build" configuration for committed `master` branch passes tests. 47 * Run "Deploy (Configure, RUN THIS ONE)" configuration with the corresponding new version: 48 - Use the `version-<version>` branch 49 - Set the `DeployVersion` build parameter to `<version>` 50 * Wait until all four "Deploy" configurations finish. 51 521. In [Nexus](https://oss.sonatype.org/#stagingRepositories) admin interface: 53 * Close the repository and wait for it to verify. 54 * Release the repository. 55 562. Merge the new version branch into `master`:<br> 57 `git checkout master`<br> 58 `git merge version-<version>`<br> 59 `git push` 60 613. In [GitHub](https://github.com/kotlin/kotlinx.coroutines) interface: 62 * Create a release named `<version>`, creating the `<version>` tag. 63 * Cut & paste lines from [`CHANGES.md`](CHANGES.md) into description. 64 654. Announce the new release in [Slack](https://kotlinlang.slack.com) 66 675. Switch onto the `develop` branch:<br> 68 `git checkout develop` 69 706. Fetch the latest `master`:<br> 71 `git fetch` 72 737. Merge the release from `master`:<br> 74 `git merge origin/master` 75 768. Push the updates to GitHub:<br> 77 `git push` 78 799. Build and publish the documentation for the web-site: <br> 80 * Set new value for [`kotlinx.coroutines.release.tag`](https://buildserver.labs.intellij.net/admin/editProject.html?projectId=Kotlin_KotlinSites_Builds_KotlinlangOrg_LibrariesAPIs&tab=projectParams) 81 * And run deploy [configuration](https://buildserver.labs.intellij.net/buildConfiguration/Kotlin_KotlinSites_Builds_KotlinlangOrg_KotlinCoroutinesApi?branch=%3Cdefault%3E&buildTypeTab=overview&mode=builds) 82