diff --git a/.github/workflows/integration-tests-maven.yml b/.github/workflows/integration-tests-maven.yml index 45a9d899..8ae19084 100644 --- a/.github/workflows/integration-tests-maven.yml +++ b/.github/workflows/integration-tests-maven.yml @@ -7,9 +7,7 @@ on: - main - release-* tags-ignore: [ v.* ] - # Different than its sibilings, we don't configure this workflow to run as a cron job. - # The cron build compiles against Akka 2.6 and Akka HTTP 10.2, but the Maven example uses 2.5 and 10.1 - # see https://github.com/akka/akka-management/issues/744 + # Different from its siblings, we don't configure this workflow to run as a cron job. jobs: integration-test: diff --git a/README.md b/README.md index 221c712e..8c2b994b 100644 --- a/README.md +++ b/README.md @@ -10,6 +10,38 @@ Apache Pekko Management is a fork of [Akka Management](https://github.com/akka/a The documentation is available at [pekko.apache.org](https://pekko.apache.org/docs/pekko-management/current/). +## Building from Source + +### Prerequisites +- Make sure you have installed a Java Development Kit (JDK) version 8 or later. +- Make sure you have [sbt](https://www.scala-sbt.org/) installed. +- [Graphviz](https://graphviz.gitlab.io/download/) is needed for the scaladoc generation build task, which is part of the release. + +### Running the Build +- Open a command window and change directory to your preferred base directory +- Use git to clone the [repo](https://github.com/apache/incubator-pekko-management) or download a source release from https://pekko.apache.org (and unzip or untar it, as appropriate) +- Change directory to the directory where you installed the source (you should have a file called `build.sbt` in this directory) +- `sbt compile` compiles the main source for project default version of Scala (2.13) + - `sbt +compile` will compile for all supported versions of Scala +- `sbt test` will compile the code and run the unit tests +- `sbt testQuick` similar to `test` but when repeated in shell mode will only run failing tests +- `sbt package` will build the jars + - the jars will built into target dirs of the various modules + - for the the 'discovery-aws-api' module, the jar will be built to `discovery-aws-api/target/scala-2.13/` +- `sbt publishLocal` will push the jars to your local Apache Ivy repository +- `sbt publishM2` will push the jars to your local Apache Maven repository +- `sbt docs/paradox` will build the docs (the ones describing the module features) + - `sbt docs/paradoxBrowse` does the same but will open the docs in your browser when complete + - the `index.html` file will appear in `target/paradox/site/main/` +- `sbt unidoc` will build the Javadocs for all the modules and load them to one place (may require Graphviz, see Prerequisites above) + - the `index.html` file will appear in `target/scala-2.13/unidoc/` +- `sbt sourceDistGenerate` will generate source release to `target/dist/` +- The version number that appears in filenames and docs is derived, by default. The derived version contains the most git commit id or the date/time (if the directory is not under git control). + - You can set the version number explicitly when running sbt commands + - eg `sbt "set ThisBuild / version := \"1.0.0\"; sourceDistGenerate"` + - Or you can add a file called `version.sbt` to the same directory that has the `build.sbt` containing something like + - `ThisBuild / version := "1.0.0"` + ## Community There are several ways to interact with the Apache Pekko community: diff --git a/docs/src/main/paradox/_template/projectSpecificFooter.st b/docs/src/main/paradox/_template/projectSpecificFooter.st deleted file mode 100644 index c4a9441f..00000000 --- a/docs/src/main/paradox/_template/projectSpecificFooter.st +++ /dev/null @@ -1,4 +0,0 @@ - - diff --git a/docs/src/main/paradox/assets/js/warnOldVersion.js b/docs/src/main/paradox/assets/js/warnOldVersion.js deleted file mode 100644 index 39da3c3c..00000000 --- a/docs/src/main/paradox/assets/js/warnOldVersion.js +++ /dev/null @@ -1,23 +0,0 @@ -function initOldVersionWarnings($, thisVersion, projectUrl) { - if (projectUrl && projectUrl !== "") { - var schemeLessUrl = projectUrl; - if (projectUrl.startsWith("http://")) projectUrl = schemeLessUrl.substring(5); - else if (projectUrl.startsWith("https://")) projectUrl = schemeLessUrl.substring(6); - const url = schemeLessUrl + (schemeLessUrl.endsWith("\/") ? "" : "/") + "paradox.json"; - $.get(url, function (versionData) { - const currentVersion = versionData.version; - if (thisVersion !== currentVersion) { - showVersionWarning(thisVersion, currentVersion, projectUrl); - } - }); - } -} - -function showVersionWarning(thisVersion, currentVersion, projectUrl) { - $('#docs').prepend( - '
' + - '

This documentation regards version ' + thisVersion + ', ' + - 'however the current version is ' + currentVersion + '.

