From e3585c4cb59855fe461e75b9a2101a6d05a4ca5f Mon Sep 17 00:00:00 2001 From: Tarek Date: Thu, 19 Dec 2024 23:11:40 +0200 Subject: [PATCH 1/3] 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 From fd000d3a1d8fb482df06c54b2b48ffae7f863074 Mon Sep 17 00:00:00 2001 From: Tarek Date: Fri, 20 Dec 2024 00:38:30 +0200 Subject: [PATCH 2/3] feat(CI): add benchmarks job for pull requests Signed-off-by: Tarek --- .github/workflows/benchmark.yml | 22 ---------------------- .github/workflows/build.yml | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 22 deletions(-) delete mode 100644 .github/workflows/benchmark.yml diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml deleted file mode 100644 index eb78ee7c..00000000 --- a/.github/workflows/benchmark.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: Run Benchmarks - -on: - workflow_run: - workflows: - - Verify Build - types: - - completed - -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 e1364129..e6dacfd8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -97,3 +97,19 @@ jobs: - name: Run Java Tests run: gradle test working-directory: ./java + + 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: Run Criterion + uses: boa-dev/criterion-compare-action@v3 + with: + branchName: ${{ github.base_ref }} + token: ${{ secrets.GITHUB_TOKEN }} From 0c22a57749e355a667e1c48f22ec6dec809cd429 Mon Sep 17 00:00:00 2001 From: Tarek Date: Fri, 20 Dec 2024 00:39:27 +0200 Subject: [PATCH 3/3] change Signed-off-by: Tarek --- ark-cli/USAGE.md | 1 + 1 file changed, 1 insertion(+) diff --git a/ark-cli/USAGE.md b/ark-cli/USAGE.md index 867b5e4e..e7848ea3 100644 --- a/ark-cli/USAGE.md +++ b/ark-cli/USAGE.md @@ -3,6 +3,7 @@ ## Get started Create an empty dir: +a non breaking change ``` mkdir /tmp/test