As part of the VMware open source program, we have to update this repository with the correct license and copyright information. We add the BSD-2 Clause License for this repository. We mark all source code provided by VMware with the Copyright notice under BSD-2 Clause license. * Update repository license to BSD 2-Clause License * Update Copyright
169 lines
4.5 KiB
PowerShell
169 lines
4.5 KiB
PowerShell
<#
|
|
Copyright 2021 VMware, Inc.
|
|
SPDX-License-Identifier: BSD-2-Clause
|
|
#>
|
|
param(
|
|
[string]
|
|
$TestVc,
|
|
|
|
[string]
|
|
$TestVcUser,
|
|
|
|
[string]
|
|
$TestVcPassword,
|
|
|
|
[switch]
|
|
$PrepareForPSGallery
|
|
)
|
|
|
|
$Configuration = "Release"
|
|
|
|
function Test-BuildToolsAreAvailable {
|
|
$dotnetSdk = Get-Command 'dotnet'
|
|
if (-not $dotnetSdk) {
|
|
throw "'dotnet' sdk is not available"
|
|
}
|
|
}
|
|
|
|
function LogInfo($message) {
|
|
$dt = (Get-Date).ToLongTimeString()
|
|
Write-Host "[$dt] INFO: $message" -ForegroundColor Green
|
|
}
|
|
|
|
function Build {
|
|
$srcRoot = Join-Path $PSScriptRoot "VMware.vSphere.SsoAdmin.Client"
|
|
|
|
Push-Location $srcRoot
|
|
|
|
dotnet build -c $Configuration
|
|
|
|
Pop-Location
|
|
}
|
|
|
|
function Publish {
|
|
param($OutputFolder)
|
|
|
|
if (Test-Path $OutputFolder) {
|
|
$netcoreLsSource = [IO.Path]::Combine(
|
|
$PSScriptRoot,
|
|
"VMware.vSphere.SsoAdmin.Client",
|
|
"VMware.vSphere.LsClient",
|
|
"bin",
|
|
$Configuration,
|
|
"netcoreapp3.1",
|
|
"VMware.vSphere.LsClient.dll")
|
|
|
|
$net45LsSource = [IO.Path]::Combine(
|
|
$PSScriptRoot,
|
|
"VMware.vSphere.SsoAdmin.Client",
|
|
"VMware.vSphere.LsClient",
|
|
"bin",
|
|
$Configuration,
|
|
"net45",
|
|
"VMware.vSphere.LsClient.dll")
|
|
|
|
$netcoreSsoAdminSource = [IO.Path]::Combine(
|
|
$PSScriptRoot,
|
|
"VMware.vSphere.SsoAdmin.Client",
|
|
"VMware.vSphere.SsoAdminClient",
|
|
"bin",
|
|
$Configuration,
|
|
"netcoreapp3.1",
|
|
"VMware.vSphere.SsoAdminClient.dll")
|
|
|
|
$net45SsoAdminSource = [IO.Path]::Combine(
|
|
$PSScriptRoot,
|
|
"VMware.vSphere.SsoAdmin.Client",
|
|
"VMware.vSphere.SsoAdminClient",
|
|
"bin",
|
|
$Configuration,
|
|
"net45",
|
|
"VMware.vSphere.SsoAdminClient.dll")
|
|
|
|
$netcoreUtilsSource = [IO.Path]::Combine(
|
|
$PSScriptRoot,
|
|
"VMware.vSphere.SsoAdmin.Client",
|
|
"VMware.vSphere.SsoAdmin.Utils",
|
|
"bin",
|
|
$Configuration,
|
|
"netcoreapp3.1",
|
|
"VMware.vSphere.SsoAdmin.Utils.dll")
|
|
|
|
$net45UtilsSource = [IO.Path]::Combine(
|
|
$PSScriptRoot,
|
|
"VMware.vSphere.SsoAdmin.Client",
|
|
"VMware.vSphere.SsoAdmin.Utils",
|
|
"bin",
|
|
$Configuration,
|
|
"net45",
|
|
"VMware.vSphere.SsoAdmin.Utils.dll")
|
|
|
|
|
|
$netcoreTarget = Join-Path $OutputFolder "netcoreapp3.1"
|
|
$net45Target = Join-Path $OutputFolder "net45"
|
|
|
|
Copy-Item -Path $netcoreLsSource -Destination $netcoreTarget -Force
|
|
Copy-Item -Path $net45LsSource -Destination $net45Target -Force
|
|
Copy-Item -Path $netcoreSsoAdminSource -Destination $netcoreTarget -Force
|
|
Copy-Item -Path $net45SsoAdminSource -Destination $net45Target -Force
|
|
Copy-Item -Path $netcoreUtilsSource -Destination $netcoreTarget -Force
|
|
Copy-Item -Path $net45UtilsSource -Destination $net45Target -Force
|
|
}
|
|
}
|
|
|
|
function Test {
|
|
if (-not [string]::IsNullOrEmpty($TestVc) -and `
|
|
-not [string]::IsNullOrEmpty($TestVcUser) -and `
|
|
-not [string]::IsNullOrEmpty($TestVcPassword)) {
|
|
|
|
# Run Tests in external process because it will load build output binaries
|
|
LogInfo "Run VC integration tests"
|
|
$usePowerShell = (Get-Process -Id $pid).ProcessName
|
|
$testLauncherScript = Join-Path (Join-Path $PSScriptRoot 'test') 'RunTests.ps1'
|
|
$arguments = "-Command $testLauncherScript -VcAddress $TestVc -User $TestVcUser -Password $TestVcPassword"
|
|
|
|
Start-Process `
|
|
-FilePath $usePowerShell `
|
|
-ArgumentList $arguments `
|
|
-PassThru `
|
|
-NoNewWindow | `
|
|
Wait-Process
|
|
}
|
|
}
|
|
|
|
function PrepareForRelease {
|
|
$targetRootDirName = 'ForPSGallery'
|
|
$releaseDir = Join-Path (Split-Path $PSScriptRoot) $targetRootDirName
|
|
if (Test-Path $releaseDir) {
|
|
Remove-Item -Path $releaseDir -Recurse
|
|
}
|
|
|
|
New-Item -Path $releaseDir -ItemType Directory | Out-Null
|
|
$releaseDir = Join-Path $releaseDir 'VMware.vSphere.SsoAdmin'
|
|
New-Item -Path $releaseDir -ItemType Directory | Out-Null
|
|
|
|
$sourceDir = Split-Path $PSScriptRoot
|
|
Get-ChildItem -Path $sourceDir -Exclude src, README.md, $targetRootDirName | `
|
|
Copy-Item -Recurse -Destination $releaseDir
|
|
}
|
|
|
|
# 1. Test Build Tools
|
|
LogInfo "Test build tools are available"
|
|
Test-BuildToolsAreAvailable
|
|
|
|
# 2. Build
|
|
LogInfo "Build"
|
|
Build
|
|
|
|
# 3. Publish
|
|
$OutputFolder = Split-Path $PSScriptRoot
|
|
LogInfo "Publish binaries to '$OutputFolder'"
|
|
Publish $OutputFolder
|
|
|
|
# 4. Test
|
|
Test
|
|
|
|
# 5. Prepare For Release
|
|
if ($PrepareForPSGallery) {
|
|
PrepareForRelease
|
|
} |