This action runs ROS 2 linters on a ROS 2 package. This command does not compile any code intentionally to make it as fast as possible (<2 min). The objective is to give contributors feedback about their change quickly. It may also be used to avoid wasting CI resources (no need to compile, and run the tests if it does not pass the linters).
For linting requiring to compile code, or to compile and run tests, ros-tooling/action-ros-ci can be used instead.
For development and release workflows, see DEVELOPING.md
See action.yml
container:
image: ubuntu:noble
steps:
- uses: actions/checkout@v4
- uses: ros-tooling/setup-ros@master
- uses: ros-tooling/action-ros-lint@master
with:
linter: copyright
package-name: your_package_name
jobs:
ament_lint:
runs-on: ubuntu-latest
container:
image: ubuntu:noble
strategy:
fail-fast: false
matrix:
linter: [copyright, flake8, mypy, pep257, pep8, xmllint]
steps:
- uses: actions/checkout@v4
- uses: ros-tooling/setup-ros@master
- uses: ros-tooling/action-ros-lint@master
with:
linter: ${{ matrix.linter }}
package-name: your_package_name
Using a custom Docker image removes the need to run setup-ros
, which makes the
runs less flaky, and faster. This setup is new, and experimental.
The docker image is provided by ros-tooling/setup-ros-docker.
jobs:
ament_lint:
runs-on: ubuntu-latest
container:
image: ghcr.io/ros-tooling/setup-ros-docker/setup-ros-docker-ubuntu-noble-ros-jazzy-ros-base
strategy:
fail-fast: false
matrix:
linter: [copyright, flake8, mypy, pep257, pep8, xmllint]
steps:
- uses: actions/checkout@v4
- uses: ros-tooling/action-ros-lint@master
with:
linter: ${{ matrix.linter }}
package-name: your_package_name
The scripts and documentation in this project are released under the Apache 2