|
- name: CI
-
- on:
- push:
- pull_request:
- workflow_dispatch:
-
- env:
- RUST_LOG: trace
- CARGO_TERM_COLOR: always
-
- jobs:
- test:
- name: "Test"
- strategy:
- matrix:
- platform: [ubuntu-latest, macos-latest, windows-latest]
- fail-fast: false
- runs-on: ${{ matrix.platform }}
- timeout-minutes: 30
- steps:
- - uses: actions/checkout@v3
- - uses: r7kamura/rust-problem-matchers@v1.1.0
- - run: cargo --version --verbose
- - uses: Swatinem/rust-cache@v2
-
- - name: "Check"
- run: cargo check --all
- - name: "Build"
- run: cargo build --all
- - name: "Test"
- run: cargo test --all
-
- examples:
- name: "Examples"
- strategy:
- matrix:
- platform: [ubuntu-latest, macos-latest, windows-latest]
- fail-fast: false
- runs-on: ${{ matrix.platform }}
- steps:
- - uses: actions/checkout@v3
-
- - uses: r7kamura/rust-problem-matchers@v1.1.0
- - run: cargo --version --verbose
- - uses: Swatinem/rust-cache@v2
-
- - name: "Build examples"
- timeout-minutes: 30
- run: cargo build --examples
-
- - name: "Rust Dataflow example"
- timeout-minutes: 30
- run: cargo run --example rust-dataflow
-
- - name: "Multiple Daemons example"
- timeout-minutes: 30
- run: cargo run --example multiple-daemons
-
- - name: "Benchmark example"
- timeout-minutes: 30
- run: cargo run --example benchmark --release
-
- - name: "C Dataflow example"
- timeout-minutes: 15
- run: cargo run --example c-dataflow
- - name: "C++ Dataflow example"
- timeout-minutes: 15
- run: cargo run --example cxx-dataflow
-
- - uses: ros-tooling/setup-ros@v0.6
- with:
- required-ros-distributions: humble
- - run: 'source /opt/ros/humble/setup.bash && echo AMENT_PREFIX_PATH=${AMENT_PREFIX_PATH} >> "$GITHUB_ENV"'
- - name: "Rust ROS2 Bridge example"
- timeout-minutes: 30
- env:
- QT_QPA_PLATFORM: offscreen
- run: |
- source /opt/ros/humble/setup.bash && ros2 run turtlesim turtlesim_node &&
- cargo run --example rust-ros2-dataflow --features="ros2-examples"
-
- python-examples:
- name: "Python Examples"
- strategy:
- matrix:
- platform: [ubuntu-latest, macos-latest]
- fail-fast: false
- runs-on: ${{ matrix.platform }}
- steps:
- - uses: actions/checkout@v3
-
- - uses: actions/setup-python@v2
- with:
- python-version: "3.10"
-
- - uses: r7kamura/rust-problem-matchers@v1.1.0
- - run: cargo --version --verbose
- - uses: Swatinem/rust-cache@v2
-
- - name: "Python Dataflow example"
- run: cargo run --example python-dataflow
-
- - name: "Python Operator Dataflow example"
- run: cargo run --example python-operator-dataflow
-
- - uses: ros-tooling/setup-ros@v0.6
- with:
- required-ros-distributions: humble
- - run: 'source /opt/ros/humble/setup.bash && echo AMENT_PREFIX_PATH=${AMENT_PREFIX_PATH} >> "$GITHUB_ENV"'
- - name: "python-ros2-dataflow"
- timeout-minutes: 30
- env:
- QT_QPA_PLATFORM: offscreen
- run: |
- source /opt/ros/humble/setup.bash && ros2 run turtlesim turtlesim_node &
- cargo run --example python-ros2-dataflow --features="ros2-examples"
-
-
- CLI:
- name: "CLI Test"
- strategy:
- matrix:
- platform: [ubuntu-latest, macos-latest, windows-latest]
- fail-fast: false
- runs-on: ${{ matrix.platform }}
- steps:
- - uses: actions/checkout@v3
-
- - uses: r7kamura/rust-problem-matchers@v1.1.0
- - run: cargo --version --verbose
- - uses: Swatinem/rust-cache@v2
-
- - name: "Build cli and binaries"
- timeout-minutes: 45
- # fail-fast by using bash shell explictly
- shell: bash
- run: |
- cargo install --path binaries/coordinator
- cargo install --path binaries/daemon
- cargo install --path binaries/cli
-
- - name: "Test CLI"
- timeout-minutes: 30
- # fail-fast by using bash shell explictly
- shell: bash
- run: |
- dora-cli up
- dora-cli list
-
- # Test Rust template Project
- dora-cli new test_rust_project --internal-create-with-path-dependencies
- cd test_rust_project
- cargo build --all
- dora-cli start dataflow.yml --name ci-rust-test
- sleep 10
- dora-cli stop --name ci-rust-test
- cd ..
-
- # Test Python template Project
- pip3 install maturin
- maturin build -m apis/python/node/Cargo.toml
- pip3 install target/wheels/*
- dora-cli new test_python_project --lang python --internal-create-with-path-dependencies
- cd test_python_project
- dora-cli start dataflow.yml --name ci-python-test
- sleep 10
- dora-cli stop --name ci-python-test
- cd ..
-
- dora-cli destroy
-
- examples-remote:
- name: "Examples (Remote)"
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
-
- - uses: r7kamura/rust-problem-matchers@v1.1.0
- - run: cargo --version --verbose
- - uses: Swatinem/rust-cache@v2
-
- - name: "Remote Rust Dataflow example"
- if: false # skip this example for now until we uploaded new test nodes
- timeout-minutes: 30
- run: cargo run --example rust-dataflow-url
-
- clippy:
- name: "Clippy"
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
-
- - uses: r7kamura/rust-problem-matchers@v1.1.0
- - run: cargo --version --verbose
- - uses: Swatinem/rust-cache@v2
-
- - name: "Clippy"
- run: cargo clippy --all
- - name: "Clippy (tracing feature)"
- run: cargo clippy --all --features tracing
- if: false # only the dora-runtime has this feature, but it is currently commented out
- - name: "Clippy (metrics feature)"
- run: cargo clippy --all --features metrics
- if: false # only the dora-runtime has this feature, but it is currently commented out
-
- rustfmt:
- name: "Formatting"
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
- - uses: r7kamura/rust-problem-matchers@v1.1.0
- - name: "rustfmt"
- run: cargo fmt --all -- --check
-
- check-license:
- name: "License Checks"
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v3
-
- - uses: r7kamura/rust-problem-matchers@v1.1.0
- - run: cargo --version --verbose
- - uses: Swatinem/rust-cache@v2
-
- - run: cargo install cargo-lichking
- - name: "Check dependency licenses"
- run: cargo lichking check
|