diff --git a/create_jenkins_job.py b/create_jenkins_job.py
index 062288b8..bcf855c3 100755
--- a/create_jenkins_job.py
+++ b/create_jenkins_job.py
@@ -40,6 +40,7 @@
sys.exit("Could not import symbol from ros_buildfarm, please update ros_buildfarm.")
DEFAULT_REPOS_URL = 'https://raw.githubusercontent.com/ros2/ros2/rolling/ros2.repos'
+DEFAULT_PIXI_TOML_URL = 'https://raw.githubusercontent.com/ros2/ros2//rolling/pixi.toml'
DEFAULT_MAIL_RECIPIENTS = 'ros2-buildfarm@googlegroups.com'
PERIODIC_JOB_SPEC = '0 4 * * *'
@@ -108,6 +109,7 @@ def main(argv=None):
'ci_scripts_default_branch': args.ci_scripts_default_branch,
'default_repos_url': DEFAULT_REPOS_URL,
'supplemental_repos_url': '',
+ 'default_pixi_toml_url': DEFAULT_PIXI_TOML_URL,
'time_trigger_spec': '',
'mailer_recipients': '',
'ignore_rmw_default': {'rmw_fastrtps_dynamic_cpp'},
@@ -446,6 +448,7 @@ def create_job(os_name, job_name, template_file, additional_dict):
create_job(os_name, 'nightly_' + os_name + '_humble_coverage', 'ci_job.xml.em', {
'cmake_build_type': 'Debug',
'default_repos_url': 'https://raw.githubusercontent.com/ros2/ros2/humble/ros2.repos',
+ 'default_pixi_toml_url': 'https://raw.githubusercontent.com/ros2/ros2/humble/pixi.toml',
'disabled': True,
'enable_coverage_default': 'true',
'time_trigger_spec': PERIODIC_JOB_SPEC,
@@ -461,6 +464,7 @@ def create_job(os_name, job_name, template_file, additional_dict):
create_job(os_name, 'nightly_' + os_name + '_jazzy_coverage', 'ci_job.xml.em', {
'cmake_build_type': 'Debug',
'default_repos_url': 'https://raw.githubusercontent.com/ros2/ros2/jazzy/ros2.repos',
+ 'default_pixi_toml_url': 'https://raw.githubusercontent.com/ros2/ros2/jazzy/pixi.toml',
'disabled': True,
'enable_coverage_default': 'true',
'time_trigger_spec': PERIODIC_JOB_SPEC,
@@ -476,6 +480,7 @@ def create_job(os_name, job_name, template_file, additional_dict):
create_job(os_name, 'nightly_' + os_name + '_kilted_coverage', 'ci_job.xml.em', {
'cmake_build_type': 'Debug',
'default_repos_url': 'https://raw.githubusercontent.com/ros2/ros2/kilted/ros2.repos',
+ 'default_pixi_toml_url': 'https://raw.githubusercontent.com/ros2/ros2/kilted/pixi.toml',
'disabled': True,
'enable_coverage_default': 'true',
'time_trigger_spec': PERIODIC_JOB_SPEC,
diff --git a/job_templates/ci_job.xml.em b/job_templates/ci_job.xml.em
index cb515835..71f4ba90 100644
--- a/job_templates/ci_job.xml.em
+++ b/job_templates/ci_job.xml.em
@@ -26,6 +26,7 @@
'property_parameter-definition',
ci_scripts_default_branch=ci_scripts_default_branch,
default_repos_url=default_repos_url,
+ default_pixi_toml_url=default_pixi_toml_url,
supplemental_repos_url=supplemental_repos_url,
ignore_rmw_default=ignore_rmw_default,
use_connext_debs_default=use_connext_debs_default,
@@ -98,6 +99,7 @@ use_fastrtps_dynamic: ${build.buildVariableResolver.resolve('CI_USE_FASTRTPS_DYN
ci_branch: ${build.buildVariableResolver.resolve('CI_SCRIPTS_BRANCH')},
repos_url: ${build.buildVariableResolver.resolve('CI_ROS2_REPOS_URL')},
supplemental_repos_url: ${build.buildVariableResolver.resolve('CI_ROS2_SUPPLEMENTAL_REPOS_URL')},
+pixi_toml_url: ${build.buildVariableResolver.resolve('CI_PIXI_TOML_URL')},
colcon_branch: ${build.buildVariableResolver.resolve('CI_COLCON_BRANCH')},
use_whitespace: ${build.buildVariableResolver.resolve('CI_USE_WHITESPACE_IN_PATHS')},
isolated: ${build.buildVariableResolver.resolve('CI_ISOLATED')},
@@ -247,7 +249,7 @@ powershell $(Get-ItemProperty -Path 'HKLM:SOFTWARE\Microsoft\Windows NT\CurrentV
set /p RELEASE_VERSION=< release_version.txt
rem "Put current date in Dockerfile to force cache invalidation once per day"
powershell "(Get-Content ${Env:DOCKERFILE}).replace('@@today_str', $(Get-Date).ToLongDateString()) | Set-Content ${Env:DOCKERFILE}"
-set BUILD_ARGS=--build-arg WINDOWS_RELEASE_VERSION=%RELEASE_VERSION% --build-arg ROS_DISTRO=%CI_ROS_DISTRO%
+set BUILD_ARGS=--build-arg WINDOWS_RELEASE_VERSION=%RELEASE_VERSION% --build-arg ROS_DISTRO=%CI_ROS_DISTRO% --build-arg PIXI_TOML_URL=%CI_PIXI_TOML_URL%
docker build %BUILD_ARGS% -t %CONTAINER_NAME% -f %DOCKERFILE% windows_docker_resources || exit /b !ERRORLEVEL!
echo "# END SECTION"
diff --git a/job_templates/ci_launcher_job.xml.em b/job_templates/ci_launcher_job.xml.em
index 479541f4..4d992493 100644
--- a/job_templates/ci_launcher_job.xml.em
+++ b/job_templates/ci_launcher_job.xml.em
@@ -26,6 +26,7 @@
ci_scripts_default_branch=ci_scripts_default_branch,
default_repos_url=default_repos_url,
supplemental_repos_url=supplemental_repos_url,
+ default_pixi_toml_url=default_pixi_toml_url,
ignore_rmw_default=ignore_rmw_default,
use_connext_debs_default=use_connext_debs_default,
use_isolated_default=use_isolated_default,
diff --git a/job_templates/packaging_job.xml.em b/job_templates/packaging_job.xml.em
index e61f0581..622c830a 100644
--- a/job_templates/packaging_job.xml.em
+++ b/job_templates/packaging_job.xml.em
@@ -29,6 +29,7 @@
ci_scripts_default_branch=ci_scripts_default_branch,
default_repos_url=default_repos_url,
supplemental_repos_url=supplemental_repos_url,
+ default_pixi_toml_url=default_pixi_toml_url,
ubuntu_distro=ubuntu_distro,
el_release=el_release,
ros_distro=ros_distro,
@@ -107,6 +108,7 @@ ros_distro: ${build.buildVariableResolver.resolve('CI_ROS_DISTRO')},
branch: ${build.buildVariableResolver.resolve('CI_BRANCH_TO_TEST')},
ci_branch: ${build.buildVariableResolver.resolve('CI_SCRIPTS_BRANCH')},
repos_url: ${build.buildVariableResolver.resolve('CI_ROS2_REPOS_URL')},
+pixi_toml_url: ${build.buildVariableResolver.resolve('CI_PIXI_TOML_URL')},
use_connextdds: ${build.buildVariableResolver.resolve('CI_USE_CONNEXTDDS')},
use_connext_debs: ${build.buildVariableResolver.resolve('CI_USE_CONNEXT_DEBS')},
use_cyclonedds: ${build.buildVariableResolver.resolve('CI_USE_CYCLONEDDS')},
@@ -243,7 +245,7 @@ powershell $(Get-ItemProperty -Path 'HKLM:SOFTWARE\Microsoft\Windows NT\CurrentV
set /p RELEASE_VERSION=< release_version.txt
rem "Put current date in Dockerfile to force cache invalidation once per day"
powershell "(Get-Content ${Env:DOCKERFILE}).replace('@@today_str', $(Get-Date).ToLongDateString()) | Set-Content ${Env:DOCKERFILE}"
-set BUILD_ARGS=--build-arg WINDOWS_RELEASE_VERSION=%RELEASE_VERSION% --build-arg ROS_DISTRO=%CI_ROS_DISTRO%
+set BUILD_ARGS=--build-arg WINDOWS_RELEASE_VERSION=%RELEASE_VERSION% --build-arg ROS_DISTRO=%CI_ROS_DISTRO% --build-arg PIXI_TOML_URL=%CI_PIXI_TOML_URL%
docker build %BUILD_ARGS% -t %CONTAINER_NAME% -f %DOCKERFILE% windows_docker_resources || exit /b !ERRORLEVEL!
echo "# END SECTION"
diff --git a/job_templates/snippet/property_parameter-definition.xml.em b/job_templates/snippet/property_parameter-definition.xml.em
index 2be1b77b..78f343a2 100644
--- a/job_templates/snippet/property_parameter-definition.xml.em
+++ b/job_templates/snippet/property_parameter-definition.xml.em
@@ -5,6 +5,7 @@
ci_scripts_default_branch=ci_scripts_default_branch,
default_repos_url=default_repos_url,
supplemental_repos_url=supplemental_repos_url,
+ default_pixi_toml_url=default_pixi_toml_url,
ubuntu_distro=ubuntu_distro,
el_release=el_release,
ros_distro=ros_distro,
diff --git a/job_templates/snippet/property_parameter-definition_common.xml.em b/job_templates/snippet/property_parameter-definition_common.xml.em
index 0eb70211..c031eabd 100644
--- a/job_templates/snippet/property_parameter-definition_common.xml.em
+++ b/job_templates/snippet/property_parameter-definition_common.xml.em
@@ -32,6 +32,15 @@ Use this instead of the Custom .repos file if you want to add to the default rep
@supplemental_repos_url
false
+
+ CI_PIXI_TOML_URL
+ Custom pixi.toml file URL to use instead of the default pixi.toml file.
+For example, copy the content of pixi.toml to use instead of the default (@default_pixi_toml_url). Then pass the raw URL here.
+ (@default_pixi_toml_url).
+The pixi.toml file defines the Pixi environment configuration for the build.
+ @default_pixi_toml_url
+ false
+
CI_COLCON_BRANCH
Use a specific branch of the colcon repositories.
diff --git a/windows_docker_resources/Dockerfile b/windows_docker_resources/Dockerfile
index ea09b934..1388424e 100644
--- a/windows_docker_resources/Dockerfile
+++ b/windows_docker_resources/Dockerfile
@@ -18,6 +18,10 @@ ARG WINDOWS_RELEASE_VERSION=$WINDOWS_RELEASE_ID
# Use --isolation=process if you need to build in a mounted volume
FROM mcr.microsoft.com/windows/server:$WINDOWS_RELEASE_VERSION
+# Set ROS distro value and pixi.toml url
+ARG ROS_DISTRO=rolling
+ARG PIXI_TOML_URL=https://raw.githubusercontent.com/ros2/ros2/refs/heads/%ROS_DISTRO%/pixi.toml
+
# Enable long paths on folders
RUN powershell -noexit "New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem' -Name 'LongPathsEnabled' -Value 1 -PropertyType DWORD -Force"
@@ -48,9 +52,8 @@ RUN powershell -noexit "$bindir = Join-Path $Env:USERPROFILE\.pixi 'bin' ; $path
RUN echo "@today_str"
# Install dependencies via pixi
-ARG ROS_DISTRO=rolling
WORKDIR C:\pixi_ws
-RUN powershell -noexit irm https://raw.githubusercontent.com/ros2/ros2/refs/heads/%ROS_DISTRO%/pixi.toml -OutFile pixi.toml
+RUN powershell -noexit irm %PIXI_TOML_URL% -OutFile pixi.toml
RUN pixi --color never --no-progress -q install
RUN pixi --color never --no-progress -q list