Skip to content

Commit

Permalink
CI Workflow Refactor (#96)
Browse files Browse the repository at this point in the history
* refactor(CI): move Java bindings into a separate job
* chore(CI): remove old benchmark workflow and integrate into build process
* refactor(CI): consolidate OS jobs into a single build-and-test job
---
Signed-off-by: Tarek <[email protected]>
  • Loading branch information
tareknaser authored Jan 4, 2025
1 parent 61cd3f5 commit 14b2fff
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 166 deletions.
20 changes: 0 additions & 20 deletions .github/workflows/benchmark.yml

This file was deleted.

126 changes: 38 additions & 88 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Verify build
name: Verify Build

on:
push:
Expand All @@ -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:
Expand All @@ -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/[email protected]
- 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/[email protected]
Expand All @@ -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/[email protected]
- 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 }}
65 changes: 7 additions & 58 deletions .github/workflows/weekly.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Weekly testing
name: Weekly Testing

on:
push:
Expand All @@ -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
Expand Down

0 comments on commit 14b2fff

Please sign in to comment.