Просмотр исходного кода

ci: Enable IAR test on some Windows jobs in nightly pipeline

Issue: #23308
Brad King 1 год назад
Родитель
Сommit
4889010295

+ 1 - 0
.gitlab/ci/configure_windows_vs2022_x64_ninja.cmake

@@ -4,6 +4,7 @@ set(CMake_TEST_CXX_STANDARDS "98;11;14;17;20;23" CACHE STRING "")
 if (NOT "$ENV{CMAKE_CI_NIGHTLY}" STREQUAL "")
   set(CMake_TEST_CPACK_INNOSETUP "ON" CACHE STRING "")
   set(CMake_TEST_CPACK_NUGET "ON" CACHE STRING "")
+  set(CMake_TEST_IAR_TOOLCHAINS "$ENV{CI_PROJECT_DIR}/.gitlab/iar" CACHE PATH "")
   set(CMake_TEST_ISPC "ON" CACHE STRING "")
   set(CMake_TEST_Swift "ON" CACHE STRING "")
 endif()

+ 1 - 0
.gitlab/ci/configure_windows_vs2022_x64_ninja_multi.cmake

@@ -1,4 +1,5 @@
 if (NOT "$ENV{CMAKE_CI_NIGHTLY}" STREQUAL "")
+  set(CMake_TEST_IAR_TOOLCHAINS "$ENV{CI_PROJECT_DIR}/.gitlab/iar" CACHE PATH "")
   set(CMake_TEST_ISPC "ON" CACHE STRING "")
 endif()
 

+ 5 - 0
.gitlab/ci/env_windows_vs2022_x64_ninja.ps1

@@ -1,4 +1,9 @@
 if ("$env:CMAKE_CI_NIGHTLY" -eq "true") {
+  if ("$env:CI_JOB_STAGE" -ne "build") {
+    # As a special case, we do not actually fetch IAR tooling
+    # in the build job.  It is not used until the test job.
+    . ".gitlab/ci/iar-env.ps1"
+  }
   . ".gitlab/ci/innosetup-env.ps1"
   . ".gitlab/ci/ispc-env.ps1"
   . ".gitlab/ci/nuget-env.ps1"

+ 1 - 0
.gitlab/ci/env_windows_vs2022_x64_ninja_multi.ps1

@@ -1,4 +1,5 @@
 if ("$env:CMAKE_CI_NIGHTLY" -eq "true") {
+  . ".gitlab/ci/iar-env.ps1"
   . ".gitlab/ci/ispc-env.ps1"
 }
 

+ 15 - 0
.gitlab/ci/iar-env.ps1

@@ -0,0 +1,15 @@
+$pwdpath = $pwd.Path
+& "$pwsh" -File ".gitlab/ci/iar.ps1"
+Set-Item -Force -Path "env:IAR_LMS_SETTINGS_DIR" -Value "$pwdpath\.gitlab\iar\license"
+$exes = Get-Item -Path "$pwdpath\.gitlab\iar\*\*\bin\icc*.exe"
+$exes | ForEach-Object { Write-Host $_.FullName }
+
+if ($env:CMAKE_CI_IAR_LICENSE_SERVER) {
+    $llms = Get-Item -Path "$pwdpath\.gitlab\iar\*\common\bin\lightlicensemanager.exe"
+    foreach ($llm in $llms) {
+        &$llm.FullName setup --host "$env:CMAKE_CI_IAR_LICENSE_SERVER"
+    }
+    foreach ($exe in $exes) {
+        &$exe.FullName --version
+    }
+}