Closed
Description
- scala/scala milestone: https://github.com/scala/scala/milestone/66
- scala/bug milestone: https://github.com/scala/bug/milestone/32
- scala/scala-dev milestone: https://github.com/scala/scala-dev/milestone/22
- scala/collection-strawman milestone: https://github.com/scala/collection-strawman/milestone/12
Before the release
- Notify community on https://contributors.scala-lang.org/c/announcements
- Create next milestone, move the "Merge to 2.13.x" description to it (default for new PRs)
- Close the milestones
- Triage scala/bug and scala/scala-dev tickets
- Check PRs assigned to the milestone, also check WIP
- Check merged PRs for the next milestone in this branch, and assign them to this milestone
- Merge in older release branch
- Make sure the community build is green
- won't be anywhere near all green, but we should make sure some nontrivial number of projects are still green: https://scala-ci.typesafe.com/job/scala-2.13.x-integrate-community-build/1115/
- make sure the nightly Windows run is green
- can be triggered manually, you don't need to wait for the automatic one necessarily
- https://scala-ci.typesafe.com/job/scala-2.13.x-integrate-windows/566/
Release notes
- Review merged PRs, make sure release-notes label is applied appropriately
- PRs with release-notes label must have excellent title & description (title will be pasted literally in release note bullet list)
- Draft release notes (to be published once GitHub tag is pushed)
More release prep
- Announce start of release process, point to release note gist for feedback
- Close the scala/bug milestone, create next, move pending issues
- Close the scala-dev milestone, create next, move pending issues
Stage the release
- Trigger a build on travis, specify
SCALA_VER_BASE
andSCALA_VER_SUFFIX
in the custom config (e.g.before_install: export SCALA_VER_BASE=2.13.0 SCALA_VER_SUFFIX=-M4
)- Check the build status on https://github.com/scala/scala/commits/2.13.x
- Note the scala/scala@NNNNNN commit
- Create the scala/scala tag locally:
git tag -s -m "Scala 2.13.0-M4" v2.13.0-M4 a002630512
- Note the scala/scala-dist@NNNNNN commit
- Create scala-dist tag locally:
git tag -s -m "Scala 2.13.0-M4" v2.13.0-M4 35c68ef388
- Note the repos to be promoted after tag is cut (see travis log)
- Sanity check jar/pom
- https://oss.sonatype.org/content/repositories/staging/org/scala-lang/scala-compiler/2.13.0-M4/ (and check a module, too)
- Announce release is staged at https://oss.sonatype.org/content/repositories/staging/ on https://contributors.scala-lang.org/c/announcements
More release notes stuff
- Prepare PR to https://github.com/scala/scala-lang/ (using scala/make-release-notes)
Soft point of no return
- these steps caaaaaan be redone (tags can be deleted and re-pushed, distros can be overwritten) but we'd reeeeeeally rather not have wrong tags or distros out there even briefly
- Push scala/scala tag:
git push https://github.com/scala/scala.git v2.13.0-M4
- Push scala/scala-dist tag:
git push https://github.com/scala/scala-dist.git v2.13.0-M4
- Trigger two scala-dist jobs on travis (https://travis-ci.org/scala/scala-dist) with custom config
before_install: export version=2.13.0-M4 scala_sha=SHA mode=archives
before_install: export version=2.13.0-M4 scala_sha=SHA mode=update-api
Hard point of no return
- there is no such thing as un-publishing from Maven Central
- Promote staging repos:
st_stagingRepoPromote [scala-repo]
,st_stagingRepoPromote [modules-repo]
(or use oss.sonatype.org web UI)
Check availability
- Check release on sonatype: https://oss.sonatype.org/content/repositories/releases/org/scala-lang/scala-compiler/2.13.0-M4/
- Check the release on maven central: http://central.maven.org/maven2/org/scala-lang/scala-compiler/2.13.0-M4/
- Check the release on maven search (takes longer): http://search.maven.org/#search%7Cga%7C1%7Cg%3Aorg.scala-lang%20v%3A2.13.0-M4
When everything is on maven central
- make sure the draft release notes are on GitHub tag: https://github.com/scala/scala/releases/tag/v2.13.0-M4
- Pre-announce the release on https://contributors.scala-lang.org/c/announcements
- Check that the API docs are published
- Merge the scala-lang PR
- wait for it to reach https://www.scala-lang.org and make sure it looks okay
Modules
- build and release scala-collection-compat and other modules (or open tickets asking that the maintainers do so)
- this work has moved to https://github.com/scala/make-release-notes/blob/2.13.x/projects-2.13.md
Announcements
- Scala Users discourse https://users.scala-lang.org
- add a reply on the same https://contributors.scala-lang.org thread where you announced that the release process was starting
- Tweet from @scala_lang
- https://gitter.im/scala/scala
- if you feel like it, say something in https://gitter.im/scala/contributors too
- ask Seth to announce on #scala IRC
Afterwards
- Create PR to update
versions.properties
(new file generated by the bootstrap job) and thebaseVersion
inbuild.sbt