Skip to content

Merge pull request #4003 from durban/issue4002 #370

Merge pull request #4003 from durban/issue4002

Merge pull request #4003 from durban/issue4002 #370

Workflow file for this run

# This file was automatically generated by sbt-github-actions using the
# githubWorkflowGenerate task. You should add and commit this file to
# your git repository. It goes without saying that you shouldn't edit
# this file by hand! Instead, if you wish to make changes, you should
# change your sbt build configuration to revise the workflow description
# to meet your needs, then regenerate this file.
name: Continuous Integration
on:
pull_request:
branches: [series/3.*]
push:
branches: [series/3.*]
tags: [v*]
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
concurrency:
group: ${{ github.workflow }} @ ${{ github.ref }}
cancel-in-progress: true
jobs:
build:
name: Build and Test
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
scala: [3.2.2, 2.12.17, 2.13.10]
java: [temurin@8, temurin@11, temurin@17, graalvm@17]
ci: [ciJVM, ciNative, ciJS, ciFirefox, ciChrome]
exclude:
- scala: 3.2.2
java: temurin@11
- scala: 2.12.17
java: temurin@11
- scala: 2.12.17
java: temurin@17
- scala: 2.12.17
java: graalvm@17
- os: windows-latest
scala: 3.2.2
- os: macos-latest
scala: 3.2.2
- os: windows-latest
scala: 2.12.17
- os: macos-latest
scala: 2.12.17
- ci: ciFirefox
scala: 3.2.2
- ci: ciChrome
scala: 3.2.2
- ci: ciFirefox
scala: 2.12.17
- ci: ciChrome
scala: 2.12.17
- ci: ciJS
java: temurin@11
- ci: ciJS
java: temurin@17
- ci: ciJS
java: graalvm@17
- os: windows-latest
ci: ciJS
- os: macos-latest
ci: ciJS
- ci: ciFirefox
java: temurin@11
- ci: ciFirefox
java: temurin@17
- ci: ciFirefox
java: graalvm@17
- os: windows-latest
ci: ciFirefox
- os: macos-latest
ci: ciFirefox
- ci: ciChrome
java: temurin@11
- ci: ciChrome
java: temurin@17
- ci: ciChrome
java: graalvm@17
- os: windows-latest
ci: ciChrome
- os: macos-latest
ci: ciChrome
- ci: ciNative
java: temurin@11
- ci: ciNative
java: temurin@17
- ci: ciNative
java: graalvm@17
- os: windows-latest
ci: ciNative
- os: macos-latest
ci: ciNative
scala: 2.12.17
- os: macos-latest
ci: ciNative
scala: 3.2.2
- os: windows-latest
java: graalvm@17
runs-on: ${{ matrix.os }}
timeout-minutes: 60
steps:
- name: Ignore line ending differences in git
if: contains(runner.os, 'windows')
shell: bash
run: git config --global core.autocrlf false
- name: Checkout current branch (full)
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Download Java (temurin@8)
id: download-java-temurin-8
if: matrix.java == 'temurin@8'
uses: typelevel/download-java@v2
with:
distribution: temurin
java-version: 8
- name: Setup Java (temurin@8)
id: setup-java-temurin-8
if: matrix.java == 'temurin@8'
uses: actions/setup-java@v3
with:
distribution: jdkfile
java-version: 8
jdkFile: ${{ steps.download-java-temurin-8.outputs.jdkFile }}
cache: sbt
- name: sbt update
if: matrix.java == 'temurin@8' && steps.setup-java-temurin-8.outputs.cache-hit == 'false'
shell: bash
run: sbt '++ ${{ matrix.scala }}' reload +update
- name: Download Java (temurin@11)
id: download-java-temurin-11
if: matrix.java == 'temurin@11'
uses: typelevel/download-java@v2
with:
distribution: temurin
java-version: 11
- name: Setup Java (temurin@11)
id: setup-java-temurin-11
if: matrix.java == 'temurin@11'
uses: actions/setup-java@v3
with:
distribution: jdkfile
java-version: 11
jdkFile: ${{ steps.download-java-temurin-11.outputs.jdkFile }}
cache: sbt
- name: sbt update
if: matrix.java == 'temurin@11' && steps.setup-java-temurin-11.outputs.cache-hit == 'false'
shell: bash
run: sbt '++ ${{ matrix.scala }}' reload +update
- name: Download Java (temurin@17)
id: download-java-temurin-17
if: matrix.java == 'temurin@17'
uses: typelevel/download-java@v2
with:
distribution: temurin
java-version: 17
- name: Setup Java (temurin@17)
id: setup-java-temurin-17
if: matrix.java == 'temurin@17'
uses: actions/setup-java@v3
with:
distribution: jdkfile
java-version: 17
jdkFile: ${{ steps.download-java-temurin-17.outputs.jdkFile }}
cache: sbt
- name: sbt update
if: matrix.java == 'temurin@17' && steps.setup-java-temurin-17.outputs.cache-hit == 'false'
shell: bash
run: sbt '++ ${{ matrix.scala }}' reload +update
- name: Download Java (graalvm@17)
id: download-java-graalvm-17
if: matrix.java == 'graalvm@17'
uses: typelevel/download-java@v2
with:
distribution: graalvm
java-version: 17
- name: Setup Java (graalvm@17)
id: setup-java-graalvm-17
if: matrix.java == 'graalvm@17'
uses: actions/setup-java@v3
with:
distribution: jdkfile
java-version: 17
jdkFile: ${{ steps.download-java-graalvm-17.outputs.jdkFile }}
cache: sbt
- name: sbt update
if: matrix.java == 'graalvm@17' && steps.setup-java-graalvm-17.outputs.cache-hit == 'false'
shell: bash
run: sbt '++ ${{ matrix.scala }}' reload +update
- name: Setup NodeJS v18 LTS
if: matrix.ci == 'ciJS'
uses: actions/setup-node@v3
with:
node-version: 18
- name: Install jsdom and source-map-support
if: matrix.ci == 'ciJS'
shell: bash
run: npm install
- name: Install GraalVM Native Image
if: matrix.java == 'graalvm@17'
shell: bash
run: gu install native-image
- name: Configure Windows Pagefile
if: matrix.os == 'windows-latest'
uses: al-cheb/configure-pagefile-action@d298bdee6b133626425040e3788f1055a8b4cf7a
with:
minimum-size: 2GB
maximum-size: 8GB
timeout: 600
- name: Check that workflows are up to date
shell: bash
run: sbt githubWorkflowCheck
- name: Check that scalafix has been run on JVM
if: matrix.ci == 'ciJVM' && matrix.scala != '3.2.2' && matrix.java == 'temurin@8' && matrix.os == 'ubuntu-latest'
shell: bash
run: sbt '++ ${{ matrix.scala }}' 'rootJVM/scalafixAll --check'
- name: Check that scalafix has been run on JS
if: matrix.ci == 'ciJS' && matrix.scala != '3.2.2' && matrix.java == 'temurin@8' && matrix.os == 'ubuntu-latest'
shell: bash
run: sbt '++ ${{ matrix.scala }}' 'rootJS/scalafixAll --check'
- name: Check that scalafix has been run on Native
if: matrix.ci == 'ciNative' && matrix.scala != '3.2.2' && matrix.java == 'temurin@8' && matrix.os == 'ubuntu-latest'
shell: bash
run: sbt '++ ${{ matrix.scala }}' 'rootNative/scalafixAll --check'
- shell: bash
run: sbt '++ ${{ matrix.scala }}' '${{ matrix.ci }}'
- if: (matrix.scala == '2.13.10' || matrix.scala == '3.2.2') && matrix.ci == 'ciJVM'
shell: bash
run: sbt '++ ${{ matrix.scala }}' docs/mdoc
- name: Test Example JVM App Within Sbt
if: matrix.ci == 'ciJVM' && matrix.os == 'ubuntu-latest'
shell: bash
run: example/test-jvm.sh ${{ matrix.scala }}
- name: Test Example JavaScript App Using Node
if: matrix.ci == 'ciJS' && matrix.os == 'ubuntu-latest'
shell: bash
run: example/test-js.sh ${{ matrix.scala }}
- name: Test GraalVM Native Image
if: matrix.scala == '2.13.10' && matrix.java == 'graalvm@17' && matrix.os == 'ubuntu-latest'
shell: bash
run: sbt '++ ${{ matrix.scala }}' graalVMExample/nativeImage graalVMExample/nativeImageRun
- name: Test Example Native App Using Binary
if: matrix.ci == 'ciNative' && matrix.os == 'ubuntu-latest'
shell: bash
run: example/test-native.sh ${{ matrix.scala }}
- name: Scalafix tests
if: matrix.scala == '2.13.10' && matrix.ci == 'ciJVM' && matrix.os == 'ubuntu-latest'
shell: bash
run: |
cd scalafix
sbt test
- name: Make target directories
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v'))
shell: bash
run: mkdir -p benchmarks/target testkit/native/target target stress-tests/target std/jvm/target example/js/target kernel-testkit/jvm/target testkit/js/target rootJS/target core/native/target site-docs/target std/js/target laws/native/target kernel-testkit/native/target kernel/jvm/target core/js/target kernel/js/target laws/js/target graalvm-example/target kernel-testkit/js/target core/jvm/target rootJVM/target rootNative/target example/native/target kernel/native/target example/jvm/target laws/jvm/target std/native/target testkit/jvm/target project/target
- name: Compress target directories
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v'))
shell: bash
run: tar cf targets.tar benchmarks/target testkit/native/target target stress-tests/target std/jvm/target example/js/target kernel-testkit/jvm/target testkit/js/target rootJS/target core/native/target site-docs/target std/js/target laws/native/target kernel-testkit/native/target kernel/jvm/target core/js/target kernel/js/target laws/js/target graalvm-example/target kernel-testkit/js/target core/jvm/target rootJVM/target rootNative/target example/native/target kernel/native/target example/jvm/target laws/jvm/target std/native/target testkit/jvm/target project/target
- name: Upload target directories
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v'))
uses: actions/upload-artifact@v3
with:
name: target-${{ matrix.os }}-${{ matrix.java }}-${{ matrix.scala }}-${{ matrix.ci }}
path: targets.tar
publish:
name: Publish Artifacts
needs: [build]
if: github.event_name != 'pull_request' && (startsWith(github.ref, 'refs/tags/v'))
strategy:
matrix:
os: [ubuntu-latest]
scala: [2.13.10]
java: [temurin@8]
runs-on: ${{ matrix.os }}
steps:
- name: Ignore line ending differences in git
if: contains(runner.os, 'windows')
run: git config --global core.autocrlf false
- name: Checkout current branch (full)
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Download Java (temurin@8)
id: download-java-temurin-8
if: matrix.java == 'temurin@8'
uses: typelevel/download-java@v2
with:
distribution: temurin
java-version: 8
- name: Setup Java (temurin@8)
id: setup-java-temurin-8
if: matrix.java == 'temurin@8'
uses: actions/setup-java@v3
with:
distribution: jdkfile
java-version: 8
jdkFile: ${{ steps.download-java-temurin-8.outputs.jdkFile }}
cache: sbt
- name: sbt update
if: matrix.java == 'temurin@8' && steps.setup-java-temurin-8.outputs.cache-hit == 'false'
run: sbt '++ ${{ matrix.scala }}' reload +update
- name: Download Java (temurin@11)
id: download-java-temurin-11
if: matrix.java == 'temurin@11'
uses: typelevel/download-java@v2
with:
distribution: temurin
java-version: 11
- name: Setup Java (temurin@11)
id: setup-java-temurin-11
if: matrix.java == 'temurin@11'
uses: actions/setup-java@v3
with:
distribution: jdkfile
java-version: 11
jdkFile: ${{ steps.download-java-temurin-11.outputs.jdkFile }}
cache: sbt
- name: sbt update
if: matrix.java == 'temurin@11' && steps.setup-java-temurin-11.outputs.cache-hit == 'false'
run: sbt '++ ${{ matrix.scala }}' reload +update
- name: Download Java (temurin@17)
id: download-java-temurin-17
if: matrix.java == 'temurin@17'
uses: typelevel/download-java@v2
with:
distribution: temurin
java-version: 17
- name: Setup Java (temurin@17)
id: setup-java-temurin-17
if: matrix.java == 'temurin@17'
uses: actions/setup-java@v3
with:
distribution: jdkfile
java-version: 17
jdkFile: ${{ steps.download-java-temurin-17.outputs.jdkFile }}
cache: sbt
- name: sbt update
if: matrix.java == 'temurin@17' && steps.setup-java-temurin-17.outputs.cache-hit == 'false'
run: sbt '++ ${{ matrix.scala }}' reload +update
- name: Download Java (graalvm@17)
id: download-java-graalvm-17
if: matrix.java == 'graalvm@17'
uses: typelevel/download-java@v2
with:
distribution: graalvm
java-version: 17
- name: Setup Java (graalvm@17)
id: setup-java-graalvm-17
if: matrix.java == 'graalvm@17'
uses: actions/setup-java@v3
with:
distribution: jdkfile
java-version: 17
jdkFile: ${{ steps.download-java-graalvm-17.outputs.jdkFile }}
cache: sbt
- name: sbt update
if: matrix.java == 'graalvm@17' && steps.setup-java-graalvm-17.outputs.cache-hit == 'false'
run: sbt '++ ${{ matrix.scala }}' reload +update
- name: Download target directories (3.2.2, ciJVM)
uses: actions/download-artifact@v3
with:
name: target-${{ matrix.os }}-${{ matrix.java }}-3.2.2-ciJVM
- name: Inflate target directories (3.2.2, ciJVM)
run: |
tar xf targets.tar
rm targets.tar
- name: Download target directories (3.2.2, ciNative)
uses: actions/download-artifact@v3
with:
name: target-${{ matrix.os }}-${{ matrix.java }}-3.2.2-ciNative
- name: Inflate target directories (3.2.2, ciNative)
run: |
tar xf targets.tar
rm targets.tar
- name: Download target directories (3.2.2, ciJS)
uses: actions/download-artifact@v3
with:
name: target-${{ matrix.os }}-${{ matrix.java }}-3.2.2-ciJS
- name: Inflate target directories (3.2.2, ciJS)
run: |
tar xf targets.tar
rm targets.tar
- name: Download target directories (2.12.17, ciJVM)
uses: actions/download-artifact@v3
with:
name: target-${{ matrix.os }}-${{ matrix.java }}-2.12.17-ciJVM
- name: Inflate target directories (2.12.17, ciJVM)
run: |
tar xf targets.tar
rm targets.tar
- name: Download target directories (2.12.17, ciNative)
uses: actions/download-artifact@v3
with:
name: target-${{ matrix.os }}-${{ matrix.java }}-2.12.17-ciNative
- name: Inflate target directories (2.12.17, ciNative)
run: |
tar xf targets.tar
rm targets.tar
- name: Download target directories (2.12.17, ciJS)
uses: actions/download-artifact@v3
with:
name: target-${{ matrix.os }}-${{ matrix.java }}-2.12.17-ciJS
- name: Inflate target directories (2.12.17, ciJS)
run: |
tar xf targets.tar
rm targets.tar
- name: Download target directories (2.13.10, ciJVM)
uses: actions/download-artifact@v3
with:
name: target-${{ matrix.os }}-${{ matrix.java }}-2.13.10-ciJVM
- name: Inflate target directories (2.13.10, ciJVM)
run: |
tar xf targets.tar
rm targets.tar
- name: Download target directories (2.13.10, ciNative)
uses: actions/download-artifact@v3
with:
name: target-${{ matrix.os }}-${{ matrix.java }}-2.13.10-ciNative
- name: Inflate target directories (2.13.10, ciNative)
run: |
tar xf targets.tar
rm targets.tar
- name: Download target directories (2.13.10, ciJS)
uses: actions/download-artifact@v3
with:
name: target-${{ matrix.os }}-${{ matrix.java }}-2.13.10-ciJS
- name: Inflate target directories (2.13.10, ciJS)
run: |
tar xf targets.tar
rm targets.tar
- name: Download target directories (2.13.10, ciFirefox)
uses: actions/download-artifact@v3
with:
name: target-${{ matrix.os }}-${{ matrix.java }}-2.13.10-ciFirefox
- name: Inflate target directories (2.13.10, ciFirefox)
run: |
tar xf targets.tar
rm targets.tar
- name: Download target directories (2.13.10, ciChrome)
uses: actions/download-artifact@v3
with:
name: target-${{ matrix.os }}-${{ matrix.java }}-2.13.10-ciChrome
- name: Inflate target directories (2.13.10, ciChrome)
run: |
tar xf targets.tar
rm targets.tar
- name: Import signing key
if: env.PGP_SECRET != '' && env.PGP_PASSPHRASE == ''
env:
PGP_SECRET: ${{ secrets.PGP_SECRET }}
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
run: echo $PGP_SECRET | base64 -di | gpg --import
- name: Import signing key and strip passphrase
if: env.PGP_SECRET != '' && env.PGP_PASSPHRASE != ''
env:
PGP_SECRET: ${{ secrets.PGP_SECRET }}
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
run: |
echo "$PGP_SECRET" | base64 -di > /tmp/signing-key.gpg
echo "$PGP_PASSPHRASE" | gpg --pinentry-mode loopback --passphrase-fd 0 --import /tmp/signing-key.gpg
(echo "$PGP_PASSPHRASE"; echo; echo) | gpg --command-fd 0 --pinentry-mode loopback --change-passphrase $(gpg --list-secret-keys --with-colons 2> /dev/null | grep '^sec:' | cut --delimiter ':' --fields 5 | tail -n 1)
- name: Wait for Cirrus CI
uses: typelevel/await-cirrus@main
- name: Publish
env:
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
SONATYPE_CREDENTIAL_HOST: ${{ secrets.SONATYPE_CREDENTIAL_HOST }}
run: sbt '++ ${{ matrix.scala }}' tlCiRelease
- name: Post release to Discord
env:
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
run: scripts/post-release-discord.sh ${{ github.ref }}
dependency-submission:
name: Submit Dependencies
if: github.event_name != 'pull_request'
strategy:
matrix:
os: [ubuntu-latest]
scala: [2.13.10]
java: [temurin@8]
runs-on: ${{ matrix.os }}
steps:
- name: Ignore line ending differences in git
if: contains(runner.os, 'windows')
run: git config --global core.autocrlf false
- name: Checkout current branch (full)
uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Download Java (temurin@8)
id: download-java-temurin-8
if: matrix.java == 'temurin@8'
uses: typelevel/download-java@v2
with:
distribution: temurin
java-version: 8
- name: Setup Java (temurin@8)
id: setup-java-temurin-8
if: matrix.java == 'temurin@8'
uses: actions/setup-java@v3
with:
distribution: jdkfile
java-version: 8
jdkFile: ${{ steps.download-java-temurin-8.outputs.jdkFile }}
cache: sbt
- name: sbt update
if: matrix.java == 'temurin@8' && steps.setup-java-temurin-8.outputs.cache-hit == 'false'
run: sbt '++ ${{ matrix.scala }}' reload +update
- name: Download Java (temurin@11)
id: download-java-temurin-11
if: matrix.java == 'temurin@11'
uses: typelevel/download-java@v2
with:
distribution: temurin
java-version: 11
- name: Setup Java (temurin@11)
id: setup-java-temurin-11
if: matrix.java == 'temurin@11'
uses: actions/setup-java@v3
with:
distribution: jdkfile
java-version: 11
jdkFile: ${{ steps.download-java-temurin-11.outputs.jdkFile }}
cache: sbt
- name: sbt update
if: matrix.java == 'temurin@11' && steps.setup-java-temurin-11.outputs.cache-hit == 'false'
run: sbt '++ ${{ matrix.scala }}' reload +update
- name: Download Java (temurin@17)
id: download-java-temurin-17
if: matrix.java == 'temurin@17'
uses: typelevel/download-java@v2
with:
distribution: temurin
java-version: 17
- name: Setup Java (temurin@17)
id: setup-java-temurin-17
if: matrix.java == 'temurin@17'
uses: actions/setup-java@v3
with:
distribution: jdkfile
java-version: 17
jdkFile: ${{ steps.download-java-temurin-17.outputs.jdkFile }}
cache: sbt
- name: sbt update
if: matrix.java == 'temurin@17' && steps.setup-java-temurin-17.outputs.cache-hit == 'false'
run: sbt '++ ${{ matrix.scala }}' reload +update
- name: Download Java (graalvm@17)
id: download-java-graalvm-17
if: matrix.java == 'graalvm@17'
uses: typelevel/download-java@v2
with:
distribution: graalvm
java-version: 17
- name: Setup Java (graalvm@17)
id: setup-java-graalvm-17
if: matrix.java == 'graalvm@17'
uses: actions/setup-java@v3
with:
distribution: jdkfile
java-version: 17
jdkFile: ${{ steps.download-java-graalvm-17.outputs.jdkFile }}
cache: sbt
- name: sbt update
if: matrix.java == 'graalvm@17' && steps.setup-java-graalvm-17.outputs.cache-hit == 'false'
run: sbt '++ ${{ matrix.scala }}' reload +update
- name: Submit Dependencies
uses: scalacenter/sbt-dependency-submission@v2