@@ -351,6 +351,96 @@ echo "# END SECTION"
351351echo " # BEGIN SECTION: Run script"
352352python - u run_ros2_batch .py ! CI_ARGS!
353353echo " # 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:\S OFTWARE\M icrosoft\W indows NT\C urrentVersion' ).ReleaseId > release_id .txt
364+ set / p RELEASE_ID = & lt; 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:\c i" %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>
0 commit comments