From cb053ecd65b26f3f7670d376cf5abb39addad922 Mon Sep 17 00:00:00 2001 From: Levi Armstrong Date: Mon, 13 Nov 2023 19:41:29 -0600 Subject: [PATCH] Use colcon-action (#963) --- .github/workflows/code_quality.yml | 50 +++++-------------------- .github/workflows/nightly.yml | 59 ++++-------------------------- .github/workflows/ubuntu.yml | 59 ++++-------------------------- .github/workflows/windows.yml | 42 +++++++-------------- 4 files changed, 39 insertions(+), 171 deletions(-) diff --git a/.github/workflows/code_quality.yml b/.github/workflows/code_quality.yml index d74f5c5a151..d9eae2525fb 100644 --- a/.github/workflows/code_quality.yml +++ b/.github/workflows/code_quality.yml @@ -45,49 +45,17 @@ jobs: run: | apt update apt upgrade -y - apt install -y cmake curl lsb-release ca-certificates gnupg python3 python3-distutils python3-pip ccache git clang-tidy liboctomap-dev - python3 -m pip install vcstool -q - python3 -m pip install colcon-common-extensions -q - python3 -m pip install rosdep -q - rosdep init - rosdep update - cd $GITHUB_WORKSPACE/target_ws/src - ./.github/workflows/add_ros_apt_sources.sh + apt install -y clang-tidy liboctomap-dev - - name: Prepare ccache timestamp - id: ccache_cache_timestamp - shell: cmake -P {0} - run: | - string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC) - message("::set-output name=timestamp::${current_date}") - - - name: ccache cache files - continue-on-error: true - uses: actions/cache@v1.1.0 + - name: Build and Tests + uses: tesseract-robotics/colcon-action@v1 with: - path: ${{ matrix.job_type }}/.ccache - key: ${{ matrix.job_type }}-ccache-${{ steps.ccache_cache_timestamp.outputs.timestamp }} - restore-keys: | - ${{ matrix.job_type }}-ccache- - - - name: Build Upstream Workspace - shell: bash - run: | - mkdir -p $GITHUB_WORKSPACE/upstream_ws/src - vcs import --input "$GITHUB_WORKSPACE/target_ws/src/dependencies.repos" $GITHUB_WORKSPACE/upstream_ws/src/ - cd $GITHUB_WORKSPACE/upstream_ws - rosdep install --from-paths src --ignore-src -r -y - colcon build --event-handlers console_direct+ --cmake-args -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=Release - if [ $? -ge 1 ]; then return 1; fi - - - name: Build Target Workspace - shell: bash - run: | - source $GITHUB_WORKSPACE/upstream_ws/install/setup.bash - cd $GITHUB_WORKSPACE/target_ws - rosdep install --from-paths src --ignore-src -r -y - colcon build --event-handlers console_direct+ --cmake-args ${{ matrix.env.TARGET_CMAKE_ARGS }} - if [ $? -ge 1 ]; then return 1; fi + ccache-prefix: ${{ matrix.distro }} + vcs-file: dependencies.repos + run-tests: false + upstream-args: --cmake-args -DCMAKE_BUILD_TYPE=Release + target-path: target_ws/src + target-args: --cmake-args ${{ matrix.env.TARGET_CMAKE_ARGS }} - name: Upload CodeCov Results shell: bash diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index e5cb1c1647c..c8ce182cbc2 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -35,56 +35,13 @@ jobs: run: | apt update apt upgrade -y - apt install -y cmake curl lsb-release ca-certificates gnupg python3 python3-distutils python3-pip ccache git liboctomap-dev - python3 -m pip install vcstool -q - python3 -m pip install colcon-common-extensions -q - python3 -m pip install rosdep -q - rosdep init - rosdep update - cd $GITHUB_WORKSPACE/target_ws/src - ./.github/workflows/add_ros_apt_sources.sh + apt install -y liboctomap-dev - - name: Prepare ccache timestamp - id: ccache_cache_timestamp - shell: cmake -P {0} - run: | - string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC) - message("::set-output name=timestamp::${current_date}") - - - name: ccache cache files - continue-on-error: true - uses: actions/cache@v1.1.0 + - name: Build and Tests + uses: tesseract-robotics/colcon-action@v1 with: - path: ${{ matrix.distro }}/.ccache - key: ${{ matrix.distro }}-ccache-${{ steps.ccache_cache_timestamp.outputs.timestamp }} - restore-keys: | - ${{ matrix.distro }}-ccache- - - - name: Build Upstream Workspace - shell: bash - run: | - mkdir -p $GITHUB_WORKSPACE/upstream_ws/src - vcs import --input "$GITHUB_WORKSPACE/target_ws/src/dependencies.repos" $GITHUB_WORKSPACE/upstream_ws/src/ - cd $GITHUB_WORKSPACE/upstream_ws - rosdep install --from-paths src --ignore-src -r -y - colcon build --event-handlers console_direct+ --cmake-args -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=Release - if [ $? -ge 1 ]; then return 1; fi - - - name: Build Target Workspace - shell: bash - run: | - source $GITHUB_WORKSPACE/upstream_ws/install/setup.bash - cd $GITHUB_WORKSPACE/target_ws - rosdep install --from-paths src --ignore-src -r -y - colcon build --event-handlers console_direct+ --cmake-args -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=Debug -DTESSERACT_ENABLE_TESTING=ON - if [ $? -ge 1 ]; then return 1; fi - - - name: Run Tests - shell: bash - run: | - cd $GITHUB_WORKSPACE/target_ws - source $GITHUB_WORKSPACE/target_ws/install/setup.bash - colcon test --event-handlers console_direct+ --return-code-on-test-failure - if [ $? -ge 1 ]; then return 1; fi - colcon test-result --verbose - if [ $? -ge 1 ]; then return 1; fi + ccache-prefix: ${{ matrix.distro }} + vcs-file: dependencies.repos + upstream-args: --cmake-args -DCMAKE_BUILD_TYPE=Release + target-path: target_ws/src + target-args: --cmake-args -DCMAKE_BUILD_TYPE=Debug -DTESSERACT_ENABLE_TESTING=ON diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 561910a6894..8974926c9e1 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -41,56 +41,13 @@ jobs: run: | apt update apt upgrade -y - apt install -y cmake curl lsb-release ca-certificates gnupg python3 python3-distutils python3-pip ccache git liboctomap-dev - python3 -m pip install vcstool -q - python3 -m pip install colcon-common-extensions -q - python3 -m pip install rosdep -q - rosdep init - rosdep update - cd $GITHUB_WORKSPACE/target_ws/src - ./.github/workflows/add_ros_apt_sources.sh + apt install -y liboctomap-dev - - name: Prepare ccache timestamp - id: ccache_cache_timestamp - shell: cmake -P {0} - run: | - string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC) - message("::set-output name=timestamp::${current_date}") - - - name: ccache cache files - continue-on-error: true - uses: actions/cache@v1.1.0 + - name: Build and Tests + uses: tesseract-robotics/colcon-action@v1 with: - path: ${{ matrix.distro }}/.ccache - key: ${{ matrix.distro }}-ccache-${{ steps.ccache_cache_timestamp.outputs.timestamp }} - restore-keys: | - ${{ matrix.distro }}-ccache- - - - name: Build Upstream Workspace - shell: bash - run: | - mkdir -p $GITHUB_WORKSPACE/upstream_ws/src - vcs import --input "$GITHUB_WORKSPACE/target_ws/src/dependencies.repos" $GITHUB_WORKSPACE/upstream_ws/src/ - cd $GITHUB_WORKSPACE/upstream_ws - rosdep install --from-paths src --ignore-src -r -y - colcon build --event-handlers console_direct+ --cmake-args -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=Release - if [ $? -ge 1 ]; then return 1; fi - - - name: Build Target Workspace - shell: bash - run: | - source $GITHUB_WORKSPACE/upstream_ws/install/setup.bash - cd $GITHUB_WORKSPACE/target_ws - rosdep install --from-paths src --ignore-src -r -y - colcon build --event-handlers console_direct+ --cmake-args -DCMAKE_CXX_COMPILER_LAUNCHER=ccache -DCMAKE_BUILD_TYPE=Debug -DTESSERACT_ENABLE_TESTING=ON - if [ $? -ge 1 ]; then return 1; fi - - - name: Run Tests - shell: bash - run: | - cd $GITHUB_WORKSPACE/target_ws - source $GITHUB_WORKSPACE/target_ws/install/setup.bash - colcon test --event-handlers console_direct+ --return-code-on-test-failure - if [ $? -ge 1 ]; then return 1; fi - colcon test-result --verbose - if [ $? -ge 1 ]; then return 1; fi + ccache-prefix: ${{ matrix.distro }} + vcs-file: dependencies.repos + upstream-args: --cmake-args -DCMAKE_BUILD_TYPE=Release + target-path: target_ws/src + target-args: --cmake-args -DCMAKE_BUILD_TYPE=Debug -DTESSERACT_ENABLE_TESTING=ON diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index e57f54b50c0..40b9275cb6d 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -22,9 +22,9 @@ jobs: matrix: os: [windows-2019, windows-2022] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: - path: workspace/src/tesseract + path: target_ws/src - name: vcpkg build uses: johnwason/vcpkg-action@v5 @@ -36,36 +36,22 @@ jobs: cache-key: ci-${{ matrix.os }} revision: 2023.08.09 - - name: install-depends - shell: cmd - run: | - python -m pip install vcstool -q - python -m pip install colcon-common-extensions -q - python -m pip install ninja -q - - name: configure-msvc uses: ilammy/msvc-dev-cmd@v1 with: arch: x64 - - name: build-workspace - working-directory: workspace - shell: cmd + - name: update environment + shell: bash run: | - set PATH=%PATH%;%GITHUB_WORKSPACE%\vcpkg\installed\x64-windows-release\bin - set CMAKE_PREFIX_PATH=%GITHUB_WORKSPACE%\vcpkg\installed\x64-windows-release - vcs import --input "${{ github.workspace }}/workspace/src/tesseract/.github/workflows/windows_dependencies.repos" src/ - if %ERRORLEVEL% GEQ 1 exit 1 - colcon build --event-handlers console_direct+ --cmake-args -G "Ninja" -DVCPKG_TARGET_TRIPLET=x64-windows-release -DCMAKE_BUILD_TYPE=Release -DTESSERACT_ENABLE_TESTING=ON - if %ERRORLEVEL% GEQ 1 exit 1 + echo "PATH=${{ env.PATH }};$GITHUB_WORKSPACE\vcpkg\installed\x64-windows-release\bin" >> "$GITHUB_ENV" + echo "CMAKE_PREFIX_PATH=$GITHUB_WORKSPACE\vcpkg\installed\x64-windows-release" >> "$GITHUB_ENV" - - name: run-test - working-directory: workspace - shell: cmd - run: | - call ./install/setup.bat - set PATH=%PATH%;%GITHUB_WORKSPACE%\vcpkg\installed\x64-windows-release\bin - colcon test --event-handlers console_direct+ --return-code-on-test-failure - if %ERRORLEVEL% GEQ 1 exit 1 - colcon test-result --verbose - if %ERRORLEVEL% GEQ 1 exit 1 + - name: Build and Tests + uses: tesseract-robotics/colcon-action@v1 + with: + ccache-prefix: ${{ matrix.distro }} + vcs-file: .github/workflows/windows_dependencies.repos + upstream-args: --cmake-args -G "Ninja" -DVCPKG_TARGET_TRIPLET=x64-windows-release -DCMAKE_BUILD_TYPE=Release + target-path: target_ws/src + target-args: --cmake-args -G "Ninja" -DVCPKG_TARGET_TRIPLET=x64-windows-release -DCMAKE_BUILD_TYPE=Release -DTESSERACT_ENABLE_TESTING=ON