diff --git a/job_templates/ci_job.xml.em b/job_templates/ci_job.xml.em index 666402fb..2346f4ac 100644 --- a/job_templates/ci_job.xml.em +++ b/job_templates/ci_job.xml.em @@ -248,6 +248,13 @@ 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% +if "!ROS_DISTRO!" == "humble" ( + set "BUILD_ARGS=!BUILD_ARGS! --build-arg CONNEXTDDS_DIR=C:\connext\rti_connext_dds-6.0.1 --build-arg RTI_OPENSSL_BIN=C:\connext\openssl-1.1.1k\x64Win64VS2017\bin --build-arg RTI_OPENSSL_LIB=C:\connext\openssl-1.1.1k\x64Win64VS2017\lib" +) else if "!ROS_DISTRO!" == "jazzy" ( + set "BUILD_ARGS=!BUILD_ARGS! --build-arg CONNEXTDDS_DIR=C:\connext\rti_connext_dds-6.0.1 --build-arg RTI_OPENSSL_BIN=C:\connext\openssl-1.1.1k\x64Win64VS2017\bin --build-arg RTI_OPENSSL_LIB=C:\connext\openssl-1.1.1k\x64Win64VS2017\lib" +) else ( + set "BUILD_ARGS=!BUILD_ARGS! --build-arg CONNEXTDDS_DIR=C:\connext\rti_connext_dds-7.3.0 --build-arg RTI_OPENSSL_BIN=C:\connext\openssl-3.0.12\x64Win64VS2017\bin --build-arg RTI_OPENSSL_LIB=C:\connext\openssl-3.0.12\x64Win64VS2017\lib" +) docker build %BUILD_ARGS% -t %CONTAINER_NAME% -f %DOCKERFILE% windows_docker_resources || exit /b !ERRORLEVEL! echo "# END SECTION" diff --git a/windows_docker_resources/Dockerfile b/windows_docker_resources/Dockerfile index 2ecb1d10..2c46f59e 100644 --- a/windows_docker_resources/Dockerfile +++ b/windows_docker_resources/Dockerfile @@ -44,11 +44,14 @@ RUN powershell -noexit irm https://raw.githubusercontent.com/ros2/ros2/refs/head RUN pixi --color never --no-progress -q install RUN pixi --color never --no-progress -q list -# Setup environment variables needed for Connext +# Setup environment variables needed for Connext using build args ENV RTI_LICENSE_FILE C:\connext\rti_license.dat -ENV CONNEXTDDS_DIR C:\connext\rti_connext_dds-7.3.0 -ENV RTI_OPENSSL_BIN C:\connext\openssl-3.0.12\x64Win64VS2017\bin -ENV RTI_OPENSSL_LIB C:\connext\openssl-3.0.12\x64Win64VS2017\lib +ARG CONNEXTDDS_DIR=C:\connext\rti_connext_dds-7.3.0 +ENV CONNEXTDDS_DIR $CONNEXTDDS_DIR +ARG RTI_OPENSSL_BIN=C:\connext\openssl-3.0.12\x64Win64VS2017\bin +ENV RTI_OPENSSL_BIN $RTI_OPENSSL_BIN +ARG RTI_OPENSSL_LIB=C:\connext\openssl-3.0.12\x64Win64VS2017\lib +ENV RTI_OPENSSL_LIB $RTI_OPENSSL_LIB # Copy over necessary Connext files into container RUN IF NOT EXIST "C:\TEMP" mkdir C:\TEMP @@ -58,12 +61,8 @@ RUN copy /b C:\TEMP\rticonnextdds-src\rti_connext_dds-7.3.0-pro-target-x64Win64V COPY rticonnextdds-license\rti_license.dat $RTI_LICENSE_FILE # Install Connext -RUN C:\TEMP\rticonnextdds-src\rti_connext_dds-7.3.0-pro-host-x64Win64.exe --mode unattended --unattendedmodeui minimalWithDialogs --prefix C:\connext -RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\openssl-3.0.12-7.3.0-host-x64Win64.rtipkg -RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\openssl-3.0.12-7.3.0-target-x64Win64VS2017.rtipkg -RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\rti_connext_dds-7.3.0-pro-target-x64Win64VS2017.rtipkg -RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\rti_security_plugins-7.3.0-host-x64Win64.rtipkg -RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\rti_security_plugins-7.3.0-target-x64Win64VS2017.rtipkg +COPY rti_web_binaries_install.ps1 C:\TEMP\rti_web_binaries_install.ps1 +RUN powershell C:\TEMP\rti_web_binaries_install.ps1 # Note that this *must* be in shell form, not exec form, so Docker on Windows appropriately substitutes %CI_ARGS% WORKDIR C:\ci diff --git a/windows_docker_resources/rti_web_binaries_install.ps1 b/windows_docker_resources/rti_web_binaries_install.ps1 new file mode 100644 index 00000000..b5bbfbb2 --- /dev/null +++ b/windows_docker_resources/rti_web_binaries_install.ps1 @@ -0,0 +1,20 @@ + write-output ROS_DISTRO $Env:ROS_DISTRO + write-output CONNEXTDDS_DIR $Env:CONNEXTDDS_DIR + if ( $Env:ROS_DISTRO -eq "jammy" -or $Env:ROS_DISTRO -eq "humble" ) { + pixi run 7z x -oC:\connext "C:\TEMP\rticonnextdds-src\openssl-1.1.1k-target-x64Win64VS2017.zip" + & "C:\TEMP\rticonnextdds-src\rti_connext_dds-6.0.1-pro-host-x64Win64.exe" @("--mode", "unattended", "--unattendedmodeui", "minimalWithDialogs". "--prefix", "C:\connext") + cmd.exe /c $Env:CONNEXTDDS_DIR\bin\rtipkginstall.bat -u "C:\TEMP\rticonnextdds-src\openssl-1.1.1k-6.0.1.25-host-x64Win64.rtipkg" + cmd.exe /c $Env:CONNEXTDDS_DIR\bin\rtipkginstall.bat -u "C:\TEMP\rticonnextdds-src\rti_connext_dds-6.0.1-pro-target-x64Win64VS2017.rtipkg" + cmd.exe /c $Env:CONNEXTDDS_DIR\bin\rtipkginstall.bat -u "C:\TEMP\rticonnextdds-src\rti_security_plugins-6.0.1.25-host-x64Win64.rtipkg" + cmd.exe /c $Env:CONNEXTDDS_DIR\bin\rtipkginstall.bat -u "C:\TEMP\rticonnextdds-src\rti_security_plugins-6.0.1.25-target-x64Win64VS2017.rtipkg" +} else { + $params = @("--mode", "unattended", "--unattendedmodeui", "minimalWithDialogs", "--prefix", "C:\connext") + & "C:\TEMP\rticonnextdds-src\rti_connext_dds-7.3.0-pro-host-x64Win64.exe" $params + $rti_security_target_params = @() + + cmd.exe /c "$Env:CONNEXTDDS_DIR\bin\rtipkginstall.bat" "-u" "C:\TEMP\rticonnextdds-src\openssl-3.0.12-7.3.0-host-x64Win64.rtipkg" + cmd.exe /c "$Env:CONNEXTDDS_DIR\bin\rtipkginstall.bat" "-u" "C:\TEMP\rticonnextdds-src\openssl-3.0.12-7.3.0-target-x64Win64VS2017.rtipkg" + cmd.exe /c "$Env:CONNEXTDDS_DIR\bin\rtipkginstall.bat" "-u" "C:\TEMP\rticonnextdds-src\rti_connext_dds-7.3.0-pro-target-x64Win64VS2017.rtipkg" + cmd.exe /c "$Env:CONNEXTDDS_DIR\bin\rtipkginstall.bat" "-u" "C:\TEMP\rticonnextdds-src\rti_security_plugins-7.3.0-host-x64Win64.rtipkg" + cmd.exe /c "$Env:CONNEXTDDS_DIR\bin\rtipkginstall.bat" "-u" "C:\TEMP\rticonnextdds-src\rti_security_plugins-7.3.0-target-x64Win64VS2017.rtipkg" +}