windows/mac tests #2086
This file contains hidden or 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: 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) }} |