kotlinx.serialization release checklist

To release new <version> of kotlinx.serialization:

  1. Checkout dev branch and update:
    git checkout dev && git pull

  2. Make sure the master branch is fully merged into dev:
    git merge origin/master

  3. Search & replace <old-version> with <version> across the project files. Should replace in:

    Update Kotlin version, if necessary.

  4. Write release notes in CHANGELOG.md:

    • Use old releases as example of style.
    • Write each change on a single line (don't wrap with CR).
    • Study commit message from previous release.

    git changelog from git-extras may help you with that.

  5. If necessary, commit your changes to a new branch called <version>-release and send it for review, then merge it to dev branch.
    If review is not required, commit directly to dev.

  6. Tag version:
    git tag v<version>

  7. Push your changes:
    git push origin dev && git push origin --tags

  8. On TeamCity integration server:

    • Wait until "Runtime library (Build – Aggregated)" configuration for committed dev branch passes tests.
    • Run "Runtime library (Deploy - Train)" configuration:
      • On 'Changes' tab, select dev branch and corresponding commit.
      • On 'Parameters' tab, find 'Deploy version' and fill in with <version>.
  9. In Sonatype admin interface:

    • Close the repository and wait for it to verify.
    • Release it.
  10. Propose the website documentation update:

    • Set a new value for KOTLINX_SERIALIZATION_RELEASE_TAG, creating a pull request in the website's repository.
    • The website team will be notified about the pull request, review your changes, and merge it to master after all checks pass.
    • Once the pull request is merged to the main branch, it automatically will trigger the website's update, which will be done within an hour.
  11. Create a new release in Github releases. Use created git tag for title and changelog message for body.

  12. Switch back to master branch and update it:

    git checkout master && git pull
    git merge --ff-only dev
    git push origin master
    
  13. Announce new release in Slack.