From 24f0c184336b625cc69c3554fc72f409113b1d0f Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 11 Jun 2025 19:48:03 +0000 Subject: [PATCH 01/77] Install pixi --- .../reusable-ros-tooling-win-build.yml | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 486e94c..426255a 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -17,7 +17,7 @@ on: os_name: description: 'On which OS to run the build job' required: false - default: 'windows-2019' + default: 'windows-2025' type: string container: description: '(optional) Docker container to run the job in, e.g. ubuntu:noble' @@ -50,10 +50,19 @@ jobs: with: python-version: '3.8' - - uses: ros-tooling/setup-ros@0.7.13 - with: - required-ros-distributions: ${{ inputs.ros_distro }} - use-ros2-testing: true + - name: Install Pixi and ROS + # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html + run: | + md C:\dev + powershell -ExecutionPolicy ByPass -c "irm -useb https://pixi.sh/install.ps1 | iex" + cd C:\dev + irm https://raw.githubusercontent.com/ros2/ros2/refs/heads/rolling/pixi.toml -OutFile pixi.toml + pixi install + # Download and extract ROS 2 package using PowerShell + $url = "https://ci.ros2.org/view/packaging/job/packaging_windows-2025/lastSuccessfulBuild/artifact/ws/ros2-package-windows-AMD64.zip" + $output = "C:\dev\ros2-package-windows-AMD64.zip" + Invoke-WebRequest -Uri $url -OutFile $output + Expand-Archive -Path $output -DestinationPath C:\dev\ros2_rolling - name: Install boost uses: MarkusJx/install-boost@v2.5.0 @@ -65,7 +74,7 @@ jobs: # https://github.com/MarkusJx/prebuilt-boost/blob/main/versions-manifest.json boost_version: 1.86.0 # OPTIONAL: Specify a platform version - platform_version: 2019 + platform_version: 2022 # OPTIONAL: Specify a toolset toolset: msvc # Whether the boost libraries will be supplied through static or shared libraries From 7def4fd6c4cb34f8cfbc491589cff67a045c30e0 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 11 Jun 2025 19:56:12 +0000 Subject: [PATCH 02/77] Split installation --- .github/workflows/reusable-ros-tooling-win-build.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 426255a..3df347e 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -50,11 +50,14 @@ jobs: with: python-version: '3.8' - - name: Install Pixi and ROS + - name: Install Pixi + # https://pixi.sh/latest/installation/ + run: | + powershell -ExecutionPolicy ByPass -c "irm -useb https://pixi.sh/install.ps1 | iex" + - name: Install ROS # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html run: | md C:\dev - powershell -ExecutionPolicy ByPass -c "irm -useb https://pixi.sh/install.ps1 | iex" cd C:\dev irm https://raw.githubusercontent.com/ros2/ros2/refs/heads/rolling/pixi.toml -OutFile pixi.toml pixi install From 1c8e4fdfc2431539877291159c3a8f4de3bfc994 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 11 Jun 2025 20:02:55 +0000 Subject: [PATCH 03/77] Use pixi action --- .github/workflows/reusable-ros-tooling-win-build.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 3df347e..523beac 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -50,10 +50,11 @@ jobs: with: python-version: '3.8' - - name: Install Pixi - # https://pixi.sh/latest/installation/ - run: | - powershell -ExecutionPolicy ByPass -c "irm -useb https://pixi.sh/install.ps1 | iex" + - uses: prefix-dev/setup-pixi@v0.8.8 + with: + cache: true + - run: pixi run test + - name: Install ROS # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html run: | From 00739ce302285f942db031158222e936e3d3c6e6 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 11 Jun 2025 20:08:30 +0000 Subject: [PATCH 04/77] No cache --- .github/workflows/reusable-ros-tooling-win-build.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 523beac..780946a 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -51,8 +51,6 @@ jobs: python-version: '3.8' - uses: prefix-dev/setup-pixi@v0.8.8 - with: - cache: true - run: pixi run test - name: Install ROS From c86db8563ec950f3653488ab00df2028fa798e31 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 11 Jun 2025 20:08:49 +0000 Subject: [PATCH 05/77] Install python later --- .github/workflows/reusable-ros-tooling-win-build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 780946a..45a331d 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -44,15 +44,15 @@ jobs: # this will be src/{repo-owner}/{repo-name} repo_path: src/${{ github.repository }} steps: + + - uses: prefix-dev/setup-pixi@v0.8.8 + - run: pixi run test - uses: actions/setup-python@v5 # setup-ros has hardcoded python 3.8, as it is the default version acc. to REP-2000 for jazzy # let's use the same version here for the later action-ros-ci step with: python-version: '3.8' - - uses: prefix-dev/setup-pixi@v0.8.8 - - run: pixi run test - - name: Install ROS # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html run: | From def6647028c2f01c38f69a3e19de443152431518 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 11 Jun 2025 20:12:44 +0000 Subject: [PATCH 06/77] Use ROS' pixi.toml --- .github/workflows/reusable-ros-tooling-win-build.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 45a331d..2f0d980 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -44,9 +44,18 @@ jobs: # this will be src/{repo-owner}/{repo-name} repo_path: src/${{ github.repository }} steps: + - name: Bootstrap pixi + # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html + run: | + md C:\dev + cd C:\dev + irm https://raw.githubusercontent.com/ros2/ros2/refs/heads/rolling/pixi.toml -OutFile pixi.toml - uses: prefix-dev/setup-pixi@v0.8.8 + with: + manifest-path: C:\dev\pixi.toml - run: pixi run test + - uses: actions/setup-python@v5 # setup-ros has hardcoded python 3.8, as it is the default version acc. to REP-2000 for jazzy # let's use the same version here for the later action-ros-ci step From f613f3fa23489a7d788f53b0dc1321865f70d74e Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 11 Jun 2025 20:21:40 +0000 Subject: [PATCH 07/77] Cleanup --- .../reusable-ros-tooling-win-build.yml | 26 ------------------- 1 file changed, 26 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 2f0d980..0a2444c 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -54,43 +54,17 @@ jobs: - uses: prefix-dev/setup-pixi@v0.8.8 with: manifest-path: C:\dev\pixi.toml - - run: pixi run test - - - uses: actions/setup-python@v5 - # setup-ros has hardcoded python 3.8, as it is the default version acc. to REP-2000 for jazzy - # let's use the same version here for the later action-ros-ci step - with: - python-version: '3.8' - name: Install ROS # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html run: | - md C:\dev cd C:\dev - irm https://raw.githubusercontent.com/ros2/ros2/refs/heads/rolling/pixi.toml -OutFile pixi.toml - pixi install # Download and extract ROS 2 package using PowerShell $url = "https://ci.ros2.org/view/packaging/job/packaging_windows-2025/lastSuccessfulBuild/artifact/ws/ros2-package-windows-AMD64.zip" $output = "C:\dev\ros2-package-windows-AMD64.zip" Invoke-WebRequest -Uri $url -OutFile $output Expand-Archive -Path $output -DestinationPath C:\dev\ros2_rolling - - name: Install boost - uses: MarkusJx/install-boost@v2.5.0 - if: ${{ inputs.install_boost }} - id: install-boost - with: - # REQUIRED: Specify the required boost version - # A list of supported versions can be found here: - # https://github.com/MarkusJx/prebuilt-boost/blob/main/versions-manifest.json - boost_version: 1.86.0 - # OPTIONAL: Specify a platform version - platform_version: 2022 - # OPTIONAL: Specify a toolset - toolset: msvc - # Whether the boost libraries will be supplied through static or shared libraries - link: shared - - name: Checkout default ref when build is not scheduled if: ${{ github.event_name != 'schedule' }} uses: actions/checkout@v4 From e4ad042abcbcf77823dbccdfbf0bf21db9f428a0 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 11 Jun 2025 20:22:45 +0000 Subject: [PATCH 08/77] Test pixi+ros --- .github/workflows/reusable-ros-tooling-win-build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 0a2444c..932f583 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -64,6 +64,9 @@ jobs: $output = "C:\dev\ros2-package-windows-AMD64.zip" Invoke-WebRequest -Uri $url -OutFile $output Expand-Archive -Path $output -DestinationPath C:\dev\ros2_rolling + # test if pixi and ros can be sourced + pixi shell + call ros2_rolling\local_setup.bat - name: Checkout default ref when build is not scheduled if: ${{ github.event_name != 'schedule' }} From 8e6fbd71574b819eb0a603e6aca87b8414c5748a Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 11 Jun 2025 20:32:39 +0000 Subject: [PATCH 09/77] Call -> & --- .github/workflows/reusable-ros-tooling-win-build.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 932f583..2ef1972 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -66,7 +66,9 @@ jobs: Expand-Archive -Path $output -DestinationPath C:\dev\ros2_rolling # test if pixi and ros can be sourced pixi shell - call ros2_rolling\local_setup.bat + exit + pixi shell + & ros2_rolling\local_setup.bat - name: Checkout default ref when build is not scheduled if: ${{ github.event_name != 'schedule' }} From fe265e93f6bdbe5831d02039795102a669b0dd3c Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 11 Jun 2025 20:42:37 +0000 Subject: [PATCH 10/77] use pixi and manual colcon steps --- .../reusable-ros-tooling-win-build.yml | 60 ++++++++++++------- 1 file changed, 40 insertions(+), 20 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 2ef1972..87e55ae 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -34,6 +34,16 @@ on: required: false default: false type: boolean + skip_packages: + description: 'Packages to skip from build and test' + default: '' + required: false + type: string + skip_packages_test: + description: 'Packages to skip from test additionally to skip_packages' + default: '' + required: false + type: string jobs: reusable_ros_tooling_source_build: @@ -66,8 +76,6 @@ jobs: Expand-Archive -Path $output -DestinationPath C:\dev\ros2_rolling # test if pixi and ros can be sourced pixi shell - exit - pixi shell & ros2_rolling\local_setup.bat - name: Checkout default ref when build is not scheduled @@ -109,25 +117,37 @@ jobs: "repo_file=" | Out-File -FilePath $Env:GITHUB_OUTPUT -Append } - - uses: ros-tooling/action-ros-ci@0.4.4 - # tests are disabled https://github.com/ros-tooling/action-ros-ci/pull/712#issuecomment-969495087 - env: - BOOST_ROOT: ${{ steps.install-boost.outputs.BOOST_ROOT }} - with: - target-ros2-distro: ${{ inputs.ros_distro }} - package-name: ${{ steps.package_list_action.outputs.package_list }} - vcs-repo-file-url: | - ${{ steps.check_local_repos.outputs.repo_file }} - ${{ steps.set_windows_dependencies.outputs.repo_file }} + - name: Install dependencies + shell: bash + run: | + cd C:\dev + pixi shell + & ros2_rolling\local_setup.bat + if [[ -n "${{ steps.check_local_repos.outputs.repo_file }}" ]]; then + vcs import src < ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} + fi + if [[ -n "${{ steps.set_windows_dependencies.outputs.repo_file }}" ]]; then + vcs import src < ${{ env.repo_path }}/${{ steps.set_windows_dependencies.outputs.repo_file }} + fi - colcon-mixin-repository: https://raw.githubusercontent.com/colcon/colcon-mixin-repository/master/index.yaml - colcon-defaults: | - { - "test": { - "executor": "sequential" - } - } - id: action-ros + - name: Build workspace + shell: bash + # source also underlay workspace with generate_parameter_library on rhel9 + run: | + cd C:\dev + pixi shell + & ros2_rolling\local_setup.bat + source /opt/ros2_ws/install/local_setup.bash + colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} + - name: Test workspace + shell: bash + run: | + cd C:\dev + pixi shell + & ros2_rolling\local_setup.bat + source /opt/ros2_ws/install/local_setup.bash + colcon test --executor sequential --packages-select ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }} + colcon test-result --verbose - name: Download issue template for target failure # Has to be a local file if: ${{ always() && steps.action-ros.outcome == 'failure' && github.event_name == 'schedule' }} From d6d164c94f25c901577d003ae0026a117e5a2991 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 11 Jun 2025 20:56:44 +0000 Subject: [PATCH 11/77] Test pixi --- .github/workflows/reusable-ros-tooling-win-build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 87e55ae..9838d25 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -76,6 +76,8 @@ jobs: Expand-Archive -Path $output -DestinationPath C:\dev\ros2_rolling # test if pixi and ros can be sourced pixi shell + exit + pixi shell & ros2_rolling\local_setup.bat - name: Checkout default ref when build is not scheduled From 81c99695cb6e4ccba08bd5772df0dc3fdce74055 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 11 Jun 2025 21:02:20 +0000 Subject: [PATCH 12/77] don't use bash --- .github/workflows/reusable-ros-tooling-win-build.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 9838d25..9743145 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -120,7 +120,6 @@ jobs: } - name: Install dependencies - shell: bash run: | cd C:\dev pixi shell @@ -133,7 +132,6 @@ jobs: fi - name: Build workspace - shell: bash # source also underlay workspace with generate_parameter_library on rhel9 run: | cd C:\dev @@ -142,7 +140,6 @@ jobs: source /opt/ros2_ws/install/local_setup.bash colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} - name: Test workspace - shell: bash run: | cd C:\dev pixi shell From fd9174e67901036a99f17330648ab19167b327a3 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 11 Jun 2025 21:06:52 +0000 Subject: [PATCH 13/77] Fix pwsh --- .../workflows/reusable-ros-tooling-win-build.yml | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 9743145..9b85a2b 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -107,10 +107,6 @@ jobs: Write-Output "No local repos file found" "repo_file=" | Out-File -FilePath $Env:GITHUB_OUTPUT -Append } - - - name: Set windows dependencies variable - id: set_windows_dependencies - run: | if (![string]::IsNullOrWhiteSpace("${{ inputs.windows_dependencies }}") -and (Test-Path "${{ env.repo_path }}\${{ inputs.windows_dependencies }}")) { Write-Output "Windows repos file found" "repo_file=${{ env.repo_path }}\${{ inputs.windows_dependencies }}" | Out-File -FilePath $Env:GITHUB_OUTPUT -Append @@ -124,12 +120,12 @@ jobs: cd C:\dev pixi shell & ros2_rolling\local_setup.bat - if [[ -n "${{ steps.check_local_repos.outputs.repo_file }}" ]]; then + if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_files }}")) { vcs import src < ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} - fi - if [[ -n "${{ steps.set_windows_dependencies.outputs.repo_file }}" ]]; then - vcs import src < ${{ env.repo_path }}/${{ steps.set_windows_dependencies.outputs.repo_file }} - fi + } + if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_file }}")) { + vcs import src < ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} + } - name: Build workspace # source also underlay workspace with generate_parameter_library on rhel9 From 6e81405b5edce093a1d7cec5e1728fd34fdd1f40 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 11 Jun 2025 21:14:48 +0000 Subject: [PATCH 14/77] Don't switch to C: --- .github/workflows/reusable-ros-tooling-win-build.yml | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 9b85a2b..3309bc7 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -117,9 +117,7 @@ jobs: - name: Install dependencies run: | - cd C:\dev pixi shell - & ros2_rolling\local_setup.bat if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_files }}")) { vcs import src < ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} } @@ -130,17 +128,13 @@ jobs: - name: Build workspace # source also underlay workspace with generate_parameter_library on rhel9 run: | - cd C:\dev pixi shell - & ros2_rolling\local_setup.bat - source /opt/ros2_ws/install/local_setup.bash + & C:\dev\ros2_rolling\local_setup.bat colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} - name: Test workspace run: | - cd C:\dev pixi shell - & ros2_rolling\local_setup.bat - source /opt/ros2_ws/install/local_setup.bash + & C:\dev\ros2_rolling\local_setup.bat colcon test --executor sequential --packages-select ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }} colcon test-result --verbose From 4e835981c54679a8fc1e04727813419042b654b5 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 11 Jun 2025 21:14:55 +0000 Subject: [PATCH 15/77] Fix vcs command --- .github/workflows/reusable-ros-tooling-win-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 3309bc7..ca274bb 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -119,10 +119,10 @@ jobs: run: | pixi shell if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_files }}")) { - vcs import src < ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} + vcs import --input ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} src } if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_file }}")) { - vcs import src < ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} + vcs import --input ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} src } - name: Build workspace From 6ff9b25f0a71e1663d928141fae627ad127607a4 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Wed, 11 Jun 2025 21:28:58 +0000 Subject: [PATCH 16/77] Use C:\dev also for target ws --- .github/workflows/reusable-ros-tooling-win-build.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index ca274bb..cd1396b 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -51,14 +51,15 @@ jobs: runs-on: ${{ inputs.os_name }} container: ${{ inputs.container }} env: - # this will be src/{repo-owner}/{repo-name} - repo_path: src/${{ github.repository }} + # this will be C:\dev\src\{repo-owner}/{repo-name} + repo_path: C:\dev\src\${{ github.repository }} steps: - name: Bootstrap pixi # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html run: | md C:\dev cd C:\dev + md src irm https://raw.githubusercontent.com/ros2/ros2/refs/heads/rolling/pixi.toml -OutFile pixi.toml - uses: prefix-dev/setup-pixi@v0.8.8 @@ -117,6 +118,7 @@ jobs: - name: Install dependencies run: | + cd C:\dev pixi shell if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_files }}")) { vcs import --input ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} src @@ -128,11 +130,14 @@ jobs: - name: Build workspace # source also underlay workspace with generate_parameter_library on rhel9 run: | + cd C:\dev pixi shell & C:\dev\ros2_rolling\local_setup.bat colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} + - name: Test workspace run: | + cd C:\dev pixi shell & C:\dev\ros2_rolling\local_setup.bat colcon test --executor sequential --packages-select ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }} From c14ce3288717182b2a66ba9dc38bf9f1e552b3d6 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 05:46:30 +0000 Subject: [PATCH 17/77] Use github workflow folder instead --- .../reusable-ros-tooling-win-build.yml | 23 +++++++------------ 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index cd1396b..f762ee8 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -51,30 +51,26 @@ jobs: runs-on: ${{ inputs.os_name }} container: ${{ inputs.container }} env: - # this will be C:\dev\src\{repo-owner}/{repo-name} - repo_path: C:\dev\src\${{ github.repository }} + # this will be src\{repo-owner}/{repo-name} + repo_path: src\${{ github.repository }} steps: - name: Bootstrap pixi # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html run: | - md C:\dev - cd C:\dev - md src irm https://raw.githubusercontent.com/ros2/ros2/refs/heads/rolling/pixi.toml -OutFile pixi.toml - uses: prefix-dev/setup-pixi@v0.8.8 with: - manifest-path: C:\dev\pixi.toml + manifest-path: pixi.toml - name: Install ROS # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html run: | - cd C:\dev - # Download and extract ROS 2 package using PowerShell + # Download and extract ROS 2 package $url = "https://ci.ros2.org/view/packaging/job/packaging_windows-2025/lastSuccessfulBuild/artifact/ws/ros2-package-windows-AMD64.zip" - $output = "C:\dev\ros2-package-windows-AMD64.zip" + $output = "ros2-package-windows-AMD64.zip" Invoke-WebRequest -Uri $url -OutFile $output - Expand-Archive -Path $output -DestinationPath C:\dev\ros2_rolling + Expand-Archive -Path $output -DestinationPath ros2_rolling # test if pixi and ros can be sourced pixi shell exit @@ -118,7 +114,6 @@ jobs: - name: Install dependencies run: | - cd C:\dev pixi shell if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_files }}")) { vcs import --input ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} src @@ -130,16 +125,14 @@ jobs: - name: Build workspace # source also underlay workspace with generate_parameter_library on rhel9 run: | - cd C:\dev pixi shell - & C:\dev\ros2_rolling\local_setup.bat + & ros2_rolling\local_setup.bat colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} - name: Test workspace run: | - cd C:\dev pixi shell - & C:\dev\ros2_rolling\local_setup.bat + & ros2_rolling\local_setup.bat colcon test --executor sequential --packages-select ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }} colcon test-result --verbose From 2b0061a80768101864094417e5e4be0e08efba79 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 05:51:28 +0000 Subject: [PATCH 18/77] Why is the first pixi shell always not working? --- .github/workflows/reusable-ros-tooling-win-build.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index f762ee8..04c5ff4 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -114,7 +114,6 @@ jobs: - name: Install dependencies run: | - pixi shell if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_files }}")) { vcs import --input ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} src } @@ -125,12 +124,16 @@ jobs: - name: Build workspace # source also underlay workspace with generate_parameter_library on rhel9 run: | + pixi shell + exit pixi shell & ros2_rolling\local_setup.bat colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} - name: Test workspace run: | + pixi shell + exit pixi shell & ros2_rolling\local_setup.bat colcon test --executor sequential --packages-select ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }} From 9bcd56fcef6bb8aa8c55958e0cb4d0b0085c024f Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 11:38:50 +0000 Subject: [PATCH 19/77] Revert "don't use bash" This reverts commit 81c99695cb6e4ccba08bd5772df0dc3fdce74055. --- .github/workflows/reusable-ros-tooling-win-build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 04c5ff4..ed59a38 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -113,6 +113,7 @@ jobs: } - name: Install dependencies + shell: bash run: | if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_files }}")) { vcs import --input ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} src @@ -122,6 +123,7 @@ jobs: } - name: Build workspace + shell: bash # source also underlay workspace with generate_parameter_library on rhel9 run: | pixi shell @@ -131,6 +133,7 @@ jobs: colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} - name: Test workspace + shell: bash run: | pixi shell exit From c971dc5f6dea099c9db5a4ce37772b4a2b975200 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 11:39:50 +0000 Subject: [PATCH 20/77] Use pixi shell-hook instead --- .../workflows/reusable-ros-tooling-win-build.yml | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index ed59a38..793c0e5 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -113,7 +113,6 @@ jobs: } - name: Install dependencies - shell: bash run: | if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_files }}")) { vcs import --input ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} src @@ -124,21 +123,16 @@ jobs: - name: Build workspace shell: bash - # source also underlay workspace with generate_parameter_library on rhel9 run: | - pixi shell - exit - pixi shell - & ros2_rolling\local_setup.bat + eval "$(pixi shell-hook)" + . ros2_rolling\local_setup.bat colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} - name: Test workspace shell: bash run: | - pixi shell - exit - pixi shell - & ros2_rolling\local_setup.bat + eval "$(pixi shell-hook)" + . ros2_rolling\local_setup.bat colcon test --executor sequential --packages-select ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }} colcon test-result --verbose From f12a43ee2a9c12ee9d0969600b7b14b98f9d1674 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 11:54:15 +0000 Subject: [PATCH 21/77] / instead of \ --- .github/workflows/reusable-ros-tooling-win-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 793c0e5..22f060b 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -125,14 +125,14 @@ jobs: shell: bash run: | eval "$(pixi shell-hook)" - . ros2_rolling\local_setup.bat + . ros2_rolling/local_setup.bat colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} - name: Test workspace shell: bash run: | eval "$(pixi shell-hook)" - . ros2_rolling\local_setup.bat + . ros2_rolling/local_setup.bat colcon test --executor sequential --packages-select ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }} colcon test-result --verbose From fc779245ee626f97e856b6906bcb837e2948a500 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 12:19:29 +0000 Subject: [PATCH 22/77] Debug pixi shell-hook --- .github/workflows/reusable-ros-tooling-win-build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 22f060b..1b129ad 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -125,6 +125,8 @@ jobs: shell: bash run: | eval "$(pixi shell-hook)" + ls + echo $PIXI_ENV_ACTIVATED . ros2_rolling/local_setup.bat colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} From 0076de385a46f5585b6cb1779a757ad836587bbb Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 12:29:48 +0000 Subject: [PATCH 23/77] Debug pixi shell-hook --- .github/workflows/reusable-ros-tooling-win-build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 1b129ad..a605c53 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -124,8 +124,11 @@ jobs: - name: Build workspace shell: bash run: | + set -xeu eval "$(pixi shell-hook)" ls + ls ros2_rolling + sleep 5 echo $PIXI_ENV_ACTIVATED . ros2_rolling/local_setup.bat colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} From fe3740f06068c84b345c7ea2b4dacd99b2af1093 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 12:35:19 +0000 Subject: [PATCH 24/77] Use custom shell wrapper --- .github/workflows/reusable-ros-tooling-win-build.yml | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index a605c53..e7ff6d5 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -122,15 +122,9 @@ jobs: } - name: Build workspace - shell: bash + shell: pixi run pwsh -Command {0} # pwsh works on all platforms run: | - set -xeu - eval "$(pixi shell-hook)" - ls - ls ros2_rolling - sleep 5 - echo $PIXI_ENV_ACTIVATED - . ros2_rolling/local_setup.bat + & ros2_rolling\local_setup.bat colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} - name: Test workspace From 636f2b090c38dd19db97e9cdc4e51767740182c2 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 12:48:37 +0000 Subject: [PATCH 25/77] Use set-package-list-pixi --- .github/workflows/reusable-ros-tooling-win-build.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index e7ff6d5..11b4fb3 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -90,7 +90,7 @@ jobs: path: ${{ env.repo_path }} - id: package_list_action - uses: ros-controls/ros2_control_ci/.github/actions/set-package-list@master + uses: ros-controls/ros2_control_ci/.github/actions/set-package-list-pixi@windows/pixi with: path: ${{ env.repo_path }} @@ -122,16 +122,15 @@ jobs: } - name: Build workspace - shell: pixi run pwsh -Command {0} # pwsh works on all platforms + shell: pixi run pwsh -Command {0} run: | & ros2_rolling\local_setup.bat colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} - name: Test workspace - shell: bash + shell: pixi run pwsh -Command {0} run: | - eval "$(pixi shell-hook)" - . ros2_rolling/local_setup.bat + & ros2_rolling\local_setup.bat colcon test --executor sequential --packages-select ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }} colcon test-result --verbose From f703fc097210e4f015f1939a5e313bfabcc8e41d Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 12:48:56 +0000 Subject: [PATCH 26/77] Add set-package-list-pixi --- .../actions/set-package-list-pixi/action.yml | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 .github/actions/set-package-list-pixi/action.yml diff --git a/.github/actions/set-package-list-pixi/action.yml b/.github/actions/set-package-list-pixi/action.yml new file mode 100644 index 0000000..409e132 --- /dev/null +++ b/.github/actions/set-package-list-pixi/action.yml @@ -0,0 +1,40 @@ +name: 'Get package list' +# pixi and ROS 2 have to be installed in the current path +description: 'Get a list of packages in the given path' +inputs: + path: + description: 'Path to the repository after checkout' +outputs: + package_list: + description: "A white-space separated list of packages" + value: ${{ steps.colcon.outputs.package_list }} + package_path_list: + description: "A white-space separated list of package paths" + value: ${{ steps.colcon.outputs.package_path_list }} + repo_name: + description: "The name of the repo, last part of github.repository" + value: ${{ steps.split_repo.outputs.repo_name }} + + +runs: + using: 'composite' + steps: + - id: colcon + # if a path is given, list the packages in the given path and its subdirectories from the path + # if no path is given, list all packages in the workspace + run: | + if [[ -n "${{ inputs.path }}" ]]; then + echo "package_list=$(colcon list --paths ${{ inputs.path }} --names-only | tr '\n' ' ') $(colcon list --paths ${{ inputs.path }}/* --names-only | tr '\n' ' ')" >> $GITHUB_OUTPUT + echo "package_path_list=$(colcon list --paths ${{ inputs.path }} --paths-only | tr '\n' ' ') $(colcon list --paths ${{ inputs.path }}/* --paths-only | tr '\n' ' ')" >> $GITHUB_OUTPUT + else + echo "package_list=$(colcon list --names-only | tr '\n' ' ')" >> $GITHUB_OUTPUT + echo "package_path_list=$(colcon list --paths-only | tr '\n' ' ')" >> $GITHUB_OUTPUT + fi + shell: pixi run bash -e {0} + - id: split_repo + run: | + echo "repo_name=$(echo ${{ github.repository }} | cut -d '/' -f 2)" >> $GITHUB_OUTPUT + shell: pixi run bash -e {0} + - run: | + echo "repo ${{ steps.split_repo.outputs.repo_name }} contains the packages: ${{ steps.colcon.outputs.package_list }}" + shell: pixi run bash -e {0} From 775a938235a9002c0e8885d8e9744a115cc2303b Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 12:58:56 +0000 Subject: [PATCH 27/77] Use consistent forward slash --- .github/workflows/reusable-ros-tooling-win-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 11b4fb3..9d31bfe 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -51,8 +51,8 @@ jobs: runs-on: ${{ inputs.os_name }} container: ${{ inputs.container }} env: - # this will be src\{repo-owner}/{repo-name} - repo_path: src\${{ github.repository }} + # this will be src/{repo-owner}/{repo-name} + repo_path: src/${{ github.repository }} steps: - name: Bootstrap pixi # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html From 7e579ded18e4c0ee00c84dc9e71ef43ddc84fbaf Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 13:05:31 +0000 Subject: [PATCH 28/77] Debug action --- .github/actions/set-package-list-pixi/action.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/actions/set-package-list-pixi/action.yml b/.github/actions/set-package-list-pixi/action.yml index 409e132..7d4902c 100644 --- a/.github/actions/set-package-list-pixi/action.yml +++ b/.github/actions/set-package-list-pixi/action.yml @@ -23,6 +23,7 @@ runs: # if a path is given, list the packages in the given path and its subdirectories from the path # if no path is given, list all packages in the workspace run: | + ls {{ inputs.path }} if [[ -n "${{ inputs.path }}" ]]; then echo "package_list=$(colcon list --paths ${{ inputs.path }} --names-only | tr '\n' ' ') $(colcon list --paths ${{ inputs.path }}/* --names-only | tr '\n' ' ')" >> $GITHUB_OUTPUT echo "package_path_list=$(colcon list --paths ${{ inputs.path }} --paths-only | tr '\n' ' ') $(colcon list --paths ${{ inputs.path }}/* --paths-only | tr '\n' ' ')" >> $GITHUB_OUTPUT From 4f1eea3fa36ee0a2a35b22de1f5ddefbb76b3966 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 13:10:30 +0000 Subject: [PATCH 29/77] Debug action --- .github/actions/set-package-list-pixi/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/set-package-list-pixi/action.yml b/.github/actions/set-package-list-pixi/action.yml index 7d4902c..a223101 100644 --- a/.github/actions/set-package-list-pixi/action.yml +++ b/.github/actions/set-package-list-pixi/action.yml @@ -23,7 +23,7 @@ runs: # if a path is given, list the packages in the given path and its subdirectories from the path # if no path is given, list all packages in the workspace run: | - ls {{ inputs.path }} + ls ${{ inputs.path }} if [[ -n "${{ inputs.path }}" ]]; then echo "package_list=$(colcon list --paths ${{ inputs.path }} --names-only | tr '\n' ' ') $(colcon list --paths ${{ inputs.path }}/* --names-only | tr '\n' ' ')" >> $GITHUB_OUTPUT echo "package_path_list=$(colcon list --paths ${{ inputs.path }} --paths-only | tr '\n' ' ') $(colcon list --paths ${{ inputs.path }}/* --paths-only | tr '\n' ' ')" >> $GITHUB_OUTPUT From e2f78fb87a7814492d2d6b94a685bcca88355aa0 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 13:15:25 +0000 Subject: [PATCH 30/77] Remove debug action --- .github/actions/set-package-list-pixi/action.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/actions/set-package-list-pixi/action.yml b/.github/actions/set-package-list-pixi/action.yml index a223101..409e132 100644 --- a/.github/actions/set-package-list-pixi/action.yml +++ b/.github/actions/set-package-list-pixi/action.yml @@ -23,7 +23,6 @@ runs: # if a path is given, list the packages in the given path and its subdirectories from the path # if no path is given, list all packages in the workspace run: | - ls ${{ inputs.path }} if [[ -n "${{ inputs.path }}" ]]; then echo "package_list=$(colcon list --paths ${{ inputs.path }} --names-only | tr '\n' ' ') $(colcon list --paths ${{ inputs.path }}/* --names-only | tr '\n' ' ')" >> $GITHUB_OUTPUT echo "package_path_list=$(colcon list --paths ${{ inputs.path }} --paths-only | tr '\n' ' ') $(colcon list --paths ${{ inputs.path }}/* --paths-only | tr '\n' ' ')" >> $GITHUB_OUTPUT From e7981c8236c238e2e0455ea77a9ff963cfea09e0 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 13:15:37 +0000 Subject: [PATCH 31/77] Install pixi globally --- .github/workflows/reusable-ros-tooling-win-build.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 9d31bfe..f8099c7 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -62,6 +62,7 @@ jobs: - uses: prefix-dev/setup-pixi@v0.8.8 with: manifest-path: pixi.toml + activate-environment: true - name: Install ROS # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html @@ -122,13 +123,11 @@ jobs: } - name: Build workspace - shell: pixi run pwsh -Command {0} run: | & ros2_rolling\local_setup.bat colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} - name: Test workspace - shell: pixi run pwsh -Command {0} run: | & ros2_rolling\local_setup.bat colcon test --executor sequential --packages-select ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }} From 0c89478d5872c08e1db54037fd8607bfd53dafc3 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 13:21:15 +0000 Subject: [PATCH 32/77] Use ros distro --- .../workflows/reusable-ros-tooling-win-build.yml | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index f8099c7..0b1edd1 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -5,8 +5,7 @@ on: workflow_call: inputs: ros_distro: - description: 'ROS 2 distribution name. One of - https://github.com/ros-tooling/setup-ros/blob/master/src/setup-ros-windows.ts' + description: 'ROS 2 distribution name, e.g. rolling' required: true type: string ref_for_scheduled_build: @@ -71,12 +70,7 @@ jobs: $url = "https://ci.ros2.org/view/packaging/job/packaging_windows-2025/lastSuccessfulBuild/artifact/ws/ros2-package-windows-AMD64.zip" $output = "ros2-package-windows-AMD64.zip" Invoke-WebRequest -Uri $url -OutFile $output - Expand-Archive -Path $output -DestinationPath ros2_rolling - # test if pixi and ros can be sourced - pixi shell - exit - pixi shell - & ros2_rolling\local_setup.bat + Expand-Archive -Path $output -DestinationPath ros2_${{ inputs.ros_distro }} - name: Checkout default ref when build is not scheduled if: ${{ github.event_name != 'schedule' }} @@ -124,12 +118,12 @@ jobs: - name: Build workspace run: | - & ros2_rolling\local_setup.bat + & ros2_${{ inputs.ros_distro }}\local_setup.bat colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} - name: Test workspace run: | - & ros2_rolling\local_setup.bat + & ros2_${{ inputs.ros_distro }}\local_setup.bat colcon test --executor sequential --packages-select ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }} colcon test-result --verbose From eb1e2f0f0497ae2bfeaa1a19edeff3dcc3e271e0 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 13:21:59 +0000 Subject: [PATCH 33/77] Revert "Install pixi globally" This reverts commit e7981c8236c238e2e0455ea77a9ff963cfea09e0. --- .github/workflows/reusable-ros-tooling-win-build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 0b1edd1..c19bb94 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -61,7 +61,6 @@ jobs: - uses: prefix-dev/setup-pixi@v0.8.8 with: manifest-path: pixi.toml - activate-environment: true - name: Install ROS # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html @@ -117,11 +116,13 @@ jobs: } - name: Build workspace + shell: pixi run pwsh -Command {0} run: | & ros2_${{ inputs.ros_distro }}\local_setup.bat colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} - name: Test workspace + shell: pixi run pwsh -Command {0} run: | & ros2_${{ inputs.ros_distro }}\local_setup.bat colcon test --executor sequential --packages-select ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }} From ab510f48158d8990efca0181370f395e8fc887b9 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 13:25:08 +0000 Subject: [PATCH 34/77] Also for Install dependencies --- .github/workflows/reusable-ros-tooling-win-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index c19bb94..bc024f7 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -107,6 +107,7 @@ jobs: } - name: Install dependencies + shell: pixi run pwsh -Command {0} run: | if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_files }}")) { vcs import --input ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} src From e4a9e6dabbe116fb240e9c585324b5af6f3c8af8 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 13:35:56 +0000 Subject: [PATCH 35/77] Add echo --- .github/workflows/reusable-ros-tooling-win-build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index bc024f7..6c61bd0 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -121,6 +121,7 @@ jobs: run: | & ros2_${{ inputs.ros_distro }}\local_setup.bat colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} + echo "Build succeeded" - name: Test workspace shell: pixi run pwsh -Command {0} @@ -128,6 +129,7 @@ jobs: & ros2_${{ inputs.ros_distro }}\local_setup.bat colcon test --executor sequential --packages-select ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }} colcon test-result --verbose + echo "Tests succeeded" - name: Download issue template for target failure # Has to be a local file if: ${{ always() && steps.action-ros.outcome == 'failure' && github.event_name == 'schedule' }} From 4b9bb29c633666acdeea7f5068bdd6588470b084 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 13:52:32 +0000 Subject: [PATCH 36/77] Cache pixi --- .github/workflows/reusable-ros-tooling-win-build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 6c61bd0..eb8c1a3 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -61,6 +61,7 @@ jobs: - uses: prefix-dev/setup-pixi@v0.8.8 with: manifest-path: pixi.toml + cache: true - name: Install ROS # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html From 39fd17665a154057be87168c07e710e41d6a6874 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 13:52:48 +0000 Subject: [PATCH 37/77] Use pixi run in current shell --- .github/workflows/reusable-ros-tooling-win-build.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index eb8c1a3..cadb703 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -118,11 +118,10 @@ jobs: } - name: Build workspace - shell: pixi run pwsh -Command {0} run: | - & ros2_${{ inputs.ros_distro }}\local_setup.bat - colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} - echo "Build succeeded" + pixi run & ros2_${{ inputs.ros_distro }}\local_setup.bat + pixi run colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} + pixi run echo "Build succeeded" - name: Test workspace shell: pixi run pwsh -Command {0} From 4aebdc26ab1b15b4a91a59a703f905c6195425a6 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 13:56:06 +0000 Subject: [PATCH 38/77] Checkout first --- .../reusable-ros-tooling-win-build.yml | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index cadb703..0205c8e 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -53,6 +53,18 @@ jobs: # this will be src/{repo-owner}/{repo-name} repo_path: src/${{ github.repository }} steps: + - name: Checkout default ref when build is not scheduled + if: ${{ github.event_name != 'schedule' }} + uses: actions/checkout@v4 + with: + path: ${{ env.repo_path }} + - name: Checkout ${{ inputs.ref_for_scheduled_build }} on scheduled build + if: ${{ github.event_name == 'schedule' }} + uses: actions/checkout@v4 + with: + ref: ${{ inputs.ref_for_scheduled_build }} + path: ${{ env.repo_path }} + - name: Bootstrap pixi # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html run: | @@ -72,18 +84,6 @@ jobs: Invoke-WebRequest -Uri $url -OutFile $output Expand-Archive -Path $output -DestinationPath ros2_${{ inputs.ros_distro }} - - name: Checkout default ref when build is not scheduled - if: ${{ github.event_name != 'schedule' }} - uses: actions/checkout@v4 - with: - path: ${{ env.repo_path }} - - name: Checkout ${{ inputs.ref_for_scheduled_build }} on scheduled build - if: ${{ github.event_name == 'schedule' }} - uses: actions/checkout@v4 - with: - ref: ${{ inputs.ref_for_scheduled_build }} - path: ${{ env.repo_path }} - - id: package_list_action uses: ros-controls/ros2_control_ci/.github/actions/set-package-list-pixi@windows/pixi with: From ad9a837ec75fd2246af0aab9a0e5cedf164b5103 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 14:04:14 +0000 Subject: [PATCH 39/77] Don't cache --- .github/workflows/reusable-ros-tooling-win-build.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 0205c8e..34370c7 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -73,7 +73,6 @@ jobs: - uses: prefix-dev/setup-pixi@v0.8.8 with: manifest-path: pixi.toml - cache: true - name: Install ROS # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html From 001f202d8a3f108ee541afc72d422424999dd6dd Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 14:07:24 +0000 Subject: [PATCH 40/77] Try windows-2022 --- .github/workflows/reusable-ros-tooling-win-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 34370c7..b162c80 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -16,7 +16,7 @@ on: os_name: description: 'On which OS to run the build job' required: false - default: 'windows-2025' + default: 'windows-2022' type: string container: description: '(optional) Docker container to run the job in, e.g. ubuntu:noble' @@ -78,7 +78,7 @@ jobs: # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html run: | # Download and extract ROS 2 package - $url = "https://ci.ros2.org/view/packaging/job/packaging_windows-2025/lastSuccessfulBuild/artifact/ws/ros2-package-windows-AMD64.zip" + $url = "https://ci.ros2.org/view/packaging/job/packaging_windows/lastSuccessfulBuild/artifact/ws/ros2-package-windows-AMD64.zip" $output = "ros2-package-windows-AMD64.zip" Invoke-WebRequest -Uri $url -OutFile $output Expand-Archive -Path $output -DestinationPath ros2_${{ inputs.ros_distro }} From f4bebbcc1cda81c6f67766abc58c4a9b85695e40 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 14:14:03 +0000 Subject: [PATCH 41/77] Revert "Use pixi run in current shell" This reverts commit 39fd17665a154057be87168c07e710e41d6a6874. --- .github/workflows/reusable-ros-tooling-win-build.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index b162c80..ff1f67a 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -117,10 +117,11 @@ jobs: } - name: Build workspace + shell: pixi run pwsh -Command {0} run: | - pixi run & ros2_${{ inputs.ros_distro }}\local_setup.bat - pixi run colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} - pixi run echo "Build succeeded" + & ros2_${{ inputs.ros_distro }}\local_setup.bat + colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} + echo "Build succeeded" - name: Test workspace shell: pixi run pwsh -Command {0} From 80ebdc6936f159f473e1d86ad0550324ba860551 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 14:20:59 +0000 Subject: [PATCH 42/77] Properly concatenate colcon command --- .github/workflows/reusable-ros-tooling-win-build.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index ff1f67a..373c01a 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -120,14 +120,19 @@ jobs: shell: pixi run pwsh -Command {0} run: | & ros2_${{ inputs.ros_distro }}\local_setup.bat - colcon build --packages-up-to ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} + $up_to_arg = if (![string]::IsNullOrWhiteSpace(${{ steps.package_list_action.outputs.package_list }})) { "--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" } else { "" } + $skip_arg = if (![string]::IsNullOrWhiteSpace(${{ inputs.skip_packages }})) { "--packages-skip ${{ inputs.skip_packages }}" } else { "" } + colcon build $up_to_arg $skip_arg echo "Build succeeded" - name: Test workspace shell: pixi run pwsh -Command {0} run: | & ros2_${{ inputs.ros_distro }}\local_setup.bat - colcon test --executor sequential --packages-select ${{ steps.package_list_action.outputs.package_list }} --packages-skip ${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }} + $up_to_arg = if (![string]::IsNullOrWhiteSpace(${{ steps.package_list_action.outputs.package_list }})) { "--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" } else { "" } + $skip_packages = "${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }}" + $skip_arg = if (![string]::IsNullOrWhiteSpace($skip_packages)) { "--packages-skip $skip_packages" } else { "" } + colcon test --executor sequential $up_to_arg $skip_arg colcon test-result --verbose echo "Tests succeeded" From a2e587ab10895a39bc6ac992160193297f4c0521 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 14:32:48 +0000 Subject: [PATCH 43/77] Use bash instead of pwsh --- .../reusable-ros-tooling-win-build.yml | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 373c01a..9a13322 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -117,21 +117,34 @@ jobs: } - name: Build workspace - shell: pixi run pwsh -Command {0} + shell: pixi run bash -e {0} run: | - & ros2_${{ inputs.ros_distro }}\local_setup.bat - $up_to_arg = if (![string]::IsNullOrWhiteSpace(${{ steps.package_list_action.outputs.package_list }})) { "--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" } else { "" } - $skip_arg = if (![string]::IsNullOrWhiteSpace(${{ inputs.skip_packages }})) { "--packages-skip ${{ inputs.skip_packages }}" } else { "" } + source ros2_${{ inputs.ros_distro }}\local_setup.bat + up_to_arg="" + if [ -n "${{ steps.package_list_action.outputs.package_list }}" ]; then + up_to_arg="--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" + fi + skip_arg="" + if [ -n "${{ inputs.skip_packages }}" ]; then + skip_arg="--packages-skip ${{ inputs.skip_packages }}" + fi colcon build $up_to_arg $skip_arg + echo "colcon build $up_to_arg $skip_arg" echo "Build succeeded" - name: Test workspace - shell: pixi run pwsh -Command {0} + shell: pixi run bash -e {0} run: | - & ros2_${{ inputs.ros_distro }}\local_setup.bat - $up_to_arg = if (![string]::IsNullOrWhiteSpace(${{ steps.package_list_action.outputs.package_list }})) { "--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" } else { "" } - $skip_packages = "${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }}" - $skip_arg = if (![string]::IsNullOrWhiteSpace($skip_packages)) { "--packages-skip $skip_packages" } else { "" } + source ros2_${{ inputs.ros_distro }}\local_setup.bat + up_to_arg="" + if [ -n "${{ steps.package_list_action.outputs.package_list }}" ]; then + up_to_arg="--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" + fi + skip_packages="${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }}" + skip_arg="" + if [ -n "$skip_packages" ]; then + skip_arg="--packages-skip $skip_packages" + fi colcon test --executor sequential $up_to_arg $skip_arg colcon test-result --verbose echo "Tests succeeded" From 76ad1f0f5167f96222a989bfaa27dd37fa883030 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 14:41:48 +0000 Subject: [PATCH 44/77] Fix slash --- .github/workflows/reusable-ros-tooling-win-build.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 9a13322..ed4b2cc 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -119,7 +119,8 @@ jobs: - name: Build workspace shell: pixi run bash -e {0} run: | - source ros2_${{ inputs.ros_distro }}\local_setup.bat + ls ros2_${{ inputs.ros_distro }} + source ros2_${{ inputs.ros_distro }}/local_setup.bat up_to_arg="" if [ -n "${{ steps.package_list_action.outputs.package_list }}" ]; then up_to_arg="--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" @@ -135,7 +136,7 @@ jobs: - name: Test workspace shell: pixi run bash -e {0} run: | - source ros2_${{ inputs.ros_distro }}\local_setup.bat + source ros2_${{ inputs.ros_distro }}/local_setup.bat up_to_arg="" if [ -n "${{ steps.package_list_action.outputs.package_list }}" ]; then up_to_arg="--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" From 2a3396d598df196f1a150dade015b4b6c9f13cb3 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 14:50:56 +0000 Subject: [PATCH 45/77] Fix path of ros rolling --- .github/workflows/reusable-ros-tooling-win-build.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index ed4b2cc..16bf208 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -119,8 +119,8 @@ jobs: - name: Build workspace shell: pixi run bash -e {0} run: | - ls ros2_${{ inputs.ros_distro }} - source ros2_${{ inputs.ros_distro }}/local_setup.bat + ls ros2_${{ inputs.ros_distro }}/ros2-windows + source ros2_${{ inputs.ros_distro }}/ros2-windows/local_setup.bat up_to_arg="" if [ -n "${{ steps.package_list_action.outputs.package_list }}" ]; then up_to_arg="--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" @@ -129,14 +129,14 @@ jobs: if [ -n "${{ inputs.skip_packages }}" ]; then skip_arg="--packages-skip ${{ inputs.skip_packages }}" fi - colcon build $up_to_arg $skip_arg echo "colcon build $up_to_arg $skip_arg" + colcon build $up_to_arg $skip_arg echo "Build succeeded" - name: Test workspace shell: pixi run bash -e {0} run: | - source ros2_${{ inputs.ros_distro }}/local_setup.bat + source ros2_${{ inputs.ros_distro }}/ros2-windows/local_setup.bat up_to_arg="" if [ -n "${{ steps.package_list_action.outputs.package_list }}" ]; then up_to_arg="--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" From bdc4d4a45272b1492ea138c0ae5f62de8e8992c2 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 15:10:33 +0000 Subject: [PATCH 46/77] Revert "Use bash instead of pwsh" This reverts commit a2e587ab10895a39bc6ac992160193297f4c0521. --- .../reusable-ros-tooling-win-build.yml | 29 ++++++------------- 1 file changed, 9 insertions(+), 20 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 16bf208..9e8e30e 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -117,35 +117,24 @@ jobs: } - name: Build workspace - shell: pixi run bash -e {0} + shell: pixi run pwsh -Command {0} run: | ls ros2_${{ inputs.ros_distro }}/ros2-windows - source ros2_${{ inputs.ros_distro }}/ros2-windows/local_setup.bat - up_to_arg="" - if [ -n "${{ steps.package_list_action.outputs.package_list }}" ]; then - up_to_arg="--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" - fi - skip_arg="" - if [ -n "${{ inputs.skip_packages }}" ]; then - skip_arg="--packages-skip ${{ inputs.skip_packages }}" - fi + ./ros2_${{ inputs.ros_distro }}/ros2-windows/local_setup.ps1 + $up_to_arg = if (![string]::IsNullOrWhiteSpace(${{ steps.package_list_action.outputs.package_list }})) { "--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" } else { "" } + $skip_arg = if (![string]::IsNullOrWhiteSpace(${{ inputs.skip_packages }})) { "--packages-skip ${{ inputs.skip_packages }}" } else { "" } echo "colcon build $up_to_arg $skip_arg" colcon build $up_to_arg $skip_arg echo "Build succeeded" - name: Test workspace - shell: pixi run bash -e {0} + shell: pixi run pwsh -Command {0} run: | - source ros2_${{ inputs.ros_distro }}/ros2-windows/local_setup.bat + ./ros2_${{ inputs.ros_distro }}/ros2-windows/local_setup.ps1 up_to_arg="" - if [ -n "${{ steps.package_list_action.outputs.package_list }}" ]; then - up_to_arg="--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" - fi - skip_packages="${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }}" - skip_arg="" - if [ -n "$skip_packages" ]; then - skip_arg="--packages-skip $skip_packages" - fi + $up_to_arg = if (![string]::IsNullOrWhiteSpace(${{ steps.package_list_action.outputs.package_list }})) { "--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" } else { "" } + $skip_packages = "${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }}" + $skip_arg = if (![string]::IsNullOrWhiteSpace($skip_packages)) { "--packages-skip $skip_packages" } else { "" } colcon test --executor sequential $up_to_arg $skip_arg colcon test-result --verbose echo "Tests succeeded" From 10cf25e8b7a515f5866d15fb7f1135b153f6634b Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Thu, 12 Jun 2025 15:35:17 +0000 Subject: [PATCH 47/77] Add debug steps --- .github/workflows/reusable-ros-tooling-win-build.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 9e8e30e..e4f7b5c 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -115,6 +115,18 @@ jobs: if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_file }}")) { vcs import --input ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} src } + - name: Debug Build workspace 1 + shell: pixi run pwsh -Command {0} + run: | + ls ros2_${{ inputs.ros_distro }}/ros2-windows + - name: Debug Build workspace 2 + shell: pixi run pwsh -Command {0} + run: | + ls ros2_${{ inputs.ros_distro }}/ros2-windows + ./ros2_${{ inputs.ros_distro }}/ros2-windows/local_setup.ps1 + $up_to_arg = if (![string]::IsNullOrWhiteSpace(${{ steps.package_list_action.outputs.package_list }})) { "--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" } else { "" } + $skip_arg = if (![string]::IsNullOrWhiteSpace(${{ inputs.skip_packages }})) { "--packages-skip ${{ inputs.skip_packages }}" } else { "" } + echo "colcon build $up_to_arg $skip_arg" - name: Build workspace shell: pixi run pwsh -Command {0} From 5d05c834e7cffb09c88a71fd91c3d78604c3d7bb Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Fri, 13 Jun 2025 22:09:49 +0200 Subject: [PATCH 48/77] Don't run tests --- .../reusable-ros-tooling-win-build.yml | 17 ++--------------- 1 file changed, 2 insertions(+), 15 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index e4f7b5c..82ed474 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -139,22 +139,9 @@ jobs: colcon build $up_to_arg $skip_arg echo "Build succeeded" - - name: Test workspace - shell: pixi run pwsh -Command {0} - run: | - ./ros2_${{ inputs.ros_distro }}/ros2-windows/local_setup.ps1 - up_to_arg="" - $up_to_arg = if (![string]::IsNullOrWhiteSpace(${{ steps.package_list_action.outputs.package_list }})) { "--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" } else { "" } - $skip_packages = "${{ inputs.skip_packages }} ${{ inputs.skip_packages_test }}" - $skip_arg = if (![string]::IsNullOrWhiteSpace($skip_packages)) { "--packages-skip $skip_packages" } else { "" } - colcon test --executor sequential $up_to_arg $skip_arg - colcon test-result --verbose - echo "Tests succeeded" - - - name: Download issue template for target failure # Has to be a local file + - name: Download issue template for target failure # Has to be a local file if: ${{ always() && steps.action-ros.outcome == 'failure' && github.event_name == 'schedule' }} - run: - wget https://raw.githubusercontent.com/ros-controls/ros2_control_ci/master/.github/issue_template_failed_ci.md -O ${{ env.repo_path }}/.github/issue_template_failed_ci.md + run: wget https://raw.githubusercontent.com/ros-controls/ros2_control_ci/master/.github/issue_template_failed_ci.md -O ${{ env.repo_path }}/.github/issue_template_failed_ci.md - uses: JasonEtco/create-an-issue@v2 # action-ros-ci does not report more details on test failures afaik if: ${{ always() && steps.action-ros.outcome == 'failure' && github.event_name == 'schedule'}} From bf41cc1480105a9b91e8fd5b3438eaf340d8898e Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Fri, 13 Jun 2025 22:15:32 +0200 Subject: [PATCH 49/77] Add additional parameters and use C:\dev for pixi + ROS --- .../reusable-ros-tooling-win-build.yml | 100 +++++++++++------- 1 file changed, 61 insertions(+), 39 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 82ed474..e3e9335 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -5,42 +5,37 @@ on: workflow_call: inputs: ros_distro: - description: 'ROS 2 distribution name, e.g. rolling' + description: "ROS 2 distribution name, e.g. rolling" required: true type: string ref_for_scheduled_build: - description: 'Reference on which the repo should be checkout for scheduled build. Usually is this name of a branch or a tag.' - default: '' + description: "Reference on which the repo should be checkout for scheduled build. Usually is this name of a branch or a tag." + default: "" required: false type: string os_name: - description: 'On which OS to run the build job' + description: "On which OS to run the build job" required: false - default: 'windows-2022' + default: "windows-2022" type: string container: - description: '(optional) Docker container to run the job in, e.g. ubuntu:noble' + description: "(optional) Docker container to run the job in, e.g. ubuntu:noble" required: false - default: '' + default: "" type: string - windows_dependencies: - description: 'Path to a repos file with additional windows dependencies' + pixi_dependencies: + description: "Whitespace separated list of additional pixi dependencies" required: false - default: '' + default: "" type: string - install_boost: - description: 'Install boost for the build' - required: false - default: false - type: boolean - skip_packages: - description: 'Packages to skip from build and test' - default: '' + windows_dependencies: + description: "Path to a repos file with additional windows dependencies" required: false + default: "" type: string - skip_packages_test: - description: 'Packages to skip from test additionally to skip_packages' - default: '' + skip_packages: + description: "Packages to skip from build and test" + default: "" required: false type: string @@ -52,6 +47,7 @@ jobs: env: # this will be src/{repo-owner}/{repo-name} repo_path: src/${{ github.repository }} + pixi_path: C:\dev steps: - name: Checkout default ref when build is not scheduled if: ${{ github.event_name != 'schedule' }} @@ -68,13 +64,22 @@ jobs: - name: Bootstrap pixi # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html run: | + mkdir -p ${{ env.pixi_path }} + Set-Location -Path ${{ env.pixi_path }} irm https://raw.githubusercontent.com/ros2/ros2/refs/heads/rolling/pixi.toml -OutFile pixi.toml - - uses: prefix-dev/setup-pixi@v0.8.8 + - name: Install pixi + uses: prefix-dev/setup-pixi@v0.8.8 with: - manifest-path: pixi.toml + manifest-path: ${{ env.pixi_path }}\pixi.toml + + - name: Install additional pixi dependencies + working-directory: ${{ env.pixi_path }} + run: | + pixi add ${{ inputs.pixi_dependencies }} - name: Install ROS + working-directory: ${{ env.pixi_path }} # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html run: | # Download and extract ROS 2 package @@ -115,29 +120,46 @@ jobs: if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_file }}")) { vcs import --input ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} src } + - name: Debug Build workspace 1 - shell: pixi run pwsh -Command {0} + shell: cmd run: | - ls ros2_${{ inputs.ros_distro }}/ros2-windows - - name: Debug Build workspace 2 - shell: pixi run pwsh -Command {0} + pixi shell --manifest-path ${{ env.pixi_path }} + ls ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}/ros2-windows + + - name: Debug Build workspace 1.5 + shell: cmd run: | - ls ros2_${{ inputs.ros_distro }}/ros2-windows - ./ros2_${{ inputs.ros_distro }}/ros2-windows/local_setup.ps1 - $up_to_arg = if (![string]::IsNullOrWhiteSpace(${{ steps.package_list_action.outputs.package_list }})) { "--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" } else { "" } - $skip_arg = if (![string]::IsNullOrWhiteSpace(${{ inputs.skip_packages }})) { "--packages-skip ${{ inputs.skip_packages }}" } else { "" } + pixi shell --manifest-path ${{ env.pixi_path }} + ls ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}/ros2-windows + call ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}/ros2-windows/setup.bat + echo "sourced ros2_${{ inputs.ros_distro }}/ros2-windows/setup.bat" + up_to_arg="" + if [ -n "${{ steps.package_list_action.outputs.package_list }}" ]; then + up_to_arg="--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" + fi + skip_arg="" + if [ -n "${{ inputs.skip_packages }}" ]; then + skip_arg="--packages-skip ${{ inputs.skip_packages }}" + fi echo "colcon build $up_to_arg $skip_arg" - - name: Build workspace - shell: pixi run pwsh -Command {0} + - name: Debug Build workspace 2 + shell: cmd run: | - ls ros2_${{ inputs.ros_distro }}/ros2-windows - ./ros2_${{ inputs.ros_distro }}/ros2-windows/local_setup.ps1 - $up_to_arg = if (![string]::IsNullOrWhiteSpace(${{ steps.package_list_action.outputs.package_list }})) { "--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" } else { "" } - $skip_arg = if (![string]::IsNullOrWhiteSpace(${{ inputs.skip_packages }})) { "--packages-skip ${{ inputs.skip_packages }}" } else { "" } + pixi shell --manifest-path ${{ env.pixi_path }} + ls ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}/ros2-windows + call ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}/ros2-windows/setup.bat + echo "sourced ros2_${{ inputs.ros_distro }}/ros2-windows/setup.bat" + up_to_arg="" + if [ -n "${{ steps.package_list_action.outputs.package_list }}" ]; then + up_to_arg="--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" + fi + skip_arg="" + if [ -n "${{ inputs.skip_packages }}" ]; then + skip_arg="--packages-skip ${{ inputs.skip_packages }}" + fi echo "colcon build $up_to_arg $skip_arg" - colcon build $up_to_arg $skip_arg - echo "Build succeeded" - name: Download issue template for target failure # Has to be a local file if: ${{ always() && steps.action-ros.outcome == 'failure' && github.event_name == 'schedule' }} From 2bc8936bbe0e054d1a72989d74c3357a95edcc5c Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Fri, 13 Jun 2025 22:41:41 +0200 Subject: [PATCH 50/77] Fix action with pixi --- .../actions/set-package-list-pixi/action.yml | 18 ++++++++++-------- .../reusable-ros-tooling-win-build.yml | 12 +++++++++--- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/.github/actions/set-package-list-pixi/action.yml b/.github/actions/set-package-list-pixi/action.yml index 409e132..06ad98f 100644 --- a/.github/actions/set-package-list-pixi/action.yml +++ b/.github/actions/set-package-list-pixi/action.yml @@ -1,9 +1,11 @@ -name: 'Get package list' +name: "Get package list" # pixi and ROS 2 have to be installed in the current path -description: 'Get a list of packages in the given path' +description: "Get a list of packages in the given path" inputs: path: - description: 'Path to the repository after checkout' + description: "Path to the repository after checkout" + mainfest-path: + description: "Path to the pixi.toml file or workspace directory" outputs: package_list: description: "A white-space separated list of packages" @@ -15,14 +17,14 @@ outputs: description: "The name of the repo, last part of github.repository" value: ${{ steps.split_repo.outputs.repo_name }} - runs: - using: 'composite' + using: "composite" steps: - id: colcon # if a path is given, list the packages in the given path and its subdirectories from the path # if no path is given, list all packages in the workspace run: | + pixi shell --manifest-path ${{ inputs.mainfest-path }} if [[ -n "${{ inputs.path }}" ]]; then echo "package_list=$(colcon list --paths ${{ inputs.path }} --names-only | tr '\n' ' ') $(colcon list --paths ${{ inputs.path }}/* --names-only | tr '\n' ' ')" >> $GITHUB_OUTPUT echo "package_path_list=$(colcon list --paths ${{ inputs.path }} --paths-only | tr '\n' ' ') $(colcon list --paths ${{ inputs.path }}/* --paths-only | tr '\n' ' ')" >> $GITHUB_OUTPUT @@ -30,11 +32,11 @@ runs: echo "package_list=$(colcon list --names-only | tr '\n' ' ')" >> $GITHUB_OUTPUT echo "package_path_list=$(colcon list --paths-only | tr '\n' ' ')" >> $GITHUB_OUTPUT fi - shell: pixi run bash -e {0} + shell: bash - id: split_repo run: | echo "repo_name=$(echo ${{ github.repository }} | cut -d '/' -f 2)" >> $GITHUB_OUTPUT - shell: pixi run bash -e {0} + shell: bash - run: | echo "repo ${{ steps.split_repo.outputs.repo_name }} contains the packages: ${{ steps.colcon.outputs.package_list }}" - shell: pixi run bash -e {0} + shell: bash diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index e3e9335..28a2b5d 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -88,10 +88,12 @@ jobs: Invoke-WebRequest -Uri $url -OutFile $output Expand-Archive -Path $output -DestinationPath ros2_${{ inputs.ros_distro }} - - id: package_list_action + - name: Get package list + id: package_list_action uses: ros-controls/ros2_control_ci/.github/actions/set-package-list-pixi@windows/pixi with: path: ${{ env.repo_path }} + manifest-path: ${{ env.pixi_path }} - name: Check for local repos file id: check_local_repos @@ -144,7 +146,10 @@ jobs: fi echo "colcon build $up_to_arg $skip_arg" - - name: Debug Build workspace 2 + - name: Build workspace + # use Ninja generator for faster builds, needed for RSL + # https://github.com/search?q=repo%3APickNikRobotics%2FRSL%20ninja&type=code + # https://github.com/colcon/colcon-ros/issues/84#issuecomment-1862881299 shell: cmd run: | pixi shell --manifest-path ${{ env.pixi_path }} @@ -159,7 +164,8 @@ jobs: if [ -n "${{ inputs.skip_packages }}" ]; then skip_arg="--packages-skip ${{ inputs.skip_packages }}" fi - echo "colcon build $up_to_arg $skip_arg" + echo "colcon build $up_to_arg $skip_arg --cmake-args -G Ninja" + colcon build $up_to_arg $skip_arg --cmake-args -G Ninja - name: Download issue template for target failure # Has to be a local file if: ${{ always() && steps.action-ros.outcome == 'failure' && github.event_name == 'schedule' }} From 2eceb24dd84ffd506f48b1ada7805c76f8555b0b Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Fri, 13 Jun 2025 22:56:14 +0200 Subject: [PATCH 51/77] Fix typo --- .github/actions/set-package-list-pixi/action.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/actions/set-package-list-pixi/action.yml b/.github/actions/set-package-list-pixi/action.yml index 06ad98f..b3ae1c2 100644 --- a/.github/actions/set-package-list-pixi/action.yml +++ b/.github/actions/set-package-list-pixi/action.yml @@ -4,7 +4,7 @@ description: "Get a list of packages in the given path" inputs: path: description: "Path to the repository after checkout" - mainfest-path: + manifest-path: description: "Path to the pixi.toml file or workspace directory" outputs: package_list: @@ -24,7 +24,7 @@ runs: # if a path is given, list the packages in the given path and its subdirectories from the path # if no path is given, list all packages in the workspace run: | - pixi shell --manifest-path ${{ inputs.mainfest-path }} + pixi shell --manifest-path ${{ inputs.manifest-path }} if [[ -n "${{ inputs.path }}" ]]; then echo "package_list=$(colcon list --paths ${{ inputs.path }} --names-only | tr '\n' ' ') $(colcon list --paths ${{ inputs.path }}/* --names-only | tr '\n' ' ')" >> $GITHUB_OUTPUT echo "package_path_list=$(colcon list --paths ${{ inputs.path }} --paths-only | tr '\n' ' ') $(colcon list --paths ${{ inputs.path }}/* --paths-only | tr '\n' ' ')" >> $GITHUB_OUTPUT From c66d0c82cc9ad26b32e4f24eb32f619c39ae6d38 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Fri, 13 Jun 2025 22:57:38 +0200 Subject: [PATCH 52/77] Remove ninja again --- .github/workflows/reusable-ros-tooling-win-build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 28a2b5d..e191319 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -147,7 +147,7 @@ jobs: echo "colcon build $up_to_arg $skip_arg" - name: Build workspace - # use Ninja generator for faster builds, needed for RSL + # TODO: use Ninja generator for RSL, but doesn't work for msg packages # https://github.com/search?q=repo%3APickNikRobotics%2FRSL%20ninja&type=code # https://github.com/colcon/colcon-ros/issues/84#issuecomment-1862881299 shell: cmd @@ -164,8 +164,8 @@ jobs: if [ -n "${{ inputs.skip_packages }}" ]; then skip_arg="--packages-skip ${{ inputs.skip_packages }}" fi - echo "colcon build $up_to_arg $skip_arg --cmake-args -G Ninja" - colcon build $up_to_arg $skip_arg --cmake-args -G Ninja + echo "colcon build $up_to_arg $skip_arg --cmake-args -G Ninja --event-handler console_cohesion+" + colcon build $up_to_arg $skip_arg --cmake-args --event-handler console_cohesion+ - name: Download issue template for target failure # Has to be a local file if: ${{ always() && steps.action-ros.outcome == 'failure' && github.event_name == 'schedule' }} From f8eaef35eec1af347eab42a218d638163c39baa4 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Fri, 13 Jun 2025 23:30:15 +0200 Subject: [PATCH 53/77] Debug manifest path --- .github/actions/set-package-list-pixi/action.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/actions/set-package-list-pixi/action.yml b/.github/actions/set-package-list-pixi/action.yml index b3ae1c2..99ef0b0 100644 --- a/.github/actions/set-package-list-pixi/action.yml +++ b/.github/actions/set-package-list-pixi/action.yml @@ -24,6 +24,8 @@ runs: # if a path is given, list the packages in the given path and its subdirectories from the path # if no path is given, list all packages in the workspace run: | + echo $PWD + ls ${{ inputs.manifest-path }} || true pixi shell --manifest-path ${{ inputs.manifest-path }} if [[ -n "${{ inputs.path }}" ]]; then echo "package_list=$(colcon list --paths ${{ inputs.path }} --names-only | tr '\n' ' ') $(colcon list --paths ${{ inputs.path }}/* --names-only | tr '\n' ' ')" >> $GITHUB_OUTPUT From 4421a0422f0815a6b5e29b6d6f9e969f3baa994f Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Fri, 13 Jun 2025 23:35:42 +0200 Subject: [PATCH 54/77] Use \ --- .../workflows/reusable-ros-tooling-win-build.yml | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index e191319..8716fe4 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -127,19 +127,16 @@ jobs: shell: cmd run: | pixi shell --manifest-path ${{ env.pixi_path }} - ls ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}/ros2-windows + ls ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}\ros2-windows - name: Debug Build workspace 1.5 shell: cmd run: | pixi shell --manifest-path ${{ env.pixi_path }} - ls ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}/ros2-windows - call ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}/ros2-windows/setup.bat - echo "sourced ros2_${{ inputs.ros_distro }}/ros2-windows/setup.bat" - up_to_arg="" - if [ -n "${{ steps.package_list_action.outputs.package_list }}" ]; then - up_to_arg="--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" - fi + ls ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}\ros2-windows + call ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat + echo "sourced ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat" + up_to_arg="--packages-up-to realtime_tools" skip_arg="" if [ -n "${{ inputs.skip_packages }}" ]; then skip_arg="--packages-skip ${{ inputs.skip_packages }}" From 91169f13a2843c2d1cf625a8dc4f455f33f246b1 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Fri, 13 Jun 2025 23:35:51 +0200 Subject: [PATCH 55/77] hardcode package for now --- .github/workflows/reusable-ros-tooling-win-build.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 8716fe4..ea81619 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -88,12 +88,12 @@ jobs: Invoke-WebRequest -Uri $url -OutFile $output Expand-Archive -Path $output -DestinationPath ros2_${{ inputs.ros_distro }} - - name: Get package list - id: package_list_action - uses: ros-controls/ros2_control_ci/.github/actions/set-package-list-pixi@windows/pixi - with: - path: ${{ env.repo_path }} - manifest-path: ${{ env.pixi_path }} + # - name: Get package list + # id: package_list_action + # uses: ros-controls/ros2_control_ci/.github/actions/set-package-list-pixi@windows/pixi + # with: + # path: ${{ env.repo_path }} + # manifest-path: ${{ env.pixi_path }} - name: Check for local repos file id: check_local_repos From c5a81a3e2052d78942f25c65c42af043ca5a7013 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Fri, 13 Jun 2025 23:48:56 +0200 Subject: [PATCH 56/77] Hardcode pacakge in install deps step --- .github/workflows/reusable-ros-tooling-win-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index ea81619..ab57fe8 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -98,9 +98,9 @@ jobs: - name: Check for local repos file id: check_local_repos run: | - if (Test-Path ${{ env.repo_path }}\${{ steps.package_list_action.outputs.repo_name }}.${{ inputs.ros_distro }}.repos) { + if (Test-Path ${{ env.repo_path }}\realtime_tools.${{ inputs.ros_distro }}.repos) { Write-Output "Local repos file found" - "repo_file=${{ env.repo_path }}\${{ steps.package_list_action.outputs.repo_name }}.${{ inputs.ros_distro }}.repos" | Out-File -FilePath $Env:GITHUB_OUTPUT -Append + "repo_file=${{ env.repo_path }}\realtime_tools.${{ inputs.ros_distro }}.repos" | Out-File -FilePath $Env:GITHUB_OUTPUT -Append } else { Write-Output "No local repos file found" "repo_file=" | Out-File -FilePath $Env:GITHUB_OUTPUT -Append From 5774a0eb1cfa35f674c999e19328f4b48c5ee634 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Fri, 13 Jun 2025 23:49:07 +0200 Subject: [PATCH 57/77] Fix install deps step --- .github/workflows/reusable-ros-tooling-win-build.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index ab57fe8..16a72fd 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -114,8 +114,9 @@ jobs: } - name: Install dependencies - shell: pixi run pwsh -Command {0} + shell: pwsh run: | + pixi shell --manifest-path ${{ env.pixi_path }} if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_files }}")) { vcs import --input ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} src } From b3b0f41453faa97ecbfe7d6c1f07355b1c635478 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Sat, 14 Jun 2025 00:25:01 +0200 Subject: [PATCH 58/77] Fix check_local_repos --- .../workflows/reusable-ros-tooling-win-build.yml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 16a72fd..f339731 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -99,30 +99,30 @@ jobs: id: check_local_repos run: | if (Test-Path ${{ env.repo_path }}\realtime_tools.${{ inputs.ros_distro }}.repos) { - Write-Output "Local repos file found" - "repo_file=${{ env.repo_path }}\realtime_tools.${{ inputs.ros_distro }}.repos" | Out-File -FilePath $Env:GITHUB_OUTPUT -Append + Write-Output "Local repos file found" + "repo_file=${{ env.repo_path }}\realtime_tools.${{ inputs.ros_distro }}.repos" | Out-File -FilePath $Env:GITHUB_OUTPUT } else { Write-Output "No local repos file found" - "repo_file=" | Out-File -FilePath $Env:GITHUB_OUTPUT -Append + "repo_file=" | Out-File -FilePath $Env:GITHUB_OUTPUT } if (![string]::IsNullOrWhiteSpace("${{ inputs.windows_dependencies }}") -and (Test-Path "${{ env.repo_path }}\${{ inputs.windows_dependencies }}")) { Write-Output "Windows repos file found" - "repo_file=${{ env.repo_path }}\${{ inputs.windows_dependencies }}" | Out-File -FilePath $Env:GITHUB_OUTPUT -Append + "repo_file_win=${{ env.repo_path }}\${{ inputs.windows_dependencies }}" | Out-File -FilePath $Env:GITHUB_OUTPUT } else { Write-Output "No windows dependencies provided or file not found" - "repo_file=" | Out-File -FilePath $Env:GITHUB_OUTPUT -Append + "repo_file_win=" | Out-File -FilePath $Env:GITHUB_OUTPUT } - name: Install dependencies shell: pwsh run: | pixi shell --manifest-path ${{ env.pixi_path }} - if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_files }}")) { - vcs import --input ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} src - } if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_file }}")) { vcs import --input ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} src } + if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_file_win }}")) { + vcs import --input ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file_win }} src + } - name: Debug Build workspace 1 shell: cmd From af76e72d968abc71a59a8c85a10f51075ac2e32f Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Sat, 14 Jun 2025 00:31:28 +0200 Subject: [PATCH 59/77] Fix build step --- .../reusable-ros-tooling-win-build.yml | 51 +++++++------------ 1 file changed, 19 insertions(+), 32 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index f339731..aa960f1 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -137,12 +137,15 @@ jobs: ls ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}\ros2-windows call ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat echo "sourced ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat" - up_to_arg="--packages-up-to realtime_tools" - skip_arg="" - if [ -n "${{ inputs.skip_packages }}" ]; then - skip_arg="--packages-skip ${{ inputs.skip_packages }}" - fi - echo "colcon build $up_to_arg $skip_arg" + set up_to_arg= + if not "realtime_tools"=="" ( + set up_to_arg=--packages-up-to realtime_tools + ) + set skip_arg= + if not "${{ inputs.skip_packages }}"=="" ( + set skip_arg=--packages-skip ${{ inputs.skip_packages }} + ) + echo colcon build %up_to_arg% %skip_arg% - name: Build workspace # TODO: use Ninja generator for RSL, but doesn't work for msg packages @@ -151,31 +154,15 @@ jobs: shell: cmd run: | pixi shell --manifest-path ${{ env.pixi_path }} - ls ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}/ros2-windows call ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}/ros2-windows/setup.bat echo "sourced ros2_${{ inputs.ros_distro }}/ros2-windows/setup.bat" - up_to_arg="" - if [ -n "${{ steps.package_list_action.outputs.package_list }}" ]; then - up_to_arg="--packages-up-to ${{ steps.package_list_action.outputs.package_list }}" - fi - skip_arg="" - if [ -n "${{ inputs.skip_packages }}" ]; then - skip_arg="--packages-skip ${{ inputs.skip_packages }}" - fi - echo "colcon build $up_to_arg $skip_arg --cmake-args -G Ninja --event-handler console_cohesion+" - colcon build $up_to_arg $skip_arg --cmake-args --event-handler console_cohesion+ - - - name: Download issue template for target failure # Has to be a local file - if: ${{ always() && steps.action-ros.outcome == 'failure' && github.event_name == 'schedule' }} - run: wget https://raw.githubusercontent.com/ros-controls/ros2_control_ci/master/.github/issue_template_failed_ci.md -O ${{ env.repo_path }}/.github/issue_template_failed_ci.md - - uses: JasonEtco/create-an-issue@v2 - # action-ros-ci does not report more details on test failures afaik - if: ${{ always() && steps.action-ros.outcome == 'failure' && github.event_name == 'schedule'}} - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - ACTION_NAME: ${{ inputs.ros_distro }}/source - REF: ${{ inputs.ref_for_scheduled_build }} - URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} - with: - update_existing: true - filename: ${{ env.repo_path }}/.github/issue_template_failed_ci.md + set up_to_arg= + if not "realtime_tools"=="" ( + set up_to_arg=--packages-up-to realtime_tools + ) + set skip_arg= + if not "${{ inputs.skip_packages }}"=="" ( + set skip_arg=--packages-skip ${{ inputs.skip_packages }} + ) + echo colcon build %up_to_arg% %skip_arg% + colcon build %up_to_arg% %skip_arg% --cmake-args --event-handler console_cohesion+ From c1c320481526f0cbb272adcb2b7831ca159328f3 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Sat, 14 Jun 2025 00:45:23 +0200 Subject: [PATCH 60/77] get colcon version --- .../reusable-ros-tooling-win-build.yml | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index aa960f1..04285ed 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -134,18 +134,11 @@ jobs: shell: cmd run: | pixi shell --manifest-path ${{ env.pixi_path }} - ls ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}\ros2-windows + colcon --version call ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat - echo "sourced ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat" - set up_to_arg= - if not "realtime_tools"=="" ( - set up_to_arg=--packages-up-to realtime_tools - ) - set skip_arg= - if not "${{ inputs.skip_packages }}"=="" ( - set skip_arg=--packages-skip ${{ inputs.skip_packages }} - ) - echo colcon build %up_to_arg% %skip_arg% + echo sourced ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat + echo colcon --version + colcon --version - name: Build workspace # TODO: use Ninja generator for RSL, but doesn't work for msg packages @@ -154,8 +147,8 @@ jobs: shell: cmd run: | pixi shell --manifest-path ${{ env.pixi_path }} - call ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}/ros2-windows/setup.bat - echo "sourced ros2_${{ inputs.ros_distro }}/ros2-windows/setup.bat" + call ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat + echo sourced ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat set up_to_arg= if not "realtime_tools"=="" ( set up_to_arg=--packages-up-to realtime_tools From b4d5f9889b227fffd72117a8aac607ce033657f7 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Sat, 14 Jun 2025 08:11:36 +0200 Subject: [PATCH 61/77] Fix install dependencies --- .../reusable-ros-tooling-win-build.yml | 23 ++++++++----------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 04285ed..d1ffd4e 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -95,33 +95,28 @@ jobs: # path: ${{ env.repo_path }} # manifest-path: ${{ env.pixi_path }} - - name: Check for local repos file - id: check_local_repos + - name: Install dependencies run: | if (Test-Path ${{ env.repo_path }}\realtime_tools.${{ inputs.ros_distro }}.repos) { Write-Output "Local repos file found" - "repo_file=${{ env.repo_path }}\realtime_tools.${{ inputs.ros_distro }}.repos" | Out-File -FilePath $Env:GITHUB_OUTPUT + $repo_file = "${{ env.repo_path }}\realtime_tools.${{ inputs.ros_distro }}.repos" } else { Write-Output "No local repos file found" - "repo_file=" | Out-File -FilePath $Env:GITHUB_OUTPUT + $repo_file="" } if (![string]::IsNullOrWhiteSpace("${{ inputs.windows_dependencies }}") -and (Test-Path "${{ env.repo_path }}\${{ inputs.windows_dependencies }}")) { Write-Output "Windows repos file found" - "repo_file_win=${{ env.repo_path }}\${{ inputs.windows_dependencies }}" | Out-File -FilePath $Env:GITHUB_OUTPUT + $repo_file_win = "${{ env.repo_path }}\${{ inputs.windows_dependencies }}" } else { Write-Output "No windows dependencies provided or file not found" - "repo_file_win=" | Out-File -FilePath $Env:GITHUB_OUTPUT + $repo_file_win = "" } - - - name: Install dependencies - shell: pwsh - run: | pixi shell --manifest-path ${{ env.pixi_path }} - if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_file }}")) { - vcs import --input ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file }} src + if (![string]::IsNullOrWhiteSpace($repo_file)) { + vcs import --input ${{ env.repo_path }}/$repo_file src } - if (![string]::IsNullOrWhiteSpace("${{ steps.check_local_repos.outputs.repo_file_win }}")) { - vcs import --input ${{ env.repo_path }}/${{ steps.check_local_repos.outputs.repo_file_win }} src + if (![string]::IsNullOrWhiteSpace($repo_file_win)) { + vcs import --input ${{ env.repo_path }}/$repo_file_win src } - name: Debug Build workspace 1 From 3650a437ef59e773792dec152530934703f8ba43 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Sat, 14 Jun 2025 08:12:29 +0200 Subject: [PATCH 62/77] Debug output --- .github/workflows/reusable-ros-tooling-win-build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index d1ffd4e..bea20a3 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -112,6 +112,8 @@ jobs: $repo_file_win = "" } pixi shell --manifest-path ${{ env.pixi_path }} + vcs --version + colcon --version if (![string]::IsNullOrWhiteSpace($repo_file)) { vcs import --input ${{ env.repo_path }}/$repo_file src } From 9888004d9a1f72b7bd064b73caedb56fabb799b8 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Sat, 14 Jun 2025 08:24:45 +0200 Subject: [PATCH 63/77] Debug pixi --- .github/workflows/reusable-ros-tooling-win-build.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index bea20a3..83fe84f 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -112,6 +112,8 @@ jobs: $repo_file_win = "" } pixi shell --manifest-path ${{ env.pixi_path }} + pixi run --manifest-path ${{ env.pixi_path }} vcs --version + pixi run --manifest-path ${{ env.pixi_path }} colcon --version vcs --version colcon --version if (![string]::IsNullOrWhiteSpace($repo_file)) { From 3fbc970cacc53fdf7eefad353018f4c8b7ca2634 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Sat, 14 Jun 2025 08:48:37 +0200 Subject: [PATCH 64/77] use shell-hook instead --- .github/workflows/reusable-ros-tooling-win-build.yml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 83fe84f..f05abbf 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -111,11 +111,9 @@ jobs: Write-Output "No windows dependencies provided or file not found" $repo_file_win = "" } - pixi shell --manifest-path ${{ env.pixi_path }} - pixi run --manifest-path ${{ env.pixi_path }} vcs --version - pixi run --manifest-path ${{ env.pixi_path }} colcon --version + Invoke-Expression ((& pixi shell-hook -s powershell --manifest-path ${{ env.pixi_path }}) -join "`n") vcs --version - colcon --version + colcon --help if (![string]::IsNullOrWhiteSpace($repo_file)) { vcs import --input ${{ env.repo_path }}/$repo_file src } From 74278e6644eb42c1ea0193ec11807f540aa26936 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Sat, 14 Jun 2025 09:05:07 +0200 Subject: [PATCH 65/77] use shell-hook instead --- .../reusable-ros-tooling-win-build.yml | 25 +++++-------------- 1 file changed, 6 insertions(+), 19 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index f05abbf..b5cb39f 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -115,37 +115,24 @@ jobs: vcs --version colcon --help if (![string]::IsNullOrWhiteSpace($repo_file)) { - vcs import --input ${{ env.repo_path }}/$repo_file src + vcs import --input $repo_file src } if (![string]::IsNullOrWhiteSpace($repo_file_win)) { - vcs import --input ${{ env.repo_path }}/$repo_file_win src + vcs import --input $repo_file_win src } - - name: Debug Build workspace 1 - shell: cmd - run: | - pixi shell --manifest-path ${{ env.pixi_path }} - ls ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}\ros2-windows - - - name: Debug Build workspace 1.5 - shell: cmd - run: | - pixi shell --manifest-path ${{ env.pixi_path }} - colcon --version - call ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat - echo sourced ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat - echo colcon --version - colcon --version - - name: Build workspace # TODO: use Ninja generator for RSL, but doesn't work for msg packages # https://github.com/search?q=repo%3APickNikRobotics%2FRSL%20ninja&type=code # https://github.com/colcon/colcon-ros/issues/84#issuecomment-1862881299 shell: cmd run: | - pixi shell --manifest-path ${{ env.pixi_path }} + call pixi.bat shell-hook -s cmd --manifest-path ${{ env.pixi_path }} > pixi_env.bat + call pixi_env.bat + call ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat echo sourced ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat + set up_to_arg= if not "realtime_tools"=="" ( set up_to_arg=--packages-up-to realtime_tools From 7a042c1306d98a62cbe4ab7da2dfcc7a45cb8390 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Sat, 14 Jun 2025 09:23:09 +0200 Subject: [PATCH 66/77] fix path --- .github/workflows/reusable-ros-tooling-win-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index b5cb39f..06e8882 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -127,9 +127,9 @@ jobs: # https://github.com/colcon/colcon-ros/issues/84#issuecomment-1862881299 shell: cmd run: | - call pixi.bat shell-hook -s cmd --manifest-path ${{ env.pixi_path }} > pixi_env.bat + call pixi shell-hook -s cmd --manifest-path ${{ env.pixi_path }} > pixi_env.bat call pixi_env.bat - + call ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat echo sourced ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat From e46a80b82208a7e2646fd33274afd71719c3dee9 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Sat, 14 Jun 2025 09:37:46 +0200 Subject: [PATCH 67/77] Use action for getting package names --- .../actions/set-package-list-pixi/action.yml | 25 +++++++++-------- .../reusable-ros-tooling-win-build.yml | 28 ++++++++----------- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/.github/actions/set-package-list-pixi/action.yml b/.github/actions/set-package-list-pixi/action.yml index 99ef0b0..cc719ae 100644 --- a/.github/actions/set-package-list-pixi/action.yml +++ b/.github/actions/set-package-list-pixi/action.yml @@ -24,17 +24,20 @@ runs: # if a path is given, list the packages in the given path and its subdirectories from the path # if no path is given, list all packages in the workspace run: | - echo $PWD - ls ${{ inputs.manifest-path }} || true - pixi shell --manifest-path ${{ inputs.manifest-path }} - if [[ -n "${{ inputs.path }}" ]]; then - echo "package_list=$(colcon list --paths ${{ inputs.path }} --names-only | tr '\n' ' ') $(colcon list --paths ${{ inputs.path }}/* --names-only | tr '\n' ' ')" >> $GITHUB_OUTPUT - echo "package_path_list=$(colcon list --paths ${{ inputs.path }} --paths-only | tr '\n' ' ') $(colcon list --paths ${{ inputs.path }}/* --paths-only | tr '\n' ' ')" >> $GITHUB_OUTPUT - else - echo "package_list=$(colcon list --names-only | tr '\n' ' ')" >> $GITHUB_OUTPUT - echo "package_path_list=$(colcon list --paths-only | tr '\n' ' ')" >> $GITHUB_OUTPUT - fi - shell: bash + call pixi shell-hook -s cmd --manifest-path ${{ inputs.manifest-path }} > pixi_env.bat + call pixi_env.bat + if not "${{ inputs.path }}"=="" ( + for /f "delims=" %%a in ('colcon list --paths ${{ inputs.path }} --names-only') do set "package_list=!package_list! %%a" + for /f "delims=" %%a in ('colcon list --paths ${{ inputs.path }}\* --names-only') do set "package_list=!package_list! %%a" + for /f "delims=" %%a in ('colcon list --paths ${{ inputs.path }} --paths-only') do set "package_path_list=!package_path_list! %%a" + for /f "delims=" %%a in ('colcon list --paths ${{ inputs.path }}\* --paths-only') do set "package_path_list=!package_path_list! %%a" + ) else ( + for /f "delims=" %%a in ('colcon list --names-only') do set "package_list=!package_list! %%a" + for /f "delims=" %%a in ('colcon list --paths-only') do set "package_path_list=!package_path_list! %%a" + ) + echo package_list=%package_list%>> %GITHUB_OUTPUT% + echo package_path_list=%package_path_list%>> %GITHUB_OUTPUT% + shell: cmd - id: split_repo run: | echo "repo_name=$(echo ${{ github.repository }} | cut -d '/' -f 2)" >> $GITHUB_OUTPUT diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 06e8882..3fd8018 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -80,26 +80,26 @@ jobs: - name: Install ROS working-directory: ${{ env.pixi_path }} + # Download and extract ROS 2 package # https://docs.ros.org/en/rolling/Installation/Windows-Install-Binary.html run: | - # Download and extract ROS 2 package $url = "https://ci.ros2.org/view/packaging/job/packaging_windows/lastSuccessfulBuild/artifact/ws/ros2-package-windows-AMD64.zip" $output = "ros2-package-windows-AMD64.zip" Invoke-WebRequest -Uri $url -OutFile $output Expand-Archive -Path $output -DestinationPath ros2_${{ inputs.ros_distro }} - # - name: Get package list - # id: package_list_action - # uses: ros-controls/ros2_control_ci/.github/actions/set-package-list-pixi@windows/pixi - # with: - # path: ${{ env.repo_path }} - # manifest-path: ${{ env.pixi_path }} + - name: Get package list + id: package_list_action + uses: ros-controls/ros2_control_ci/.github/actions/set-package-list-pixi@windows/pixi + with: + path: ${{ env.repo_path }} + manifest-path: ${{ env.pixi_path }} - name: Install dependencies run: | - if (Test-Path ${{ env.repo_path }}\realtime_tools.${{ inputs.ros_distro }}.repos) { + if (Test-Path ${{ env.repo_path }}\${{ steps.package_list_action.outputs.repo_name }}.${{ inputs.ros_distro }}.repos) { Write-Output "Local repos file found" - $repo_file = "${{ env.repo_path }}\realtime_tools.${{ inputs.ros_distro }}.repos" + $repo_file = "${{ env.repo_path }}\${{ steps.package_list_action.outputs.repo_name }}.${{ inputs.ros_distro }}.repos" } else { Write-Output "No local repos file found" $repo_file="" @@ -112,8 +112,6 @@ jobs: $repo_file_win = "" } Invoke-Expression ((& pixi shell-hook -s powershell --manifest-path ${{ env.pixi_path }}) -join "`n") - vcs --version - colcon --help if (![string]::IsNullOrWhiteSpace($repo_file)) { vcs import --input $repo_file src } @@ -131,15 +129,13 @@ jobs: call pixi_env.bat call ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat - echo sourced ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat set up_to_arg= - if not "realtime_tools"=="" ( - set up_to_arg=--packages-up-to realtime_tools + if not "${{ steps.package_list_action.outputs.package_list }}"=="" ( + set up_to_arg=--packages-up-to ${{ steps.package_list_action.outputs.package_list }} ) set skip_arg= if not "${{ inputs.skip_packages }}"=="" ( set skip_arg=--packages-skip ${{ inputs.skip_packages }} ) - echo colcon build %up_to_arg% %skip_arg% - colcon build %up_to_arg% %skip_arg% --cmake-args --event-handler console_cohesion+ + colcon build %up_to_arg% %skip_arg% From 6a2eef82ab598ef5daaf521c7f0a37e609f04540 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Sat, 14 Jun 2025 17:48:36 +0200 Subject: [PATCH 68/77] Suppress output --- .github/workflows/reusable-ros-tooling-win-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 3fd8018..2d87ee9 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -126,7 +126,7 @@ jobs: shell: cmd run: | call pixi shell-hook -s cmd --manifest-path ${{ env.pixi_path }} > pixi_env.bat - call pixi_env.bat + call pixi_env.bat >nul 2>&1 call ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat From 63188d4193a28859841b95a9ec505ff6a2915c3c Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Sat, 14 Jun 2025 17:48:51 +0200 Subject: [PATCH 69/77] Fix batch script --- .../actions/set-package-list-pixi/action.yml | 32 ++++++++++++++----- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/.github/actions/set-package-list-pixi/action.yml b/.github/actions/set-package-list-pixi/action.yml index cc719ae..3ca09cd 100644 --- a/.github/actions/set-package-list-pixi/action.yml +++ b/.github/actions/set-package-list-pixi/action.yml @@ -26,17 +26,33 @@ runs: run: | call pixi shell-hook -s cmd --manifest-path ${{ inputs.manifest-path }} > pixi_env.bat call pixi_env.bat + setlocal enabledelayedexpansion + set "package_list=" + set "package_path_list=" if not "${{ inputs.path }}"=="" ( - for /f "delims=" %%a in ('colcon list --paths ${{ inputs.path }} --names-only') do set "package_list=!package_list! %%a" - for /f "delims=" %%a in ('colcon list --paths ${{ inputs.path }}\* --names-only') do set "package_list=!package_list! %%a" - for /f "delims=" %%a in ('colcon list --paths ${{ inputs.path }} --paths-only') do set "package_path_list=!package_path_list! %%a" - for /f "delims=" %%a in ('colcon list --paths ${{ inputs.path }}\* --paths-only') do set "package_path_list=!package_path_list! %%a" + for /f "delims=" %%a in ('colcon list --paths "${{ inputs.path }}" --names-only') do ( + set "package_list=!package_list! %%a" + ) + for /f "delims=" %%a in ('colcon list --paths "${{ inputs.path }}\*" --names-only') do ( + set "package_list=!package_list! %%a" + ) + for /f "delims=" %%a in ('colcon list --paths "${{ inputs.path }}" --paths-only') do ( + set "package_path_list=!package_path_list! %%a" + ) + for /f "delims=" %%a in ('colcon list --paths "${{ inputs.path }}\*" --paths-only') do ( + set "package_path_list=!package_path_list! %%a" + ) ) else ( - for /f "delims=" %%a in ('colcon list --names-only') do set "package_list=!package_list! %%a" - for /f "delims=" %%a in ('colcon list --paths-only') do set "package_path_list=!package_path_list! %%a" + for /f "delims=" %%a in ('colcon list --names-only') do ( + set "package_list=!package_list! %%a" + ) + for /f "delims=" %%a in ('colcon list --paths-only') do ( + set "package_path_list=!package_path_list! %%a" + ) ) - echo package_list=%package_list%>> %GITHUB_OUTPUT% - echo package_path_list=%package_path_list%>> %GITHUB_OUTPUT% + echo package_list=!package_list!>> %GITHUB_OUTPUT% + echo package_path_list=!package_path_list!>> %GITHUB_OUTPUT% + endlocal shell: cmd - id: split_repo run: | From 0cae4b52b102b4c00903a1e2de99ab5a2ed0d705 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Sat, 14 Jun 2025 18:11:14 +0200 Subject: [PATCH 70/77] Cleanup and add some comments --- .../actions/set-package-list-pixi/action.yml | 7 +++- .../reusable-ros-tooling-win-build.yml | 37 ++++++++----------- 2 files changed, 20 insertions(+), 24 deletions(-) diff --git a/.github/actions/set-package-list-pixi/action.yml b/.github/actions/set-package-list-pixi/action.yml index 3ca09cd..5f18800 100644 --- a/.github/actions/set-package-list-pixi/action.yml +++ b/.github/actions/set-package-list-pixi/action.yml @@ -1,11 +1,14 @@ name: "Get package list" -# pixi and ROS 2 have to be installed in the current path +# pixi has to be installed and available in the PATH description: "Get a list of packages in the given path" inputs: path: - description: "Path to the repository after checkout" + description: "Path to the repository after checkout action, e.g. src/repo-name" + required: false + default: "" manifest-path: description: "Path to the pixi.toml file or workspace directory" + required: true outputs: package_list: description: "A white-space separated list of packages" diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 2d87ee9..2b8ed06 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -19,7 +19,7 @@ on: default: "windows-2022" type: string container: - description: "(optional) Docker container to run the job in, e.g. ubuntu:noble" + description: "Docker container to run the job in, e.g. ubuntu:noble" required: false default: "" type: string @@ -34,7 +34,7 @@ on: default: "" type: string skip_packages: - description: "Packages to skip from build and test" + description: "Packages to skip from build" default: "" required: false type: string @@ -45,9 +45,9 @@ jobs: runs-on: ${{ inputs.os_name }} container: ${{ inputs.container }} env: + pixi_path: C:\dev # this will be src/{repo-owner}/{repo-name} repo_path: src/${{ github.repository }} - pixi_path: C:\dev steps: - name: Checkout default ref when build is not scheduled if: ${{ github.event_name != 'schedule' }} @@ -96,27 +96,20 @@ jobs: manifest-path: ${{ env.pixi_path }} - name: Install dependencies + # check for repos files, and pass them to vcstool run: | - if (Test-Path ${{ env.repo_path }}\${{ steps.package_list_action.outputs.repo_name }}.${{ inputs.ros_distro }}.repos) { - Write-Output "Local repos file found" - $repo_file = "${{ env.repo_path }}\${{ steps.package_list_action.outputs.repo_name }}.${{ inputs.ros_distro }}.repos" - } else { - Write-Output "No local repos file found" - $repo_file="" - } - if (![string]::IsNullOrWhiteSpace("${{ inputs.windows_dependencies }}") -and (Test-Path "${{ env.repo_path }}\${{ inputs.windows_dependencies }}")) { - Write-Output "Windows repos file found" - $repo_file_win = "${{ env.repo_path }}\${{ inputs.windows_dependencies }}" - } else { - Write-Output "No windows dependencies provided or file not found" - $repo_file_win = "" - } Invoke-Expression ((& pixi shell-hook -s powershell --manifest-path ${{ env.pixi_path }}) -join "`n") - if (![string]::IsNullOrWhiteSpace($repo_file)) { + $repo_file = "${{ env.repo_path }}\${{ steps.package_list_action.outputs.repo_name }}.${{ inputs.ros_distro }}.repos" + if (Test-Path "$repo_file") { + Write-Output "Local repos file found" vcs import --input $repo_file src } - if (![string]::IsNullOrWhiteSpace($repo_file_win)) { - vcs import --input $repo_file_win src + if (![string]::IsNullOrWhiteSpace("${{ inputs.windows_dependencies }}") { + $repo_file_win = "${{ env.repo_path }}\${{ inputs.windows_dependencies }}" + if (Test-Path "$repo_file_win") { + Write-Output "Windows repos file found" + vcs import --input $repo_file_win src + } } - name: Build workspace @@ -132,10 +125,10 @@ jobs: set up_to_arg= if not "${{ steps.package_list_action.outputs.package_list }}"=="" ( - set up_to_arg=--packages-up-to ${{ steps.package_list_action.outputs.package_list }} + set up_to_arg=--packages-up-to ${{ steps.package_list_action.outputs.package_list }} ) set skip_arg= if not "${{ inputs.skip_packages }}"=="" ( - set skip_arg=--packages-skip ${{ inputs.skip_packages }} + set skip_arg=--packages-skip ${{ inputs.skip_packages }} ) colcon build %up_to_arg% %skip_arg% From af612fd50f95bf5c4d99a02589934d4095608fdc Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Sat, 14 Jun 2025 21:44:05 +0200 Subject: [PATCH 71/77] Fix paranthesis and pre-commit --- .github/workflows/reusable-ros-tooling-win-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 2b8ed06..1745798 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -104,7 +104,7 @@ jobs: Write-Output "Local repos file found" vcs import --input $repo_file src } - if (![string]::IsNullOrWhiteSpace("${{ inputs.windows_dependencies }}") { + if (![string]::IsNullOrWhiteSpace("${{ inputs.windows_dependencies }}")) { $repo_file_win = "${{ env.repo_path }}\${{ inputs.windows_dependencies }}" if (Test-Path "$repo_file_win") { Write-Output "Windows repos file found" @@ -122,7 +122,7 @@ jobs: call pixi_env.bat >nul 2>&1 call ${{ env.pixi_path }}\ros2_${{ inputs.ros_distro }}\ros2-windows\setup.bat - + set up_to_arg= if not "${{ steps.package_list_action.outputs.package_list }}"=="" ( set up_to_arg=--packages-up-to ${{ steps.package_list_action.outputs.package_list }} From e339c3517edeb820c3d5e2501ae1a9cfeedcf552 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Sat, 14 Jun 2025 23:00:38 +0200 Subject: [PATCH 72/77] Add event handler to colcon build --- .github/workflows/reusable-ros-tooling-win-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 1745798..bcf3a1e 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -131,4 +131,4 @@ jobs: if not "${{ inputs.skip_packages }}"=="" ( set skip_arg=--packages-skip ${{ inputs.skip_packages }} ) - colcon build %up_to_arg% %skip_arg% + colcon build %up_to_arg% %skip_arg% --event-handler console_cohesion+ From dda66bbce61edf98bd35d0164b38e61b0d5baf3e Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Mon, 16 Jun 2025 00:07:35 +0200 Subject: [PATCH 73/77] Try additional input for Ninja packages --- .../workflows/reusable-ros-tooling-win-build.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index bcf3a1e..62b59c2 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -38,6 +38,11 @@ on: default: "" required: false type: string + ninja_packages: + description: "Packages to be built with Ninja generator (default is MSVC otherwise)" + default: "" + required: false + type: string jobs: reusable_ros_tooling_source_build: @@ -113,7 +118,8 @@ jobs: } - name: Build workspace - # TODO: use Ninja generator for RSL, but doesn't work for msg packages + # use Ninja generator optionally for selected packages. + # This is needed for RSL, but doesn't work for msg packages # https://github.com/search?q=repo%3APickNikRobotics%2FRSL%20ninja&type=code # https://github.com/colcon/colcon-ros/issues/84#issuecomment-1862881299 shell: cmd @@ -131,4 +137,9 @@ jobs: if not "${{ inputs.skip_packages }}"=="" ( set skip_arg=--packages-skip ${{ inputs.skip_packages }} ) - colcon build %up_to_arg% %skip_arg% --event-handler console_cohesion+ + set skip_ninja_arg= + if not "${{ inputs.ninja_packages }}"=="" ( + colcon build --packages-select ${{ inputs.ninja_packages }} --event-handler console_cohesion+ + set skip_ninja_arg=--packages-skip ${{ inputs.ninja_packages }} + ) + colcon build %up_to_arg% %skip_arg% %skip_ninja_arg% --event-handler console_cohesion+ From 4c4eaf7017c4e2e0fedd8fa7fab99ec09e670376 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Mon, 16 Jun 2025 10:38:39 +0200 Subject: [PATCH 74/77] Build up-to --- .github/workflows/reusable-ros-tooling-win-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index 62b59c2..f3ac1d0 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -139,7 +139,7 @@ jobs: ) set skip_ninja_arg= if not "${{ inputs.ninja_packages }}"=="" ( - colcon build --packages-select ${{ inputs.ninja_packages }} --event-handler console_cohesion+ + colcon build --packages-up-to ${{ inputs.ninja_packages }} --event-handler console_cohesion+ set skip_ninja_arg=--packages-skip ${{ inputs.ninja_packages }} ) colcon build %up_to_arg% %skip_arg% %skip_ninja_arg% --event-handler console_cohesion+ From 67f45d5726309a29f8d67a024502b2ef2a46aaa6 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Mon, 16 Jun 2025 11:10:30 +0200 Subject: [PATCH 75/77] Add Ninja itself --- .github/workflows/reusable-ros-tooling-win-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index f3ac1d0..ea51523 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -139,7 +139,7 @@ jobs: ) set skip_ninja_arg= if not "${{ inputs.ninja_packages }}"=="" ( - colcon build --packages-up-to ${{ inputs.ninja_packages }} --event-handler console_cohesion+ + colcon build --packages-up-to ${{ inputs.ninja_packages }} --cmake-args -G Ninja --event-handler console_cohesion+ set skip_ninja_arg=--packages-skip ${{ inputs.ninja_packages }} ) colcon build %up_to_arg% %skip_arg% %skip_ninja_arg% --event-handler console_cohesion+ From 13405752537b892beb3d26146eb27abc5ca9f039 Mon Sep 17 00:00:00 2001 From: Christoph Froehlich Date: Mon, 16 Jun 2025 11:12:59 +0200 Subject: [PATCH 76/77] Remove trailing ws --- .github/workflows/reusable-ros-tooling-win-build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index ea51523..a106def 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -118,7 +118,7 @@ jobs: } - name: Build workspace - # use Ninja generator optionally for selected packages. + # use Ninja generator optionally for selected packages. # This is needed for RSL, but doesn't work for msg packages # https://github.com/search?q=repo%3APickNikRobotics%2FRSL%20ninja&type=code # https://github.com/colcon/colcon-ros/issues/84#issuecomment-1862881299 @@ -140,6 +140,6 @@ jobs: set skip_ninja_arg= if not "${{ inputs.ninja_packages }}"=="" ( colcon build --packages-up-to ${{ inputs.ninja_packages }} --cmake-args -G Ninja --event-handler console_cohesion+ - set skip_ninja_arg=--packages-skip ${{ inputs.ninja_packages }} + set skip_ninja_arg=--packages-skip ${{ inputs.ninja_packages }} ) colcon build %up_to_arg% %skip_arg% %skip_ninja_arg% --event-handler console_cohesion+ From 112cbb8d738f6bbbbfb7af399a2c7f0e2b33b617 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Fr=C3=B6hlich?= Date: Mon, 23 Jun 2025 09:11:49 +0200 Subject: [PATCH 77/77] Use master branch of CI repo --- .github/workflows/reusable-ros-tooling-win-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/reusable-ros-tooling-win-build.yml b/.github/workflows/reusable-ros-tooling-win-build.yml index a106def..5c74996 100644 --- a/.github/workflows/reusable-ros-tooling-win-build.yml +++ b/.github/workflows/reusable-ros-tooling-win-build.yml @@ -95,7 +95,7 @@ jobs: - name: Get package list id: package_list_action - uses: ros-controls/ros2_control_ci/.github/actions/set-package-list-pixi@windows/pixi + uses: ros-controls/ros2_control_ci/.github/actions/set-package-list-pixi@master with: path: ${{ env.repo_path }} manifest-path: ${{ env.pixi_path }}