2018-07-02 16:38:07 +02:00
# Releasing
## Prerequisites
2019-04-19 07:53:27 +01:00
### JDK 8 and JDK 11
2018-07-02 16:38:07 +02:00
2019-04-19 07:53:27 +01:00
Releasing Akka requires running on JDK 11, but also having JDK 8
2018-07-02 16:38:07 +02:00
installed. The reason for this is that we want the Akka artifacts to be
2019-04-19 07:53:27 +01:00
usable with JRE 8, but also want to compile some classes with JDK11-specific
2018-07-02 16:38:07 +02:00
types.
2019-04-19 07:53:27 +01:00
In the future we might be able to update the build to work
2018-07-02 16:38:07 +02:00
without having JDK 8 installed, by using the `-release` option.
2019-07-30 07:55:33 -07:00
### One Time GPG and sbt-pgp setup
If you have not set up GPG or used `sbt-pgp` on the release machine
* Check the [sbt-pgp usage ](https://www.scala-sbt.org/sbt-pgp/usage.html ) for any setup steps you may still need, for example:
```
sbt> set pgpReadOnly := false
sbt> pgp-cmd gen-key
```
* Check that signing works with `sbt> publishLocalSigned`
#### Mac
When releasing from MacOS you may want to use YubiKey or have [MacGPG ](https://gpgtools.org ) installed.
#### Windows
2018-07-02 16:38:07 +02:00
When releasing from Windows, you need MinGW and a gpg distribution such as Gpg4Win
### Git
Make sure you have set `core.autocrlf` to `false` in your `~/.gitconfig` ,
otherwise git might convert line endings in some cases.
### Whitesource
Make sure you have the Lightbend Whitesource credentials configured in
your `~/.sbt/1.0/private-credentials.sbt` .
2019-07-30 07:55:33 -07:00
### Install Graphviz
[Graphvis ](https://graphviz.gitlab.io/download/ ) is needed for the
scaladoc generation build task, which is part of the release.
### Release script instructions
Make sure you have completed the setup in `project/scripts/release` .
2019-03-04 14:18:40 +01:00
## Snapshot releases
Nightly snapshot releases are created from master and published to
https://repo.akka.io/snapshots by https://jenkins.akka.io:8498/job/akka-publish-nightly/
2019-12-16 14:33:17 +01:00
To create snapshot versions manually, use `sbt clean publish` .
2019-03-08 17:15:37 +01:00
The release artifacts are created in `akka-*/target/repository` and can be
copied over to a maven server. If you have access, the Jenkins job at
https://jenkins.akka.io:8498/job/akka-publish-wip/ can be used to publish
a snapshot to https://repo.akka.io/snapshots from any branch.
2019-03-04 14:18:40 +01:00
2020-04-01 20:41:56 +02:00
## Releasing only updated docs
It is possible to release a revised documentation to the already existing release.
1. Create a new branch from a release tag. If a revised documentation is for the `v2.6.4` release, then the name of the new branch should be `docs/v2.6.4` .
1. Add and commit `version.sbt` file that pins the version to the one that is being revised. Also set `isSnapshot` to `false` for the stable documentation links. For example:
```scala
ThisBuild / version := "2.6.4"
ThisBuild / isSnapshot := false
```
1. Make all of the required changes to the documentation.
1. Build documentation locally with:
```sh
sbt akka-docs/paradoxBrowse
```
1. If the generated documentation looks good, send it to Gustav:
```sh
2020-04-28 11:49:42 +02:00
sbt akka-docs/publishRsync
2020-04-01 20:41:56 +02:00
```
1. Do not forget to push the new branch back to GitHub.
2018-07-02 16:38:07 +02:00
## Release steps
2020-03-27 11:59:30 +01:00
* Tag the release: `git tag -am "Version 2.6.x" v2.6.x`
2020-07-10 16:59:26 +02:00
* Do a `project/scripts/release` to build and release to sonatype
2018-07-02 16:38:07 +02:00
* Log into sonatype, 'close' the staging repo.
* Test the artifacts by adding `resolvers += "Staging Repo" at "https://oss.sonatype.org/content/repositories/comtypesafe-xxxx"` to a test project
* If all is well, 'release' the staging repo.
2020-06-09 14:03:06 +02:00
* Push the release tag to github
2018-07-02 16:38:07 +02:00
## Announcing
* Prepare milestone on github:
2020-03-13 16:35:46 +01:00
* go to the [Milestones tab ](https://github.com/akka/akka/milestones )
* move all open issues so that this milestone contains completed work only
* close that milestone
* create a new milestone for next patch version
2018-07-02 16:38:07 +02:00
2019-05-22 14:33:34 +02:00
* In case of a new minor release:
2020-03-13 16:35:46 +01:00
* update the branch descriptions at CONTRIBUTING.md#branches -summary
* write blog post for akka.io and lightbend.com
2018-07-02 16:38:07 +02:00
* Create an announcement as a PR against akka/akka.github.com .
* credits can be generated with `scripts/authors.scala v2.3.5 v2.3.6`
* also update the `latest` variable in `_config.yml` .
Now wait until all artifacts have been properly propagated. Then:
2019-05-22 14:33:34 +02:00
* Update `MiMa.latestPatchOf` and PR that change (`project/MiMa.scala` )
2018-07-02 16:38:07 +02:00
* Change the symbolic links from 'current': `ssh akkarepo@gustav.akka.io ./update-akka-current-version.sh <x.y.z>`
2019-05-22 14:33:34 +02:00
* Publish the release announcement
2020-03-13 16:35:46 +01:00
* Tweet about it
* Post about it on Discuss
* Post about it on Gitter
2020-09-08 11:48:06 +02:00
* Create a GitHub 'release' for the tag via https://github.com/akka/akka/releases with a link to the release notes
2018-07-02 16:38:07 +02:00
## Update references
Update the versions used in:
* https://github.com/akka/akka-samples
2020-06-09 14:03:06 +02:00
* https://github.com/lightbend/lightbend-platform-docs/blob/master/docs/modules/getting-help/examples/build.sbt (this populates https://developer.lightbend.com/docs/lightbend-platform/introduction/getting-help/build-dependencies.html#_akka )
These are autoupdated by latest stable on maven central:
2018-07-02 16:38:07 +02:00
* https://github.com/akka/akka-quickstart-java.g8
* https://github.com/akka/akka-quickstart-scala.g8
* https://github.com/akka/akka-http-quickstart-java.g8
* https://github.com/akka/akka-http-quickstart-scala.g8
2018-08-24 13:38:53 +02:00
* https://github.com/akka/akka-grpc-quickstart-java.g8
* https://github.com/akka/akka-grpc-quickstart-scala.g8