Skip to content

[#12] Add initial CI workflows #27

[#12] Add initial CI workflows

[#12] Add initial CI workflows #27

Workflow file for this run

name: CI
env:
WORKSPACE_DIR: ${{ github.workspace }}
CLANG_COMPILER: "--cmake-args -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++"
BUILD_ARGS: "--symlink-install --cmake-args -DCMAKE_BUILD_TYPE=RelWithDebInfo"
TEST_ARGS: "--cmake-args -DBUILD_TESTING=ON"
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
types: [ opened, ready_for_review, reopened, synchronize ]
jobs:
changes:
if: github.event.pull_request.draft == false
runs-on: ubuntu-latest
permissions:
pull-requests: read
outputs:
source-code: ${{ steps.filter.outputs.source-code }}
markdown: ${{ steps.filter.outputs.markdown }}
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Check for changed file types
uses: dorny/paths-filter@v3
id: filter
with:
filters: |
source-code:
- '!**/*.md'
markdown:
- '**/*.md'
preflight-check:
needs: changes
if: ${{ needs.changes.outputs.source-code == 'true' }}
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Check format of all commit messages
run: ./scripts/ci/check-commit-msg.sh
- name: Check license header
run: ./scripts/ci/check-spdx-license-header.sh
static-code-analysis:
needs: preflight-check
if: ${{ needs.changes.outputs.source-code == 'true' }}
timeout-minutes: 10
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Install clang toolchain
uses: ./.github/actions/install-clang
- name: Display clang-format and clang-tidy versions
run: |
clang-format --version
clang-tidy --version
- name: Run clang-format
run: git ls-files | grep -E "\.(c|cc|cpp|cxx|inl|h|hh|hpp|hxx)$" | xargs clang-format -i -style=file --Werror --dry-run
# - name: Run clang-tidy
# run: |
# git fetch origin main
# ./scripts/check-clang-tidy.sh warning-as-error diff-to-main
colcon-build-test-clang:
needs: [preflight-check, static-code-analysis]
runs-on: ubuntu-latest
container:
image: ros:rolling
steps:
- name: Install ros build dependencies
run: |
apt-get update
apt-get install -y \
python3-colcon-common-extensions \
python3-colcon-mixin \
python3-vcstool \
python3-rosdep
- name: Install iceoryx dependencies
run: |
apt-get update
apt-get install -y \
libacl1-dev \
curl
- name: Install rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Create workspace
run: |
mkdir -p $WORKSPACE_DIR/src/rmw_iceoryx2
mkdir -p $WORKSPACE_DIR/src/test_interface_files
- name: Checkout test_interface_files
uses: actions/checkout@v4
with:
repository: ros2/test_interface_files
path: src/test_interface_files
ref: rolling
- name: Checkout current ref
uses: actions/checkout@v4
with:
path: src/rmw_iceoryx2
- name: Install clang toolchain
uses: $WORKSPACE_DIR/src/rmw_iceoryx2/.github/actions/install-clang
- name: Import dependencies with VCS
run: |
cd $WORKSPACE_DIR
sed 's|git@github.com:|https://github.com/|g' src/rmw_iceoryx2/deps.repos > _deps.repos
vcs import src < _deps.repos
- name: Build with colcon
run: |
cd $WORKSPACE_DIR
. /opt/ros/rolling/setup.sh
colcon build $CLANG_COMPILER $BUILD_ARGS