Files
zipline/.github/workflows/build.yaml
renovate[bot] 3262b9c504 Update GitHub Artifact Actions (#1785)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-27 06:56:56 +00:00

270 lines
7.1 KiB
YAML

name: build
on:
pull_request: {}
workflow_dispatch: {}
push:
branches:
- 'trunk'
tags-ignore:
- '**'
env:
GRADLE_OPTS: "-Dorg.gradle.jvmargs=-Xmx4g -Dorg.gradle.daemon=false -Dkotlin.incremental=false -Dorg.gradle.logging.stacktrace=full"
jobs:
zig:
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
- uses: mlugg/setup-zig@v2
with:
version: 0.14.0
- run: zig build -p src/jvmMain/resources/jni
working-directory: zipline
- uses: actions/upload-artifact@v7
with:
name: jni-binaries
path: zipline/src/jvmMain/resources/jni
if-no-files-found: error
jvm-test-binary:
needs:
- zig
runs-on: macos-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version-file: .github/workflows/.java-version
- uses: actions/download-artifact@v8
with:
name: jni-binaries
path: zipline/src/jvmMain/resources/jni
- run: ./gradlew :zipline:installJvmTestDistribution
- uses: actions/upload-artifact@v7
with:
name: jvm-tests
path: zipline/build/install/jvmTest
if-no-files-found: error
jvm-tests:
needs:
- jvm-test-binary
strategy:
fail-fast: false
matrix:
platform:
- macos-15-intel
- macos-15
- ubuntu-24.04
- ubuntu-24.04-arm
- windows-2025
- windows-11-arm
runs-on: ${{ matrix.platform }}
steps:
- uses: actions/checkout@v6
with:
sparse-checkout: .github/workflows/.java-version
sparse-checkout-cone-mode: false
- uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version-file: .github/workflows/.java-version
- uses: actions/download-artifact@v8
with:
name: jvm-tests
- name: Run JVM tests
run: |
chmod +x bin/zipline-test
bin/zipline-test
native-tests:
strategy:
fail-fast: false
matrix:
platform:
- os: macos-15-intel
task: macosX64Test
- os: macos-latest
task: macosArm64Test
- os: ubuntu-latest
task: linuxX64Test
- os: macos-latest
task: iosSimulatorArm64Test
- os: macos-latest
task: tvosSimulatorArm64Test
runs-on: ${{ matrix.platform.os }}
steps:
- uses: actions/checkout@v6
- uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version-file: .github/workflows/.java-version
- run: ./gradlew ${{ matrix.platform.task }}
- uses: actions/upload-artifact@v7
if: ${{ always() }}
with:
name: test-report-native-${{ matrix.platform.task }}
path: '**/build/reports/tests/**'
retention-days: 1
check:
runs-on: macos-latest
needs:
- zig
steps:
- uses: actions/checkout@v6
- uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version-file: .github/workflows/.java-version
- uses: actions/download-artifact@v8
with:
name: jni-binaries
path: zipline/src/jvmMain/resources/jni
# Disable Zipline jvmTest and native tests because they're run in jvm-tests and native-tests.
- run: >
./gradlew
check
-x allTests
-x iosSimulatorArm64Test
-x iosX64Test
-x :zipline:jvmTest
-x linuxX64Test
-x macosArm64Test
-x macosX64Test
-x tvosSimulatorArm64Test
-x tvosX64Test
sample-check:
runs-on: macos-latest
needs:
- zig
steps:
- uses: actions/checkout@v6
- uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version-file: .github/workflows/.java-version
- uses: actions/download-artifact@v8
with:
name: jni-binaries
path: zipline/src/jvmMain/resources/jni
- run: ./gradlew -p samples check
android-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version-file: .github/workflows/.java-version
- name: Enable KVM
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
- run: ./gradlew assembleAndroidTest
- uses: reactivecircus/android-emulator-runner@v2
with:
api-level: 29
emulator-boot-timeout: 20000
script: ./gradlew connectedCheck
ios-app:
runs-on: macos-15
steps:
- uses: actions/checkout@v6
- uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version-file: .github/workflows/.java-version
- name: Build Xcode samples
run: |
cd samples/world-clock/ios/app
pod install
xcodebuild -workspace WorldClock.xcworkspace -scheme WorldClock -destination 'platform=iOS Simulator,name=iPhone 16,OS=latest'
final-status:
if: ${{ !cancelled() }}
runs-on: ubuntu-latest
needs:
- jvm-tests
- native-tests
- check
- sample-check
- android-tests
- ios-app
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:
if: ${{ github.ref == 'refs/heads/trunk' && github.repository == 'cashapp/zipline' }}
runs-on: macos-latest
needs:
- final-status
steps:
- uses: actions/checkout@v6
- uses: actions/setup-java@v5
with:
distribution: 'zulu'
java-version-file: .github/workflows/.java-version
- uses: actions/download-artifact@v8
with:
name: jni-binaries
path: zipline/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 }}
- run: ./gradlew :dokkaHtmlMultiModule
- uses: actions/upload-artifact@v7
with:
name: html-docs
path: build/dokka/htmlMultiModule/
if-no-files-found: error
- name: Deploy docs to website
uses: JamesIves/github-pages-deploy-action@releases/v3
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH: site
FOLDER: build/dokka/htmlMultiModule/
TARGET_FOLDER: docs/latest/
CLEAN: true