From e3585c4cb59855fe461e75b9a2101a6d05a4ca5f Mon Sep 17 00:00:00 2001 From: Tarek Date: Thu, 19 Dec 2024 23:11:40 +0200 Subject: [PATCH] refactor(CI): move Java bindings into a separate job Signed-off-by: Tarek --- .github/workflows/benchmark.yml | 10 +-- .github/workflows/build.yml | 119 +++++++------------------------- .github/workflows/weekly.yml | 65 ++--------------- 3 files changed, 39 insertions(+), 155 deletions(-) diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml index d57fc7e4..eb78ee7c 100644 --- a/.github/workflows/benchmark.yml +++ b/.github/workflows/benchmark.yml @@ -1,9 +1,11 @@ -name: Run benchmarks +name: Run Benchmarks on: - pull_request: - branches: - - main + workflow_run: + workflows: + - Verify Build + types: + - completed jobs: run_benchmarks: diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d7d5311f..e1364129 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,4 @@ -name: Verify build +name: Verify Build on: push: @@ -17,7 +17,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - - name: Install Nightly Rust with rustfmt uses: dtolnay/rust-toolchain@stable with: @@ -27,62 +26,17 @@ jobs: - name: Run rustfmt run: cargo fmt --all -- --check - linux: - name: Build on Linux - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: Install Rust - uses: dtolnay/rust-toolchain@stable - - - name: Set up Cargo Cache - uses: Swatinem/rust-cache@v2 - with: - save-if: false - - - name: Run tests - run: cargo test --verbose - - - name: Build Release - run: cargo build --verbose --release - - - name: Run `ark-cli watch` test - run: ./integration/ark-cli-watch.sh - - - name: Install JDK - uses: actions/setup-java@v4.2.1 - with: - distribution: "temurin" - java-version: "22" - - - name: Set up Gradle - uses: gradle/actions/setup-gradle@v3 - - - name: Set up Android SDK - uses: android-actions/setup-android@v3 - - - name: Set up Android NDK - uses: nttld/setup-ndk@v1 - with: - link-to-sdk: true - ndk-version: r28-beta2 - - - name: Java tests - run: gradle test - working-directory: ./java - - windows: - name: Test on Windows - runs-on: windows-latest + build-and-test: + name: Build and Test + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-14] steps: - uses: actions/checkout@v4 - - name: Install Rust uses: dtolnay/rust-toolchain@stable - - name: Set up Cargo Cache uses: Swatinem/rust-cache@v2 with: @@ -94,54 +48,33 @@ jobs: - name: Build Release run: cargo build --verbose --release + # `ark-cli-watch.sh` script tests the functionality of `ark-cli watch`, + # which monitors a directory for file changes using a filesystem watcher and updates the index file. + # We need to run it on each platform to ensure it works across all OSes. - name: Run `ark-cli watch` test run: ./integration/ark-cli-watch.sh - - name: Install JDK - uses: actions/setup-java@v4.2.1 - with: - distribution: "temurin" - java-version: "22" - - - name: Set up Gradle - uses: gradle/actions/setup-gradle@v3 - - - name: Set up Android SDK - uses: android-actions/setup-android@v3 - - - name: Set up Android NDK - uses: nttld/setup-ndk@v1 + - name: Upload Release Build + uses: actions/upload-artifact@v3 with: - link-to-sdk: true - ndk-version: r28-beta2 + name: release-build-${{ matrix.os }} + path: target/release/ - - name: Java tests - run: gradle test - working-directory: ./java - - mac-intel: - name: Test on macOS Intel - runs-on: macos-14 + java-bindings: + name: Java Bindings + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-14] + needs: build-and-test steps: - uses: actions/checkout@v4 - - - name: Install Rust - uses: dtolnay/rust-toolchain@stable - - - name: Set up Cargo Cache - uses: Swatinem/rust-cache@v2 + - name: Download Build Artifacts + uses: actions/download-artifact@v3 with: - save-if: false - - - name: Run tests - run: cargo test --workspace --verbose - - - name: Build Release - run: cargo build --verbose --release - - - name: Run `ark-cli watch` test - run: ./integration/ark-cli-watch.sh + name: release-build-${{ matrix.os }} + path: ./release - name: Install JDK uses: actions/setup-java@v4.2.1 @@ -161,6 +94,6 @@ jobs: link-to-sdk: true ndk-version: r28-beta2 - - name: Java tests + - name: Run Java Tests run: gradle test working-directory: ./java diff --git a/.github/workflows/weekly.yml b/.github/workflows/weekly.yml index 308ea6fa..484605ec 100644 --- a/.github/workflows/weekly.yml +++ b/.github/workflows/weekly.yml @@ -1,4 +1,4 @@ -name: Weekly testing +name: Weekly Testing on: push: @@ -9,63 +9,12 @@ on: - cron: "0 0 * * 0" jobs: - linux: - name: Linux - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: Install Rust - uses: dtolnay/rust-toolchain@stable - - - name: Set up Cargo Cache - uses: Swatinem/rust-cache@v2 - with: - save-if: true - - - name: Run tests - run: cargo test --workspace --verbose --release - - windows: - name: Windows - runs-on: windows-latest - - steps: - - uses: actions/checkout@v4 - - - name: Install Rust - uses: dtolnay/rust-toolchain@stable - - - name: Set up Cargo Cache - uses: Swatinem/rust-cache@v2 - with: - save-if: true - - - name: Run tests - run: cargo test --workspace --verbose --release - - mac-intel: - name: MacOS Intel - runs-on: macos-14 - - steps: - - uses: actions/checkout@v4 - - - name: Install Rust - uses: dtolnay/rust-toolchain@stable - - - name: Set up Cargo Cache - uses: Swatinem/rust-cache@v2 - with: - save-if: true - - - name: Run tests - run: cargo test --workspace --verbose --release - - mac-arm: - name: MacOS ARM - runs-on: macos-13-xlarge + build-and-test: + name: Build and Test + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, windows-latest, macos-14, macos-13-xlarge] steps: - uses: actions/checkout@v4