Dotty #1062
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: Dotty | |
on: | |
push: | |
## Be careful if you add or remove something here! Quoting from | |
## <https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#onpushbranchestagsbranches-ignoretags-ignore>: | |
## | |
## > If you define only tags/tags-ignore or only branches/branches-ignore, the | |
## > workflow won't run for events affecting the undefined Git ref. If you | |
## > define neither tags/tags-ignore or branches/branches-ignore, the workflow | |
## > will run for events affecting either branches or tags. | |
## | |
## We want the CI to run on both branches and tags, so we should either have: | |
## - both (tags or tags-ignore) and (branches or branches-ignore), | |
## - or neither of them. | |
## But it's important to not have only one or the other. | |
tags: | |
- '*' | |
branches-ignore: | |
- 'gh-readonly-queue/**' | |
- 'release-**' | |
- 'lts-**' | |
pull_request: | |
merge_group: | |
schedule: | |
- cron: '0 3 * * *' # Every day at 3 AM | |
workflow_dispatch: | |
env: | |
DOTTY_CI_RUN: true | |
DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }} | |
# In this file, we set `--cpu-shares 4096` on every job. This might seem useless | |
# since it means that every container has the same weight which should be | |
# equivalent to doing nothing, but it turns out that OpenJDK computes | |
# `Runtime.getRuntime.availableProcessors` by dividing the cpu-shares value if | |
# it exists by 1024 (cf | |
# http://mail.openjdk.java.net/pipermail/hotspot-dev/2019-January/036087.html), | |
# so this means that we effectively run every job with 4 cores. This is much | |
# nicer than setting `--cpus 4` because the latter enforces CPU quotas and ends | |
# up slowing our jobs more than needed. It's equivalent to running the JVM with | |
# `-XX:ActiveProcessorCount=4`, but since our tests can spawn new JVM in many | |
# places, it would be very hard to ensure that this option is always passed to | |
# `java` (we could use the `_JAVA_OPTIONS` environment variable, but this prints | |
# text on stderr and so can break tests which check the output of a program). | |
jobs: | |
test_non_bootstrapped: | |
runs-on: [self-hosted, Linux] | |
container: | |
image: lampepfl/dotty:2023-11-07 | |
options: --cpu-shares 4096 | |
volumes: | |
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt | |
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache | |
- ${{ github.workspace }}/../../cache/general:/root/.cache | |
if: "github.event_name == 'schedule' && github.repository == 'scala/scala3' | |
|| github.event_name == 'push' | |
|| ( | |
github.event_name == 'pull_request' | |
&& !contains(github.event.pull_request.body, '[skip ci]') | |
&& contains(github.event.pull_request.body, '[test_non_bootstrapped]') | |
) | |
|| ( | |
github.event_name == 'workflow_dispatch' | |
&& github.repository == 'scala/scala3' | |
)" | |
steps: | |
- name: Set JDK 17 as default | |
run: echo "/usr/lib/jvm/java-17-openjdk-amd64/bin" >> $GITHUB_PATH | |
## Workaround for https://github.com/actions/runner/issues/2033 (See https://github.com/scala/scala3/pull/19720) | |
- name: Reset existing repo | |
run: | | |
git config --global --add safe.directory /__w/scala3/scala3 | |
git -c "http.https://github.com/.extraheader=" fetch --recurse-submodules=no "https://github.com/scala/scala3" && git reset --hard FETCH_HEAD || true | |
- name: Checkout cleanup script | |
uses: actions/checkout@v4 | |
- name: Cleanup | |
run: .github/workflows/cleanup.sh | |
- name: Git Checkout | |
uses: actions/checkout@v4 | |
- name: Add SBT proxy repositories | |
run: cp -vf .github/workflows/repositories /root/.sbt/ ; true | |
- name: Test | |
# DON'T add dist/Universal/stage! | |
# Adding dist/Universal/stage bootstraps the compiler | |
# which undermines the point of these tests: | |
# to quickly run the tests without the cost of bootstrapping | |
# and also to run tests when the compiler doesn't bootstrap | |
run: | | |
./project/scripts/sbt ";compile ;test" | |
./project/scripts/cmdTests | |
test: | |
runs-on: [self-hosted, Linux] | |
container: | |
image: lampepfl/dotty:2023-11-07 | |
options: --cpu-shares 4096 | |
volumes: | |
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt | |
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache | |
- ${{ github.workspace }}/../../cache/general:/root/.cache | |
if: "github.event_name == 'schedule' && github.repository == 'scala/scala3' | |
|| github.event_name == 'push' | |
|| github.event_name == 'merge_group' | |
|| ( | |
github.event_name == 'pull_request' | |
&& !contains(github.event.pull_request.body, '[skip ci]') | |
&& !contains(github.event.pull_request.body, '[skip test]') | |
) | |
|| ( | |
github.event_name == 'workflow_dispatch' | |
&& github.repository == 'scala/scala3' | |
)" | |
steps: | |
- name: Set JDK 17 as default | |
run: echo "/usr/lib/jvm/java-17-openjdk-amd64/bin" >> $GITHUB_PATH | |
- name: Reset existing repo | |
run: | | |
git config --global --add safe.directory /__w/scala3/scala3 | |
git -c "http.https://github.com/.extraheader=" fetch --recurse-submodules=no "https://github.com/scala/scala3" && git reset --hard FETCH_HEAD || true | |
- name: Checkout cleanup script | |
uses: actions/checkout@v4 | |
- name: Cleanup | |
run: .github/workflows/cleanup.sh | |
- name: Git Checkout | |
uses: actions/checkout@v4 | |
- name: Add SBT proxy repositories | |
run: cp -vf .github/workflows/repositories /root/.sbt/ ; true | |
- name: Cmd Tests | |
run: | | |
./project/scripts/buildScalaBinary | |
./project/scripts/sbt ";scala3-bootstrapped/compile ;scala3-bootstrapped/test ;sbt-test/scripted scala2-compat/* ;scala3-compiler-bootstrapped/scala3CompilerCoursierTest:test" | |
./project/scripts/cmdTests | |
./project/scripts/bootstrappedOnlyCmdTests | |
- name: Scala.js Test | |
run: | | |
./project/scripts/sbt ";sjsSandbox/run ;sjsSandbox/test ;sjsJUnitTests/test ;set sjsJUnitTests/scalaJSLinkerConfig ~= switchToESModules ;sjsJUnitTests/test ;sjsCompilerTests/test" | |
- name: Test with Scala 2 library TASTy (fast) | |
run: ./project/scripts/sbt ";set ThisBuild/Build.scala2Library := Build.Scala2LibraryTasty ;scala3-bootstrapped/testCompilation i5; scala3-bootstrapped/testCompilation tests/run/typelevel-peano.scala; scala3-bootstrapped/testOnly dotty.tools.backend.jvm.DottyBytecodeTests" # only test a subset of test to avoid doubling the CI execution time | |
- name: Test with Scala 2 library with CC TASTy (fast) | |
run: ./project/scripts/sbt ";set ThisBuild/Build.scala2Library := Build.Scala2LibraryCCTasty; scala2-library-cc/compile; scala2-library-cc-tasty/compile; scala3-bootstrapped/testCompilation i3" | |
test_scala2_library_tasty: | |
runs-on: [self-hosted, Linux] | |
container: | |
image: lampepfl/dotty:2023-11-07 | |
options: --cpu-shares 4096 | |
volumes: | |
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt | |
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache | |
- ${{ github.workspace }}/../../cache/general:/root/.cache | |
if: "github.event_name == 'schedule' && github.repository == 'scala/scala3' | |
|| ( | |
github.event_name == 'pull_request' | |
&& contains(github.event.pull_request.body, '[test_scala2_library_tasty]') | |
) | |
|| ( | |
github.event_name == 'workflow_dispatch' | |
&& github.repository == 'scala/scala3' | |
)" | |
steps: | |
- name: Set JDK 17 as default | |
run: echo "/usr/lib/jvm/java-17-openjdk-amd64/bin" >> $GITHUB_PATH | |
- name: Reset existing repo | |
run: | | |
git config --global --add safe.directory /__w/scala3/scala3 | |
git -c "http.https://github.com/.extraheader=" fetch --recurse-submodules=no "https://github.com/scala/scala3" && git reset --hard FETCH_HEAD || true | |
- name: Checkout cleanup script | |
uses: actions/checkout@v4 | |
- name: Cleanup | |
run: .github/workflows/cleanup.sh | |
- name: Git Checkout | |
uses: actions/checkout@v4 | |
- name: Add SBT proxy repositories | |
run: cp -vf .github/workflows/repositories /root/.sbt/ ; true | |
- name: Test with Scala 2 library TASTy | |
run: ./project/scripts/sbt ";set ThisBuild/Build.scala2Library := Build.Scala2LibraryTasty ;scala3-bootstrapped/test" | |
- name: Test with Scala 2 library with CC TASTy | |
run: ./project/scripts/sbt ";set ThisBuild/Build.scala2Library := Build.Scala2LibraryCCTasty ;scala3-bootstrapped/test" | |
test_windows_fast: | |
runs-on: [self-hosted, Windows] | |
if: "( | |
github.event_name == 'push' | |
&& github.ref != 'refs/heads/main' | |
) | |
|| github.event_name == 'merge_group' | |
|| ( | |
github.event_name == 'pull_request' | |
&& !contains(github.event.pull_request.body, '[skip ci]') | |
&& !contains(github.event.pull_request.body, '[skip test_windows_fast]') | |
)" | |
steps: | |
- name: Reset existing repo | |
shell: cmd | |
run: | | |
git config --global --add safe.directory /__w/scala3/scala3 | |
git -c "http.https://github.com/.extraheader=" fetch --recurse-submodules=no "https://github.com/scala/scala3" && git reset --hard FETCH_HEAD || true | |
- name: Git Checkout | |
uses: actions/checkout@v4 | |
- name: Test | |
run: sbt ";scala3-bootstrapped/compile; scala3-bootstrapped/testCompilation" | |
shell: cmd | |
- name: build binary | |
run: sbt "dist-win-x86_64/Universal/stage" & bash -version | |
shell: cmd | |
- name: cygwin tests | |
run: '"C:\Program Files\cygwin64\bin\bash" ./project/scripts/winCmdTests' | |
shell: cmd | |
- name: msys tests | |
run: '"C:\Program Files\Git\bin\bash" ./project/scripts/winCmdTests' | |
shell: cmd | |
- name: win tests | |
run: './project/scripts/winCmdTests.bat' | |
shell: cmd | |
- name: Scala.js Test | |
run: sbt ";sjsJUnitTests/test ;set sjsJUnitTests/scalaJSLinkerConfig ~= switchToESModules ;sjsJUnitTests/test ;sjsCompilerTests/test" | |
shell: cmd | |
test_windows_full: | |
runs-on: [self-hosted, Windows] | |
if: "github.event_name == 'schedule' && github.repository == 'scala/scala3' | |
|| github.event_name == 'push' | |
|| ( | |
github.event_name == 'pull_request' | |
&& !contains(github.event.pull_request.body, '[skip ci]') | |
&& contains(github.event.pull_request.body, '[test_windows_full]') | |
)" | |
steps: | |
- name: Reset existing repo | |
shell: cmd | |
run: | | |
git config --global --add safe.directory /__w/scala3/scala3 | |
git -c "http.https://github.com/.extraheader=" fetch --recurse-submodules=no "https://github.com/scala/scala3" && git reset --hard FETCH_HEAD || true | |
- name: Git Checkout | |
uses: actions/checkout@v4 | |
- name: build binary | |
run: sbt "dist-win-x86_64/Universal/stage" | |
shell: cmd | |
- name: Test | |
run: sbt ";scala3-bootstrapped/compile ;scala3-bootstrapped/test" | |
shell: cmd | |
- name: Scala.js Test | |
run: sbt ";sjsJUnitTests/test ;set sjsJUnitTests/scalaJSLinkerConfig ~= switchToESModules ;sjsJUnitTests/test ;sjsCompilerTests/test" | |
shell: cmd | |
mima: | |
name: MiMa | |
runs-on: [self-hosted, Linux] | |
container: | |
image: lampepfl/dotty:2023-11-07 | |
options: --cpu-shares 4096 | |
volumes: | |
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt | |
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache | |
- ${{ github.workspace }}/../../cache/general:/root/.cache | |
if: "github.event_name == 'schedule' && github.repository == 'scala/scala3' | |
|| github.event_name == 'push' | |
|| github.event_name == 'merge_group' | |
|| ( | |
github.event_name == 'pull_request' | |
&& !contains(github.event.pull_request.body, '[skip ci]') | |
&& !contains(github.event.pull_request.body, '[skip mima]') | |
) | |
|| ( | |
github.event_name == 'workflow_dispatch' | |
&& github.repository == 'scala/scala3' | |
)" | |
steps: | |
- name: Set JDK 17 as default | |
run: echo "/usr/lib/jvm/java-17-openjdk-amd64/bin" >> $GITHUB_PATH | |
- name: Reset existing repo | |
run: | | |
git config --global --add safe.directory /__w/scala3/scala3 | |
git -c "http.https://github.com/.extraheader=" fetch --recurse-submodules=no "https://github.com/scala/scala3" && git reset --hard FETCH_HEAD || true | |
- name: Checkout cleanup script | |
uses: actions/checkout@v4 | |
- name: Cleanup | |
run: .github/workflows/cleanup.sh | |
- name: Git Checkout | |
uses: actions/checkout@v4 | |
- name: Add SBT proxy repositories | |
run: cp -vf .github/workflows/repositories /root/.sbt/ ; true | |
- name: MiMa | |
run: | | |
./project/scripts/sbt ";scala3-interfaces/mimaReportBinaryIssues ;scala3-library-bootstrapped/mimaReportBinaryIssues ;scala3-library-bootstrappedJS/mimaReportBinaryIssues; tasty-core-bootstrapped/mimaReportBinaryIssues; scala2-library-bootstrapped/mimaReportBinaryIssues" | |
- name: TASTy MiMa | |
run: | | |
# This script cleans the compiler and recompiles it from scratch (keep as last run) | |
./project/scripts/scala2-library-tasty-mima.sh | |
community_build_a: | |
runs-on: [self-hosted, Linux] | |
container: | |
image: lampepfl/dotty:2023-11-07 | |
options: --cpu-shares 4096 | |
volumes: | |
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt | |
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache | |
- ${{ github.workspace }}/../../cache/general:/root/.cache | |
if: "github.event_name == 'schedule' && github.repository == 'scala/scala3' | |
|| github.event_name == 'push' | |
|| github.event_name == 'merge_group' | |
|| ( | |
github.event_name == 'pull_request' | |
&& !contains(github.event.pull_request.body, '[skip ci]') | |
&& !contains(github.event.pull_request.body, '[skip community_build]') | |
&& !contains(github.event.pull_request.body, '[skip community_build_a]') | |
) | |
|| ( | |
github.event_name == 'workflow_dispatch' | |
&& github.repository == 'scala/scala3' | |
)" | |
steps: | |
###################################################################################### | |
## WARNING: DO NOT CHANGE THE JAVA VERSION HERE. SCALA IS DISTRIBUTED USING JAVA 8. ## | |
###################################################################################### | |
- name: Set JDK 8 as default | |
run: echo "/usr/lib/jvm/java-8-openjdk-amd64/bin" >> $GITHUB_PATH | |
- name: Reset existing repo | |
run: | | |
git config --global --add safe.directory /__w/scala3/scala3 | |
git -c "http.https://github.com/.extraheader=" fetch --recurse-submodules=no "https://github.com/scala/scala3" && git reset --hard FETCH_HEAD || true | |
- name: Checkout cleanup script | |
uses: actions/checkout@v4 | |
- name: Cleanup | |
run: .github/workflows/cleanup.sh | |
- name: Git Checkout | |
uses: actions/checkout@v4 | |
- name: Add SBT proxy repositories | |
run: cp -vf .github/workflows/repositories /root/.sbt/ ; true | |
- name: Test | |
run: | | |
git config --global --add safe.directory /__w/scala3/scala3 | |
git submodule sync | |
git submodule update --init --recursive --jobs 7 | |
./project/scripts/sbt "community-build/testOnly dotty.communitybuild.CommunityBuildTestA" | |
- name: Show dependency tracking file | |
if: ${{ always() }} | |
run: cat community-build/dotty-community-build-deps || true | |
community_build_b: | |
runs-on: [self-hosted, Linux] | |
container: | |
image: lampepfl/dotty:2023-11-07 | |
options: --cpu-shares 4096 | |
volumes: | |
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt | |
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache | |
- ${{ github.workspace }}/../../cache/general:/root/.cache | |
if: "github.event_name == 'schedule' && github.repository == 'scala/scala3' | |
|| github.event_name == 'push' | |
|| github.event_name == 'merge_group' | |
|| ( | |
github.event_name == 'pull_request' | |
&& !contains(github.event.pull_request.body, '[skip ci]') | |
&& !contains(github.event.pull_request.body, '[skip community_build]') | |
&& !contains(github.event.pull_request.body, '[skip community_build_b]') | |
) | |
|| ( | |
github.event_name == 'workflow_dispatch' | |
&& github.repository == 'scala/scala3' | |
)" | |
steps: | |
###################################################################################### | |
## WARNING: DO NOT CHANGE THE JAVA VERSION HERE. SCALA IS DISTRIBUTED USING JAVA 8. ## | |
###################################################################################### | |
- name: Set JDK 8 as default | |
run: echo "/usr/lib/jvm/java-8-openjdk-amd64/bin" >> $GITHUB_PATH | |
- name: Reset existing repo | |
run: | | |
git config --global --add safe.directory /__w/scala3/scala3 | |
git -c "http.https://github.com/.extraheader=" fetch --recurse-submodules=no "https://github.com/scala/scala3" && git reset --hard FETCH_HEAD || true | |
- name: Checkout cleanup script | |
uses: actions/checkout@v4 | |
- name: Cleanup | |
run: .github/workflows/cleanup.sh | |
- name: Git Checkout | |
uses: actions/checkout@v4 | |
- name: Add SBT proxy repositories | |
run: cp -vf .github/workflows/repositories /root/.sbt/ ; true | |
- name: Test | |
run: | | |
git config --global --add safe.directory /__w/scala3/scala3 | |
git submodule sync | |
git submodule update --init --recursive --jobs 7 | |
./project/scripts/sbt "community-build/testOnly dotty.communitybuild.CommunityBuildTestB" | |
- name: Show dependency tracking file | |
if: ${{ always() }} | |
run: cat community-build/dotty-community-build-deps || true | |
community_build_c: | |
runs-on: [self-hosted, Linux] | |
container: | |
image: lampepfl/dotty:2023-11-07 | |
options: --cpu-shares 4096 | |
volumes: | |
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt | |
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache | |
- ${{ github.workspace }}/../../cache/general:/root/.cache | |
if: "github.event_name == 'schedule' && github.repository == 'scala/scala3' | |
|| github.event_name == 'push' | |
|| github.event_name == 'merge_group' | |
|| ( | |
github.event_name == 'pull_request' | |
&& !contains(github.event.pull_request.body, '[skip ci]') | |
&& !contains(github.event.pull_request.body, '[skip community_build]') | |
&& !contains(github.event.pull_request.body, '[skip community_build_c]') | |
) | |
|| ( | |
github.event_name == 'workflow_dispatch' | |
&& github.repository == 'scala/scala3' | |
)" | |
steps: | |
###################################################################################### | |
## WARNING: DO NOT CHANGE THE JAVA VERSION HERE. SCALA IS DISTRIBUTED USING JAVA 8. ## | |
###################################################################################### | |
- name: Set JDK 8 as default | |
run: echo "/usr/lib/jvm/java-8-openjdk-amd64/bin" >> $GITHUB_PATH | |
- name: Reset existing repo | |
run: | | |
git config --global --add safe.directory /__w/scala3/scala3 | |
git -c "http.https://github.com/.extraheader=" fetch --recurse-submodules=no "https://github.com/scala/scala3" && git reset --hard FETCH_HEAD || true | |
- name: Checkout cleanup script | |
uses: actions/checkout@v4 | |
- name: Cleanup | |
run: .github/workflows/cleanup.sh | |
- name: Git Checkout | |
uses: actions/checkout@v4 | |
- name: Add SBT proxy repositories | |
run: cp -vf .github/workflows/repositories /root/.sbt/ ; true | |
- name: Test | |
run: | | |
git config --global --add safe.directory /__w/scala3/scala3 | |
git submodule sync | |
git submodule update --init --recursive --jobs 7 | |
./project/scripts/sbt "community-build/testOnly dotty.communitybuild.CommunityBuildTestC" | |
- name: Show dependency tracking file | |
if: ${{ always() }} | |
run: cat community-build/dotty-community-build-deps || true | |
test_sbt: | |
runs-on: [self-hosted, Linux] | |
container: | |
image: lampepfl/dotty:2023-11-07 | |
options: --cpu-shares 4096 | |
volumes: | |
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt | |
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache | |
- ${{ github.workspace }}/../../cache/general:/root/.cache | |
if: "github.event_name == 'schedule' && github.repository == 'scala/scala3' | |
|| github.event_name == 'push' | |
|| ( | |
github.event_name == 'pull_request' | |
&& !contains(github.event.pull_request.body, '[skip ci]') | |
&& !contains(github.event.pull_request.body, '[skip test_sbt]') | |
) | |
|| ( | |
github.event_name == 'workflow_dispatch' | |
&& github.repository == 'scala/scala3' | |
)" | |
steps: | |
- name: Set JDK 17 as default | |
run: echo "/usr/lib/jvm/java-17-openjdk-amd64/bin" >> $GITHUB_PATH | |
- name: Reset existing repo | |
run: | | |
git config --global --add safe.directory /__w/scala3/scala3 | |
git -c "http.https://github.com/.extraheader=" fetch --recurse-submodules=no "https://github.com/scala/scala3" && git reset --hard FETCH_HEAD || true | |
- name: Checkout cleanup script | |
uses: actions/checkout@v4 | |
- name: Cleanup | |
run: .github/workflows/cleanup.sh | |
- name: Git Checkout | |
uses: actions/checkout@v4 | |
- name: Add SBT proxy repositories | |
run: cp -vf .github/workflows/repositories /root/.sbt/ ; true | |
- name: Test sbt | |
run: ./project/scripts/sbt "sbt-test/scripted; sbt-community-build/scripted" | |
test_java8: | |
runs-on: [self-hosted, Linux] | |
container: | |
image: lampepfl/dotty:2023-11-07 | |
options: --cpu-shares 4096 | |
volumes: | |
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt | |
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache | |
- ${{ github.workspace }}/../../cache/general:/root/.cache | |
if: "github.event_name == 'schedule' && github.repository == 'scala/scala3' | |
|| ( | |
github.event_name == 'push' | |
&& startsWith(github.event.ref, 'refs/tags/') | |
) | |
|| ( | |
github.event_name == 'pull_request' | |
&& !contains(github.event.pull_request.body, '[skip ci]') | |
&& contains(github.event.pull_request.body, '[test_java8]') | |
) | |
|| ( | |
github.event_name == 'workflow_dispatch' | |
&& github.repository == 'scala/scala3' | |
)" | |
steps: | |
#################################################################################### | |
## WARNING: DO NOT CHANGE THE JAVA VERSION HERE. THIS TEST IS SPECIFIC FOR JAVA 8 ## | |
#################################################################################### | |
- name: Set JDK 8 as default | |
run: echo "/usr/lib/jvm/java-8-openjdk-amd64/bin" >> $GITHUB_PATH | |
- name: Reset existing repo | |
run: | | |
git config --global --add safe.directory /__w/scala3/scala3 | |
git -c "http.https://github.com/.extraheader=" fetch --recurse-submodules=no "https://github.com/scala/scala3" && git reset --hard FETCH_HEAD || true | |
- name: Checkout cleanup script | |
uses: actions/checkout@v4 | |
- name: Cleanup | |
run: .github/workflows/cleanup.sh | |
- name: Git Checkout | |
uses: actions/checkout@v4 | |
- name: Add SBT proxy repositories | |
run: cp -vf .github/workflows/repositories /root/.sbt/ ; true | |
- name: Test | |
run: | | |
./project/scripts/buildScalaBinary | |
./project/scripts/sbt ";scala3-bootstrapped/compile ;scala3-bootstrapped/test ;sbt-test/scripted scala2-compat/*" | |
./project/scripts/cmdTests | |
./project/scripts/bootstrappedOnlyCmdTests | |
- name: Scala.js Test | |
run: | | |
./project/scripts/sbt ";sjsSandbox/run ;sjsSandbox/test ;sjsJUnitTests/test ;set sjsJUnitTests/scalaJSLinkerConfig ~= switchToESModules ;sjsJUnitTests/test ;sjsCompilerTests/test" | |
publish_nightly: | |
runs-on: [self-hosted, Linux] | |
container: | |
image: lampepfl/dotty:2023-11-07 | |
options: --cpu-shares 4096 | |
volumes: | |
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt | |
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache | |
- ${{ github.workspace }}/../../cache/general:/root/.cache | |
strategy: | |
matrix: | |
branch: [main, lts-3.3] | |
needs: [test_non_bootstrapped, test, mima, community_build_a, community_build_b, community_build_c, test_sbt, test_java8] | |
if: "(github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && github.repository == 'scala/scala3'" | |
env: | |
NIGHTLYBUILD: yes | |
PGP_PW: ${{ secrets.PGP_PW }} # PGP passphrase | |
PGP_SECRET: ${{ secrets.PGP_SECRET }} # Export your private and public PGP key to an *.asc file, take the file's contents as a string | |
SONATYPE_PW: ${{ secrets.SONATYPE_PW_ORGSCALALANG }} | |
SONATYPE_USER: ${{ secrets.SONATYPE_USER_ORGSCALALANG }} | |
steps: | |
###################################################################################### | |
## WARNING: DO NOT CHANGE THE JAVA VERSION HERE. SCALA IS DISTRIBUTED USING JAVA 8. ## | |
###################################################################################### | |
- name: Set JDK 8 as default | |
run: echo "/usr/lib/jvm/java-8-openjdk-amd64/bin" >> $GITHUB_PATH | |
- name: Reset existing repo | |
run: | | |
git config --global --add safe.directory /__w/scala3/scala3 | |
git -c "http.https://github.com/.extraheader=" fetch --recurse-submodules=no "https://github.com/scala/scala3" && git reset --hard FETCH_HEAD || true | |
- name: Checkout cleanup script | |
uses: actions/checkout@v4 | |
- name: Cleanup | |
run: .github/workflows/cleanup.sh | |
- name: Git Checkout | |
uses: actions/checkout@v4 | |
with: | |
ref: ${{ matrix.branch }} | |
- name: Add SBT proxy repositories | |
run: cp -vf .github/workflows/repositories /root/.sbt/ ; true | |
- name: Get version string for this build | |
run: | | |
ver=$(./project/scripts/sbt "print scala3-compiler-bootstrapped/version" | tail -n1) | |
echo "This build version: $ver" | |
echo "THISBUILD_VERSION=$ver" >> $GITHUB_ENV | |
- name: Check whether not yet published | |
id: not_yet_published | |
continue-on-error: true | |
run: | | |
! ./project/scripts/is-version-published.sh "$THISBUILD_VERSION" | |
- name: Publish Nightly | |
if: "steps.not_yet_published.outcome == 'success'" | |
run: | | |
./project/scripts/sbtPublish ";project scala3-bootstrapped ;publishSigned ;sonatypeBundleRelease" | |
nightly_documentation: | |
runs-on: [self-hosted, Linux] | |
container: | |
image: lampepfl/dotty:2023-11-07 | |
options: --cpu-shares 4096 | |
volumes: | |
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt | |
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache | |
- ${{ github.workspace }}/../../cache/general:/root/.cache | |
needs: [publish_nightly] | |
if: "(github.event_name == 'schedule' || github.event_name == 'workflow_dispatch') && github.repository == 'scala/scala3'" | |
env: | |
NIGHTLYBUILD: yes | |
steps: | |
- name: Reset existing repo | |
run: | | |
git config --global --add safe.directory /__w/scala3/scala3 | |
git -c "http.https://github.com/.extraheader=" fetch --recurse-submodules=no "https://github.com/scala/scala3" && git reset --hard FETCH_HEAD || true | |
- name: Checkout cleanup script | |
uses: actions/checkout@v4 | |
- name: Cleanup | |
run: .github/workflows/cleanup.sh | |
- name: Git Checkout | |
uses: actions/checkout@v4 | |
- name: Add SBT proxy repositories | |
run: cp -vf .github/workflows/repositories /root/.sbt/ ; true | |
- name: Generate Website | |
run: | | |
git config --global --add safe.directory /__w/scala3/scala3 | |
./project/scripts/genDocs -doc-snapshot | |
- name: Deploy Website to https://dotty.epfl.ch | |
uses: peaceiris/actions-gh-pages@v4 | |
with: | |
personal_token: ${{ secrets.DOTTYBOT_TOKEN }} | |
publish_dir: docs/_site | |
external_repository: scala/dotty.epfl.ch | |
publish_branch: main | |
publish_release: | |
permissions: | |
contents: write # for actions/create-release to create a release | |
runs-on: [self-hosted, Linux] | |
container: | |
image: lampepfl/dotty:2023-11-07 | |
options: --cpu-shares 4096 | |
volumes: | |
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt | |
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache | |
- ${{ github.workspace }}/../../cache/general:/root/.cache | |
needs: [test_non_bootstrapped, test, mima, community_build_a, community_build_b, community_build_c, test_sbt, test_java8] | |
if: "github.event_name == 'push' | |
&& startsWith(github.event.ref, 'refs/tags/')" | |
env: | |
RELEASEBUILD: yes | |
PGP_PW: ${{ secrets.PGP_PW }} # PGP passphrase | |
PGP_SECRET: ${{ secrets.PGP_SECRET }} # Export your private and public PGP key to an *.asc file, take the file's contents as a string | |
SONATYPE_PW: ${{ secrets.SONATYPE_PW_ORGSCALALANG }} | |
SONATYPE_USER: ${{ secrets.SONATYPE_USER_ORGSCALALANG }} | |
steps: | |
###################################################################################### | |
## WARNING: DO NOT CHANGE THE JAVA VERSION HERE. SCALA IS DISTRIBUTED USING JAVA 8. ## | |
###################################################################################### | |
- name: Set JDK 8 as default | |
run: echo "/usr/lib/jvm/java-8-openjdk-amd64/bin" >> $GITHUB_PATH | |
- name: Reset existing repo | |
run: | | |
git config --global --add safe.directory /__w/scala3/scala3 | |
git -c "http.https://github.com/.extraheader=" fetch --recurse-submodules=no "https://github.com/scala/scala3" && git reset --hard FETCH_HEAD || true | |
- name: Checkout cleanup script | |
uses: actions/checkout@v4 | |
- name: Cleanup | |
run: .github/workflows/cleanup.sh | |
- name: Git Checkout | |
uses: actions/checkout@v4 | |
- name: Add SBT proxy repositories | |
run: cp -vf .github/workflows/repositories /root/.sbt/ ; true | |
# Extract the release tag | |
- name: Extract the release tag | |
run : echo "RELEASE_TAG=${GITHUB_REF#*refs/tags/}" >> $GITHUB_ENV | |
# BUILD THE SDKs | |
- name: Build and pack the SDK (universal) | |
run : | | |
./project/scripts/sbt dist/packArchive | |
sha256sum dist/target/scala3-* > dist/target/sha256sum.txt | |
- name: Build and pack the SDK (linux x86-64) | |
run : | | |
./project/scripts/sbt dist-linux-x86_64/packArchive | |
sha256sum dist/linux-x86_64/target/scala3-* > dist/linux-x86_64/target/sha256sum.txt | |
- name: Build and pack the SDK (linux aarch64) | |
run : | | |
./project/scripts/sbt dist-linux-aarch64/packArchive | |
sha256sum dist/linux-aarch64/target/scala3-* > dist/linux-aarch64/target/sha256sum.txt | |
- name: Build and pack the SDK (mac x86-64) | |
run : | | |
./project/scripts/sbt dist-mac-x86_64/packArchive | |
sha256sum dist/mac-x86_64/target/scala3-* > dist/mac-x86_64/target/sha256sum.txt | |
- name: Build and pack the SDK (mac aarch64) | |
run : | | |
./project/scripts/sbt dist-mac-aarch64/packArchive | |
sha256sum dist/mac-aarch64/target/scala3-* > dist/mac-aarch64/target/sha256sum.txt | |
- name: Build and pack the SDK (win x86-64) | |
run : | | |
./project/scripts/sbt dist-win-x86_64/packArchive | |
sha256sum dist/win-x86_64/target/scala3-* > dist/win-x86_64/target/sha256sum.txt | |
# Create the GitHub release | |
- name: Create GitHub Release | |
id: create_gh_release | |
uses: actions/create-release@latest | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token | |
with: | |
tag_name: ${{ github.ref }} | |
release_name: ${{ github.ref }} | |
body_path: ./changelogs/${{ env.RELEASE_TAG }}.md | |
draft: true | |
prerelease: ${{ contains(env.RELEASE_TAG, '-') }} | |
- name: Upload zip archive to GitHub Release (universal) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./dist/target/scala3-${{ env.RELEASE_TAG }}.zip | |
asset_name: scala3-${{ env.RELEASE_TAG }}.zip | |
asset_content_type: application/zip | |
- name: Upload tar.gz archive to GitHub Release (universal) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./dist/target/scala3-${{ env.RELEASE_TAG }}.tar.gz | |
asset_name: scala3-${{ env.RELEASE_TAG }}.tar.gz | |
asset_content_type: application/gzip | |
- name: Upload zip archive to GitHub Release (linux x86-64) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./dist/linux-x86_64/target/scala3-${{ env.RELEASE_TAG }}-x86_64-pc-linux.zip | |
asset_name: scala3-${{ env.RELEASE_TAG }}-x86_64-pc-linux.zip | |
asset_content_type: application/zip | |
- name: Upload tar.gz archive to GitHub Release (linux x86-64) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./dist/linux-x86_64/target/scala3-${{ env.RELEASE_TAG }}-x86_64-pc-linux.tar.gz | |
asset_name: scala3-${{ env.RELEASE_TAG }}-x86_64-pc-linux.tar.gz | |
asset_content_type: application/gzip | |
- name: Upload zip archive to GitHub Release (linux aarch64) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./dist/linux-aarch64/target/scala3-${{ env.RELEASE_TAG }}-aarch64-pc-linux.zip | |
asset_name: scala3-${{ env.RELEASE_TAG }}-aarch64-pc-linux.zip | |
asset_content_type: application/zip | |
- name: Upload tar.gz archive to GitHub Release (linux aarch64) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./dist/linux-aarch64/target/scala3-${{ env.RELEASE_TAG }}-aarch64-pc-linux.tar.gz | |
asset_name: scala3-${{ env.RELEASE_TAG }}-aarch64-pc-linux.tar.gz | |
asset_content_type: application/gzip | |
- name: Upload zip archive to GitHub Release (mac x86-64) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./dist/mac-x86_64/target/scala3-${{ env.RELEASE_TAG }}-x86_64-apple-darwin.zip | |
asset_name: scala3-${{ env.RELEASE_TAG }}-x86_64-apple-darwin.zip | |
asset_content_type: application/zip | |
- name: Upload tar.gz archive to GitHub Release (mac x86-64) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./dist/mac-x86_64/target/scala3-${{ env.RELEASE_TAG }}-x86_64-apple-darwin.tar.gz | |
asset_name: scala3-${{ env.RELEASE_TAG }}-x86_64-apple-darwin.tar.gz | |
asset_content_type: application/gzip | |
- name: Upload zip archive to GitHub Release (mac aarch64) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./dist/mac-aarch64/target/scala3-${{ env.RELEASE_TAG }}-aarch64-apple-darwin.zip | |
asset_name: scala3-${{ env.RELEASE_TAG }}-aarch64-apple-darwin.zip | |
asset_content_type: application/zip | |
- name: Upload tar.gz archive to GitHub Release (mac aarch64) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./dist/mac-aarch64/target/scala3-${{ env.RELEASE_TAG }}-aarch64-apple-darwin.tar.gz | |
asset_name: scala3-${{ env.RELEASE_TAG }}-aarch64-apple-darwin.tar.gz | |
asset_content_type: application/gzip | |
- name: Upload zip archive to GitHub Release (win x86-64) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./dist/win-x86_64/target/scala3-${{ env.RELEASE_TAG }}-x86_64-pc-win32.zip | |
asset_name: scala3-${{ env.RELEASE_TAG }}-x86_64-pc-win32.zip | |
asset_content_type: application/zip | |
- name: Upload tar.gz archive to GitHub Release (win x86-64) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./dist/win-x86_64/target/scala3-${{ env.RELEASE_TAG }}-x86_64-pc-win32.tar.gz | |
asset_name: scala3-${{ env.RELEASE_TAG }}-x86_64-pc-win32.tar.gz | |
asset_content_type: application/gzip | |
- name: Upload SHA256 sum of the release artefacts to GitHub Release (universal) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./dist/target/sha256sum.txt | |
asset_name: sha256sum.txt | |
asset_content_type: text/plain | |
- name: Upload SHA256 sum of the release artefacts to GitHub Release (linux x86-64) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./dist/linux-x86_64/target/sha256sum.txt | |
asset_name: sha256sum-x86_64-pc-linux.txt | |
asset_content_type: text/plain | |
- name: Upload SHA256 sum of the release artefacts to GitHub Release (linux aarch64) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./dist/linux-aarch64/target/sha256sum.txt | |
asset_name: sha256sum-aarch64-pc-linux.txt | |
asset_content_type: text/plain | |
- name: Upload SHA256 sum of the release artefacts to GitHub Release (mac x86-64) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./dist/mac-x86_64/target/sha256sum.txt | |
asset_name: sha256sum-x86_64-apple-darwin.txt | |
asset_content_type: text/plain | |
- name: Upload SHA256 sum of the release artefacts to GitHub Release (mac aarch64) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./dist/mac-aarch64/target/sha256sum.txt | |
asset_name: sha256sum-aarch64-apple-darwin.txt | |
asset_content_type: text/plain | |
- name: Upload SHA256 sum of the release artefacts to GitHub Release (win x86-64) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./dist/win-x86_64/target/sha256sum.txt | |
asset_name: sha256sum-x86_64-pc-win32.txt | |
asset_content_type: text/plain | |
- name: Publish Release | |
run: ./project/scripts/sbtPublish ";project scala3-bootstrapped ;publishSigned ;sonatypeBundleRelease" | |
open_issue_on_failure: | |
runs-on: [self-hosted, Linux] | |
container: | |
image: lampepfl/dotty:2023-11-07 | |
needs: [nightly_documentation, test_windows_full] | |
# The `failure()` expression is true iff at least one of the dependencies | |
# of this job (including transitive dependencies) has failed. | |
if: "failure() && github.event_name == 'schedule'" | |
steps: | |
- name: Checkout issue template | |
uses: actions/checkout@v4 | |
- name: Open an issue | |
uses: JasonEtco/create-an-issue@v2 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
WORKFLOW_RUN_URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} | |
with: | |
filename: .github/workflows/issue_nightly_failed.md | |
build-msi-package: | |
uses: ./.github/workflows/build-msi.yml | |
if : github.event_name == 'pull_request' && contains(github.event.pull_request.body, '[test_msi]') | |
# TODO: ADD A JOB THAT DEPENDS ON THIS TO TEST THE MSI | |
build-sdk-package: | |
uses: ./.github/workflows/build-sdk.yml | |
if: | |
(github.event_name == 'pull_request' && !contains(github.event.pull_request.body, '[skip ci]')) || | |
(github.event_name == 'workflow_dispatch' && github.repository == 'scala/scala3') || | |
(github.event_name == 'schedule' && github.repository == 'scala/scala3') || | |
github.event_name == 'push' || | |
github.event_name == 'merge_group' | |
with: | |
java-version: 8 | |
build-chocolatey-package: | |
uses: ./.github/workflows/build-chocolatey.yml | |
needs: [ build-sdk-package ] | |
with: | |
version: 3.6.0-local # TODO: FIX THIS | |
url : https://api.github.com/repos/scala/scala3/actions/artifacts/${{ needs.build-sdk-package.outputs.win-x86_64-id }}/zip | |
digest : ${{ needs.build-sdk-package.outputs.win-x86_64-digest }} | |
test-chocolatey-package: | |
uses: ./.github/workflows/test-chocolatey.yml | |
with: | |
version : 3.6.0-local # TODO: FIX THIS | |
java-version: 8 | |
if: github.event_name == 'pull_request' && contains(github.event.pull_request.body, '[test_chocolatey]') | |
needs: [ build-chocolatey-package ] |