name: Examine the Java Bindings
on:
push:
branches:
- develop
- production
paths:
- '.github/workflows/examine-java-bindings.yml'
- '.github/actions/**'
- 'bindings/java/**'
- 'src/**'
- 'Cargo.toml'
- 'Cargo.lock'
pull_request:
branches:
- develop
- production
paths:
- '.github/workflows/examine-java-bindings.yml'
- '.github/actions/**'
- 'bindings/java/**'
- 'src/**'
- 'Cargo.toml'
- 'Cargo.lock'
schedule:
- cron: '0 1 * * *'
workflow_dispatch:
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: ['8', '11']
steps:
- name: Checkout the Source Code
uses: actions/checkout@v2
- name: Set Up Nightly Rust
uses: ./.github/actions/setup-rust
with:
toolchain: nightly
cache: true
cache-root: bindings/java/native/
cache-job-id: ${{ github.workflow }}-${{ github.job }}-${{ matrix.os }}-${{ matrix.java }}
cache-hash: ${{ hashFiles('.github/workflows/examine-java-bindings.yml') }}
- name: Set Up Java ${{ matrix.java }} and Gradle Cache
uses: actions/setup-java@v2
with:
distribution: temurin
java-version: ${{ matrix.java }}
cache: gradle
- name: Set Up Clang/LLVM (Windows)
if: ${{ startsWith(matrix.os, 'windows') }}
uses: ./.github/actions/setup-clang
- name: Run Cargo build
uses: actions-rs/cargo@v1
with:
command: build
args: --manifest-path bindings/java/native/Cargo.toml --all-features --release
- name: Run Cargo Test
uses: actions-rs/cargo@v1
with:
command: test
args: --manifest-path bindings/java/native/Cargo.toml --all-features --release
- name: Run Gradle java-app Test
working-directory: bindings/java/
run: ./gradlew examples:java-app:test --info
lint:
name: Lint
if: ${{ ! github.event.schedule }}
runs-on: ubuntu-latest
steps:
- name: Checkout the Source Code
uses: actions/checkout@v2
- name: Set Up Nightly Clippy
uses: ./.github/actions/setup-rust
with:
toolchain: nightly
components: clippy
cache: true
cache-root: bindings/java/native/
cache-job-id: ${{ github.workflow }}-${{ github.job }}
cache-hash: ${{ hashFiles('.github/workflows/examine-java-bindings.yml') }}
- name: Run Clippy
uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --manifest-path bindings/java/native/Cargo.toml --all-features --all-targets -- --deny warnings -A clippy::upper-case-acronyms
name: Clippy Results for the Java Bindings
check-unused-deps:
name: Check Unused Dependencies
if: ${{ ! github.event.schedule }}
runs-on: ubuntu-latest
steps:
- name: Checkout the Source Code
uses: actions/checkout@v2
- name: Install Cargo-udeps with Nightly Rust
uses: ./.github/actions/setup-rust
with:
toolchain: nightly
cache: true
install: cargo-udeps
cache-root: bindings/java/native/
cache-job-id: ${{ github.workflow }}-${{ github.job }}
cache-hash: ${{ hashFiles('.github/workflows/examine-java-bindings.yml') }}
- name: Run Cargo Udeps
uses: actions-rs/cargo@v1
with:
command: udeps
args: --manifest-path bindings/java/native/Cargo.toml --all-targets
check-format:
name: Check Format
if: ${{ ! github.event.schedule }}
runs-on: ubuntu-latest
steps:
- name: Checkout the Source Code
uses: actions/checkout@v2
- name: Set Up Nightly Rustfmt
uses: ./.github/actions/setup-rust
with:
toolchain: nightly
components: rustfmt
cache: false
- name: Run Cargo Fmt
uses: actions-rs/cargo@v1
with:
command: fmt
args: --manifest-path bindings/java/native/Cargo.toml --all -- --check
audit:
name: Perform Security Audit
runs-on: ubuntu-latest
steps:
- name: Checkout the Source Code
uses: actions/checkout@v2
- name: Install Cargo-audit with Nightly Rust
uses: ./.github/actions/setup-rust
with:
toolchain: nightly
install: cargo-audit
cache: true
cache-job-id: ${{ github.workflow }}-${{ github.job }}
cache-hash: ${{ hashFiles('.github/workflows/examine-java-bindings.yml') }}
- name: Run Cargo Audit
uses: actions-rs/cargo@v1
with:
command: audit
args: --file bindings/java/Cargo.lock --deny warnings --ignore RUSTSEC-2021-0145