xref: /aosp_15_r20/external/kotlinx.coroutines/RELEASE.md (revision 7a7160fed73afa6648ef8aa100d4a336fe921d9a)
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