diff --git a/build.ps1 b/build.ps1 index 451486e6..474327ae 100644 --- a/build.ps1 +++ b/build.ps1 @@ -81,15 +81,19 @@ Test-CommandExists 'yq' function Test-Image { param ( - $ImageName + $ImageNameAndJavaVersion ) + $items = $ImageNameAndJavaVersion.Split("|") + $imageName = $items[0] + $javaVersion = $items[1] $imageNameItems = $imageName.Split(":") $imageTag = $imageNameItems[1] Write-Host "= TEST: Testing ${ImageName} image" $env:IMAGE_NAME = $ImageName + $env:JAVA_VERSION = "$javaVersion" $targetPath = '.\target\{0}' -f $imageTag if(Test-Path $targetPath) { @@ -107,6 +111,7 @@ function Test-Image { Write-Host "There were $($TestResults.PassedCount) passed tests in ${ImageName}" } Remove-Item env:\IMAGE_NAME + Remove-Item env:\JAVA_VERSION return $failed } @@ -161,8 +166,9 @@ if($target -eq 'test') { Write-Host '= TEST: Testing all images...' # Only fail the run afterwards in case of any test failures $testFailed = $false - Invoke-Expression "$baseDockerCmd config" | yq '.services[].image' | ForEach-Object { - $testFailed = $testFailed -or (Test-Image $_) + $jdks = Invoke-Expression "$baseDockerCmd config" | yq --unwrapScalar --output-format json '.services' | ConvertFrom-Json + foreach ($jdk in $jdks.PSObject.Properties) { + $testFailed = $testFailed -or (Test-Image ('{0}|{1}' -f $jdk.Value.image, $jdk.Value.build.args.JAVA_VERSION)) } # Fail if any test failures diff --git a/tests/sshAgent.Tests.ps1 b/tests/sshAgent.Tests.ps1 index 6565fd29..bf063cf6 100644 --- a/tests/sshAgent.Tests.ps1 +++ b/tests/sshAgent.Tests.ps1 @@ -1,6 +1,7 @@ Import-Module -DisableNameChecking -Force $PSScriptRoot/test_helpers.psm1 $global:IMAGE_NAME = Get-EnvOrDefault 'IMAGE_NAME' '' # Ex: jenkins4eval/ssh-agent:nanoserver-1809-jdk17 +$global:JAVA_VERSION = Get-EnvOrDefault 'JAVA_VERSION' '' $imageItems = $global:IMAGE_NAME.Split(':') $global:IMAGE_TAG = $imageItems[1] @@ -61,7 +62,7 @@ Cleanup($global:CONTAINERNAME) Describe "[$global:IMAGE_NAME] image is present" { It 'builds image' { - $exitCode, $stdout, $stderr = Run-Program 'docker' "build --build-arg `"WINDOWS_VERSION_TAG=${global:WINDOWSVERSIONTAG}`" --build-arg `"TOOLS_WINDOWS_VERSION=${global:TOOLSWINDOWSVERSION}`" --build-arg `"JAVA_VERSION=${global:JAVAMAJORVERSION}`" --build-arg `"JAVA_HOME=C:\openjdk-${global:JAVAMAJORVERSION}`" --tag=${global:IMAGE_TAG} --file ./windows/${global:WINDOWSFLAVOR}/Dockerfile ." + $exitCode, $stdout, $stderr = Run-Program 'docker' "build --build-arg `"WINDOWS_VERSION_TAG=${global:WINDOWSVERSIONTAG}`" --build-arg `"TOOLS_WINDOWS_VERSION=${global:TOOLSWINDOWSVERSION}`" --build-arg `"JAVA_VERSION=${global:JAVA_VERSION}`" --build-arg `"JAVA_HOME=C:\openjdk-${global:JAVAMAJORVERSION}`" --tag=${global:IMAGE_TAG} --file ./windows/${global:WINDOWSFLAVOR}/Dockerfile ." $exitCode | Should -Be 0 } } @@ -199,7 +200,7 @@ Describe "[$global:IMAGE_NAME] build args" { $TEST_JAW = 'C:/hamster' $CUSTOM_IMAGE_NAME = "custom-${IMAGE_NAME}" - $exitCode, $stdout, $stderr = Run-Program 'docker' "build --build-arg `"WINDOWS_VERSION_TAG=${global:WINDOWSVERSIONTAG}`" --build-arg `"TOOLS_WINDOWS_VERSION=${global:TOOLSWINDOWSVERSION}`" --build-arg `"JAVA_VERSION=${global:JAVAMAJORVERSION}`" --build-arg `"JAVA_HOME=C:\openjdk-${global:JAVAMAJORVERSION}`" --build-arg `"user=$TEST_USER`" --build-arg `"JENKINS_AGENT_WORK=$TEST_JAW`" --tag=$CUSTOM_IMAGE_NAME --file ./windows/${global:WINDOWSFLAVOR}/Dockerfile ." + $exitCode, $stdout, $stderr = Run-Program 'docker' "build --build-arg `"WINDOWS_VERSION_TAG=${global:WINDOWSVERSIONTAG}`" --build-arg `"TOOLS_WINDOWS_VERSION=${global:TOOLSWINDOWSVERSION}`" --build-arg `"JAVA_VERSION=${global:JAVA_VERSION}`" --build-arg `"JAVA_HOME=C:\openjdk-${global:JAVAMAJORVERSION}`" --build-arg `"user=$TEST_USER`" --build-arg `"JENKINS_AGENT_WORK=$TEST_JAW`" --tag=$CUSTOM_IMAGE_NAME --file ./windows/${global:WINDOWSFLAVOR}/Dockerfile ." $exitCode | Should -Be 0 $exitCode, $stdout, $stderr = Run-Program 'docker' "run --detach --tty --name=$global:CONTAINERNAME --publish-all $CUSTOM_IMAGE_NAME $global:CONTAINERSHELL"