Make context bounds for poly functions a standard feature (#22019) #33373
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: | |
# Cancels any in-progress runs within the same group identified by workflow name and GH reference (branch or tag) | |
# For example it would: | |
# - terminate previous PR CI execution after pushing more changes to the same PR branch | |
# - terminate previous on-push CI run after merging new PR to main | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} | |
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:2024-10-18 | |
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:2024-10-18 | |
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:2024-10-18 | |
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; scala3-presentation-compiler/test; scala3-language-server/test" | |
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:2024-10-18 | |
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:2024-10-18 | |
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:2024-10-18 | |
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:2024-10-18 | |
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:2024-10-18 | |
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:2024-10-18 | |
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:2024-10-18 | |
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 is version matching pattern | |
shell: bash | |
run: | | |
if ! grep -Eo "3\.[0-9]+\.[0-9]+-RC[0-9]+-bin-[0-9]{8}-[a-zA-Z0-9]{7}-NIGHTLY" <<< "${{ env.THISBUILD_VERSION }}"; then | |
echo "Version used by compiler to publish nightly release does not match expected pattern" | |
exit 1 | |
fi | |
- 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:2024-10-18 | |
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:2024-10-18 | |
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, build-sdk-package, build-msi-package] | |
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 | |
- name: Check compiler version | |
shell: bash | |
run : | | |
version=$(./project/scripts/sbt "print scala3-compiler-bootstrapped/version" | tail -n1) | |
echo "This build version: ${version}" | |
if [ "${version}" != "${{ env.RELEASE_TAG }}" ]; then | |
echo "Compiler version for this build '${version}', does not match tag: ${{ env.RELEASE_TAG }}" | |
exit 1 | |
fi | |
- name: Prepare the SDKs | |
shell: bash | |
run : | | |
prepareSDK() { | |
distroSuffix="$1" | |
sbtProject="$2" | |
distDir="$3" | |
# Build binaries | |
./project/scripts/sbt "${sbtProject}/Universal/stage" | |
outputPath="${distDir}/target/universal/stage" | |
artifactName="scala3-${{ env.RELEASE_TAG }}${distroSuffix}" | |
zipArchive="${artifactName}.zip" | |
tarGzArchive="${artifactName}.tar.gz" | |
cwd=$(pwd) | |
(cd $outputPath && zip -r ${zipArchive} . && mv ${zipArchive} "${cwd}/") | |
tar -czf ${tarGzArchive} -C "$outputPath" . | |
# Caluclate SHA for each of archive files | |
for file in "${zipArchive}" "${tarGzArchive}"; do | |
sha256sum "${file}" > "${file}.sha256" | |
done | |
} | |
prepareSDK "" "dist" "./dist/" | |
prepareSDK "-aarch64-pc-linux" "dist-linux-aarch64" "./dist/linux-aarch64/" | |
prepareSDK "-x86_64-pc-linux" "dist-linux-x86_64" "./dist/linux-x86_64/" | |
prepareSDK "-aarch64-apple-darwin" "dist-mac-aarch64" "./dist/mac-aarch64/" | |
prepareSDK "-x86_64-apple-darwin" "dist-mac-x86_64" "./dist/mac-x86_64/" | |
prepareSDK "-x86_64-pc-win32" "dist-win-x86_64" "./dist/win-x86_64/" | |
- name: Download MSI package | |
uses: actions/download-artifact@v4 | |
with: | |
name: scala.msi | |
path: . | |
- name: Prepare MSI package | |
shell: bash | |
run: | | |
msiInstaller="scala3-${{ env.RELEASE_TAG }}.msi" | |
mv scala.msi "${msiInstaller}" | |
sha256sum "${msiInstaller}" > "${msiInstaller}.sha256" | |
# 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, '-') }} | |
# The following upload steps are generated using template: | |
# val baseFileName = "scala3-${{ env.RELEASE_TAG }}" | |
# def upload(kind: String, path: String, contentType: String, distribution: String) = | |
# s"""- name: Upload $kind to GitHub Release ($distribution) | |
# uses: actions/upload-release-asset@v1 | |
# env: | |
# GITHUB_TOKEN: $${{ secrets.GITHUB_TOKEN }} | |
# with: | |
# upload_url: $${{ steps.create_gh_release.outputs.upload_url }} | |
# asset_path: ./${path} | |
# asset_name: ${path} | |
# asset_content_type: ${contentType}""" | |
# def uploadSDK(distribution: String, suffix: String) = | |
# val filename = s"${baseFileName}${suffix}" | |
# s""" | |
# # $distribution | |
# ${upload("zip archive", s"$filename.zip", "application/zip", distribution)} | |
# ${upload("zip archive SHA", s"$filename.zip.sha256", "text/plain", distribution)} | |
# ${upload("tar.gz archive", s"$filename.tar.gz", "application/gzip", distribution)} | |
# ${upload("tar.gz archive SHA", s"$filename.tar.gz.sha256", "text/plain", distribution)} | |
# """ | |
# def uploadMSI() = | |
# val distribution = "Windows x86_64 MSI" | |
# s""" | |
# # $distribution | |
# ${upload(".msi file", s"${baseFileName}.msi", "application/x-msi", distribution)} | |
# ${upload(".msi file SHA", s"${baseFileName}.msi.sha256", "text/plain", distribution)} | |
# """ | |
# @main def gen = | |
# Seq( | |
# uploadSDK("Universal", ""), | |
# uploadSDK("Linux x86-64", "-x86_64-pc-linux"), | |
# uploadSDK("Linux aarch64", "-aarch64-pc-linux"), | |
# uploadSDK("Mac x86-64", "-x86_64-apple-darwin"), | |
# uploadSDK("Mac aarch64", "-aarch64-apple-darwin"), | |
# uploadSDK("Windows x86_64", "-x86_64-pc-win32"), | |
# uploadMSI() | |
# ).foreach(println) | |
# Universal | |
- 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: ./scala3-${{ env.RELEASE_TAG }}.zip | |
asset_name: scala3-${{ env.RELEASE_TAG }}.zip | |
asset_content_type: application/zip | |
- name: Upload zip archive SHA 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: ./scala3-${{ env.RELEASE_TAG }}.zip.sha256 | |
asset_name: scala3-${{ env.RELEASE_TAG }}.zip.sha256 | |
asset_content_type: text/plain | |
- 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: ./scala3-${{ env.RELEASE_TAG }}.tar.gz | |
asset_name: scala3-${{ env.RELEASE_TAG }}.tar.gz | |
asset_content_type: application/gzip | |
- name: Upload tar.gz archive SHA 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: ./scala3-${{ env.RELEASE_TAG }}.tar.gz.sha256 | |
asset_name: scala3-${{ env.RELEASE_TAG }}.tar.gz.sha256 | |
asset_content_type: text/plain | |
# Linux x86-64 | |
- 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: ./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 zip archive SHA 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: ./scala3-${{ env.RELEASE_TAG }}-x86_64-pc-linux.zip.sha256 | |
asset_name: scala3-${{ env.RELEASE_TAG }}-x86_64-pc-linux.zip.sha256 | |
asset_content_type: text/plain | |
- 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: ./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 tar.gz archive SHA 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: ./scala3-${{ env.RELEASE_TAG }}-x86_64-pc-linux.tar.gz.sha256 | |
asset_name: scala3-${{ env.RELEASE_TAG }}-x86_64-pc-linux.tar.gz.sha256 | |
asset_content_type: text/plain | |
# Linux aarch64 | |
- 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: ./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 zip archive SHA 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: ./scala3-${{ env.RELEASE_TAG }}-aarch64-pc-linux.zip.sha256 | |
asset_name: scala3-${{ env.RELEASE_TAG }}-aarch64-pc-linux.zip.sha256 | |
asset_content_type: text/plain | |
- 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: ./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 tar.gz archive SHA 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: ./scala3-${{ env.RELEASE_TAG }}-aarch64-pc-linux.tar.gz.sha256 | |
asset_name: scala3-${{ env.RELEASE_TAG }}-aarch64-pc-linux.tar.gz.sha256 | |
asset_content_type: text/plain | |
# Mac x86-64 | |
- 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: ./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 zip archive SHA 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: ./scala3-${{ env.RELEASE_TAG }}-x86_64-apple-darwin.zip.sha256 | |
asset_name: scala3-${{ env.RELEASE_TAG }}-x86_64-apple-darwin.zip.sha256 | |
asset_content_type: text/plain | |
- 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: ./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 tar.gz archive SHA 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: ./scala3-${{ env.RELEASE_TAG }}-x86_64-apple-darwin.tar.gz.sha256 | |
asset_name: scala3-${{ env.RELEASE_TAG }}-x86_64-apple-darwin.tar.gz.sha256 | |
asset_content_type: text/plain | |
# Mac aarch64 | |
- 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: ./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 zip archive SHA 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: ./scala3-${{ env.RELEASE_TAG }}-aarch64-apple-darwin.zip.sha256 | |
asset_name: scala3-${{ env.RELEASE_TAG }}-aarch64-apple-darwin.zip.sha256 | |
asset_content_type: text/plain | |
- 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: ./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 tar.gz archive SHA 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: ./scala3-${{ env.RELEASE_TAG }}-aarch64-apple-darwin.tar.gz.sha256 | |
asset_name: scala3-${{ env.RELEASE_TAG }}-aarch64-apple-darwin.tar.gz.sha256 | |
asset_content_type: text/plain | |
# Windows x86_64 | |
- name: Upload zip archive to GitHub Release (Windows 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: ./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 zip archive SHA to GitHub Release (Windows 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: ./scala3-${{ env.RELEASE_TAG }}-x86_64-pc-win32.zip.sha256 | |
asset_name: scala3-${{ env.RELEASE_TAG }}-x86_64-pc-win32.zip.sha256 | |
asset_content_type: text/plain | |
- name: Upload tar.gz archive to GitHub Release (Windows 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: ./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 tar.gz archive SHA to GitHub Release (Windows 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: ./scala3-${{ env.RELEASE_TAG }}-x86_64-pc-win32.tar.gz.sha256 | |
asset_name: scala3-${{ env.RELEASE_TAG }}-x86_64-pc-win32.tar.gz.sha256 | |
asset_content_type: text/plain | |
# Windows x86_64 MSI | |
- name: Upload .msi file to GitHub Release (Windows x86_64 MSI) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./scala3-${{ env.RELEASE_TAG }}.msi | |
asset_name: scala3-${{ env.RELEASE_TAG }}.msi | |
asset_content_type: application/x-msi | |
- name: Upload .msi file SHA to GitHub Release (Windows x86_64 MSI) | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_gh_release.outputs.upload_url }} | |
asset_path: ./scala3-${{ env.RELEASE_TAG }}.msi.sha256 | |
asset_name: scala3-${{ env.RELEASE_TAG }}.msi.sha256 | |
asset_content_type: text/plain | |
- name: Publish Release | |
run: ./project/scripts/sbtPublish ";project scala3-bootstrapped ;publishSigned ;sonatypeBundleUpload" | |
open_issue_on_failure: | |
runs-on: [self-hosted, Linux] | |
container: | |
image: lampepfl/dotty:2024-10-18 | |
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]')) || | |
(github.event_name == 'push' && startsWith(github.event.ref, 'refs/tags/')) | |
test-msi-package: | |
uses: ./.github/workflows/test-msi.yml | |
needs: [build-msi-package] | |
with: | |
# Ensure that version starts with prefix 3. | |
# In the future it can be adapted to compare with git tag or version set in the project/Build.scala | |
version: "3." | |
java-version: 8 | |
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 ] |