File: ros.yml

package info (click to toggle)
visp 3.7.0-5
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 166,332 kB
  • sloc: cpp: 392,705; ansic: 224,448; xml: 23,444; python: 13,701; java: 4,792; sh: 206; objc: 145; makefile: 60
file content (148 lines) | stat: -rw-r--r-- 4,781 bytes parent folder | download | duplicates (3)
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