# Licensed to the Apache Software Foundation (ASF) under one or more
# license agreements; and to You under the Apache License, version 2.0:
#
#   https://www.apache.org/licenses/LICENSE-2.0
#
# This file is part of the Apache Pekko project, which was derived from Akka.
#
 
name: Nightly Builds (1.1)

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@v5
        with:
          fetch-depth: 0
          fetch-tags: true
          ref: 1.1.x

      - name: Setup Java 11
        uses: actions/setup-java@v5
        with:
          distribution: temurin
          java-version: 11

      - name: Install sbt
        uses: sbt/setup-sbt@17575ea4e18dd928fe5968dbe32294b97923d65b # v1.1.13

      - name: Cache Coursier cache
        uses: coursier/cache-action@4e2615869d13561d626ed48655e1a39e5b192b3c # v6.4.7

      - 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@v5
        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
          ref: 1.1.x

      - name: Setup Java 11
        uses: actions/setup-java@v5
        with:
          distribution: temurin
          java-version: 11

      - name: Install sbt
        uses: sbt/setup-sbt@17575ea4e18dd928fe5968dbe32294b97923d65b # v1.1.13

      - name: Cache Coursier cache
        uses: coursier/cache-action@4e2615869d13561d626ed48655e1a39e5b192b3c # v6.4.7

      - 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 \
          -Dio.netty.leakDetection.level=PARANOID \
          -Dpekko.cluster.assert=on \
          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.12.x", "2.13.x", "3.3.x"]
        javaVersion: [8, 11, 17, 21]
    steps:
      - name: Checkout
        uses: actions/checkout@v5
        with:
          fetch-depth: 0
          fetch-tags: true
          ref: 1.1.x

      - name: Setup Java ${{ matrix.javaVersion }}
        uses: actions/setup-java@v5
        with:
          distribution: temurin
          java-version: ${{ matrix.javaVersion }}

      - name: Install sbt
        uses: sbt/setup-sbt@17575ea4e18dd928fe5968dbe32294b97923d65b # v1.1.13

      - name: Cache Coursier cache
        uses: coursier/cache-action@4e2615869d13561d626ed48655e1a39e5b192b3c # v6.4.7

      - name: Enable jvm-opts
        run: cp .jvmopts-ci .jvmopts

      - name: Compile and Test
        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 \
            -Dpekko.cluster.assert=on \
            -Dpekko.log.timestamps=true \
            -Dpekko.test.timefactor=2 \
            -Dpekko.actor.testkit.typed.timefactor=2 \
            -Dpekko.test.tags.exclude=gh-exclude,timing \
            -Dpekko.test.multi-in-test=false \
            -Dio.netty.leakDetection.level=PARANOID \
            clean "++ ${{ matrix.scalaVersion }} test" checkTestsHaveRun
