1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148
|
name: ROS
# cf:
# - https://github.com/AprilRobotics/apriltag/blob/master/.github/workflows/colcon-workspace.yml
# - https://github.com/ros-tooling/setup-ros
# https://www.jeffgeerling.com/blog/2020/running-github-actions-workflow-on-schedule-and-other-events
on:
pull_request:
types: [opened, reopened, synchronize]
# https://stackoverflow.com/questions/66335225/how-to-cancel-previous-runs-in-the-pr-when-you-push-new-commitsupdate-the-curre#comment133398800_72408109
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#concurrency
concurrency:
group: ${{ github.workflow }}-${{ github.ref || github.run_id }}
cancel-in-progress: true
jobs:
# https://github.com/orgs/community/discussions/28474#discussioncomment-3350256
check_skip_flags:
name: Check skip flags
runs-on: ubuntu-latest
outputs:
head-commit-message: ${{ steps.get_head_commit_message.outputs.headCommitMsg }}
steps:
- name: Get repo
uses: actions/checkout@v5
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Print head git commit message
id: get_head_commit_message
run: echo "headCommitMsg=$(git show -s --format=%s)" >> $GITHUB_OUTPUT
# build on Ubuntu docker images
build_linux:
name: "${{ matrix.docker_image }} (${{ matrix.ros_distribution }})"
needs: check_skip_flags
if: >-
${{
(!contains(needs.check_skip_flags.outputs.head-commit-message, '[SKIP-CI ALL]') &&
!contains(needs.check_skip_flags.outputs.head-commit-message, '[SKIP-CI ROS]')) ||
contains(needs.check_skip_flags.outputs.head-commit-message, '[ENABLE-CI ROS]')
}}
runs-on: ubuntu-latest
strategy:
matrix:
include:
- docker_image: ubuntu:20.04
ros_distribution: noetic
ros_version: 1
- docker_image: ubuntu:22.04
ros_distribution: humble
ros_version: 2
- docker_image: ubuntu:24.04
ros_distribution: jazzy
ros_version: 2
container:
image: ${{ matrix.docker_image }}
steps:
- uses: actions/checkout@v5
- name: Setup ROS environment
uses: ros-tooling/setup-ros@v0.7
with:
required-ros-distributions: ${{ matrix.ros_distribution }}
- name: Print ROS info
if: ${{ matrix.ros_version == 1 }}
shell: bash
run: |
ls /opt/ros/${{ matrix.ros_distribution }}
cat /opt/ros/${{ matrix.ros_distribution }}/setup.bash
source /opt/ros/${{ matrix.ros_distribution }}/setup.bash
rosrun --help
printenv | grep -i ROS
- name: Print ROS info
if: ${{ matrix.ros_version == 2 }}
shell: bash
run: |
ls /opt/ros/${{ matrix.ros_distribution }}
cat /opt/ros/${{ matrix.ros_distribution }}/setup.bash
source /opt/ros/${{ matrix.ros_distribution }}/setup.bash
ros2 run --help
printenv | grep -i ROS
- name: Print system information
run: lscpu
- name: Print OS information
run: lsb_release -a
- name: Print compiler information
run: dpkg --list | grep compiler
- name: Clone visp-images
env:
BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
run: |
git clone --depth 1 https://github.com/lagadic/visp-images ${HOME}/visp-images
echo "VISP_INPUT_IMAGE_PATH=$HOME/visp-images" >> $GITHUB_ENV
echo ${VISP_INPUT_IMAGE_PATH}
- name: Configure CMake
shell: bash
run: |
source /opt/ros/${{ matrix.ros_distribution }}/setup.bash
pwd
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cat ViSP-third-party.txt
- name: Compile
working-directory: build
shell: bash
run: |
source /opt/ros/${{ matrix.ros_distribution }}/setup.bash
make -j$(nproc) install
- name: Run unit tests
working-directory: build
shell: bash
run: |
source /opt/ros/${{ matrix.ros_distribution }}/setup.bash
ctest -j$(nproc) --output-on-failure
- name: Print ROS info 2
if: ${{ matrix.ros_version == 1 }}
shell: bash
run: |
source /opt/ros/${{ matrix.ros_distribution }}/setup.bash
rosrun --help
printenv | grep -i ROS
rospack list-names
- name: Print ROS info 2
if: ${{ matrix.ros_version == 2 }}
shell: bash
run: |
source /opt/ros/${{ matrix.ros_distribution }}/setup.bash
ros2 run --help
printenv | grep -i ROS
ros2 pkg list
|