' + - '
' - ); -} \ No newline at end of file diff --git a/docs/src/main/paradox/bootstrap/istio.md b/docs/src/main/paradox/bootstrap/istio.md index 366dc311..44d14b36 100644 --- a/docs/src/main/paradox/bootstrap/istio.md +++ b/docs/src/main/paradox/bootstrap/istio.md @@ -4,7 +4,7 @@ To bootstrap a Pekko cluster in Istio, Istio must be configured to allow Pekko cluster communication to bypass the Istio sidecar proxy. Istio's routing design is made such that services don't need to be aware of each others location, they just communicate with the proxy, and the mesh figures out how to route and secure the communication. However, Pekko cluster communication is fundamentally location aware, in order to, for example, route messages to sharded actors. Hence a service mesh is not a suitable communication medium for cluster traffic, so it needs to be bypassed. -It is important to be aware that since Istio's proxy is bypassed, the Pekko cluster communication will not be secured by Istio using TLS. If you wish to secure your cluster communication, you will need to configure [Akka remoting with mTLS](https://pekko.apache.org/docs/pekko/current/remoting-artery.html#remote-security) yourself. +It is important to be aware that since Istio's proxy is bypassed, the Pekko cluster communication will not be secured by Istio using TLS. If you wish to secure your cluster communication, you will need to configure [Pekko remoting with mTLS](https://pekko.apache.org/docs/pekko/current/remoting-artery.html#remote-security) yourself. Booting a Pekko cluster in Istio requires a minimum Istio version of 1.2.0, as it requires the outbound port exclusions feature that was added in there. It also requires using the @ref[Kubernetes API](kubernetes-api.md) contact point discovery method to be used. The instructions below are for the additional configuration necessary to ensure an Akka cluster can be bootstrapped in Istio. diff --git a/docs/src/main/paradox/index.md b/docs/src/main/paradox/index.md index 24142d04..88c47a3a 100644 --- a/docs/src/main/paradox/index.md +++ b/docs/src/main/paradox/index.md @@ -24,6 +24,7 @@ Various parts of Pekko management can be used together for deploying Pekko Clust @@@ index + - [Release Notes](release-notes/index.md) - [Deploy guide for Kubernetes](kubernetes-deployment/index.md) - [Pekko Management](pekko-management.md) - [Migrating from older versions](migration.md) diff --git a/docs/src/main/paradox/migration.md b/docs/src/main/paradox/migration.md index ff337a17..25d3cf71 100644 --- a/docs/src/main/paradox/migration.md +++ b/docs/src/main/paradox/migration.md @@ -1,10 +1,6 @@ # Migration guide -## 1.0 - -Version requirements: -* Pekko 1.0 later -* Pekko HTTP 1.0 or later +## 1.0 When migrating from Akka Management it is recommended to first upgrade to Akka 2.6.20 / Akka Management 1.1.4 before switching to Pekko/Pekko Management. Please refer to the [Akka Management migration guide](https://doc.akka.io/docs/akka-management/current/migration.html). @@ -35,4 +31,4 @@ And finally the CRD: kubectl delete crd leases.akka.io ``` -To prepare for Pekko Management, setup the CRD and RBAC again following @ref[kubernetes-lease](kubernetes-lease.md). \ No newline at end of file +To prepare for Pekko Management, set up the CRD and RBAC again following @ref[kubernetes-lease](kubernetes-lease.md). \ No newline at end of file diff --git a/docs/src/main/paradox/release-notes/index.md b/docs/src/main/paradox/release-notes/index.md new file mode 100644 index 00000000..d715cfe2 --- /dev/null +++ b/docs/src/main/paradox/release-notes/index.md @@ -0,0 +1,30 @@ +# Release Notes + +## 1.0.0 +Apache Pekko Management 1.0.0 is based on Akka Management 1.1.4. +Pekko came about as a result of Lightbend's decision to make future Akka releases under a [Business Software License](https://www.lightbend.com/blog/why-we-are-changing-the-license-for-akka), +a license that is not compatible with Open Source usage. + +Apache Pekko has changed the package names, among other changes. Config names have changed to use `pekko` instead +of `akka` in their names. The default ports for Pekko Management have changed to avoid clashing with the Akka Management +defaults. Users switching from Akka to Pekko should read our @ref:[Migration Guide](../migration.md). + +Generally, we have tried to make it as easy as possible to switch existing Akka based projects over to using +Pekko 1.0. + +We have gone through the code base and have tried to properly acknowledge all third party source code in the +Apache Pekko code base. If anyone believes that there are any instances of third party source code that is not +properly acknowledged, please get in touch. + +### Bug Fixes +We haven't had to fix any significant bugs that were in Akka Management 1.1.4. + +### Additions + +* Scala 3 support ([PR80](https://github.com/apache/incubator-pekko-management/pull/80)) + * minimum of Scala 3.3.0 needed + +### Dependency Upgrades +We have tried to limit the changes to third party dependencies that are used in Pekko Management 1.0.0. These are some exceptions: + +* Jackson 2.14.3 ([#7](https://github.com/apache/incubator-pekko/issues/7)) diff --git a/integration-test/kubernetes-dns/kubernetes/pekko-cluster.yml b/integration-test/kubernetes-dns/kubernetes/pekko-cluster.yml index 3dc7e0d6..e4160190 100644 --- a/integration-test/kubernetes-dns/kubernetes/pekko-cluster.yml +++ b/integration-test/kubernetes-dns/kubernetes/pekko-cluster.yml @@ -46,7 +46,7 @@ spec: - containerPort: 7355 name: remoting env: - # Can be removed once async-dns supports search domains (in Akka 2.5.20) + # Possibly can be removed now that async-dns supports search domains - name: NAMESPACE valueFrom: fieldRef: diff --git a/project/project-info.conf b/project/project-info.conf index 0e3936c2..8ea5a6c4 100644 --- a/project/project-info.conf +++ b/project/project-info.conf @@ -1,8 +1,8 @@ project-info { version: "current" - scala-versions: ["2.12", "2.13"] + scala-versions: ["2.12", "2.13", "3"] shared-info { - jdk-versions: ["Adopt OpenJDK 8 with Hotspot", "Adopt OpenJDK 11 with Hotspot"] + jdk-versions: ["OpenJDK 8", "OpenJDK 11"] snapshots: { url: "https://repository.apache.org/content/repositories/snapshots/org/apache/pekko/" text: "Snapshots are available"