diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index d57fc7e4..00000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,20 +0,0 @@ -name: Run benchmarks - -on: - pull_request: - branches: - - main - -jobs: - run_benchmarks: - name: Run Benchmarks - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: Run Criterion - uses: boa-dev/criterion-compare-action@v3 - with: - branchName: ${{ github.base_ref }} - token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d7d5311f..5d0bc6a4 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,75 +26,56 @@ jobs: - name: Run rustfmt run: cargo fmt --all -- --check - linux: - name: Build on Linux - runs-on: ubuntu-latest + build-and-test: + name: Build and Test + runs-on: ${{ matrix.os }} + strategy: + matrix: + # We also run on macOS arm in the weekly workflow. + 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: save-if: false - name: Run tests - run: cargo test --verbose + run: cargo test --workspace --verbose - 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 + - name: Upload Release Build + uses: actions/upload-artifact@v3 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: release-build-${{ matrix.os }} + path: target/release/ - - 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 + 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 @@ -115,52 +95,22 @@ jobs: link-to-sdk: true ndk-version: r28-beta2 - - name: Java tests + - name: Run Java Tests run: gradle test working-directory: ./java - mac-intel: - name: Test on macOS Intel - runs-on: macos-14 + benchmarks: + name: Run Benchmarks + runs-on: ubuntu-latest + needs: java-bindings + # We only want to run benchmarks in case of a pull request + if: ${{ github.event_name == 'pull_request' }} 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 --workspace --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 + - name: Run Criterion + uses: boa-dev/criterion-compare-action@v3 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 + branchName: ${{ github.base_ref }} + token: ${{ secrets.GITHUB_TOKEN }} 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