Closed
Description
It's time to start the ramp-down phase for 2.13.0-RC1! Follow along with our checklist in the last weeks before RC1! For a PR to target 2.13.0 (or any of the RCs) it must resolve a release-blocking bug. Others have to wait for 2.13.1.
Variables to be expanded in this template:
- SCALA_SHA=scala/scala@63769af
- DIST_SHA=scala/scala-dist@3d39d20
Key links:
- scala/scala milestone: https://github.com/scala/scala/milestone/67
- scala/bug milestone: https://github.com/scala/bug/milestone/56
- scala/scala-dev milestone: https://github.com/scala/scala-dev/milestone/25
6 weeks before the release
- Ramp down. All known blocker issues have PRs. No new PRs accepted, except to resolve newly discovered releasing-blocking issues. There has to be enough time after the last PR is merged and the next phase. The core of the eco-system needs time to prepare for the final!
- Triage scala/bug and scala/scala-dev tickets
- Check PRs assigned to the milestone, also check WIP
- 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)
- Merge in any older release branch
- Check module versioning (is everything in versions.properties up to date?)
- On major release, bump PickleFormat version (https://github.com/scala/scala/pull/6864/files#diff-c3e667bec176a05978049318af2fd947L119)
1 week before release
- Close the scala/bug milestone, create next milestone, move pending issues
- Close the scala/scala-dev milestone, create next milestone, move pending issues
- Check any merged PRs accidentally assigned to the next milestone in this branch, and re-assign them to this milestone
- Announce expected release date and current nightly "release candidate" (nightly sha-mangled version) at https://scala-ci.typesafe.com/artifactory/scala-integration/ on https://contributors.scala-lang.org/c/announcements
- Community build
- 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/?
- also do a full run to see if there are any unexpected greens
- Run scala-collections-laws and evaluate results
- Rex Kerr (@Ichoran) is the keeper and expert on this
- Windows Jenkins job
- 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/933/
Release announcement / notes
- Notify community on https://contributors.scala-lang.org/c/announcements
- 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
- RC1 draft: https://gist.github.com/SethTisue/5baa94c7d6c2f7f939a53a75f3c9816e
- 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 which requires a staged release and a pushed tag)
documentation/api.md
download/index.md
_config.yml
(update devscalaversion or scalaversion)
- Prepare PR to https://github.com/scala/docs.scala-lang/
api/all.md
Point of no return
- Once sufficient time has passed since last merged PR (1-2 weeks depending on whether it's a maintenance or development branch), and core projects have tried out the candidate nightly, it's time to cut the release!
- Make sure there are no stray staging repos on sonatype
- Trigger a build on travis, specify
SCALA_VER_BASE
andSCALA_VER_SUFFIX
in the custom config: https://travis-ci.org/scala/scala/builds/515671563- config:
before_install: export SCALA_VER_BASE=2.13.0 SCALA_VER_SUFFIX=-RC1
) - Check the build status on https://github.com/scala/scala/commits/2.13.x
- Check that the scala/scala job also triggered a following scala/scala-dist job: https://travis-ci.org/scala/scala-dist/builds/?
- Note the scala/scala commit (the full 40-char sha!)
- Create the scala/scala tag locally:
git tag -s -m "Scala 2.13.0-RC1" v2.13.0-RC1 $SCALA_SHA
- Note the scala/scala-dist commit (the full 40-char sha!)
- Create scala-dist tag locally:
git tag -s -m "Scala 2.13.0-RC1" v2.13.0-RC1 $DIST_SHA
- 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-RC1/
- 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
- config:
- Check the triggered scala-dist jobs on travis (https://travis-ci.org/scala/scala-dist): https://travis-ci.org/scala/scala-dist/builds/515682657
- Remember, tags are forever, so are maven artifacts (even staged ones, as they could end up in local caches) and S3 uploads (S3 buckets can be changed, but it can takes days to become consistent)
- Push scala/scala tag:
git push https://github.com/scala/scala.git v2.13.0-RC1
- Add release notes to https://github.com/scala/scala/releases/tag/v2.13.0-RC1
- Push scala/scala-dist tag:
git push https://github.com/scala/scala-dist.git v2.13.0-RC1
- 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-RC1 mode=archives scala_sha=63769aff4d7301b595d5b3cd71a28c31313ff408
: https://travis-ci.org/scala/scala-dist/builds/515705027before_install: export version=2.13.0-RC1 mode=update-api scala_sha=63769aff4d7301b595d5b3cd71a28c31313ff408
: https://travis-ci.org/scala/scala-dist/builds/515704274 (this job failed on the last step -- repeating the symlink manually as the same user with the same command worked over ssh.. 🤷♂️)
- Promote staging repos:
st_stagingRepoPromote [scala-repo]
,st_stagingRepoPromote [modules-repo]
(or use oss.sonatype.org web UI)
Check availability
- Check the release on maven central: http://central.maven.org/maven2/org/scala-lang/scala-compiler/2.13.0-RC1/
- Check the release on maven search (takes longer): http://search.maven.org/#search%7Cga%7C1%7Cg%3Aorg.scala-lang%20v%3A2.13.0-RC1
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-RC1
- Pre-announce the release on https://contributors.scala-lang.org/c/announcements
- On 2.13.0 only: (manually) update the
current
symlink for the API docs - 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
Metadata
Metadata
Assignees
Labels
No labels