1*7a7160feSAndroid Build Coastguard Worker# kotlinx.coroutines release checklist 2*7a7160feSAndroid Build Coastguard Worker 3*7a7160feSAndroid Build Coastguard WorkerTo release a new `<version>` of `kotlinx-coroutines`: 4*7a7160feSAndroid Build Coastguard Worker 5*7a7160feSAndroid Build Coastguard Worker1. Checkout the `develop` branch: <br> 6*7a7160feSAndroid Build Coastguard Worker `git checkout develop` 7*7a7160feSAndroid Build Coastguard Worker 8*7a7160feSAndroid Build Coastguard Worker2. Retrieve the most recent `develop`: <br> 9*7a7160feSAndroid Build Coastguard Worker `git pull` 10*7a7160feSAndroid Build Coastguard Worker 11*7a7160feSAndroid Build Coastguard Worker3. Make sure the `master` branch is fully merged into `develop`: 12*7a7160feSAndroid Build Coastguard Worker `git merge origin/master` 13*7a7160feSAndroid Build Coastguard Worker 14*7a7160feSAndroid Build Coastguard Worker4. Search & replace `<old-version>` with `<version>` across the project files. Should replace in: 15*7a7160feSAndroid Build Coastguard Worker * Docs 16*7a7160feSAndroid Build Coastguard Worker * [`README.md`](README.md) (native, core, test, debug, modules) 17*7a7160feSAndroid Build Coastguard Worker * [`kotlinx-coroutines-debug/README.md`](kotlinx-coroutines-debug/README.md) 18*7a7160feSAndroid Build Coastguard Worker * [`kotlinx-coroutines-test/README.md`](kotlinx-coroutines-test/README.md) 19*7a7160feSAndroid Build Coastguard Worker * [`coroutines-guide-ui.md`](ui/coroutines-guide-ui.md) 20*7a7160feSAndroid Build Coastguard Worker * Properties 21*7a7160feSAndroid Build Coastguard Worker * [`gradle.properties`](gradle.properties) 22*7a7160feSAndroid Build Coastguard Worker * [`integration-testing/gradle.properties`](integration-testing/gradle.properties) 23*7a7160feSAndroid Build Coastguard Worker * Make sure to **exclude** `CHANGES.md` from replacements. 24*7a7160feSAndroid Build Coastguard Worker 25*7a7160feSAndroid Build Coastguard Worker As an alternative approach, you can use `./bump-version.sh new_version` 26*7a7160feSAndroid Build Coastguard Worker 27*7a7160feSAndroid Build Coastguard Worker5. Write release notes in [`CHANGES.md`](CHANGES.md): 28*7a7160feSAndroid Build Coastguard Worker * Use the old releases for style guidance. 29*7a7160feSAndroid Build Coastguard Worker * Write each change on a single line (don't wrap with CR). 30*7a7160feSAndroid Build Coastguard Worker * Look through the commit messages since the previous release. 31*7a7160feSAndroid Build Coastguard Worker 32*7a7160feSAndroid Build Coastguard Worker6. Create the branch for this release: 33*7a7160feSAndroid Build Coastguard Worker `git checkout -b version-<version>` 34*7a7160feSAndroid Build Coastguard Worker 35*7a7160feSAndroid Build Coastguard Worker7. Commit the updated files to the new version branch:<br> 36*7a7160feSAndroid Build Coastguard Worker `git commit -a -m "Version <version>"` 37*7a7160feSAndroid Build Coastguard Worker 38*7a7160feSAndroid Build Coastguard Worker8. Push the new version to GitHub:<br> 39*7a7160feSAndroid Build Coastguard Worker `git push -u origin version-<version>` 40*7a7160feSAndroid Build Coastguard Worker 41*7a7160feSAndroid Build Coastguard Worker9. Create a Pull-Request on GitHub from the `version-<version>` branch into `master`: 42*7a7160feSAndroid Build Coastguard Worker * Review it. 43*7a7160feSAndroid Build Coastguard Worker * Make sure it builds on CI. 44*7a7160feSAndroid Build Coastguard Worker * Get approval for it. 45*7a7160feSAndroid Build Coastguard Worker 46*7a7160feSAndroid Build Coastguard Worker0. On [TeamCity integration server](https://teamcity.jetbrains.com/project.html?projectId=KotlinTools_KotlinxCoroutines): 47*7a7160feSAndroid Build Coastguard Worker * Wait until "Build" configuration for committed `version-<version>` branch passes tests. 48*7a7160feSAndroid Build Coastguard Worker * Run "Deploy (Configure, RUN THIS ONE)" configuration with the corresponding new version: 49*7a7160feSAndroid Build Coastguard Worker - Use the `version-<version>` branch 50*7a7160feSAndroid Build Coastguard Worker - Set the `DeployVersion` build parameter to `<version>` 51*7a7160feSAndroid Build Coastguard Worker * Wait until all four "Deploy" configurations finish. 52*7a7160feSAndroid Build Coastguard Worker 53*7a7160feSAndroid Build Coastguard Worker1. In [Nexus](https://oss.sonatype.org/#stagingRepositories) admin interface: 54*7a7160feSAndroid Build Coastguard Worker * Close the repository and wait for it to verify. 55*7a7160feSAndroid Build Coastguard Worker * Release the repository. 56*7a7160feSAndroid Build Coastguard Worker 57*7a7160feSAndroid Build Coastguard Worker2. Merge the new version branch into `master`:<br> 58*7a7160feSAndroid Build Coastguard Worker `git checkout master`<br> 59*7a7160feSAndroid Build Coastguard Worker `git merge version-<version>`<br> 60*7a7160feSAndroid Build Coastguard Worker `git push` 61*7a7160feSAndroid Build Coastguard Worker 62*7a7160feSAndroid Build Coastguard Worker3. In [GitHub](https://github.com/kotlin/kotlinx.coroutines) interface: 63*7a7160feSAndroid Build Coastguard Worker * Create a release named `<version>`, creating the `<version>` tag. 64*7a7160feSAndroid Build Coastguard Worker * Cut & paste lines from [`CHANGES.md`](CHANGES.md) into description. 65*7a7160feSAndroid Build Coastguard Worker 66*7a7160feSAndroid Build Coastguard Worker4. Announce the new release in [Slack](https://kotlinlang.slack.com) 67*7a7160feSAndroid Build Coastguard Worker 68*7a7160feSAndroid Build Coastguard Worker5. Switch onto the `develop` branch:<br> 69*7a7160feSAndroid Build Coastguard Worker `git checkout develop` 70*7a7160feSAndroid Build Coastguard Worker 71*7a7160feSAndroid Build Coastguard Worker6. Fetch the latest `master`:<br> 72*7a7160feSAndroid Build Coastguard Worker `git fetch` 73*7a7160feSAndroid Build Coastguard Worker 74*7a7160feSAndroid Build Coastguard Worker7. Merge the release from `master`:<br> 75*7a7160feSAndroid Build Coastguard Worker `git merge origin/master` 76*7a7160feSAndroid Build Coastguard Worker 77*7a7160feSAndroid Build Coastguard Worker8. Push the updates to GitHub:<br> 78*7a7160feSAndroid Build Coastguard Worker `git push` 79*7a7160feSAndroid Build Coastguard Worker 80*7a7160feSAndroid Build Coastguard Worker9. Propose the website documentation update: <br> 81*7a7160feSAndroid Build Coastguard Worker * 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