Skip to content

windows/mac tests #2086

windows/mac tests

windows/mac tests #2086

Workflow file for this run

name: Build
on:
workflow_dispatch:
inputs: {}
push:
branches: [ "develop" ]
tags: [ "v**" ]
pull_request:
branches: [ "develop" ]
jobs:
checksecret:
runs-on: ubuntu-latest
outputs:
HAVE_SECRETS: ${{ steps.checksecret_job.outputs.HAVE_SECRETS }}
steps:
- id: checksecret_job
env:
TOKEN_BITWARDEN_SM: ${{ secrets.TOKEN_BITWARDEN_SM }}
run: |
echo "HAVE_SECRETS=${{ env.TOKEN_BITWARDEN_SM != '' }}" >> $GITHUB_OUTPUT
# wtf:
# runs-on: self-hosted
# steps:
# - uses: 7mind/github-env@minimal
# - run: |
# set -x
# set -e
# pwd
# ls -la "$(pwd)"
# rm -rf "$(pwd)/test"
# #mount
# docker ps -a
# docker rm $(docker ps -aq) || true
# docker run -v "$(pwd):/test:z" --rm --entrypoint=/bin/bash -t ubuntu -c "rm -rf /test/test"
# docker run -v "$(pwd):/test:z" --rm --entrypoint=/bin/bash -t ubuntu -c "ls -la /test"
#
# test-selfhosted:
# runs-on: self-hosted
# strategy:
# fail-fast: false
# matrix:
# java: [ '22' ]
# scala: [ '2.13']
# steps:
# - uses: 7mind/github-env@minimal
# - name: Build and Test
# env:
# SCALA_VERSION: ${{ matrix.scala }}
# JAVA_VERSION: ${{ matrix.java }}
# run: ./build.sh nix gen test
build-jvm:
runs-on: ubuntu-latest
needs: [ 'checksecret' ]
strategy:
fail-fast: false
matrix:
java: [ '11', '17', '21', '25' ]
scala: [ '2.12', '2.13', '3' ]
steps:
- uses: 7mind/github-env@minimal
- name: Build and Test with Coverage
if: matrix.scala != '3'
run: nix develop --command mdl --github-actions -u platform:jvm -u java_version:${{ matrix.java }} -u scala_version:${{ matrix.scala }} :gen :coverage
- name: Build and Test without Coverage # coverage leads to NoDenotation.owner assertion error compiler crash on scala3
if: matrix.scala == '3'
run: nix develop --command mdl --github-actions -u platform:jvm -u java_version:${{ matrix.java }} -u scala_version:${{ matrix.scala }} :gen :test
- uses: dorny/test-reporter@v1
if: (needs.checksecret.outputs.HAVE_SECRETS == 'true') && (success() || failure())
with:
name: Test reports (JDK ${{ matrix.java }}, Scala ${{ matrix.scala }}, JVM)
path: '**/target/test-reports/TEST-*.xml'
reporter: java-junit
- uses: bitwarden/sm-action@v2
if: (needs.checksecret.outputs.HAVE_SECRETS == 'true') && (success() || failure())
with:
access_token: ${{ secrets.TOKEN_BITWARDEN_SM }}
secrets: |
5e21669e-48b4-49ce-82f0-b193010a2ded > TOKEN_CODECOV
- uses: codecov/codecov-action@v4
if: needs.checksecret.outputs.HAVE_SECRETS == 'true'
continue-on-error: true
with:
token: ${{ env.TOKEN_CODECOV }}
verbose: true
files: "**/cobertura.xml"
# fail_ci_if_error: ${{ matrix.scala != '3' }}
# TODO: do we need scoverage.xml? If so files: may be just omitted
# files: cobertura.xml,scoverage.xml
# flags: unittests
- uses: sbt/setup-sbt@v1 # setup sbt
- name: Upload dependency graph
if: needs.checksecret.outputs.HAVE_SECRETS == 'true'
uses: scalacenter/sbt-dependency-submission@v3.1.0
build-js:
runs-on: ubuntu-latest
needs: [ 'checksecret' ]
strategy:
fail-fast: false
matrix:
java: [ '11', '17', '21', '25' ]
scala: [ '2.12', '2.13', '3' ]
steps:
- uses: 7mind/github-env@minimal
- name: Build and Test with Coverage
if: matrix.scala != '3'
run: nix develop --command mdl --github-actions -u platform:js-nojvm -u java_version:${{ matrix.java }} -u scala_version:${{ matrix.scala }} :gen :coverage
- name: Build and Test without Coverage # coverage leads to NoDenotation.owner assertion error compiler crash on scala3
if: matrix.scala == '3'
run: nix develop --command mdl --github-actions -u platform:js-nojvm -u java_version:${{ matrix.java }} -u scala_version:${{ matrix.scala }} :gen :test
- uses: dorny/test-reporter@v1
if: (needs.checksecret.outputs.HAVE_SECRETS == 'true') && (success() || failure())
with:
name: Test reports (JDK ${{ matrix.java }}, Scala ${{ matrix.scala }}, JS)
path: '**/target/test-reports/TEST-*.xml'
reporter: java-junit
build-jvm-macos:
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
java: [ '21' ]
scala: [ '2.12', '2.13', '3' ]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: ${{ matrix.java }}
- uses: sbt/setup-sbt@v1
- uses: VirtusLab/scala-cli-setup@v1
- name: Generate Build Files
run: scala-cli ./sbtgen/ --java-home "$JAVA_HOME" --server=false --main-class Izumi
- name: Build and Test
env:
_JAVA_OPTIONS: '-Xmx4000M -XX:ReservedCodeCacheSize=384M -XX:NonProfiledCodeHeapSize=256M -XX:MaxMetaspaceSize=1024M'
run: |
sbt -batch -no-colors -v \
"++ ${{ matrix.scala }} clean" \
"++ ${{ matrix.scala }} Test/compile" \
"++ ${{ matrix.scala }} test"
build-js-macos:
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
java: [ '21' ]
scala: [ '2.12', '2.13', '3' ]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: ${{ matrix.java }}
- uses: sbt/setup-sbt@v1
- uses: VirtusLab/scala-cli-setup@v1
- name: Generate Build Files
run: scala-cli ./sbtgen/ --java-home "$JAVA_HOME" --server=false --main-class Izumi -- --nojvm --js
- name: Build and Test
env:
_JAVA_OPTIONS: '-Xmx4000M -XX:ReservedCodeCacheSize=384M -XX:NonProfiledCodeHeapSize=256M -XX:MaxMetaspaceSize=1024M'
run: |
sbt -batch -no-colors -v \
"++ ${{ matrix.scala }} clean" \
"++ ${{ matrix.scala }} Test/compile" \
"++ ${{ matrix.scala }} test"
build-jvm-windows:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
java: [ '21' ]
scala: [ '2.12', '2.13', '3' ]
steps:
- run: git config --global core.autocrlf false
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: ${{ matrix.java }}
- uses: sbt/setup-sbt@v1
- uses: VirtusLab/scala-cli-setup@v1
- name: Generate Build Files
run: scala-cli ./sbtgen/ --java-home "$env:JAVA_HOME" --server=false --main-class Izumi
- name: Build and Test
env:
_JAVA_OPTIONS: '-Xmx4000M -XX:ReservedCodeCacheSize=384M -XX:NonProfiledCodeHeapSize=256M -XX:MaxMetaspaceSize=1024M'
run: sbt -batch -no-colors -v "++ ${{ matrix.scala }} clean" "++ ${{ matrix.scala }} Test/compile" "++ ${{ matrix.scala }} test"
build-js-windows:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
java: [ '21' ]
scala: [ '2.12', '2.13', '3' ]
steps:
- run: git config --global core.autocrlf false
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: temurin
java-version: ${{ matrix.java }}
- uses: sbt/setup-sbt@v1
- uses: VirtusLab/scala-cli-setup@v1
- name: Generate Build Files
run: scala-cli ./sbtgen/ --java-home "$env:JAVA_HOME" --server=false --main-class Izumi -- --nojvm --js
- name: Build and Test
env:
_JAVA_OPTIONS: '-Xmx4000M -XX:ReservedCodeCacheSize=384M -XX:NonProfiledCodeHeapSize=256M -XX:MaxMetaspaceSize=1024M'
run: sbt -batch -no-colors -v "++ ${{ matrix.scala }} clean" "++ ${{ matrix.scala }} Test/compile" "++ ${{ matrix.scala }} test"
test-site:
runs-on: ubuntu-latest
strategy:
matrix:
java: [ '21' ]
scala: [ '2.13', '3' ]
steps:
- uses: 7mind/github-env@minimal
- name: Build Microsite
run: nix develop --command mdl --github-actions -u platform:js -u java_version:${{ matrix.java }} -u scala_version:${{ matrix.scala }} :gen :site-test
publish-site:
runs-on: ubuntu-latest
strategy:
matrix:
java: [ '21' ]
scala: [ '2.13']
needs: [ 'build-jvm', 'build-js', 'test-site', 'checksecret' ]
if: needs.checksecret.outputs.HAVE_SECRETS == 'true'
steps:
- uses: 7mind/github-env@minimal
- uses: bitwarden/sm-action@v2
with:
access_token: ${{ secrets.TOKEN_BITWARDEN_SM }}
secrets: |
4aeac969-5880-4e36-97a8-b193010ca904 > IZUMI_MICROSITE_KEY
- uses: shimataro/ssh-key-action@v2
with:
key: ${{ env.IZUMI_MICROSITE_KEY }}
known_hosts: 'unnecessary' # github.com is already there
- name: Publish Microsite
env:
CI_PULL_REQUEST: ${{ github.event_name == 'pull_request' }}
CI_BRANCH: ${{ github.ref_name }}
CI_BRANCH_TAG: ${{ github.ref_name }}
run: nix develop --command mdl --github-actions -u platform:js -u java_version:${{ matrix.java }} -u scala_version:${{ matrix.scala }} :gen :site-publish
publish-artifacts:
runs-on: ubuntu-latest
needs: [ 'build-jvm', 'build-js', 'checksecret' ]
if: needs.checksecret.outputs.HAVE_SECRETS == 'true'
strategy:
fail-fast: false
matrix:
java: [ '11' ]
scala: [ '2.12', '2.13', '3' ]
steps:
- uses: 7mind/github-env@minimal
- uses: bitwarden/sm-action@v2
with:
access_token: ${{ secrets.TOKEN_BITWARDEN_SM }}
secrets: |
994f97a2-97a4-4fe1-806a-b1930104435f > SONATYPE_CREDENTIALS_FILE
749f4227-9f11-4ceb-9121-b1930110c3a9 > OPENSSL_KEY
a2fe5b5b-5f3f-47f8-961c-b1930110cea7 > OPENSSL_IV
- name: Build and Publish to Sonatype
env:
SONATYPE_SECRET: .secrets/credentials.sonatype-nexus.properties
SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
CI_PULL_REQUEST: ${{ github.event_name == 'pull_request' }}
CI_BRANCH: ${{ github.ref_name }}
CI_BRANCH_TAG: ${{ github.ref_name }}
run: |
mkdir .secrets
echo "$SONATYPE_CREDENTIALS_FILE" > "$SONATYPE_SECRET"
openssl aes-256-cbc -K ${OPENSSL_KEY} -iv ${OPENSSL_IV} -in secrets.tar.enc -out secrets.tar -d
tar xvf secrets.tar
nix develop --command mdl --github-actions -u platform:js -u java_version:${{ matrix.java }} -u scala_version:${{ matrix.scala }} :gen :publish-scala
all-good:
if: always()
runs-on: ubuntu-latest
needs: [ 'build-jvm', 'build-js', 'build-jvm-macos', 'build-js-macos', 'build-jvm-windows', 'build-js-windows', 'test-site' ]
steps:
- name: Decide whether the needed jobs succeeded or failed
uses: re-actors/alls-green@release/v1
with:
jobs: ${{ toJSON(needs) }}