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