xref: /aosp_15_r20/external/kotlinx.serialization/RELEASING.md (revision 57b5a4a64c534cf7f27ac9427ceab07f3d8ed3d8)
1*57b5a4a6SAndroid Build Coastguard Worker# kotlinx.serialization release checklist
2*57b5a4a6SAndroid Build Coastguard Worker
3*57b5a4a6SAndroid Build Coastguard WorkerTo release new `<version>` of `kotlinx.serialization`:
4*57b5a4a6SAndroid Build Coastguard Worker
5*57b5a4a6SAndroid Build Coastguard Worker1. Checkout `dev` branch and update:<br>
6*57b5a4a6SAndroid Build Coastguard Worker   `git checkout dev && git pull`
7*57b5a4a6SAndroid Build Coastguard Worker
8*57b5a4a6SAndroid Build Coastguard Worker3. Make sure the `master` branch is fully merged into `dev`:<br>
9*57b5a4a6SAndroid Build Coastguard Worker    `git merge origin/master`
10*57b5a4a6SAndroid Build Coastguard Worker
11*57b5a4a6SAndroid Build Coastguard Worker4. Search & replace `<old-version>` with `<version>` across the project files. Should replace in:
12*57b5a4a6SAndroid Build Coastguard Worker   * [`README.md`](README.md)
13*57b5a4a6SAndroid Build Coastguard Worker   * [`gradle.properties`](gradle.properties)
14*57b5a4a6SAndroid Build Coastguard Worker   * [`integration-test/gradle.properties`](integration-test/gradle.properties)
15*57b5a4a6SAndroid Build Coastguard Worker
16*57b5a4a6SAndroid Build Coastguard Worker   Update Kotlin version, if necessary.
17*57b5a4a6SAndroid Build Coastguard Worker
18*57b5a4a6SAndroid Build Coastguard Worker5. Write release notes in [`CHANGELOG.md`](CHANGELOG.md):
19*57b5a4a6SAndroid Build Coastguard Worker   * Use old releases as example of style.
20*57b5a4a6SAndroid Build Coastguard Worker   * Write each change on a single line (don't wrap with CR).
21*57b5a4a6SAndroid Build Coastguard Worker   * Study commit message from previous release.
22*57b5a4a6SAndroid Build Coastguard Worker
23*57b5a4a6SAndroid Build Coastguard Worker    [git changelog](https://github.com/tj/git-extras/blob/master/Commands.md#git-changelog) from git-extras may help you with that.
24*57b5a4a6SAndroid Build Coastguard Worker
25*57b5a4a6SAndroid Build Coastguard Worker6. If necessary, commit your changes to a new branch called `<version>-release` and send it for review, then merge it to `dev` branch.<br>
26*57b5a4a6SAndroid Build Coastguard WorkerIf review is not required, commit directly to `dev`.
27*57b5a4a6SAndroid Build Coastguard Worker
28*57b5a4a6SAndroid Build Coastguard Worker6. Tag version:<br>
29*57b5a4a6SAndroid Build Coastguard Worker    `git tag v<version>`
30*57b5a4a6SAndroid Build Coastguard Worker
31*57b5a4a6SAndroid Build Coastguard Worker8. Push your changes:<br>
32*57b5a4a6SAndroid Build Coastguard Worker   `git push origin dev && git push origin --tags`
33*57b5a4a6SAndroid Build Coastguard Worker
34*57b5a4a6SAndroid Build Coastguard Worker1. On [TeamCity integration server](https://teamcity.jetbrains.com/project.html?projectId=KotlinTools_KotlinxSerialization&tab=projectOverview):
35*57b5a4a6SAndroid Build Coastguard Worker   * Wait until "Runtime library (Build – Aggregated)" configuration for committed `dev` branch passes tests.
36*57b5a4a6SAndroid Build Coastguard Worker   * Run "Runtime library (Deploy - Train)" configuration:
37*57b5a4a6SAndroid Build Coastguard Worker     * On 'Changes' tab, select `dev` branch and corresponding commit.
38*57b5a4a6SAndroid Build Coastguard Worker     * On 'Parameters' tab, find 'Deploy version' and fill in with `<version>`.
39*57b5a4a6SAndroid Build Coastguard Worker
40*57b5a4a6SAndroid Build Coastguard Worker4. In [Sonatype](https://oss.sonatype.org/#stagingRepositories) admin interface:
41*57b5a4a6SAndroid Build Coastguard Worker   * Close the repository and wait for it to verify.
42*57b5a4a6SAndroid Build Coastguard Worker   * Release it.
43*57b5a4a6SAndroid Build Coastguard Worker
44*57b5a4a6SAndroid Build Coastguard Worker5. Set a new value for [`KOTLINX_SERIALIZATION_RELEASE_TAG`](https://github.com/JetBrains/kotlin-web-site/blob/master/.teamcity/BuildParams.kt),
45*57b5a4a6SAndroid Build Coastguard Worker   creating a pull request in the website's repository. To find out why it is needed, [read this](#kotlinxserializationreleasetag).
46*57b5a4a6SAndroid Build Coastguard Worker
47*57b5a4a6SAndroid Build Coastguard Worker6. Create a new release in [Github releases](https://github.com/Kotlin/kotlinx.serialization/releases). Use created git tag for title and changelog message for body.
48*57b5a4a6SAndroid Build Coastguard Worker
49*57b5a4a6SAndroid Build Coastguard Worker1. Switch back to master branch and update it:<br>
50*57b5a4a6SAndroid Build Coastguard Worker   ```
51*57b5a4a6SAndroid Build Coastguard Worker   git checkout master && git pull
52*57b5a4a6SAndroid Build Coastguard Worker   git merge --ff-only dev
53*57b5a4a6SAndroid Build Coastguard Worker   git push origin master
54*57b5a4a6SAndroid Build Coastguard Worker   ```
55*57b5a4a6SAndroid Build Coastguard Worker
56*57b5a4a6SAndroid Build Coastguard Worker5. Announce new release in [Slack](https://kotlinlang.slack.com).
57*57b5a4a6SAndroid Build Coastguard Worker
58*57b5a4a6SAndroid Build Coastguard Worker# API reference documentation
59*57b5a4a6SAndroid Build Coastguard Worker
60*57b5a4a6SAndroid Build Coastguard WorkerThe [API reference documentation](https://kotlinlang.org/api/kotlinx.serialization/) is built and deployed automatically
61*57b5a4a6SAndroid Build Coastguard Workerfor every commit in `master`, typically within the same day.
62*57b5a4a6SAndroid Build Coastguard Worker
63*57b5a4a6SAndroid Build Coastguard Worker**Note**: KDoc / API reference changes targeting `master` should not contain information which is irrelevant to or is
64*57b5a4a6SAndroid Build Coastguard Workerincorrect in relation to the latest release, because these changes will be deployed live automatically, and they might
65*57b5a4a6SAndroid Build Coastguard Workerconfuse readers.
66*57b5a4a6SAndroid Build Coastguard Worker
67*57b5a4a6SAndroid Build Coastguard WorkerThe build configuration responsible for assembling the documentation can be found
68*57b5a4a6SAndroid Build Coastguard Worker[on TeamCity](https://buildserver.labs.intellij.net/buildConfiguration/Kotlin_KotlinSites_KotlinlangTeamcityDsl_KotlinxSerializationBuildApiReference).
69*57b5a4a6SAndroid Build Coastguard Worker
70*57b5a4a6SAndroid Build Coastguard Worker### KOTLINX_SERIALIZATION_RELEASE_TAG
71*57b5a4a6SAndroid Build Coastguard Worker
72*57b5a4a6SAndroid Build Coastguard WorkerThe generated API reference documentation has the library version specified in the header. By default, the value
73*57b5a4a6SAndroid Build Coastguard Workerof the `version` project property is taken. However, this property usually contains the upcoming version with
74*57b5a4a6SAndroid Build Coastguard Workerthe `-SNAPSHOT` suffix, so it cannot be used if you want to publish the updated documentation of the latest release.
75*57b5a4a6SAndroid Build Coastguard Worker
76*57b5a4a6SAndroid Build Coastguard WorkerFor this reason, the [`KOTLINX_SERIALIZATION_RELEASE_TAG`](https://github.com/JetBrains/kotlin-web-site/blob/master/.teamcity/BuildParams.kt)
77*57b5a4a6SAndroid Build Coastguard Workerproperty must be set during every release: its value will be used for all subsequent publications of the API docs to kotlinlang.org,
78*57b5a4a6SAndroid Build Coastguard Workerand it will appear in the header.
79