Closed
Description
- scala/scala milestone: https://github.com/scala/scala/milestone/74
- scala/bug milestone: https://github.com/scala/bug/milestone/92
- scala/scala-dev milestone: https://github.com/scala/scala-dev/milestone/24
- scala/collection-strawman milestone: https://github.com/scala/collection-strawman/milestone/13
Before the release
- Notify community on https://contributors.scala-lang.org/c/announcements
- Create next scala/scala milestone, move the magical "Merge to 2.13.x" description to it (so Scabot uses it as default for new PRs)
- Close the scala/bug milestone, create next milestone, move pending issues
- Close the scala/scala-dev milestone, create next milestone, move pending issues
- 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
- run with expected-greens only: https://scala-ci.typesafe.com/job/scala-2.13.x-integrate-community-build/1396/
- also do a full run to see if there are any unexpected greens
- make sure the Windows Jenkins job is green
- don't just trust the automated nightly runs, manually trigger a run on the exact SHA
- https://scala-ci.typesafe.com/job/scala-2.13.x-integrate-windows/687/
- make sure scala-collections-laws is green
- this is an easy to forget step as we don't have proper automation for this. for M5 we did only a quick run and a quick eyeball of the results (not green, because of the big collections overhaul), we should do better for RC1
Stage the release
- If there are any leftover staging repos from previous stagings, drop them first
- because the scala-dist job will resolve artifacts from https://oss.sonatype.org/content/repositories/staging/ rather than directly from the numbered staging repos
- 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=-M5
)- Check the build status on https://github.com/scala/scala/commits/2.13.x
- https://travis-ci.org/scala/scala/builds/421372018
- check that the scala/scala job also triggered a following scala/scala-dist job: https://travis-ci.org/scala/scala-dist/builds/421377263
- Note the scala/scala@NNNNNN commit
- Create the scala/scala tag locally:
git tag -s -m "Scala 2.13.0-M5" v2.13.0-M5 8a52aa1
- Note the scala/scala-dist@NNNNNN commit
- Create scala-dist tag locally:
git tag -s -m "Scala 2.13.0-M5" v2.13.0-M5 a04d4c4
- 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-M5/
- in particular, if the release was staged multiple times, double check that https://oss.sonatype.org/content/repositories/staging/ has the files from the most recent build
- Announce release is staged at https://oss.sonatype.org/content/repositories/staging/ on https://contributors.scala-lang.org/c/announcements
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)
- note that GitHub release notes drafts can only be viewed by committers, so use a gist to draft the notes, so the gist can be shared with the community
- https://gist.github.com/SethTisue/545abfca429315af47fa0d31d2ef15d7
- On contributors thread, link to release note gist and request feedback
- 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-M5
- Add release notes to https://github.com/scala/scala/releases/tag/v2.13.0-M5
- Push scala/scala-dist tag:
git push https://github.com/scala/scala-dist.git v2.13.0-M5
- Trigger two scala-dist jobs on travis (https://travis-ci.org/scala/scala-dist) with custom config. must use full-length SHAs!
before_install: export version=2.13.0-M5 scala_sha=8a52aa19703004f0eb22d72a1efc82617924db32 mode=archives
:
https://travis-ci.org/scala/scala-dist/builds/421624348before_install: export version=2.13.0-M5 scala_sha=8a52aa19703004f0eb22d72a1efc82617924db32 mode=update-api
: https://travis-ci.org/scala/scala-dist/builds/421625110
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-M5/
- Check the release on maven central: http://central.maven.org/maven2/org/scala-lang/scala-compiler/2.13.0-M5/
- Check the release on maven search (takes longer): http://search.maven.org/#search%7Cga%7C1%7Cg%3Aorg.scala-lang%20v%3A2.13.0-M5
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-M5
- 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 (if appropriate) thebaseVersion
inbuild.sbt
Metadata
Metadata
Assignees
Labels
No labels