Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release Scala 2.13.9 #808

Closed
88 tasks done
SethTisue opened this issue Apr 25, 2022 · 4 comments
Closed
88 tasks done

Release Scala 2.13.9 #808

SethTisue opened this issue Apr 25, 2022 · 4 comments
Assignees
Milestone

Comments

@SethTisue
Copy link
Member

SethTisue commented Apr 25, 2022

Variables to be expanded in this template (or set and export them in a local terminal, so that you can copy/paste the commands below without replacing anything):

SCALA_VER_BASE="2.13.9"
SCALA_VER_SUFFIX=""
SCALA_SHA=986dcc160aab85298f6cab0bf8dd0345497cdc01
DIST_SHA=ea3c4fe1f729b393a232f1d19b0ec06a27cd28b7
SCALA_VER="$SCALA_VER_BASE$SCALA_VER_SUFFIX"

Key links:

N weeks before the release

  • Wind down PR queue. There has to be enough time after the last (non-trivial) 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
  • 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), move pending PRs
  • Create next scala/bug milestone, move pending issues
  • Create next scala/scala-dev milestone, move pending issues
  • Check PRs assigned to the milestone, also check WIP
  • 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
  • Also notify Scala Center advisory board members of the upcoming release, so they can help test if they want (Seth can handle this, if asked)

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 (PR and self-merge, so others can comment there rather than on the commits)
    • Starting point: gh api --paginate -X GET search/issues -f q='repo:scala/scala is:pull-request is:merged milestone:2.13.9 label:release-notes' -q '.items[] | " * \(.title) ([#\(.number)](\(.html_url)) by [@\(.user.login)](\(.user.html_url)))"'
  • On contributors thread, link to release note file and request feedback

N days before release

Point of no return

Once sufficient time for community testing has passed, it's time to cut the release!

What is "sufficient" time? A week is a bare minimum. Two weeks is a better "normal" amount. We should also respect requests from Scala Center advisory board members, if they explicitly ask for additional testing time. (In the past, we sometimes only waited a day or two, but this was overly optimistic in presuming that people had been testing nightlies all along.)

Be mindful of others' schedules; even minor releases make work downstream (for Scala.js and Scala Native, for the Scala 3 team, for compiler plugin authors, and so on). And a botched release might make unexpected work for ourselves as well as for others. So it's better not to release on a Friday or even a Thursday, or too close to a major holiday. And it's best to release while everyone in both America and Europe is awake. (First thing in the morning in America is a good choice.)

Check availability

When everything is on maven central

NOTE (Mar 2 2022): at next release time, update these steps as needed to accomodate scala/scala-lang#1344

Prepare downstream

Wait for downstream

Before proceeding any further, wait for the ecosystem to catch up.

  • Downstream publishing:
    • Wait for Scala.js to support the new release
    • Wait for Scala Native to support the new release
    • Wait for scalameta to publish
    • Wait for scalafix to publish
    • Wait for Metals to publish
    • Wait for kind-projector to publish
    • Wait for scoverage to publish
  • Downstream signoffs:
    • Wait for the Scala Center to sign off (Seb)
    • Wait for VirtusLab to sign off (Krzysztof)

We have promised to wait 48 non-weekend hours, minimum.

If there are delays downstream, at some point it may make sense to go ahead and announce anyway, since news of the release will already be spreading in the community.

Announcements

  • On GitHub, use "Create release from tag" button and add release notes
  • Merge the scala-lang PR and the docs.scala-lang.org PR
  • Scala Users discourse https://users.scala-lang.org
  • Tweet from @scala_lang
  • Discord: link to release notes in #announcements channel
    • consider also saying something in #scala-contributors channel
  • Unblock the release in Scala Steward by PRing an update to default.scala-steward.conf
  • Add the release to SDKMAN
    • as per the documentation at https://sdkman.io/vendors
    • URL provided must be in .zip format, .tgz doesn't work
    • sample command: curl -X POST -H "Consumer-Key: xxx" -H "Consumer-Token: xxx" -H "Content-Type: application/json" -H "Accept: application/json" -d '{"candidate": "scala", "version": "2.12.14", "url": "https://downloads.lightbend.com/scala/2.12.14/scala-2.12.14.tgz"}' https://vendors.sdkman.io/release
    • replace both xxxs with the credential information provided to Seth by Marco Vermeulen (marco at sdkman dot io)
    • test afterwards with sdk list scala and sdk install scala <version> (these should work immediately once the POST succeeds)
    • to correct mistakes, PATCH and DELETE are also available
    • broadcast the addition via the SDKMAN twitter account
  • Announce on https://reddit.com/r/scala
  • ask Seth to announce on #scala IRC

Afterwards

You're done!

  • Close this ticket and close the scala-dev milestone
@SethTisue SethTisue self-assigned this Apr 25, 2022
@SethTisue SethTisue added this to the 2.13.9 milestone Apr 25, 2022
@SethTisue
Copy link
Member Author

all the todo items before the "Point of no return" are now complete

@SethTisue
Copy link
Member Author

SethTisue commented Sep 19, 2022

The release job went fine except that the scala-dist jobs it triggered failed early because apt-get update failed:

W: The repository 'http://apt.postgresql.org/pub/repos/apt xenial-pgdg Release' does not have a Release file.
217E: Failed to fetch http://apt.postgresql.org/pub/repos/apt/dists/xenial-pgdg/main/binary-amd64/Packages  404  Not Found [IP: 87.238.57.227 80]
218E: Some index files failed to download. They have been ignored, or old ones used instead.

I merged scala/scala-dist#220 and re-ran the release job with the sole purpose of re-triggering the scala-dist jobs. (It will also create staging repos on Sonatype, but I'll just drop them.)

@SethTisue
Copy link
Member Author

downstream publishing is done, so everything appears to be on track for Wednesday

@som-snytt
Copy link

🎉 It's a lot of checkmarks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants