Check #4510
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: Check | |
on: | |
pull_request: # Check Pull Requests | |
push: | |
branches: | |
- main # Check branch after merge | |
schedule: | |
- cron: "0 4 * * *" # Nightly build (@daily) | |
concurrency: | |
# Only run once for latest commit per ref and cancel other (previous) runs. | |
group: ci-${{ github.ref }} | |
cancel-in-progress: true | |
permissions: | |
contents: read # for checkout | |
jobs: | |
extra-vars: | |
name: Extra variables | |
runs-on: ubuntu-20.04 | |
outputs: | |
pekko_version_opts: ${{ steps.pekko-snapshots.outputs.pekko_opts }} | |
pekko_http_version_opts: ${{ steps.pekko-snapshots.outputs.pekko_http_opts }} | |
steps: | |
- id: pekko-snapshots | |
run: | | |
if [ "$GITHUB_EVENT_NAME" = "schedule" ]; then | |
PEKKO_VERSION=$(curl -s https://repository.apache.org/content/repositories/snapshots/org/apache/pekko/pekko-actor_2.13/ | grep -oEi '1\.1\.[0-9]+\-[RCM0-9]+\+[0-9]+-[0-9a-f]{8}-SNAPSHOT' | sort -V | tail -n 1) | |
PEKKO_HTTP_VERSION=$(curl -s https://repository.apache.org/content/repositories/snapshots/org/apache/pekko/pekko-http-core_2.13/ | grep -oEi '1\.1\.[0-9]+\-[RCM0-9]+\+[0-9]+-[0-9a-f]{8}-SNAPSHOT' | sort -V | tail -n 1) | |
echo "pekko_opts=-Dpekko.version=$PEKKO_VERSION" >> $GITHUB_OUTPUT | |
echo "pekko_http_opts=-Dpekko.http.version=$PEKKO_HTTP_VERSION" >> $GITHUB_OUTPUT | |
else | |
echo "pekko_opts=" >> $GITHUB_OUTPUT | |
echo "pekko_http_opts=" >> $GITHUB_OUTPUT | |
fi | |
prefetch-for-caching: | |
name: Prefetch dependencies and JVMs for caching | |
uses: playframework/.github/.github/workflows/cmd.yml@v4 | |
with: | |
cmd: | | |
if [ "$CACHE_HIT_COURSIER" = "false" ]; then | |
sbt +update # Runs with adoptium:8 (default) | |
# sbt --sbt-version 1.10.5 +update # If we run scripted tests with multiple sbt versions, we could init that sbt installs here | |
sbt +mimaPreviousClassfiles # Fetches previous artifacts | |
cd documentation && sbt +update && cd .. # Fetches dependencies of the documentation project | |
sbt -java-home `cs java-home --jvm adoptium:17` exit # Init sbt with new JVM that will be downloaded | |
sbt -java-home `cs java-home --jvm adoptium:21` exit # Init sbt with new JVM that will be downloaded | |
fi | |
# Run Gradle Wrapper Validation to verify the wrapper's checksum | |
gradle-validation: | |
name: Gradle Wrapper | |
uses: playframework/.github/.github/workflows/gradle-wrapper-validation.yml@v4 | |
check-code-style: | |
name: Code Style # scalafmt, javafmt, file headers, pekko version check | |
needs: | |
- "extra-vars" | |
- "prefetch-for-caching" | |
- "gradle-validation" | |
uses: playframework/.github/.github/workflows/cmd.yml@v4 | |
with: | |
cmd: | | |
sbt "${{needs.extra-vars.outputs.pekko_version_opts}}" "${{needs.extra-vars.outputs.pekko_http_version_opts}}" savePlayVersion validateCode | |
cd dev-mode/gradle-plugin | |
./gradlew clean spotlessCheck --no-daemon | |
gradle-build-root: dev-mode/gradle-plugin | |
check-binary-compatibility: | |
name: Binary Compatibility | |
needs: "prefetch-for-caching" | |
uses: playframework/.github/.github/workflows/binary-check.yml@v4 | |
check-code-style-docs: | |
name: Code Style Docs | |
needs: "prefetch-for-caching" | |
uses: playframework/.github/.github/workflows/cmd.yml@v4 | |
with: | |
cmd: | | |
cd documentation | |
sbt validateCode | |
publish-local: | |
name: Publish Local | |
needs: | |
- "extra-vars" | |
- "check-code-style" | |
- "check-binary-compatibility" | |
- "check-code-style-docs" | |
uses: playframework/.github/.github/workflows/cmd.yml@v4 | |
with: | |
java: 21, 17 | |
exclude: >- | |
[ | |
{ "java": "${{ github.event_name == 'schedule' || '21' }}" } | |
] | |
cmd: | | |
rm -rf ~/.ivy2/local ~/.m2/repository/org/playframework | |
sbt "${{needs.extra-vars.outputs.pekko_version_opts}}" "${{needs.extra-vars.outputs.pekko_http_version_opts}}" crossScalaVersions crossSbtVersions +publishLocal +publishM2 | |
cache-path: | | |
~/.ivy2/local/org.playframework | |
~/.m2/repository/org/playframework | |
cache-key: play-published-local-jdk{0}-${{ github.sha }}-${{ github.event_name != 'schedule' || github.run_id }} | |
tests: | |
name: Tests | |
if: "!contains(github.event.pull_request.labels.*.name, 'ci:skip-tests')" | |
needs: | |
- "extra-vars" | |
- "check-code-style" | |
- "check-binary-compatibility" | |
- "check-code-style-docs" | |
uses: playframework/.github/.github/workflows/cmd.yml@v4 | |
with: | |
java: 21, 17 | |
scala: 2.13.x, 3.x | |
add-dimensions: >- | |
{ | |
"sbt_test_task": [ "test", "Play-Microbenchmark/jmh:run -i 1 -wi 0 -f 1 -t 1 $JMH_PARAMS -foe=true" ] | |
} | |
exclude: >- | |
[ | |
{ "java": "${{ github.event_name == 'schedule' || '21' }}" }, | |
{ "sbt_test_task": "${{ github.event_name == 'schedule' || 'Play-Microbenchmark/jmh:run -i 1 -wi 0 -f 1 -t 1 $JMH_PARAMS -foe=true' }}" } | |
] | |
cmd: >- | |
if [ "$MATRIX_JAVA" = 17 ]; then | |
export JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS --add-exports=java.base/sun.security.x509=ALL-UNNAMED"; | |
fi; | |
if [[ "$MATRIX_JAVA" != 11 && "$MATRIX_JAVA" != 17 ]]; then | |
# When on Java 21+ we only run plain tests, see https://github.com/lightbend/ssl-config/issues/367 | |
export JMH_PARAMS="-p endpoint=nt-11-pln,ak-11-pln"; | |
fi; | |
sbt "${{needs.extra-vars.outputs.pekko_version_opts}}" "${{needs.extra-vars.outputs.pekko_http_version_opts}}" ++$MATRIX_SCALA "$(eval "echo $MATRIX_SBT_TEST_TASK")" | |
docs-tests: | |
name: Docs Tests | |
if: "!contains(github.event.pull_request.labels.*.name, 'ci:skip-docs-tests')" | |
needs: | |
- "extra-vars" | |
- "check-code-style" | |
- "check-binary-compatibility" | |
- "check-code-style-docs" | |
uses: playframework/.github/.github/workflows/cmd.yml@v4 | |
with: | |
java: 21, 17 | |
scala: 2.13.x, 3.x | |
exclude: >- | |
[ | |
{ "java": "${{ github.event_name == 'schedule' || '21' }}" } | |
] | |
cmd: >- | |
cd documentation && sbt "${{needs.extra-vars.outputs.pekko_version_opts}}" "${{needs.extra-vars.outputs.pekko_http_version_opts}}" ++$MATRIX_SCALA test | |
scripted-tests: | |
name: Scripted Tests | |
if: "!contains(github.event.pull_request.labels.*.name, 'ci:skip-scripted-tests')" | |
needs: | |
- "extra-vars" | |
- "publish-local" | |
uses: playframework/.github/.github/workflows/cmd.yml@v4 | |
with: | |
java: 21, 17 | |
scala: 2.13.x, 3.x | |
add-dimensions: >- | |
{ | |
"sbt": [ "1.10.5" ], | |
"sbt_steps": [ "*1of3", "*2of3", "*3of3" ] | |
} | |
exclude: >- | |
[ | |
{ "java": "${{ github.event_name == 'schedule' || '21' }}" } | |
] | |
cmd: >- | |
if [ "$MATRIX_JAVA" = 17 ]; then | |
export JAVA_TOOL_OPTIONS="$JAVA_TOOL_OPTIONS --add-exports=java.base/sun.security.x509=ALL-UNNAMED"; | |
fi; | |
export SCALA_CROSS_VERSIONS=`sbt -batch -error 'print Play/crossScalaVersions' | sed "s/\*//g" | xargs`; | |
sbt "${{needs.extra-vars.outputs.pekko_version_opts}}" "${{needs.extra-vars.outputs.pekko_http_version_opts}}" " | |
project Sbt-Plugin; | |
set scriptedSbt := \"$MATRIX_SBT\"; | |
set scriptedLaunchOpts += \"-Dscala.version=$MATRIX_SCALA\"; | |
set scriptedLaunchOpts += \"-Dscala.crossversions=$SCALA_CROSS_VERSIONS\"; | |
show scriptedSbt; | |
show scriptedLaunchOpts; | |
disableIncompatibleScriptedTests; | |
scripted play-sbt-plugin/$MATRIX_SBT_STEPS | |
" | |
cache-path: | | |
~/.ivy2/local/org.playframework | |
~/.m2/repository/org/playframework | |
cache-key: play-published-local-jdk{0}-${{ github.sha }}-${{ github.event_name != 'schedule' || github.run_id }} | |
gradle-plugin-tests: | |
name: Gradle Plugin Tests | |
needs: | |
- "extra-vars" | |
- "publish-local" | |
uses: playframework/.github/.github/workflows/cmd.yml@v4 | |
with: | |
java: 21, 17 | |
scala: 2.13.x, 3.x | |
exclude: >- | |
[ | |
{ "java": "${{ github.event_name == 'schedule' || '21' }}" } | |
] | |
cmd: | | |
sbt savePlayVersion | |
cd dev-mode/gradle-plugin | |
./gradlew clean check -x spotlessCheck --no-daemon -Pscala.version="$MATRIX_SCALA" | |
gradle-build-root: dev-mode/gradle-plugin | |
cache-path: | | |
~/.ivy2/local/org.playframework | |
~/.m2/repository/org/playframework | |
cache-key: play-published-local-jdk{0}-${{ github.sha }}-${{ github.event_name != 'schedule' || github.run_id }} | |
finish: | |
name: Finish | |
if: github.event_name == 'pull_request' | |
needs: # Should be last | |
- "tests" | |
- "docs-tests" | |
- "scripted-tests" | |
- "gradle-plugin-tests" | |
uses: playframework/.github/.github/workflows/rtm.yml@v4 |