Java bindings checks #191
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Java bindings checks | |
on: | |
push: | |
branches: [develop, production] | |
paths: | |
- ".github/workflows/bindings-java.yml" | |
- ".github/actions/**" | |
- "**.rs" # Include all rust files | |
- "**Cargo.toml" # Include all Cargo.toml files | |
- "**Cargo.lock" # Include all Cargo.lock files | |
- "!**/examples/**" # Exclude all examples | |
- "!**/tests/**" # Exclude all tests | |
- "!client/bindings/**" # Exclude all bindings | |
- "client/bindings/java/**" # Re-include java bindings | |
pull_request: | |
branches: [develop, production] | |
paths: | |
- ".github/workflows/bindings-java.yml" | |
- ".github/actions/**" | |
- "**.rs" # Include all rust files | |
- "**Cargo.toml" # Include all Cargo.toml files | |
- "**Cargo.lock" # Include all Cargo.lock files | |
- "!**/examples/**" # Exclude all examples | |
- "!**/tests/**" # Exclude all tests | |
- "!client/bindings/**" # Exclude all bindings | |
- "client/bindings/java/**" # Re-include java bindings | |
schedule: | |
- cron: "0 1 * * *" | |
workflow_dispatch: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
cancel-in-progress: true | |
jobs: | |
test: | |
name: Test | |
if: ${{ ! github.event.schedule }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [windows-latest, macos-latest, ubuntu-latest] | |
java: ["11", "17"] | |
steps: | |
- name: Checkout the Source Code | |
uses: actions/checkout@v3 | |
- name: Set Up Nightly Rust | |
uses: ./.github/actions/setup-rust | |
with: | |
toolchain: nightly | |
cache: true | |
cache-root: client/bindings/java/lib/native/ | |
cache-job-id: ${{ github.workflow }}-${{ github.job }}-${{ matrix.os }}-${{ matrix.java }} | |
cache-hash: ${{ hashFiles('.github/workflows/bindings-java.yml') }} | |
# This step is required for bindgen to work on Windows. | |
- name: Set Up Clang/LLVM (Windows) | |
if: ${{ startsWith(matrix.os, 'windows') }} | |
uses: ./.github/actions/setup-clang | |
- name: Install Required Dependencies (Ubuntu) | |
if: ${{ startsWith(matrix.os, 'ubuntu') }} | |
run: | | |
sudo apt-get update | |
sudo apt-get install libudev-dev libusb-1.0-0-dev | |
- name: Set Up Java ${{ matrix.java }} | |
uses: actions/setup-java@v3 | |
with: | |
java-version: ${{ matrix.java }} | |
distribution: "temurin" | |
- name: Validate Gradle wrapper | |
uses: gradle/wrapper-validation-action@e6e38bacfdf1a337459f332974bb2327a31aaf4b | |
- name: Start private tangle | |
uses: "./.github/actions/private-tangle/setup" | |
if: ${{ startsWith(matrix.os, 'ubuntu') }} | |
- name: Run Gradle Test (macos, windows) | |
if: ${{ !startsWith(matrix.os, 'ubuntu') }} | |
working-directory: client/bindings/java/ | |
run: | | |
chmod +x gradlew | |
# Only run test that doesn't require a node because we can't use the private tangle script on macos and windows | |
./gradlew test -i --tests "*testAddressDerivation" | |
- name: Run Gradle Test | |
if: ${{ startsWith(matrix.os, 'ubuntu') }} | |
working-directory: client/bindings/java/ | |
run: | | |
chmod +x gradlew | |
./gradlew test -i | |
- name: Tear down private tangle | |
if: ${{ startsWith(matrix.os, 'ubuntu') }} | |
uses: "./.github/actions/private-tangle/tear-down" | |
lint: | |
name: Lint | |
if: ${{ ! github.event.schedule }} | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the Source Code | |
uses: actions/checkout@v3 | |
- name: Set Up Beta Clippy | |
uses: ./.github/actions/setup-rust | |
with: | |
toolchain: beta | |
components: clippy | |
cache: true | |
cache-root: client/bindings/java/lib/native/ | |
cache-job-id: ${{ github.workflow }}-${{ github.job }} | |
cache-hash: ${{ hashFiles('.github/workflows/bindings-java.yml') }} | |
- name: Install Required Dependencies (Ubuntu) | |
run: | | |
sudo apt-get update | |
sudo apt-get install libudev-dev libusb-1.0-0-dev | |
- name: Run Clippy | |
uses: actions-rs/clippy-check@v1 | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
args: --manifest-path client/bindings/java/lib/native/Cargo.toml --all-features --all-targets -- --deny warnings | |
name: Clippy Results for the Java Bindings | |
# TODO: Lint the Java code too |