Skip to content

Update Scala to 3.4.0 #8440

Update Scala to 3.4.0

Update Scala to 3.4.0 #8440

Workflow file for this run

name: CI
on:
push:
branches:
- main
tags:
- "v*"
pull_request:
workflow_dispatch:
concurrency:
group: ${{ github.ref }}
cancel-in-progress: ${{ github.ref != 'refs/heads/main' }}
jobs:
unit-tests:
timeout-minutes: 120
runs-on: "ubuntu-20.04"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- name: Copy launcher
run: ./mill -i copyJvmLauncher artifacts/
if: runner.os == 'Linux'
- name: Copy bootstrapped launcher
run: ./mill -i copyJvmBootstrappedLauncher artifacts/
if: runner.os == 'Linux'
- uses: actions/upload-artifact@v3
if: runner.os == 'Linux'
with:
name: launchers
path: artifacts/
if-no-files-found: error
retention-days: 2
- name: Compile everything
run: ./mill -i __.compile
- name: Unit tests
run: ./mill -i unitTests
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: .github/scripts/generate-junit-reports.sc unit-tests 'Scala CLI Unit Tests' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-unit-tests
path: test-report.xml
jvm-tests-1:
timeout-minutes: 120
runs-on: "ubuntu-20.04"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- name: JVM integration tests
run: ./mill -i integration.test.jvm
env:
SCALA_CLI_IT_GROUP: 1
- name: Fat jar integration test
if: success() || failure()
run: ./mill integration.test.jvmBootstrapped 'scala.cli.integration.StandaloneLauncherTests.*'
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: .github/scripts/generate-junit-reports.sc jvm-tests-1 'Scala CLI JVM Tests (1)' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-jvm-tests-1
path: test-report.xml
jvm-tests-2:
timeout-minutes: 120
runs-on: "ubuntu-20.04"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- name: JVM integration tests
run: ./mill -i integration.test.jvm
env:
SCALA_CLI_IT_GROUP: 2
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: .github/scripts/generate-junit-reports.sc jvm-tests-2 'Scala CLI JVM Tests (2)' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-jvm-tests-2
path: test-report.xml
jvm-tests-3:
timeout-minutes: 120
runs-on: "ubuntu-20.04"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- name: JVM integration tests
run: ./mill -i integration.test.jvm
env:
SCALA_CLI_IT_GROUP: 3
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: .github/scripts/generate-junit-reports.sc jvm-tests-3 'Scala CLI JVM Tests (3)' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-jvm-tests-3
path: test-report.xml
generate-linux-launcher:
timeout-minutes: 120
runs-on: "ubuntu-20.04"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- name: Generate native launcher
run: .github/scripts/generate-native-image.sh
- run: ./mill -i ci.setShouldPublish
- name: Build OS packages
if: env.SHOULD_PUBLISH == 'true'
run: .github/scripts/generate-os-packages.sh
- name: Copy artifacts
run: ./mill -i copyDefaultLauncher artifacts/
- uses: actions/upload-artifact@v3
with:
name: linux-launchers
path: artifacts/
if-no-files-found: error
retention-days: 2
native-linux-tests-1:
needs: generate-linux-launcher
timeout-minutes: 120
runs-on: "ubuntu-20.04"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- uses: actions/download-artifact@v3
with:
name: linux-launchers
path: artifacts/
- name: Native integration tests
run: ./mill -i nativeIntegrationTests
env:
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
SCALA_CLI_IT_GROUP: 1
SCALA_CLI_SODIUM_JNI_ALLOW: false
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: .github/scripts/generate-junit-reports.sc linux-tests-1 'Scala CLI Linux Tests (1)' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-linux-tests-1
path: test-report.xml
native-linux-tests-2:
needs: generate-linux-launcher
timeout-minutes: 120
runs-on: "ubuntu-20.04"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- uses: actions/download-artifact@v3
with:
name: linux-launchers
path: artifacts/
- name: Native integration tests
run: ./mill -i nativeIntegrationTests
env:
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
SCALA_CLI_IT_GROUP: 2
SCALA_CLI_SODIUM_JNI_ALLOW: false
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: .github/scripts/generate-junit-reports.sc linux-tests-2 'Scala CLI Linux Tests (2)' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-linux-tests-2
path: test-report.xml
native-linux-tests-3:
needs: generate-linux-launcher
timeout-minutes: 120
runs-on: "ubuntu-20.04"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- uses: actions/download-artifact@v3
with:
name: linux-launchers
path: artifacts/
- name: Native integration tests
run: ./mill -i nativeIntegrationTests
env:
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
SCALA_CLI_IT_GROUP: 3
SCALA_CLI_SODIUM_JNI_ALLOW: false
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: .github/scripts/generate-junit-reports.sc linux-tests-3 'Scala CLI Linux Tests (3)' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-linux-tests-3
path: test-report.xml
generate-linux-arm64-native-launcher:
runs-on: "macOS-m1"
if: github.event_name == 'push'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
apps: ""
- name: Generate native launcher and generate os packages
run: .github/scripts/build-linux-aarch64.sh
env:
DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }}
DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }}
- uses: actions/upload-artifact@v3
with:
name: linux-aarch64-launchers
path: artifacts/
if-no-files-found: error
retention-days: 2
generate-macos-launcher:
timeout-minutes: 120
runs-on: "macOS-13"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- name: Generate native launcher
run: .github/scripts/generate-native-image.sh
- run: ./mill -i ci.setShouldPublish
- name: Build OS packages
if: env.SHOULD_PUBLISH == 'true'
run: .github/scripts/generate-os-packages.sh
- name: Copy artifacts
run: ./mill -i copyDefaultLauncher artifacts/
- uses: actions/upload-artifact@v3
with:
name: macos-launchers
path: artifacts/
if-no-files-found: error
retention-days: 2
native-macos-tests-1:
needs: generate-macos-launcher
timeout-minutes: 120
runs-on: "macOS-13"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- uses: actions/download-artifact@v3
with:
name: macos-launchers
path: artifacts/
- name: Native integration tests
run: ./mill -i nativeIntegrationTests
env:
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
SCALA_CLI_IT_GROUP: 1
SCALA_CLI_SODIUM_JNI_ALLOW: false
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: .github/scripts/generate-junit-reports.sc macos-tests-1 'Scala CLI MacOS Tests (1)' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-macos-tests-1
path: test-report.xml
native-macos-tests-2:
needs: generate-macos-launcher
timeout-minutes: 120
runs-on: "macOS-13"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- uses: actions/download-artifact@v3
with:
name: macos-launchers
path: artifacts/
- name: Native integration tests
run: ./mill -i nativeIntegrationTests
env:
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
SCALA_CLI_IT_GROUP: 2
SCALA_CLI_SODIUM_JNI_ALLOW: false
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: .github/scripts/generate-junit-reports.sc macos-tests-2 'Scala CLI MacOS Tests (2)' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-macos-tests-2
path: test-report.xml
native-macos-tests-3:
needs: generate-macos-launcher
timeout-minutes: 120
runs-on: "macOS-13"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- uses: actions/download-artifact@v3
with:
name: macos-launchers
path: artifacts/
- name: Native integration tests
run: ./mill -i nativeIntegrationTests
env:
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
SCALA_CLI_IT_GROUP: 3
SCALA_CLI_SODIUM_JNI_ALLOW: false
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: .github/scripts/generate-junit-reports.sc macos-tests-3 'Scala CLI MacOS Tests (3)' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-macos-tests-3
path: test-report.xml
generate-macos-m1-launcher:
timeout-minutes: 120
runs-on: "macOS-m1"
if: github.event_name == 'push' && github.repository == 'VirtusLab/scala-cli'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: coursier/setup-action@7bde40eee928896f074dbb76d22dd772eed5c65f
with:
apps: ""
jvm: "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.2.0/graalvm-ce-java17-darwin-aarch64-22.2.0.tar.gz"
- name: Generate native launcher
run: .github/scripts/generate-native-image.sh
- run: ./mill -i ci.setShouldPublish
- name: Build OS packages
if: env.SHOULD_PUBLISH == 'true'
run: .github/scripts/generate-os-packages.sh
- name: Copy artifacts
run: ./mill -i copyDefaultLauncher artifacts/
- uses: actions/upload-artifact@v3
with:
name: macos-m1-launchers
path: artifacts/
if-no-files-found: error
retention-days: 2
native-macos-m1-tests:
needs: generate-macos-m1-launcher
timeout-minutes: 120
runs-on: "macOS-m1"
if: github.event_name == 'push' && github.repository == 'VirtusLab/scala-cli'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
env:
COURSIER_BIN_DIR: ${{ github.workspace }}/cs/bin # necessary for our M1 runner setup
with:
jvm: "https://github.com/graalvm/graalvm-ce-builds/releases/download/vm-22.2.0/graalvm-ce-java17-darwin-aarch64-22.2.0.tar.gz"
- uses: actions/download-artifact@v3
with:
name: macos-m1-launchers
path: artifacts/
- name: Native integration tests
run: ./mill -i nativeIntegrationTests
env:
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
SCALA_CLI_SODIUM_JNI_ALLOW: false
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: .github/scripts/generate-junit-reports.sc macos-m1-tests 'Scala CLI MacOS M1 Tests' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-macos-m1-tests
path: test-report.xml
generate-windows-launcher:
timeout-minutes: 120
runs-on: "windows-2019"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- name: Get latest coursier launcher
run: .github/scripts/get-latest-cs.sh
shell: bash
- name: Generate native launcher
run: .github/scripts/generate-native-image.sh
shell: bash
- run: ./mill -i ci.setShouldPublish
- name: Build OS packages
if: env.SHOULD_PUBLISH == 'true'
run: .github/scripts/generate-os-packages.sh
shell: bash
- name: Copy artifacts
run: ./mill -i copyDefaultLauncher artifacts/
- uses: actions/upload-artifact@v3
with:
name: windows-launchers
path: artifacts/
if-no-files-found: error
retention-days: 2
native-windows-tests-1:
needs: generate-windows-launcher
timeout-minutes: 120
runs-on: "windows-2019"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- name: Get latest coursier launcher
run: .github/scripts/get-latest-cs.sh
shell: bash
- uses: actions/download-artifact@v3
with:
name: windows-launchers
path: artifacts/
- name: Native integration tests
run: ./mill -i nativeIntegrationTests
env:
COURSIER_JNI: force
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
SCALA_CLI_IT_GROUP: 1
SCALA_CLI_SODIUM_JNI_ALLOW: false
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: scala-cli shebang .github/scripts/generate-junit-reports.sc windows-tests-1 'Scala CLI Windows Tests (1)' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-windows-tests-1
path: test-report.xml
native-windows-tests-2:
needs: generate-windows-launcher
timeout-minutes: 120
runs-on: "windows-2019"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- name: Get latest coursier launcher
run: .github/scripts/get-latest-cs.sh
shell: bash
- uses: actions/download-artifact@v3
with:
name: windows-launchers
path: artifacts/
- name: Native integration tests
run: ./mill -i nativeIntegrationTests
env:
COURSIER_JNI: force
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
SCALA_CLI_IT_GROUP: 2
SCALA_CLI_SODIUM_JNI_ALLOW: false
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: scala-cli shebang .github/scripts/generate-junit-reports.sc windows-tests-2 'Scala CLI Windows Tests (2)' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-windows-tests-2
path: test-report.xml
native-windows-tests-3:
needs: generate-windows-launcher
timeout-minutes: 120
runs-on: "windows-2019"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.10"
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- name: Get latest coursier launcher
run: .github/scripts/get-latest-cs.sh
shell: bash
- uses: actions/download-artifact@v3
with:
name: windows-launchers
path: artifacts/
- name: Native integration tests
run: ./mill -i nativeIntegrationTests
env:
COURSIER_JNI: force
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
SCALA_CLI_IT_GROUP: 3
SCALA_CLI_SODIUM_JNI_ALLOW: false
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: scala-cli shebang .github/scripts/generate-junit-reports.sc windows-tests-3 'Scala CLI Windows Tests (3)' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-windows-tests-3
path: test-report.xml
generate-mostly-static-launcher:
timeout-minutes: 120
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- name: Generate native launcher
run: .github/scripts/generate-native-image.sh mostly-static
shell: bash
- name: Copy artifacts
run: ./mill -i copyMostlyStaticLauncher artifacts/
- uses: actions/upload-artifact@v3
with:
name: mostly-static-launchers
path: artifacts/
if-no-files-found: error
retention-days: 2
native-mostly-static-tests-1:
needs: generate-mostly-static-launcher
timeout-minutes: 120
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- uses: actions/download-artifact@v3
with:
name: mostly-static-launchers
path: artifacts/
- name: Build slim docker image
run: .github/scripts/generate-slim-docker-image.sh
- name: Native integration tests
run: ./mill -i integration.test.nativeMostlyStatic
env:
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
SCALA_CLI_IT_GROUP: 1
SCALA_CLI_SODIUM_JNI_ALLOW: false
- name: Docker integration tests
if: success() || failure()
run: ./mill integration.docker-slim.test
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: .github/scripts/generate-junit-reports.sc native-mostly-static-tests-1 'Scala CLI Native Mostly Static Tests (1)' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-native-mostly-static-tests-1
path: test-report.xml
- name: Login to GitHub Container Registry
if: startsWith(github.ref, 'refs/tags/v')
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Push slim scala-cli image to github container registry
if: startsWith(github.ref, 'refs/tags/v')
run: .github/scripts/publish-slim-docker-images.sh
native-mostly-static-tests-2:
needs: generate-mostly-static-launcher
timeout-minutes: 120
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- uses: actions/download-artifact@v3
with:
name: mostly-static-launchers
path: artifacts/
- name: Native integration tests
run: ./mill -i integration.test.nativeMostlyStatic
env:
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
SCALA_CLI_IT_GROUP: 2
SCALA_CLI_SODIUM_JNI_ALLOW: false
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: .github/scripts/generate-junit-reports.sc native-mostly-static-tests-2 'Scala CLI Native Mostly Static Tests (2)' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-native-mostly-static-tests-2
path: test-report.xml
native-mostly-static-tests-3:
needs: generate-mostly-static-launcher
timeout-minutes: 120
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- uses: actions/download-artifact@v3
with:
name: mostly-static-launchers
path: artifacts/
- name: Native integration tests
run: ./mill -i integration.test.nativeMostlyStatic
env:
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
SCALA_CLI_IT_GROUP: 3
SCALA_CLI_SODIUM_JNI_ALLOW: false
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: .github/scripts/generate-junit-reports.sc native-mostly-static-tests-3 'Scala CLI Native Mostly Static Tests (3)' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-native-mostly-static-tests-3
path: test-report.xml
generate-static-launcher:
timeout-minutes: 120
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- name: Generate native launcher
run: .github/scripts/generate-native-image.sh static
shell: bash
- name: Copy artifacts
run: ./mill -i copyStaticLauncher artifacts/
- uses: actions/upload-artifact@v3
with:
name: static-launchers
path: artifacts/
if-no-files-found: error
retention-days: 2
native-static-tests-1:
needs: generate-static-launcher
timeout-minutes: 120
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- uses: actions/download-artifact@v3
with:
name: static-launchers
path: artifacts/
- name: Build docker image
run: .github/scripts/generate-docker-image.sh
- name: Native integration tests
run: ./mill -i integration.test.nativeStatic
env:
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
SCALA_CLI_IT_GROUP: 1
SCALA_CLI_SODIUM_JNI_ALLOW: false
- name: Docker integration tests
if: success() || failure()
run: ./mill integration.docker.test
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: .github/scripts/generate-junit-reports.sc native-static-tests-1 'Scala CLI Native Static Tests (1)' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-native-static-tests-1
path: test-report.xml
- name: Login to GitHub Container Registry
if: startsWith(github.ref, 'refs/tags/v')
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
- name: Push scala-cli to github container registry
if: startsWith(github.ref, 'refs/tags/v')
run: .github/scripts/publish-docker-images.sh
native-static-tests-2:
needs: generate-static-launcher
timeout-minutes: 120
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- uses: actions/download-artifact@v3
with:
name: static-launchers
path: artifacts/
- name: Build docker image
run: .github/scripts/generate-docker-image.sh
- name: Native integration tests
run: ./mill -i integration.test.nativeStatic
env:
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
SCALA_CLI_IT_GROUP: 2
SCALA_CLI_SODIUM_JNI_ALLOW: false
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: .github/scripts/generate-junit-reports.sc native-static-tests-2 'Scala CLI Native Static Tests (2)' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-native-static-tests-2
path: test-report.xml
native-static-tests-3:
needs: generate-static-launcher
timeout-minutes: 120
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- uses: actions/download-artifact@v3
with:
name: static-launchers
path: artifacts/
- name: Build docker image
run: .github/scripts/generate-docker-image.sh
- name: Native integration tests
run: ./mill -i integration.test.nativeStatic
env:
UPDATE_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SCALA_CLI_IT_FORCED_LAUNCHER_DIRECTORY: artifacts/
SCALA_CLI_IT_GROUP: 3
SCALA_CLI_SODIUM_JNI_ALLOW: false
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: .github/scripts/generate-junit-reports.sc native-static-tests-3 'Scala CLI Native Static Tests (3)' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-native-static-tests-3
path: test-report.xml
docs-tests:
# for now, let's run those tests only on ubuntu
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "zulu:17"
- uses: actions/setup-node@v4
with:
node-version: 18
- name: Build documentation
run: .github/scripts/build-website.sh
- name: Test documentation
run: ./mill -i docs-tests.test
- name: Convert Mill test reports to JUnit XML format
if: success() || failure()
run: .github/scripts/generate-junit-reports.sc docs-tests 'Scala CLI Docs Tests' test-report.xml out/
- name: Upload test report
uses: actions/upload-artifact@v3
if: success() || failure()
with:
name: test-results-docs-tests
path: test-report.xml
checks:
timeout-minutes: 15
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- name: Check Scala / Scala.js versions in doc
run: ./mill -i ci.checkScalaVersions
- name: Check native-image config format
run: ./mill -i __.checkNativeImageConfFormat
- name: Check Ammonite availability
run: ./mill -i 'dummy.amm[_].resolvedRunIvyDeps'
- name: Scalafix check
run: |
./mill -i __.fix --check || (
echo "To remove unused import run"
echo " ./mill -i __.fix"
exit 1
)
format:
timeout-minutes: 15
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
apps: scalafmt:3.0.0
- run: scalafmt --check
reference-doc:
timeout-minutes: 15
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- name: Check that reference doc is up-to-date
run: |
./mill -i generate-reference-doc.run --check || (
echo "Reference doc is not up-to-date. Run"
echo " ./mill -i generate-reference-doc.run"
echo "to update it, then commit the result."
exit 1
)
bloop-memory-footprint:
timeout-minutes: 120
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- name: Java Version
run: java -version
- name: Java Home
run: echo "$JAVA_HOME"
- name: Build Scala CLI
run: ./mill copyJvmLauncher build
- name: Build Benchmark
run: java -jar ./build/scala-cli --power package --standalone gcbenchmark/gcbenchmark.scala -o gc
- name: Run Benchmark
run: ./gc $(realpath ./build/scala-cli)
test-hypothetical-sbt-export:
timeout-minutes: 120
runs-on: "ubuntu-20.04"
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- name: Try to export to SBT
run: scala-cli --power export --sbt .
vc-redist:
timeout-minutes: 15
runs-on: "windows-2019"
if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name == 'Virtuslab/scala-cli'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- run: ./mill -i ci.copyVcRedist
- uses: actions/upload-artifact@v3
with:
name: launchers
path: artifacts/
if-no-files-found: warn
retention-days: 2
publish:
needs: [unit-tests, jvm-tests-1, jvm-tests-2, jvm-tests-3, format, checks, reference-doc]
if: github.event_name == 'push' && github.repository == 'VirtusLab/scala-cli'
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
ssh-key: ${{ secrets.SSH_PRIVATE_KEY_SCALA_CLI }}
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- name: GPG setup
run: .github/scripts/gpg-setup.sh
env:
PGP_SECRET: ${{ secrets.PGP_SECRET }}
- run: ./mill -i ci.setShouldPublish
- run: ./mill -i publishSonatype __.publishArtifacts
if: env.SHOULD_PUBLISH == 'true'
env:
PGP_PASSWORD: ${{ secrets.PGP_PASSPHRASE }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
- uses: webfactory/ssh-agent@dc588b651fe13675774614f8e6a936a468676387
with:
ssh-private-key: |
${{ secrets.SSH_PRIVATE_KEY_SCALA_CLI }}
- name: Update stable branch
if: env.SHOULD_PUBLISH == 'true' && startsWith(github.ref, 'refs/tags/v')
run: |
git config user.name gh-actions
git config user.email [email protected]
git checkout stable
git merge origin/main -m "Back port of documentation changes to stable"
git push origin stable
launchers:
timeout-minutes: 20
needs:
- unit-tests
- jvm-tests-1
- jvm-tests-2
- jvm-tests-3
- native-linux-tests-1
- native-linux-tests-2
- native-linux-tests-3
- native-macos-tests-1
- native-macos-tests-2
- native-macos-tests-3
- native-macos-m1-tests
- native-windows-tests-1
- native-windows-tests-2
- native-windows-tests-3
- native-mostly-static-tests-1
- native-mostly-static-tests-2
- native-mostly-static-tests-3
- native-static-tests-1
- native-static-tests-2
- native-static-tests-3
- vc-redist
- format
- checks
- reference-doc
- generate-linux-arm64-native-launcher
if: github.event_name == 'push'
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- run: ./mill -i ci.setShouldPublish
- uses: actions/download-artifact@v3
if: env.SHOULD_PUBLISH == 'true'
with:
name: linux-launchers
path: artifacts/
- uses: actions/download-artifact@v3
if: env.SHOULD_PUBLISH == 'true'
with:
name: linux-aarch64-launchers
path: artifacts/
- uses: actions/download-artifact@v3
if: env.SHOULD_PUBLISH == 'true'
with:
name: macos-launchers
path: artifacts/
- uses: actions/download-artifact@v3
if: env.SHOULD_PUBLISH == 'true'
with:
name: macos-m1-launchers
path: artifacts/
- uses: actions/download-artifact@v3
if: env.SHOULD_PUBLISH == 'true'
with:
name: windows-launchers
path: artifacts/
- uses: actions/download-artifact@v3
if: env.SHOULD_PUBLISH == 'true'
with:
name: mostly-static-launchers
path: artifacts/
- uses: actions/download-artifact@v3
if: env.SHOULD_PUBLISH == 'true'
with:
name: static-launchers
path: artifacts/
- uses: actions/download-artifact@v3
if: env.SHOULD_PUBLISH == 'true'
with:
name: launchers
path: artifacts/
- run: ./mill -i uploadLaunchers artifacts/
if: env.SHOULD_PUBLISH == 'true'
env:
UPLOAD_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
update-packages:
name: Update packages
needs: launchers
runs-on: ubuntu-20.04
if: startsWith(github.ref, 'refs/tags/v') && github.repository == 'VirtusLab/scala-cli'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- uses: actions/download-artifact@v3
with:
name: linux-launchers
path: artifacts/
- uses: actions/download-artifact@v3
with:
name: linux-aarch64-launchers
path: artifacts/
- uses: actions/download-artifact@v3
with:
name: macos-launchers
path: artifacts/
- uses: actions/download-artifact@v3
with:
name: macos-m1-launchers
path: artifacts/
- uses: actions/download-artifact@v3
with:
name: windows-launchers
path: artifacts/
- uses: actions/download-artifact@v3
with:
name: mostly-static-launchers
path: artifacts/
- uses: actions/download-artifact@v3
with:
name: static-launchers
path: artifacts/
- uses: actions/download-artifact@v3
with:
name: launchers
path: artifacts/
- name: Display structure of downloaded files
run: ls -R
working-directory: artifacts/
- uses: webfactory/ssh-agent@dc588b651fe13675774614f8e6a936a468676387
with:
ssh-private-key: |
${{ secrets.SCALA_CLI_PACKAGES_KEY }}
${{ secrets.HOMEBREW_SCALA_CLI_KEY }}
${{ secrets.HOMEBREW_SCALA_EXPERIMENTAL_KEY }}
${{ secrets.SCALA_CLI_SETUP_KEY }}
- run: ./mill -i ci.updateInstallationScript
- run: ./mill -i ci.updateScalaCliBrewFormula
- name: GPG setup
run: .github/scripts/gpg-setup.sh
env:
PGP_SECRET: ${{ secrets.PGP_SECRET }}
- run: ./mill -i ci.updateDebianPackages
env:
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
GPG_EMAIL: ${{ secrets.GPG_EMAIL }}
- run: ./mill -i ci.updateCentOsPackages
env:
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
KEYGRIP: ${{ secrets.KEYGRIP }}
PGP_SECRET: ${{ secrets.PGP_SECRET }}
GPG_EMAIL: ${{ secrets.GPG_EMAIL }}
- run: ./mill -i ci.updateStandaloneLauncher
env:
UPLOAD_GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Publish to SDKMAN
run: .github/scripts/publish-sdkman.sh
shell: bash
env:
SDKMAN_KEY: ${{ secrets.SDKMAN_KEY }}
SDKMAN_TOKEN: ${{ secrets.SDKMAN_TOKEN }}
- run: ./mill -i ci.updateScalaCliSetup
- run: ./mill -i ci.updateScalaExperimentalBrewFormula
update-windows-packages:
name: Update Windows packages
needs: launchers
runs-on: "windows-2019"
if: startsWith(github.ref, 'refs/tags/v') && github.repository == 'VirtusLab/scala-cli'
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
submodules: true
- uses: VirtusLab/scala-cli-setup@5b1a6c5ca98b5642996812781f6ad9b2d5935f85
with:
jvm: "temurin:17"
- uses: actions/download-artifact@v3
with:
name: windows-launchers
path: artifacts/
- name: Publish to chocolatey
run: ./mill -i ci.updateChocolateyPackage
env:
CHOCO_SECRET: ${{ secrets.CHOCO_SECRET_KEY }}
- uses: vedantmgoyal2009/winget-releaser@v2
with:
identifier: VirtusLab.ScalaCLI
installers-regex: '\.msi$'
fork-user: scala-steward
token: ${{ secrets.STEWARD_WINGET_TOKEN }}