name: Multi node test on: schedule: - cron: '0 2 * * 1,3,5' workflow_dispatch: 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-20.04 if: github.repository == 'akka/akka' steps: - name: Checkout uses: actions/checkout@v2 with: fetch-depth: 0 - name: Install Kubectl run: | sudo snap install kubectl --classic - uses: google-github-actions/setup-gcloud@v0.2 with: service_account_key: ${{ secrets.GKE_SA_KEY }} project_id: ${{ secrets.GKE_PROJECT }} - name: Create the cluster run: |- 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: Set up JDK 11 uses: olafurpg/setup-scala@v10 with: java-version: adopt@1.11.0-9 - name: Cache Coursier cache uses: coursier/cache-action@v6.2 - name: Multi node test run: | cat multi-node-test.hosts sbt -jvm-opts .jvmopts-ci \ -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@v3 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: akka.official@gmail.com 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-20.04 if: github.repository == 'akka/akka' steps: - name: Checkout uses: actions/checkout@v2 with: fetch-depth: 0 - name: Install Kubectl run: | sudo snap install kubectl --classic - uses: google-github-actions/setup-gcloud@v0.2 with: service_account_key: ${{ secrets.GKE_SA_KEY }} project_id: ${{ secrets.GKE_PROJECT }} - name: Create the cluster run: |- 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: Set up JDK 11 uses: olafurpg/setup-scala@v10 with: java-version: adopt@1.11.0-9 - name: Cache Coursier cache uses: coursier/cache-action@v6.2 - name: Multi node test with Artery Aeron UDP run: | cat multi-node-test.hosts sbt -jvm-opts .jvmopts-ci \ -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@v3 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: akka.official@gmail.com 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