Skip to content

Commit 8418a1c

Browse files
committed
Switch job templates to use windows_docker_resources
1 parent a92826c commit 8418a1c

File tree

6 files changed

+182
-5
lines changed

6 files changed

+182
-5
lines changed

create_jenkins_job.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,11 @@ def main(argv=None):
113113
'shell_type': 'BatchFile',
114114
'use_isolated_default': 'false',
115115
},
116+
'windows-container': {
117+
'label_expression': 'windows-container',
118+
'shell_type': 'BatchFile',
119+
'use_isolated_default': 'false',
120+
},
116121
'linux-aarch64': {
117122
'label_expression': 'linux_aarch64',
118123
'shell_type': 'Shell',
@@ -190,6 +195,10 @@ def create_job(os_name, job_name, template_file, additional_dict):
190195
'use_connext_debs_default': 'true',
191196
})
192197

198+
if os_name == 'windows-container':
199+
# Only create ci jobs for windows container builds until full transition
200+
continue
201+
193202
# configure packaging job
194203
create_job(os_name, 'packaging_' + os_name, 'packaging_job.xml.em', {
195204
'build_discard': {

job_templates/ci_job.xml.em

Lines changed: 91 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -351,6 +351,96 @@ echo "# END SECTION"
351351
echo "# BEGIN SECTION: Run script"
352352
python -u run_ros2_batch.py !CI_ARGS!
353353
echo "# END SECTION"
354+
@[elif os_name == 'windows-container']@
355+
setlocal enableDelayedExpansion
356+
rmdir /S /Q ws workspace "work space"
357+
358+
echo "# BEGIN SECTION: Build DockerFile"
359+
set CONTAINER_NAME=ros2_windows_ci_msvc%CI_VISUAL_STUDIO_VERSION%
360+
set DOCKERFILE=windows_docker_resources\Dockerfile.msvc%CI_VISUAL_STUDIO_VERSION%
361+
362+
rem "Finding the ReleaseId is much easier with powershell than cmd"
363+
powershell $(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').ReleaseId > release_id.txt
364+
set /p RELEASE_ID=< release_id.txt
365+
set BUILD_ARGS=--build-arg WINDOWS_RELEASE_ID=%RELEASE_ID% --build-arg TODAYS_DATE="%date%"
366+
docker build %BUILD_ARGS% -t %CONTAINER_NAME% -f %DOCKERFILE% windows_docker_resources
367+
echo "# END SECTION"
368+
369+
echo "# BEGIN SECTION: Determine arguments"
370+
set "PATH=!PATH:"=!"
371+
set "CI_ARGS=--force-ansi-color --workspace-path !WORKSPACE!"
372+
if "!CI_BRANCH_TO_TEST!" NEQ "" (
373+
set "CI_ARGS=!CI_ARGS! --test-branch !CI_BRANCH_TO_TEST!"
374+
)
375+
if "!CI_COLCON_BRANCH!" NEQ "" (
376+
set "CI_ARGS=!CI_ARGS! --colcon-branch !CI_COLCON_BRANCH!"
377+
)
378+
if "!CI_USE_WHITESPACE_IN_PATHS!" == "true" (
379+
set "CI_ARGS=!CI_ARGS! --white-space-in sourcespace buildspace installspace workspace"
380+
)
381+
set "CI_ARGS=!CI_ARGS! --ignore-rmw"
382+
if "!CI_USE_CONNEXT_STATIC!" == "false" (
383+
set "CI_ARGS=!CI_ARGS! rmw_connext_cpp"
384+
)
385+
if "!CI_USE_CONNEXT_DYNAMIC!" == "false" (
386+
set "CI_ARGS=!CI_ARGS! rmw_connext_dynamic_cpp"
387+
)
388+
if "!CI_USE_CYCLONEDDS!" == "false" (
389+
set "CI_ARGS=!CI_ARGS! rmw_cyclonedds_cpp"
390+
)
391+
if "!CI_USE_FASTRTPS_STATIC!" == "false" (
392+
set "CI_ARGS=!CI_ARGS! rmw_fastrtps_cpp"
393+
)
394+
if "!CI_USE_FASTRTPS_DYNAMIC!" == "false" (
395+
set "CI_ARGS=!CI_ARGS! rmw_fastrtps_dynamic_cpp"
396+
)
397+
if "!CI_USE_OPENSPLICE!" == "false" (
398+
set "CI_ARGS=!CI_ARGS! rmw_opensplice_cpp"
399+
)
400+
if "!CI_USE_CONNEXT_DEBS!" == "true" (
401+
set "CI_ARGS=!CI_ARGS! --connext-debs"
402+
)
403+
if "!CI_ROS2_REPOS_URL!" EQU "" (
404+
set "CI_ROS2_REPOS_URL=@default_repos_url"
405+
)
406+
set "CI_ARGS=!CI_ARGS! --repo-file-url !CI_ROS2_REPOS_URL!"
407+
if "!CI_ROS2_SUPPLEMENTAL_REPOS_URL!" NEQ "" (
408+
set "CI_ARGS=!CI_ARGS! --supplemental-repo-file-url !CI_ROS2_SUPPLEMENTAL_REPOS_URL!"
409+
)
410+
if "!CI_ISOLATED!" == "true" (
411+
set "CI_ARGS=!CI_ARGS! --isolated"
412+
)
413+
if "!CI_COLCON_MIXIN_URL!" NEQ "" (
414+
set "CI_ARGS=!CI_ARGS! --colcon-mixin-url !CI_COLCON_MIXIN_URL!"
415+
)
416+
if "!CI_CMAKE_BUILD_TYPE!" NEQ "None" (
417+
set "CI_ARGS=!CI_ARGS! --cmake-build-type !CI_CMAKE_BUILD_TYPE!"
418+
)
419+
if "!CI_CMAKE_BUILD_TYPE!" == "Debug" (
420+
set "CI_ARGS=!CI_ARGS! --python-interpreter python_d"
421+
)
422+
if "!CI_COMPILE_WITH_CLANG!" == "true" (
423+
set "CI_ARGS=!CI_ARGS! --compile-with-clang"
424+
)
425+
if "!CI_ENABLE_COVERAGE!" == "true" (
426+
set "CI_ARGS=!CI_ARGS! --coverage"
427+
)
428+
set "CI_ARGS=!CI_ARGS! --visual-studio-version !CI_VISUAL_STUDIO_VERSION!"
429+
if "!CI_BUILD_ARGS!" NEQ "" (
430+
set "CI_ARGS=!CI_ARGS! --build-args !CI_BUILD_ARGS!"
431+
)
432+
if "!CI_TEST_ARGS!" NEQ "" (
433+
set "CI_ARGS=!CI_ARGS! --test-args !CI_TEST_ARGS!"
434+
)
435+
echo Using args: !CI_ARGS!
436+
echo "# END SECTION"
437+
438+
echo "# BEGIN SECTION: Run DockerFile"
439+
rem If isolated_network doesn't already exist, create it
440+
set NETWORK_NAME=isolated_network
441+
docker network inspect %NETWORK_NAME% 2>nul 1>nul || docker network create -d nat -o com.docker.network.bridge.enable_icc=false %NETWORK_NAME%
442+
docker run --isolation=process --rm --net=%NETWORK_NAME% -e ROS_DOMAIN_ID=1 -e CI_ARGS="%CI_ARGS%" -v "%cd%":"C:\ci" %CONTAINER_NAME%
443+
echo "# END SECTION"
354444
@[else]@
355445
@{ assert False, 'Unknown os_name: ' + os_name }@
356446
@[end if]</command>
@@ -390,7 +480,7 @@ echo "# END SECTION"
390480
<hudson.plugins.ansicolor.AnsiColorBuildWrapper plugin="ansicolor@@0.6.2">
391481
<colorMapName>xterm</colorMapName>
392482
</hudson.plugins.ansicolor.AnsiColorBuildWrapper>
393-
@[if os_name != 'windows']@
483+
@[if os_name not in ['windows', 'windows-container']]@
394484
<com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper plugin="ssh-agent@@1.17">
395485
<credentialIds>
396486
<string>1c2004f6-2e00-425d-a421-2e1ba62ca7a7</string>

job_templates/ci_launcher_job.xml.em

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ for (item in build_numbers) {
110110
@# </configs>
111111
@# </hudson.plugins.parameterizedtrigger.BooleanParameters>
112112
@[ end if]@
113-
@[ if os_name == 'windows']@
113+
@[ if os_name in ['windows', 'windows-container']]@
114114
<hudson.plugins.parameterizedtrigger.BooleanParameters>
115115
<configs>
116116
<hudson.plugins.parameterizedtrigger.BooleanParameterConfig>

job_templates/packaging_job.xml.em

Lines changed: 79 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -329,6 +329,84 @@ echo "# END SECTION"
329329
echo "# BEGIN SECTION: Run packaging script"
330330
python -u run_ros2_batch.py !CI_ARGS!
331331
echo "# END SECTION"
332+
@[elif os_name == 'windows-container']@
333+
setlocal enableDelayedExpansion
334+
rmdir /S /Q ws workspace
335+
336+
echo "# BEGIN SECTION: Build DockerFile"
337+
set CONTAINER_NAME=ros2_windows_ci_msvc%CI_VISUAL_STUDIO_VERSION%
338+
set DOCKERFILE=windows_docker_resources\Dockerfile.msvc%CI_VISUAL_STUDIO_VERSION%
339+
340+
rem "Finding the ReleaseId is much easier with powershell than cmd"
341+
powershell $(Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion').ReleaseId > release_id.txt
342+
set /p RELEASE_ID=&lt; release_id.txt
343+
set BUILD_ARGS=--build-arg WINDOWS_RELEASE_ID=%RELEASE_ID% --build-arg TODAYS_DATE="%date%"
344+
docker build %BUILD_ARGS% -t %CONTAINER_NAME% -f %DOCKERFILE% windows_docker_resources
345+
echo "# END SECTION"
346+
347+
echo "# BEGIN SECTION: Determine arguments"
348+
set "PATH=!PATH:"=!"
349+
set "CI_ARGS=--packaging --force-ansi-color"
350+
if "!CI_BRANCH_TO_TEST!" NEQ "" (
351+
set "CI_ARGS=!CI_ARGS! --test-branch !CI_BRANCH_TO_TEST!"
352+
)
353+
if "!CI_COLCON_BRANCH!" NEQ "" (
354+
set "CI_ARGS=!CI_ARGS! --colcon-branch !CI_COLCON_BRANCH!"
355+
)
356+
set "CI_ARGS=!CI_ARGS! --ignore-rmw"
357+
if "!CI_USE_CONNEXT_STATIC!" == "false" (
358+
set "CI_ARGS=!CI_ARGS! rmw_connext_cpp"
359+
)
360+
if "!CI_USE_CONNEXT_DYNAMIC!" == "false" (
361+
set "CI_ARGS=!CI_ARGS! rmw_connext_dynamic_cpp"
362+
)
363+
if "!CI_USE_CYCLONEDDS!" == "false" (
364+
set "CI_ARGS=!CI_ARGS! rmw_cyclonedds_cpp"
365+
)
366+
if "!CI_USE_FASTRTPS_STATIC!" == "false" (
367+
set "CI_ARGS=!CI_ARGS! rmw_fastrtps_cpp"
368+
)
369+
if "!CI_USE_FASTRTPS_DYNAMIC!" == "false" (
370+
set "CI_ARGS=!CI_ARGS! rmw_fastrtps_dynamic_cpp"
371+
)
372+
if "!CI_USE_OPENSPLICE!" == "false" (
373+
set "CI_ARGS=!CI_ARGS! rmw_opensplice_cpp"
374+
)
375+
if "!CI_USE_CONNEXT_DEBS!" == "true" (
376+
set "CI_ARGS=!CI_ARGS! --connext-debs"
377+
)
378+
if "!CI_ROS2_REPOS_URL!" EQU "" (
379+
set "CI_ROS2_REPOS_URL=@default_repos_url"
380+
)
381+
set "CI_ARGS=!CI_ARGS! --repo-file-url !CI_ROS2_REPOS_URL!"
382+
if "!CI_TEST_BRIDGE!" == "true" (
383+
set "CI_ARGS=!CI_ARGS! --test-bridge"
384+
)
385+
if "!CI_COLCON_MIXIN_URL!" NEQ "" (
386+
set "CI_ARGS=!CI_ARGS! --colcon-mixin-url !CI_COLCON_MIXIN_URL!"
387+
)
388+
if "!CI_CMAKE_BUILD_TYPE!" NEQ "None" (
389+
set "CI_ARGS=!CI_ARGS! --cmake-build-type !CI_CMAKE_BUILD_TYPE!"
390+
)
391+
if "!CI_CMAKE_BUILD_TYPE!" == "Debug" (
392+
set "CI_ARGS=!CI_ARGS! --python-interpreter python_d"
393+
)
394+
set "CI_ARGS=!CI_ARGS! --visual-studio-version !CI_VISUAL_STUDIO_VERSION!"
395+
if "!CI_BUILD_ARGS!" NEQ "" (
396+
set "CI_ARGS=!CI_ARGS! --build-args !CI_BUILD_ARGS!"
397+
)
398+
if "!CI_TEST_ARGS!" NEQ "" (
399+
set "CI_ARGS=!CI_ARGS! --test-args !CI_TEST_ARGS!"
400+
)
401+
echo Using args: !CI_ARGS!
402+
echo "# END SECTION"
403+
404+
echo "# BEGIN SECTION: Run packaging script with DockerFile"
405+
rem If isolated_network doesn't already exist, create it
406+
set NETWORK_NAME=isolated_network
407+
docker network inspect %NETWORK_NAME% 2>nul 1>nul || docker network create -d nat -o com.docker.network.bridge.enable_icc=false %NETWORK_NAME%
408+
docker run --isolation=process --rm --net=%NETWORK_NAME% -e ROS_DOMAIN_ID=1 -e CI_ARGS="%CI_ARGS%" -v "%cd%":"C:\ci" %CONTAINER_NAME%
409+
echo "# END SECTION"
332410
@[else]@
333411
@{ assert False, 'Unknown os_name: ' + os_name }@
334412
@[end if]</command>
@@ -366,7 +444,7 @@ echo "# END SECTION"
366444
<hudson.plugins.ansicolor.AnsiColorBuildWrapper plugin="ansicolor@@0.6.2">
367445
<colorMapName>xterm</colorMapName>
368446
</hudson.plugins.ansicolor.AnsiColorBuildWrapper>
369-
@[if os_name != 'windows']@
447+
@[if os_name not in ['windows', 'windows-container']]@
370448
<com.cloudbees.jenkins.plugins.sshagent.SSHAgentBuildWrapper plugin="ssh-agent@@1.17">
371449
<credentialIds>
372450
<string>1c2004f6-2e00-425d-a421-2e1ba62ca7a7</string>

job_templates/snippet/property_parameter-definition_common.xml.em

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ choices.remove(cmake_build_type)
8181
<defaultValue>@(build_args_default)</defaultValue>
8282
<trim>false</trim>
8383
</hudson.model.StringParameterDefinition>
84-
@[if os_name == 'windows']@
84+
@[if os_name in ['windows', 'windows-container']]@
8585
<hudson.model.ChoiceParameterDefinition>
8686
<name>CI_VISUAL_STUDIO_VERSION</name>
8787
<description>Select the Visual Studio version.</description>

job_templates/snippet/publisher_warnings.xml.em

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
<parserName>GNU C Compiler 4 (gcc)</parserName>
4444
@[elif os_name == 'osx']@
4545
<parserName>Clang (LLVM based)</parserName>
46-
@[elif os_name == 'windows']@
46+
@[elif os_name in ['windows', 'windows-container']]@
4747
<parserName>MSBuild</parserName>
4848
@[else]@
4949
@{assert False, 'Unknown os_name: ' + os_name}@

0 commit comments

Comments
 (0)