kotlinx.coroutines release checklist

To release new <version> of kotlinx-coroutines:

  1. Checkout develop branch:
    git checkout develop

  2. Retrieve the most recent develop:
    git pull

  3. Make sure the master branch is fully merged into develop: git merge origin/master

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

    As an alternative approach you can use ./bump-version.sh old_version new_version

  5. Write release notes in CHANGES.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.
  6. Create branch for this release: git checkout -b version-<version>

  7. Commit updated files to a new version branch:
    git commit -a -m "Version <version>"

  8. Push new version into the branch:
    git push -u origin version-<version>

  9. Create Pull-Request on GitHub from version-<version> branch into master:

    • Review it.
    • Make sure it build on CI.
    • Get approval for it.
  10. Merge new version branch into master:
    git checkout master
    git merge version-<version>
    git push

  11. On TeamCity integration server:

    • Wait until “Build” configuration for committed master branch passes tests.
    • Run “Deploy (Configure, RUN THIS ONE)” configuration with the corresponding new version.
  12. In GitHub interface:

    • Create a release named <version>.
    • Cut & paste lines from CHANGES.md into description.
  13. Build and publish documentation for web-site:
    site/deploy.sh <version> push

  14. In Bintray admin interface:

    • Publish artifacts of the new version.
    • Wait until newly published version becomes the most recent.
    • Sync to Maven Central.
  15. Announce new release in Slack

  16. Create a ticket to update coroutines version on try.kotlinlang.org.

    • Use KT-30870 as a template
    • This step should be skipped for eap versions that are not merged to master
  17. Switch into develop branch:
    git checkout develop

  18. Fetch the latest master:
    git fetch

  19. Merge release from master:
    git merge origin/master

  20. Push updates to develop:
    git push