Skip to content

Build tests once and copy to other platforms to run #1584

Build tests once and copy to other platforms to run

Build tests once and copy to other platforms to run #1584

Workflow file for this run

name: build
on:
pull_request: {}
workflow_dispatch: {}
push:
branches:
- 'trunk'
tags-ignore:
- '**'
env:
GRADLE_OPTS: "-Dkotlin.incremental=false -Dorg.gradle.logging.stacktrace=full"
jobs:
terminal:
runs-on: macos-15
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version-file: .github/.java-version
- uses: goto-bus-stop/setup-zig@v2
with:
version: 0.13.0
- run: zig build -p src/jvmMain/resources/jni
working-directory: mosaic-terminal
- run: ./gradlew :mosaic-terminal:zipJvmTestDistribution :mosaic-terminal:linkNativeDebugTests
- uses: actions/upload-artifact@v4
with:
name: jni-binaries
path: mosaic-terminal/src/jvmMain/resources/jni
if-no-files-found: error
- uses: actions/upload-artifact@v4
with:
name: mosaic-terminal-jvm-tests
path: mosaic-terminal/build/dist/mosaic-terminal-jvm-*-tests.zip
if-no-files-found: error
- uses: actions/upload-artifact@v4
with:
name: mosaic-terminal-native-tests
path: mosaic-terminal/build/bin
if-no-files-found: error
tests:
needs:
- terminal
strategy:
fail-fast: false
matrix:
platform:
- os: macOS-13
target: macosX64
- os: macOS-14
target: macosArm64
- os: macOS-15
target: macosArm64
- os: ubuntu-20.04
target: linuxX64
- os: ubuntu-22.04
target: linuxX64
- os: ubuntu-24.04
target: linuxX64
- os: windows-2019
target: mingwX64
- os: windows-2022
target: mingwX64
runs-on: ${{ matrix.platform.os }}
steps:
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: |
8
11
17
21
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version-file: .github/.java-version
- uses: actions/download-artifact@v4
with:
name: mosaic-terminal-jvm-tests
- uses: actions/download-artifact@v4
with:
name: mosaic-terminal-native-tests
- run: ls -lhAR
- run: mosaic-terminal-native-tests/${{ matrix.platform.target }}/debugTest/test.*
- run: mosaic-terminal-jvm-tests/bin/mosaic-terminal-test
# TODO Run JVM 8 tests
# TODO Run JVM 11 tests
# TODO Run JVM 17 tests
# TODO Run JVM 21 tests
binaries:
runs-on: macos-15
needs:
- terminal
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: jni-binaries
path: mosaic-terminal/src/jvmMain/resources/jni
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version-file: .github/.java-version
- uses: gradle/actions/setup-gradle@v4
- run: ./gradlew --continue assemble
checks:
runs-on: macos-15
needs:
- terminal
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: jni-binaries
path: mosaic-terminal/src/jvmMain/resources/jni
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version-file: .github/.java-version
- uses: gradle/actions/setup-gradle@v4
- run: ./gradlew --continue spotlessCheck apiCheck
publish:
runs-on: macos-15
needs:
- binaries
- checks
- tests
steps:
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4
with:
name: jni-binaries
path: mosaic-terminal/src/jvmMain/resources/jni
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version-file: .github/.java-version
- uses: gradle/actions/setup-gradle@v4
- run: ./gradlew publish
if: ${{ github.ref == 'refs/heads/trunk' && github.repository == 'JakeWharton/mosaic' }}
env:
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_NEXUS_USERNAME }}
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_NEXUS_PASSWORD }}
- run: ./gradlew dokkaHtmlMultiModule
- uses: actions/upload-artifact@v4
with:
name: html-docs
path: build/dokka/htmlMultiModule/
if-no-files-found: error
- uses: JamesIves/github-pages-deploy-action@releases/v3
if: ${{ github.ref == 'refs/heads/trunk' && github.repository == 'JakeWharton/mosaic' }}
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH: site
FOLDER: build/dokka/htmlMultiModule/
TARGET_FOLDER: docs/latest/
CLEAN: true