Browse code

Windows CI: Make sure that CI fails on any error

- If unit tests fails
- If intergration tests fails

Signed-off-by: Olli Janatuinen <olli.janatuinen@gmail.com>

Olli Janatuinen authored on 2020/05/29 01:47:29
Showing 5 changed files
... ...
@@ -166,7 +166,7 @@ FROM microsoft/windowsservercore
166 166
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
167 167
 
168 168
 ARG GO_VERSION=1.13.15
169
-ARG GOTESTSUM_COMMIT=v0.3.5
169
+ARG GOTESTSUM_COMMIT=v0.5.3
170 170
 
171 171
 # Environment variable notes:
172 172
 #  - GO_VERSION must be consistent with 'Dockerfile' used by Linux.
... ...
@@ -1014,11 +1014,12 @@ pipeline {
1014 1014
                             junit testResults: 'bundles/junit-report-*.xml', allowEmptyResults: true
1015 1015
                             catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE', message: 'Failed to create bundles.tar.gz') {
1016 1016
                                 powershell '''
1017
+                                cd $env:WORKSPACE
1017 1018
                                 $bundleName="windowsRS1-integration"
1018 1019
                                 Write-Host -ForegroundColor Green "Creating ${bundleName}-bundles.zip"
1019 1020
 
1020 1021
                                 # archiveArtifacts does not support env-vars to , so save the artifacts in a fixed location
1021
-                                Compress-Archive -Path "${env:TEMP}/CIDUT.out", "${env:TEMP}/CIDUT.err", "${env:TEMP}/testresults/unittests/junit-report-unit-tests.xml" -CompressionLevel Optimal -DestinationPath "${bundleName}-bundles.zip"
1022
+                                Compress-Archive -Path "bundles/CIDUT.out", "bundles/CIDUT.err", "bundles/junit-report-*.xml" -CompressionLevel Optimal -DestinationPath "${bundleName}-bundles.zip"
1022 1023
                                 '''
1023 1024
 
1024 1025
                                 archiveArtifacts artifacts: '*-bundles.zip', allowEmptyArchive: true
... ...
@@ -1075,11 +1076,12 @@ pipeline {
1075 1075
                             junit testResults: 'bundles/junit-report-*.xml', allowEmptyResults: true
1076 1076
                             catchError(buildResult: 'SUCCESS', stageResult: 'FAILURE', message: 'Failed to create bundles.tar.gz') {
1077 1077
                                 powershell '''
1078
+                                cd $env:WORKSPACE
1078 1079
                                 $bundleName="windowsRS5-integration"
1079 1080
                                 Write-Host -ForegroundColor Green "Creating ${bundleName}-bundles.zip"
1080 1081
 
1081 1082
                                 # archiveArtifacts does not support env-vars to , so save the artifacts in a fixed location
1082
-                                Compress-Archive -Path "${env:TEMP}/CIDUT.out", "${env:TEMP}/CIDUT.err", "${env:TEMP}/junit-report-*.xml" -CompressionLevel Optimal -DestinationPath "${bundleName}-bundles.zip"
1083
+                                Compress-Archive -Path "bundles/CIDUT.out", "bundles/CIDUT.err", "bundles/junit-report-*.xml" -CompressionLevel Optimal -DestinationPath "${bundleName}-bundles.zip"
1083 1084
                                 '''
1084 1085
 
1085 1086
                                 archiveArtifacts artifacts: '*-bundles.zip', allowEmptyArchive: true
... ...
@@ -789,26 +789,19 @@ Try {
789 789
             $TestRunExitCode = $LastExitCode
790 790
             $ErrorActionPreference = "Stop"
791 791
 
792
-            # Saving for artifacts......
792
+            # Saving where jenkins will take a look at.....
793
+            New-Item -Force -ItemType Directory bundles | Out-Null
793 794
             $unitTestsContPath="$ContainerNameForUnitTests`:c`:\gopath\src\github.com\docker\docker\bundles"
794 795
             $JunitExpectedContFilePath = "$unitTestsContPath\junit-report-unit-tests.xml"
795
-            docker cp $JunitExpectedContFilePath "$TEMPORIG"
796
+            docker cp $JunitExpectedContFilePath "bundles"
796 797
             if (-not($LastExitCode -eq 0)) {
797
-                Throw "ERROR: Failed to docker cp the unit tests report ($JunitExpectedContFilePath) to $TEMPORIG"
798
+                Throw "ERROR: Failed to docker cp the unit tests report ($JunitExpectedContFilePath) to bundles"
798 799
             }
799 800
 
800
-            if (Test-Path "$TEMPORIG\junit-report-unit-tests.xml") {
801
-                Write-Host -ForegroundColor Magenta "INFO: Unit tests results($TEMPORIG\junit-report-unit-tests.xml) exist. pwd=$pwd"
801
+            if (Test-Path "bundles\junit-report-unit-tests.xml") {
802
+                Write-Host -ForegroundColor Magenta "INFO: Unit tests results(bundles\junit-report-unit-tests.xml) exist. pwd=$pwd"
802 803
             } else {
803
-                Write-Host -ForegroundColor Magenta "ERROR: Unit tests results($TEMPORIG\junit-report-unit-tests.xml) do not exist. pwd=$pwd"
804
-            }
805
-            
806
-            # Saving where jenkins will take a look at.....
807
-            $bundlesDir = "bundles"
808
-            New-Item -Force -ItemType Directory $bundlesDir | Out-Null
809
-            docker cp $JunitExpectedContFilePath "$bundlesDir"
810
-            if (-not($LastExitCode -eq 0)) {
811
-                Throw "ERROR: Failed to docker cp the unit tests report ($JunitExpectedContFilePath) to $bundlesDir"
804
+                Write-Host -ForegroundColor Magenta "ERROR: Unit tests results(bundles\junit-report-unit-tests.xml) do not exist. pwd=$pwd"
812 805
             }
813 806
 
814 807
             if (-not($TestRunExitCode -eq 0)) {
... ...
@@ -855,8 +848,7 @@ Try {
855 855
             #https://blogs.technet.microsoft.com/heyscriptingguy/2011/09/20/solve-problems-with-external-command-lines-in-powershell/ is useful to see tokenising
856 856
             $jsonFilePath = "..\\bundles\\go-test-report-intcli-tests.json"
857 857
             $xmlFilePath = "..\\bundles\\junit-report-intcli-tests.xml"
858
-            $c = "gotestsum --format=standard-quiet --jsonfile=$jsonFilePath --junitfile=$xmlFilePath -- "
859
-            $c += "`"-test.v`" "
858
+            $c = "gotestsum --format=standard-verbose --jsonfile=$jsonFilePath --junitfile=$xmlFilePath -- "
860 859
             if ($null -ne $env:INTEGRATION_TEST_NAME) { # Makes is quicker for debugging to be able to run only a subset of the integration tests
861 860
                 $c += "`"-test.run`" "
862 861
                 $c += "`"$env:INTEGRATION_TEST_NAME`" "
... ...
@@ -886,14 +878,9 @@ Try {
886 886
 
887 887
                 $ErrorActionPreference = "SilentlyContinue"
888 888
                 Write-Host -ForegroundColor Cyan "INFO: Integration API tests being run from the host:"
889
-                if (!($env:INTEGRATION_TESTFLAGS)) {
890
-                    $env:INTEGRATION_TESTFLAGS = "-test.v"
891
-                }
892 889
                 $start=(Get-Date); Invoke-Expression ".\hack\make.ps1 -TestIntegration"; $Duration=New-Timespan -Start $start -End (Get-Date)
893 890
                 $IntTestsRunResult = $LastExitCode
894 891
                 $ErrorActionPreference = "Stop"
895
-                # Copy all the test results to TEMPORIG for archival
896
-                Copy-Item -Path "$env:SOURCES_DRIVE`:\$env:SOURCES_SUBDIR\src\github.com\docker\docker\bundles\junit-report*xml" -Destination $TEMPORIG
897 892
                 if (-not($IntTestsRunResult -eq 0)) {
898 893
                     Throw "ERROR: Integration API tests failed at $(Get-Date). Duration`:$Duration"
899 894
                 }
... ...
@@ -904,7 +891,6 @@ Try {
904 904
                 Set-Location "$env:SOURCES_DRIVE`:\$env:SOURCES_SUBDIR\src\github.com\docker\docker\integration-cli"
905 905
                 # Explicit to not use measure-command otherwise don't get output as it goes
906 906
                 $start=(Get-Date); Invoke-Expression $c; $Duration=New-Timespan -Start $start -End (Get-Date)
907
-                Copy-Item -Path $xmlFilePath -Destination $TEMPORIG
908 907
             }
909 908
             $ErrorActionPreference = "Stop"
910 909
             if (-not($LastExitCode -eq 0)) {
... ...
@@ -1052,10 +1038,10 @@ Finally {
1052 1052
 
1053 1053
     # Save the daemon under test log
1054 1054
     if ($daemonStarted -eq 1) {
1055
-        Write-Host -ForegroundColor Green "INFO: Saving daemon under test log ($env:TEMP\dut.out) to $TEMPORIG\CIDUT.out"
1056
-        Copy-Item  "$env:TEMP\dut.out" "$TEMPORIG\CIDUT.out" -Force -ErrorAction SilentlyContinue
1057
-        Write-Host -ForegroundColor Green "INFO: Saving daemon under test log ($env:TEMP\dut.err) to $TEMPORIG\CIDUT.err"
1058
-        Copy-Item  "$env:TEMP\dut.err" "$TEMPORIG\CIDUT.err" -Force -ErrorAction SilentlyContinue
1055
+        Write-Host -ForegroundColor Green "INFO: Saving daemon under test log ($env:TEMP\dut.out) to bundles\CIDUT.out"
1056
+        Copy-Item  "$env:TEMP\dut.out" "bundles\CIDUT.out" -Force -ErrorAction SilentlyContinue
1057
+        Write-Host -ForegroundColor Green "INFO: Saving daemon under test log ($env:TEMP\dut.err) to bundles\CIDUT.err"
1058
+        Copy-Item  "$env:TEMP\dut.err" "bundles\CIDUT.err" -Force -ErrorAction SilentlyContinue
1059 1059
     }
1060 1060
 
1061 1061
     Set-Location "$env:SOURCES_DRIVE\$env:SOURCES_SUBDIR" -ErrorAction SilentlyContinue
... ...
@@ -1,6 +1,6 @@
1 1
 #!/bin/sh
2 2
 
3
-: ${GOTESTSUM_COMMIT:=v0.3.5}
3
+: ${GOTESTSUM_COMMIT:=v0.5.3}
4 4
 
5 5
 install_gotestsum() (
6 6
 	set -e
... ...
@@ -320,10 +320,19 @@ Function Run-UnitTests() {
320 320
     $pkgList = $pkgList | Select-String -NotMatch "github.com/docker/docker/man"
321 321
     $pkgList = $pkgList | Select-String -NotMatch "github.com/docker/docker/integration"
322 322
     $pkgList = $pkgList -replace "`r`n", " "
323
-    $goTestCommand = "$GOTESTSUM_LOCATION\gotestsum.exe --format=standard-quiet --jsonfile=bundles\go-test-report-unit-tests.json --junitfile=bundles\junit-report-unit-tests.xml -- " + $raceParm + " -cover -ldflags -w -a """ + "-test.timeout=10m" + """ $pkgList"
324
-    Write-Host "INFO: Invoking unit tests run with $goTestCommand"
325
-    Invoke-Expression $goTestCommand
326
-    if ($LASTEXITCODE -ne 0) { Throw "Unit tests failed" }
323
+
324
+    $goTestArg = "--format=standard-verbose --jsonfile=bundles\go-test-report-unit-tests.json --junitfile=bundles\junit-report-unit-tests.xml -- " + $raceParm + " -cover -ldflags -w -a """ + "-test.timeout=10m" + """ $pkgList"
325
+    Write-Host "INFO: Invoking unit tests run with $GOTESTSUM_LOCATION\gotestsum.exe $goTestArg"
326
+    $pinfo = New-Object System.Diagnostics.ProcessStartInfo
327
+    $pinfo.FileName = "$GOTESTSUM_LOCATION\gotestsum.exe"
328
+    $pinfo.WorkingDirectory = "$($PWD.Path)"
329
+    $pinfo.UseShellExecute = $false
330
+    $pinfo.Arguments = $goTestArg
331
+    $p = New-Object System.Diagnostics.Process
332
+    $p.StartInfo = $pinfo
333
+    $p.Start() | Out-Null
334
+    $p.WaitForExit()
335
+    if ($p.ExitCode -ne 0) { Throw "Unit tests failed" }
327 336
 }
328 337
 
329 338
 # Run the integration tests
... ...
@@ -353,19 +362,13 @@ Function Run-IntegrationTests() {
353 353
         $pinfo = New-Object System.Diagnostics.ProcessStartInfo
354 354
         $pinfo.FileName = "gotestsum.exe"
355 355
         $pinfo.WorkingDirectory = "$($PWD.Path)"
356
-        $pinfo.RedirectStandardError = $true
357 356
         $pinfo.UseShellExecute = $false
358
-        $pinfo.Arguments = "--format=standard-quiet --jsonfile=$jsonFilePath --junitfile=$xmlFilePath -- $env:INTEGRATION_TESTFLAGS"
357
+        $pinfo.Arguments = "--format=standard-verbose --jsonfile=$jsonFilePath --junitfile=$xmlFilePath -- $env:INTEGRATION_TESTFLAGS"
359 358
         $p = New-Object System.Diagnostics.Process
360 359
         $p.StartInfo = $pinfo
361 360
         $p.Start() | Out-Null
362 361
         $p.WaitForExit()
363
-        $err = $p.StandardError.ReadToEnd()
364
-        if (($LASTEXITCODE -ne 0) -and ($err -notlike "*warning: no tests to run*")) {
365
-            Throw "Integration tests failed: $err"
366
-        } else {
367
-            Write-Host "$err"
368
-        }
362
+        if ($p.ExitCode -ne 0) { Throw "Integration tests failed" }
369 363
     }
370 364
 }
371 365
 
... ...
@@ -506,7 +509,7 @@ Catch [Exception] {
506 506
     Write-Host -ForegroundColor Red  "     \/        \/             \/     \/ "
507 507
     Write-Host
508 508
 
509
-    Throw $_
509
+    exit 1
510 510
 }
511 511
 Finally {
512 512
     Pop-Location # As we pushed to the root of the repo as the very first thing