Multi node test #44
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Multi node test | |
on: | |
schedule: | |
- cron: '0 2 * * 1,3,5' | |
workflow_dispatch: | |
permissions: | |
contents: 'read' | |
# needed for google-github-actions 1.0.1 | |
id-token: 'write' | |
env: | |
USE_GKE_GCLOUD_AUTH_PLUGIN: True | |
concurrency: | |
# Only run once for latest commit per ref and cancel other (previous) runs. | |
group: ci-multi-node-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
run-multi-node-tests: | |
name: Multi Node Test | |
runs-on: ubuntu-22.04 | |
if: github.repository == 'akka/akka' | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
with: | |
fetch-depth: 0 | |
- name: Install Kubectl | |
run: | | |
sudo snap install kubectl --classic | |
# https://github.com/google-github-actions/auth/releases | |
# v1.0.0 | |
- name: Authenticate to Google Cloud | |
uses: google-github-actions/auth@ef5d53e30bbcd8d0836f4288f5e50ff3e086997d | |
with: | |
project_id: ${{ secrets.GKE_PROJECT }} | |
credentials_json: ${{ secrets.GKE_SA_KEY }} | |
# https://github.com/google-github-actions/setup-gcloud/releases | |
# v1.0.1 | |
- name: Install gcloud cli | |
uses: google-github-actions/setup-gcloud@d51b5346f85640ec2aa2fa057354d2b82c2fcbce | |
with: | |
project_id: ${{ secrets.GKE_PROJECT }} | |
- name: Create the cluster | |
run: |- | |
gcloud components install gke-gcloud-auth-plugin | |
gcloud config set compute/region us-central1 | |
gcloud config set compute/zone us-central1-c | |
./kubernetes/create-cluster-gke.sh "akka-multi-node-${GITHUB_RUN_ID}" | |
- name: Setup Pods | |
run: | | |
# Start 10 pods. At most 10 MultiJvmNode (akka.cluster.StressSpec is currently disabled). | |
./kubernetes/setup.sh 10 multi-node-test.hosts tcp | |
- name: Cache Coursier cache | |
uses: coursier/[email protected] | |
- name: Set up JDK 11 | |
uses: coursier/[email protected] | |
with: | |
jvm: temurin:1.11.0.17 | |
- name: Multi node test | |
run: | | |
cat multi-node-test.hosts | |
cp .jvmopts-ci .jvmopts | |
sbt \ | |
-Dakka.test.timefactor=2 \ | |
-Dakka.actor.testkit.typed.timefactor=2 \ | |
-Dakka.test.tags.exclude=gh-exclude,timing \ | |
-Dakka.cluster.assert=on \ | |
-Dsbt.override.build.repos=false \ | |
-Dakka.test.multi-node=true \ | |
-Dakka.test.multi-node.targetDirName=${PWD}/target/${{ github.run_id }} \ | |
-Dakka.test.multi-node.java=${JAVA_HOME}/bin/java \ | |
-Dmultinode.XX:MetaspaceSize=128M \ | |
-Dmultinode.Xms512M \ | |
-Dmultinode.Xmx512M \ | |
-Dmultinode.Xlog:gc \ | |
-Dmultinode.XX:+AlwaysActAsServerClassMachine \ | |
-Daeron.dir=/opt/volumes/media-driver \ | |
-Dmultinode.Daeron.dir=/opt/volumes/media-driver \ | |
-Daeron.term.buffer.length=33554432 \ | |
-Dmultinode.Daeron.term.buffer.length=33554432 \ | |
multiNodeTest | |
- name: Email on failure | |
if: ${{ failure() }} | |
uses: dawidd6/action-send-mail@6063705cefe50cb915fc53bb06d4049cae2953b2 | |
with: | |
server_address: smtp.gmail.com | |
server_port: 465 | |
# Using port 465 already sets `secure: true` | |
secure: true | |
username: ${{secrets.MAIL_USERNAME}} | |
password: ${{secrets.MAIL_PASSWORD}} | |
subject: Multi node test (Akka) | |
to: ${{secrets.MAIL_SEND_TO}} | |
from: Akka CI (GHActions) | |
body: | | |
Multi node test of ${{github.repository}} failed! | |
https://github.com/${{github.repository}}/actions/runs/${{github.run_id}} | |
- name: Cleanup the environment | |
if: ${{ always() }} | |
shell: bash {0} | |
run: | | |
gcloud container clusters delete "akka-multi-node-${GITHUB_RUN_ID}" --quiet | |
run-multi-node-aeron-tests: | |
name: Multi Node Test with Artery Aeron UDP transport | |
runs-on: ubuntu-22.04 | |
if: github.repository == 'akka/akka' | |
steps: | |
- name: Checkout | |
uses: actions/[email protected] | |
with: | |
fetch-depth: 0 | |
- name: Install Kubectl | |
run: | | |
sudo snap install kubectl --classic | |
# https://github.com/google-github-actions/auth/releases | |
# v1.0.0 | |
- name: Authenticate to Google Cloud | |
uses: google-github-actions/auth@ef5d53e30bbcd8d0836f4288f5e50ff3e086997d | |
with: | |
project_id: ${{ secrets.GKE_PROJECT }} | |
credentials_json: ${{ secrets.GKE_SA_KEY }} | |
# https://github.com/google-github-actions/setup-gcloud/releases | |
# v1.0.1 | |
- name: Install gcloud cli | |
uses: google-github-actions/setup-gcloud@d51b5346f85640ec2aa2fa057354d2b82c2fcbce | |
with: | |
project_id: ${{ secrets.GKE_PROJECT }} | |
- name: Create the cluster | |
run: |- | |
gcloud components install gke-gcloud-auth-plugin | |
gcloud config set compute/region us-central1 | |
gcloud config set compute/zone us-central1-c | |
./kubernetes/create-cluster-gke.sh "akka-artery-aeron-cluster-${GITHUB_RUN_ID}" | |
- name: Setup Pods | |
run: | | |
# Start 10 pods. At most 10 MultiJvmNode (akka.cluster.StressSpec is currently disabled). | |
./kubernetes/setup.sh 10 multi-node-test.hosts udp | |
- name: Cache Coursier cache | |
uses: coursier/[email protected] | |
- name: Set up JDK 11 | |
uses: coursier/[email protected] | |
with: | |
jvm: temurin:1.11.0.17 | |
- name: Multi node test with Artery Aeron UDP | |
run: | | |
cat multi-node-test.hosts | |
cp .jvmopts-ci .jvmopts | |
sbt \ | |
-Dakka.test.timefactor=2 \ | |
-Dakka.actor.testkit.typed.timefactor=2 \ | |
-Dakka.cluster.assert=on \ | |
-Dakka.remote.artery.transport=aeron-udp \ | |
-Dsbt.override.build.repos=false \ | |
-Dakka.test.tags.exclude=gh-exclude,gh-exclude-aeron,timing \ | |
-Dakka.test.multi-node=true \ | |
-Dakka.test.multi-node.targetDirName=${PWD}/target/${{ github.run_id }} \ | |
-Dakka.test.multi-node.java=${JAVA_HOME}/bin/java \ | |
-Dmultinode.XX:MetaspaceSize=128M \ | |
-Dmultinode.Xms512M \ | |
-Dmultinode.Xmx512M \ | |
-Dmultinode.Xlog:gc \ | |
-Dmultinode.XX:+AlwaysActAsServerClassMachine \ | |
-Daeron.dir=/opt/volumes/media-driver \ | |
-Dmultinode.Daeron.dir=/opt/volumes/media-driver \ | |
-Daeron.term.buffer.length=33554432 \ | |
-Dmultinode.Daeron.term.buffer.length=33554432 \ | |
multiNodeTest | |
- name: Email on failure | |
if: ${{ failure() }} | |
uses: dawidd6/action-send-mail@6063705cefe50cb915fc53bb06d4049cae2953b2 | |
with: | |
server_address: smtp.gmail.com | |
server_port: 465 | |
# Using port 465 already sets `secure: true` | |
secure: true | |
username: ${{secrets.MAIL_USERNAME}} | |
password: ${{secrets.MAIL_PASSWORD}} | |
subject: Multi node test with Aeron (Akka) | |
to: ${{secrets.MAIL_SEND_TO}} | |
from: Akka CI (GHActions) | |
body: | | |
Multi node test of ${{github.repository}} failed! | |
https://github.com/${{github.repository}}/actions/runs/${{github.run_id}} | |
- name: Cleanup the environment | |
if: ${{ always() }} | |
shell: bash {0} | |
run: | | |
gcloud container clusters delete "akka-artery-aeron-cluster-${GITHUB_RUN_ID}" --quiet |