Upload unit test as artifacts (#337)

Update vsts scripts to upload unit tests as artifacts
This commit is contained in:
Yanbing 2018-08-06 12:57:47 -07:00 committed by GitHub
parent 92f363bef1
commit 4ac87b4991
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 69 additions and 6 deletions

View File

@ -14,18 +14,22 @@ param (
try
{
Push-location $repolocation
Import-Module "$repolocation\contrib\win32\openssh\OpenSSHBuildHelper.psm1" -Force
Import-Module "$repolocation\contrib\win32\openssh\OpenSSHBuildHelper.psm1" -Force
$UnitTestFolder = "Unittests-$NativeHostArch"
$Bucket = "OpenSSH-$NativeHostArch"
if($NativeHostArch -ieq 'x86') {
$Bucket = "OpenSSH-Win32"
$UnitTestFolder = "Unittests-Win32"
}
elseif($NativeHostArch -ieq 'x64') {
$Bucket = "OpenSSH-Win64"
$UnitTestFolder = "Unittests-Win64"
}
Write-Verbose "Start-OpenSSHBuild -NativeHostArch $NativeHostArch -Configuration $Configuration -NoOpenSSL:$NoOpenSSL -Onecore:$OneCore -Verbose " -Verbose
Start-OpenSSHBuild -NativeHostArch $NativeHostArch -Configuration $Configuration -NoOpenSSL:$NoOpenSSL -Onecore:$OneCore -Verbose
Write-Verbose "Start-OpenSSHPackage -NativeHostArch $NativeHostArch -Configuration $Configuration -NoOpenSSL:$NoOpenSSL -Onecore:$OneCore -DestinationPath $repolocation\$($Bucket)_symbols" -verbose
Start-OpenSSHPackage -NativeHostArch $NativeHostArch -Configuration $Configuration -NoOpenSSL:$NoOpenSSL -Onecore:$OneCore -DestinationPath "$repolocation\$($Bucket)_symbols"
Copy-OpenSSHUnitTests -NativeHostArch $NativeHostArch -Configuration $Configuration -DestinationPath "$repolocation\UnitTests"
if(-not (Test-Path $destination))
{
New-Item -Path $destination -ItemType Directory -Force -ErrorAction Stop| Out-Null
@ -33,8 +37,10 @@ try
#copy the build log
$buildLog = Get-BuildLogFile -NativeHostArch $NativeHostArch -Configuration $Configuration -root $repolocation
Write-Verbose "Copying $buildLog to $repolocation\$($Bucket)_symbols" -verbose
Copy-Item -Path $buildLog -Destination "$($Bucket)_symbols\" -Force -ErrorAction SilentlyContinue
Copy-Item -Path $buildLog -Destination "$($Bucket)_symbols\" -Force -ErrorAction SilentlyContinue
$unitTestPaths = Get-ChildItem "$repolocation\UnitTests\*" -Directory
Compress-Archive -path $unitTestPaths.FullName -DestinationPath "$repolocation\$($Bucket)_symbols\$UnitTestFolder"
Compress-Archive -path "$repolocation\$($Bucket)_symbols\*" -DestinationPath "$destination\$($Bucket)_symbols"
}
finally

View File

@ -457,6 +457,57 @@ function Start-OpenSSHPackage
Remove-Item $symbolsDir -Recurse -Force -ErrorAction SilentlyContinue
}
function Copy-OpenSSHUnitTests
{
[CmdletBinding(SupportsShouldProcess=$false)]
param
(
[ValidateSet('x86', 'x64', 'arm64', 'arm')]
[string]$NativeHostArch = "x64",
[ValidateSet('Debug', 'Release')]
[string]$Configuration = "Release",
# Copy unittests to DestinationPath
[string]$DestinationPath = ""
)
[System.IO.DirectoryInfo] $repositoryRoot = Get-RepositoryRoot
$repositoryRoot = Get-Item -Path $repositoryRoot.FullName
$folderName = $NativeHostArch
if($NativeHostArch -ieq 'x86')
{
$folderName = "Win32"
}
$buildDir = Join-Path $repositoryRoot ("bin\" + $folderName + "\" + $Configuration)
$unittestsDir = Join-Path $buildDir "unittests"
$unitTestFolders = Get-ChildItem -Directory $buildDir\unittest-*
if ($DestinationPath -ne "") {
if (-not (Test-Path $DestinationPath -PathType Container)) {
New-Item -ItemType Directory $DestinationPath -Force | Out-Null
}
foreach ($folder in $unitTestFolders) {
Copy-Item $folder.FullName $DestinationPath\$($folder.Name) -Recurse -Force
Write-BuildMsg -AsInfo -Message "Copied $($folder.FullName) to $DestinationPath\$($folder.Name)."
}
}
else {
if(Test-Path ($unittestsDir + '.zip') -PathType Leaf) {
Remove-Item ($unittestsDir + '.zip') -Force -ErrorAction SilentlyContinue
}
if(get-command Compress-Archive -ErrorAction SilentlyContinue)
{
Compress-Archive -Path $unitTestFolders.FullName -DestinationPath ($unittestsDir + '.zip')
Write-BuildMsg -AsInfo -Message "Packaged unittests - '$unittestsDir.zip'"
}
else
{
Write-BuildMsg -AsInfo -Message "Packaged unittests not compressed."
}
}
}
function Start-OpenSSHBuild
{
[CmdletBinding(SupportsShouldProcess=$false)]
@ -657,4 +708,4 @@ function Get-SolutionFile
Export-ModuleMember -Function Start-OpenSSHBuild, Get-BuildLogFile, Start-OpenSSHPackage
Export-ModuleMember -Function Start-OpenSSHBuild, Get-BuildLogFile, Start-OpenSSHPackage, Copy-OpenSSHUnitTests

View File

@ -72,7 +72,7 @@ try
if($SignedFilesPath)
{
Write-Verbose "SignedFilesPath: $SignedFilesPath" -Verbose
$files = Get-ChildItem -Path $SignedFilesPath\* -Recurse -File | Select-Object -ExpandProperty FullName
$files = Get-ChildItem -Path $SignedFilesPath\* -File | Select-Object -ExpandProperty FullName
#Count the remaining file not signed files.
Get-ChildItem -Path $BuildPath\* -Recurse -File | % {
$src = $_.FullName
@ -88,7 +88,7 @@ try
else
{
#did not run codesign, so publish the plain binaries
$files = Get-ChildItem -Path $BuildPath\* -Recurse -File | Select-Object -ExpandProperty FullName
$files = Get-ChildItem -Path $BuildPath\* -File | Select-Object -ExpandProperty FullName
}
$Bucket = (Split-Path $BuildPath -Leaf).Replace("_symbols", "")
@ -111,6 +111,10 @@ try
$artifactname = "$folderName-$leafFileName"
Write-Host "##vso[artifact.upload containerfolder=$folderName;artifactname=$artifactname]$fileName"
}
elseif($extension -ieq '.zip')
{
Write-Host "##vso[artifact.upload artifactname=$leafFileName]$fileName"
}
else
{
$artifactname = "$Bucket-$leafFileName"
@ -132,4 +136,4 @@ catch
finally{
Write-VstsTaskState
exit 0
}
}

View File

@ -30,6 +30,7 @@ Describe "Tests for authorized_keys file permission" -Tags "CI" {
#skip when the task schedular (*-ScheduledTask) cmdlets does not exist
$ts = (get-command get-ScheduledTask -ErrorAction SilentlyContinue)
$skip = $ts -eq $null
$platform = Get-Platform
if(($platform -eq [PlatformType]::Windows) -and ([Environment]::OSVersion.Version.Major -le 6))
{
#suppress the firewall blocking dialogue on win7
@ -40,6 +41,7 @@ Describe "Tests for authorized_keys file permission" -Tags "CI" {
AfterEach { $tI++ }
AfterAll {
$platform = Get-Platform
if(($platform -eq [PlatformType]::Windows) -and ($psversiontable.BuildVersion.Major -le 6))
{
netsh advfirewall firewall delete rule name="sshd" program="$($OpenSSHTestInfo['OpenSSHBinPath'])\sshd.exe" protocol=any dir=in