build #118
Workflow file for this run
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: | ||
pull_request: {} | ||
workflow_dispatch: {} | ||
push: | ||
branches: | ||
- 'main' | ||
tags: | ||
- '**' | ||
env: | ||
GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx4g -Dorg.gradle.daemon=false -Dkotlin.incremental=false" | ||
jobs: | ||
static-checks: | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # ratchet:actions/checkout@v4 | ||
with: | ||
submodules: true | ||
- uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # ratchet:actions/setup-java@v4 | ||
with: | ||
distribution: 'zulu' | ||
java-version-file: .github/workflows/.java-version | ||
- name: Static checks | ||
run: ./gradlew apiCheck spotlessCheck | ||
jvm-test-binaries: | ||
runs-on: macos-latest | ||
steps: | ||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # ratchet:actions/checkout@v4 | ||
with: | ||
submodules: true | ||
- uses: mlugg/setup-zig@8d6198c65fb0feaa111df26e6b467fea8345e46f # v2 | ||
with: | ||
version: 0.14.0 | ||
- run: zig build -p src/jvmMain/resources/jni | ||
working-directory: zstd-kmp | ||
- run: ./gradlew :ztsd-kmp:installJvmTestDistribution | ||
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # ratchet:actions/upload-artifact@v4 | ||
with: | ||
name: jni-binaries | ||
path: zstd-kmp/src/jvmMain/resources/jni | ||
if-no-files-found: error | ||
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # ratchet:actions/upload-artifact@v4 | ||
with: | ||
name: ztsd-kmp-jvm-tests | ||
path: ztsd-kmp/build/install/jvmTest | ||
if-no-files-found: error | ||
native-test-binaries: | ||
runs-on: macos-latest | ||
steps: | ||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # ratchet:actions/checkout@v4 | ||
with: | ||
submodules: true | ||
- run: ./gradlew :ztsd-kmp:linkNativeDebugTests | ||
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # ratchet:actions/upload-artifact@v4 | ||
with: | ||
name: zstd-kmp-native-tests | ||
path: zstd-kmp/build/bin | ||
if-no-files-found: error | ||
platform-test: | ||
needs: | ||
- jvm-test-binaries | ||
- native-test-binaries | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
platform: | ||
- os: macOS-13 | ||
native-target: macosX64 | ||
- os: macOS-15 | ||
native-target: macosArm64 | ||
- os: ubuntu-24.04 | ||
native-target: linuxX64 | ||
- os: ubuntu-24.04-arm | ||
native-target: linuxArm64 | ||
- os: windows-2025 | ||
native-target: mingwX64 | ||
- os: windows-11-arm | ||
native-target: skip | ||
runs-on: ${{ matrix.os }} | ||
steps: | ||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # ratchet:actions/checkout@v4 | ||
with: | ||
sparse-checkout: .github/workflows/.java-version | ||
sparse-checkout-cone-mode: false | ||
- uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # ratchet:actions/setup-java@v4 | ||
with: | ||
distribution: 'zulu' | ||
java-version-file: .github/workflows/.java-version | ||
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # ratchet:actions/download-artifact@v4 | ||
with: | ||
name: ztsd-kmp-jvm-tests | ||
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # ratchet:actions/download-artifact@v4 | ||
if: matrix.platform.native-target != 'skip' | ||
with: | ||
name: zstd-kmp-native-tests | ||
- name: Run JVM tests | ||
run: | | ||
chmod +x bin/zstd-kmp-test | ||
bin/zstd-kmp-test | ||
- name: Run native tests | ||
if: matrix.platform.native-target != 'skip' | ||
shell: bash | ||
run: | | ||
chmod +x ${{ matrix.platform.native-target }}/debugTest/test.* | ||
${{ matrix.platform.native-target }}/debugTest/test.* | ||
android-test: | ||
runs-on: ubuntu-latest | ||
needs: | ||
- jvm-test-binaries | ||
steps: | ||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # ratchet:actions/checkout@v4 | ||
with: | ||
submodules: true | ||
- uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # ratchet:actions/setup-java@v4 | ||
with: | ||
distribution: 'zulu' | ||
java-version-file: .github/workflows/.java-version | ||
- name: Enable KVM (for Android test) | ||
run: | | ||
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules | ||
sudo udevadm control --reload-rules | ||
sudo udevadm trigger --name-match=kvm | ||
- name: Android test | ||
uses: reactivecircus/android-emulator-runner@1dcd0090116d15e7c562f8db72807de5e036a4ed # ratchet:reactivecircus/android-emulator-runner@v2 | ||
with: | ||
api-level: 29 | ||
emulator-boot-timeout: 20000 | ||
script: ./gradlew assembleAndroidTest connectedCheck | ||
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # ratchet:actions/upload-artifact@v4 | ||
if: ${{ always() }} | ||
with: | ||
name: test-report-${{ matrix.os }} | ||
path: '**/build/reports/tests/**' | ||
retention-days: 1 | ||
final-status: | ||
if: always() | ||
runs-on: ubuntu-latest | ||
needs: | ||
- platform-tests | ||
Check failure on line 168 in .github/workflows/build.yaml
|
||
- android-tests | ||
- static-checks | ||
steps: | ||
- name: Check | ||
run: | | ||
results=$(tr -d '\n' <<< '${{ toJSON(needs.*.result) }}') | ||
if ! grep -q -v -E '(failure|cancelled)' <<< "$results"; then | ||
echo "One or more required jobs failed" | ||
exit 1 | ||
fi | ||
publish: | ||
needs: | ||
- final-status | ||
runs-on: ubuntu-latest | ||
if: ${{startsWith(github.ref, 'refs/tags/') && github.repository == 'square/zstd-kmp' }} | ||
steps: | ||
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # ratchet:actions/checkout@v4 | ||
with: | ||
submodules: true | ||
- uses: actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00 # ratchet:actions/setup-java@v4 | ||
with: | ||
distribution: 'zulu' | ||
java-version-file: .github/workflows/.java-version | ||
- uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # ratchet:actions/download-artifact@v4 | ||
with: | ||
name: jni-binaries | ||
path: zstd-kmp/src/jvmMain/resources/jni | ||
- run: ./gradlew publishToMavenCentral | ||
env: | ||
ORG_GRADLE_PROJECT_mavenCentralUsername: ${{ secrets.SONATYPE_CENTRAL_USERNAME }} | ||
ORG_GRADLE_PROJECT_mavenCentralPassword: ${{ secrets.SONATYPE_CENTRAL_PASSWORD }} | ||
ORG_GRADLE_PROJECT_signingInMemoryKey: ${{ secrets.GPG_SECRET_KEY }} | ||
ORG_GRADLE_PROJECT_signingInMemoryKeyPassword: ${{ secrets.GPG_SECRET_PASSPHRASE }} |