CI #1558
This file contains hidden or 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: CI | |
on: | |
push: | |
branches: ["**"] | |
pull_request: | |
branches: ["**"] | |
schedule: | |
- cron: "0 6 * * 1-5" | |
workflow_dispatch: | |
env: | |
CARGO_TERM_COLOR: always | |
jobs: | |
build: | |
name: Build on ${{ matrix.os }} | |
runs-on: ["${{ matrix.os }}"] | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest, macos-latest] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-java@v4 | |
with: | |
distribution: temurin | |
java-version: 11 | |
- name: Install Rust toolchain | |
run: | | |
rustup show | |
rustup component add rustfmt clippy | |
- name: Cargo Format | |
working-directory: zenoh-jni | |
run: cargo fmt --all --check | |
- name: Clippy Check | |
working-directory: zenoh-jni | |
run: cargo clippy --all-targets --all-features -- -D warnings | |
- name: Check for feature leaks | |
working-directory: zenoh-jni | |
run: cargo test --no-default-features | |
- name: Build Zenoh-JNI | |
working-directory: zenoh-jni | |
run: cargo build | |
- name: Setup Gradle | |
uses: gradle/actions/setup-gradle@v4 | |
with: | |
gradle-version: 8.12.1 | |
- name: Gradle Test | |
run: gradle jvmTest --info | |
markdown_lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: DavidAnson/markdownlint-cli2-action@v18 | |
with: | |
config: '.markdownlint.yaml' | |
globs: '**/README.md' | |
check_rust: | |
name: Check zenoh-java using Rust 1.75 | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
steps: | |
- name: Clone this repository | |
uses: actions/checkout@v4 | |
- name: Update Rust 1.75.0 toolchain | |
run: rustup update 1.75.0 | |
- name: Setup rust-cache | |
uses: Swatinem/rust-cache@v2 | |
with: | |
cache-bin: false | |
- name: Check zenoh-java with rust 1.75.0 | |
run: | | |
cd zenoh-jni | |
cargo +1.75.0 check --release --bins --lib | |
# NOTE: In GitHub repository settings, the "Require status checks to pass | |
# before merging" branch protection rule ensures that commits are only merged | |
# from branches where specific status checks have passed. These checks are | |
# specified manually as a list of workflow job names. Thus we use this extra | |
# job to signal whether all CI checks have passed. | |
ci: | |
name: CI status checks | |
runs-on: ubuntu-latest | |
needs: [check_rust, build, markdown_lint] | |
if: always() | |
steps: | |
- name: Check whether all jobs pass | |
run: echo '${{ toJson(needs) }}' | jq -e 'all(.result == "success")' | |
# Publish snapshot packages. These jobs will only be triggered when the CI is executed on main. | |
publish_jvm_snapshot_package: | |
name: Publish JVM snapshot package | |
if: contains(fromJSON('["refs/heads/main"]'), github.ref) | |
needs: ci | |
uses: ./.github/workflows/publish-jvm.yml | |
permissions: | |
contents: read | |
packages: write | |
with: | |
snapshot: true | |
branch: ${{ github.ref_name }} | |
secrets: inherit | |
publish_android_snapshot_package: | |
name: Publish Android snapshot package | |
if: contains(fromJSON('["refs/heads/main"]'), github.ref) | |
needs: ci | |
uses: ./.github/workflows/publish-android.yml | |
permissions: | |
contents: read | |
packages: write | |
with: | |
snapshot: true | |
branch: ${{ github.ref_name }} | |
secrets: inherit |