CI #1719
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
# | |
# Copyright (c) 2023 ZettaScale Technology | |
# | |
# This program and the accompanying materials are made available under the | |
# terms of the Eclipse Public License 2.0 which is available at | |
# http://www.eclipse.org/legal/epl-2.0, or the Apache License, Version 2.0 | |
# which is available at https://www.apache.org/licenses/LICENSE-2.0. | |
# | |
# SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 | |
# | |
# Contributors: | |
# ZettaScale Zenoh Team, <[email protected]> | |
# | |
name: CI | |
on: | |
push: | |
branches: ["**"] | |
pull_request: | |
branches: ["**"] | |
schedule: | |
- cron: "0 6 * * 1-5" | |
jobs: | |
check: | |
name: Run checks on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
# Revert back to ubuntu-latest once we sort out deps | |
os: [ubuntu-22.04] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install Rust toolchain | |
run: | | |
rustup show | |
rustup component add rustfmt clippy | |
- name: Code format check | |
run: cargo fmt -p zenoh-plugin-ros1 -p zenoh-bridge-ros1 --check -- --config "unstable_features=true,imports_granularity=Crate,group_imports=StdExternalCrate" | |
env: | |
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse | |
- name: Clippy | |
run: cargo clippy -- -D warnings | |
env: | |
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse | |
- name: Clippy All targets | |
run: cargo clippy --all-targets -- -D warnings | |
env: | |
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse | |
test: | |
name: Run tests on ${{ matrix.os }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
# Revert back to ubuntu-latest once we sort out deps | |
os: [ubuntu-22.04] | |
steps: | |
- uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Install Rust toolchain | |
run: rustup show | |
- name: Build | |
run: cargo build --verbose --all-targets | |
env: | |
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse | |
- name: Install ROS | |
run: sudo apt install -y ros-base | |
- name: Run tests | |
run: cargo test --verbose | |
env: | |
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse | |
- name: Run doctests | |
run: cargo test --doc | |
env: | |
CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse | |
markdown_lint: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: DavidAnson/markdownlint-cli2-action@v18 | |
with: | |
config: '.markdownlint.yaml' | |
globs: '**/README.md' | |
# 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, test, markdown_lint] | |
if: always() | |
steps: | |
- name: Check whether all jobs pass | |
run: echo '${{ toJson(needs) }}' | jq -e 'all(.result == "success")' |