Skip to content

Nightly Builds

Nightly Builds #1527

name: Nightly Builds
on:
schedule:
- cron: "0 0 * * *"
workflow_dispatch:
permissions: {}
jobs:
pekko-cluster-metrics-sigar:
name: Pekko Cluster Metrics Test with Sigar
runs-on: ubuntu-22.04
if: github.repository == 'apache/pekko'
steps:
- name: Checkout
uses: actions/checkout@v7.0.1
with:
fetch-depth: 0
fetch-tags: true
persist-credentials: false
- name: Setup Java 17
uses: actions/setup-java@v6
with:
distribution: temurin
java-version: 17
- name: Install sbt
uses: sbt/setup-sbt@c7d2d6258b4bd0d3ec5129e6b3453199d3c79729 # v1.5.8
- name: Cache Coursier cache
uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 8.1.1
- name: Enable jvm-opts
run: cp .jvmopts-ci .jvmopts
- name: sbt cluster-metrics/test
env:
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
run: |-
sbt \
-Djava.security.egd=file:/dev/urandom \
-Dpekko.test.sigar=true \
-Dpekko.cluster.assert=on \
-Dpekko.test.timefactor=2 \
-Dpekko.actor.testkit.typed.timefactor=2 \
-Dpekko.test.tags.exclude=gh-exclude,timing \
-Dpekko.log.timestamps=true \
-Dio.netty.leakDetection.level=PARANOID \
-Dmultinode.XX:MetaspaceSize=128M \
-Dmultinode.Xms256M \
-Dmultinode.Xmx256M \
-Dmultinode.Xlog:gc \
-Dmultinode.XX:+AlwaysActAsServerClassMachine \
clean cluster-metrics/test
pekko-classic-remoting-tests:
name: Pekko Classic Remoting Tests
runs-on: ubuntu-22.04
if: github.repository == 'apache/pekko'
strategy:
fail-fast: false
matrix:
command:
- cluster/test distributed-data/test cluster-tools/test cluster-metrics/test
- cluster-sharding/test
- cluster-typed/test cluster-sharding-typed/test
steps:
- name: Checkout
uses: actions/checkout@v7.0.1
with:
# we don't know what commit the last tag was it's safer to get entire repo so previousStableVersion resolves
fetch-depth: 0
fetch-tags: true
persist-credentials: false
- name: Setup Java 17
uses: actions/setup-java@v6
with:
distribution: temurin
java-version: 17
- name: Install sbt
uses: sbt/setup-sbt@c7d2d6258b4bd0d3ec5129e6b3453199d3c79729 # v1.5.8
- name: Cache Coursier cache
uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 8.1.1
- name: Enable jvm-opts
run: cp .jvmopts-ci .jvmopts
- name: sbt ${{ matrix.command }}
env:
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
# note that this is not running any multi-jvm tests because multi-in-test=false
run: |-
sbt \
-Djava.security.egd=file:/dev/urandom \
-Dpekko.remote.artery.enabled=off \
-Dpekko.test.timefactor=2 \
-Dpekko.actor.testkit.typed.timefactor=2 \
-Dpekko.test.tags.exclude=gh-exclude,timing \
-Dpekko.test.multi-in-test=false \
-Dpekko.cluster.assert=on \
-Dio.netty.leakDetection.level=PARANOID \
clean ${{ matrix.command }}
jdk-nightly-build:
name: JDK ${{ matrix.javaVersion }} / Scala ${{ matrix.scalaVersion }}
runs-on: ubuntu-22.04
if: github.repository == 'apache/pekko'
strategy:
fail-fast: false
matrix:
# No need to specify the full Scala version. Only the Scala
# binary version is required and Pekko build will set the right
# full version from it.
scalaVersion: ["2.13.x", "3.3.x"]
javaVersion: [17, 21, 25]
env:
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
steps:
- name: Checkout
uses: actions/checkout@v7.0.1
with:
fetch-depth: 0
fetch-tags: true
persist-credentials: false
- name: Setup Java ${{ matrix.javaVersion }}
uses: actions/setup-java@v6
with:
distribution: temurin
java-version: ${{ matrix.javaVersion }}
- name: Install sbt
uses: sbt/setup-sbt@c7d2d6258b4bd0d3ec5129e6b3453199d3c79729 # v1.5.8
- name: Cache Coursier cache
uses: coursier/cache-action@95e5b1029b6b86e7bac033ee44a0697d8a527d2d # 8.1.1
- name: Enable jvm-opts
run: cp .jvmopts-ci .jvmopts
- name: Check if the dependency task in the built correctly
run: sbt dependWalkerCheck
- name: Compile and Test
# note that this is not running any multi-jvm tests because multi-in-test=false
# JDK 21+ ForkJoinPool scheduling changes need a higher timefactor and a larger
# minimum-runnable to avoid compensation-thread starvation (see #2573, #2870).
# Run the internal fork-join dispatchers virtualized in nightly builds so
# blocking work can unmount from carrier threads. JDK 25 is more sensitive
# on the GitHub runners and needs the capped minimum-runnable value.
run: |-
EXTRA_JVM_OPTS=""
VIRTUAL_THREAD_JVM_OPTS=""
MINIMUM_RUNNABLE=4
if [ "${{ matrix.javaVersion }}" -ge 25 ]; then
TIMEFACTOR=4
MINIMUM_RUNNABLE=8
else
TIMEFACTOR=2
fi
if [ "${{ matrix.javaVersion }}" -ge 21 ]; then
VIRTUAL_THREAD_JVM_OPTS="--add-opens=java.base/jdk.internal.misc=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED"
export JDK_JAVA_OPTIONS="${JDK_JAVA_OPTIONS:-} $VIRTUAL_THREAD_JVM_OPTS"
EXTRA_JVM_OPTS="$EXTRA_JVM_OPTS -Dpekko.actor.default-dispatcher.fork-join-executor.minimum-runnable=$MINIMUM_RUNNABLE"
EXTRA_JVM_OPTS="$EXTRA_JVM_OPTS -Dpekko.actor.internal-dispatcher.fork-join-executor.minimum-runnable=$MINIMUM_RUNNABLE"
EXTRA_JVM_OPTS="$EXTRA_JVM_OPTS -Dpekko.remote.default-remote-dispatcher.fork-join-executor.minimum-runnable=$MINIMUM_RUNNABLE"
EXTRA_JVM_OPTS="$EXTRA_JVM_OPTS -Dpekko.remote.classic.backoff-remote-dispatcher.fork-join-executor.minimum-runnable=$MINIMUM_RUNNABLE"
EXTRA_JVM_OPTS="$EXTRA_JVM_OPTS -Dpekko.persistence.dispatchers.default-replay-dispatcher.fork-join-executor.minimum-runnable=$MINIMUM_RUNNABLE"
EXTRA_JVM_OPTS="$EXTRA_JVM_OPTS -Dpekko.persistence.dispatchers.default-stream-dispatcher.fork-join-executor.minimum-runnable=$MINIMUM_RUNNABLE"
EXTRA_JVM_OPTS="$EXTRA_JVM_OPTS -Dpekko.test.stream-dispatcher.fork-join-executor.minimum-runnable=$MINIMUM_RUNNABLE"
EXTRA_JVM_OPTS="$EXTRA_JVM_OPTS -Dpekko.actor.default-dispatcher.fork-join-executor.virtualize=on"
EXTRA_JVM_OPTS="$EXTRA_JVM_OPTS -Dpekko.actor.internal-dispatcher.fork-join-executor.virtualize=on"
EXTRA_JVM_OPTS="$EXTRA_JVM_OPTS -Dpekko.remote.default-remote-dispatcher.fork-join-executor.virtualize=on"
EXTRA_JVM_OPTS="$EXTRA_JVM_OPTS -Dpekko.remote.classic.backoff-remote-dispatcher.fork-join-executor.virtualize=on"
EXTRA_JVM_OPTS="$EXTRA_JVM_OPTS -Dpekko.persistence.dispatchers.default-replay-dispatcher.fork-join-executor.virtualize=on"
EXTRA_JVM_OPTS="$EXTRA_JVM_OPTS -Dpekko.persistence.dispatchers.default-stream-dispatcher.fork-join-executor.virtualize=on"
EXTRA_JVM_OPTS="$EXTRA_JVM_OPTS -Dpekko.test.stream-dispatcher.fork-join-executor.virtualize=on"
fi
sbt \
-Dpekko.cluster.assert=on \
-Dpekko.log.timestamps=true \
-Dpekko.test.timefactor=$TIMEFACTOR \
-Dpekko.actor.testkit.typed.timefactor=$TIMEFACTOR \
-Dpekko.test.tags.exclude=gh-exclude,timing \
-Dpekko.test.multi-in-test=false \
-Dio.netty.leakDetection.level=PARANOID \
$EXTRA_JVM_OPTS \
clean "++ ${{ matrix.scalaVersion }} test" checkTestsHaveRun
- name: Docs
if: ${{ matrix.javaVersion == 17 }}
run: |-
sudo apt-get install graphviz
# genjavadoc does not support Scala 3.x
sbt \
-Dpekko.genjavadoc.enabled=${{ !startsWith(matrix.scalaVersion, '3') }} \
"++ ${{ matrix.scalaVersion }} doc"
- name: Publish
if: ${{ matrix.javaVersion == 17 }}
run: |-
sudo apt-get install graphviz
sbt \
-Dpekko.build.scalaVersion=${{ matrix.scalaVersion }} \
"++ ${{ matrix.scalaVersion }} ;publishLocal;publishM2"