-
Notifications
You must be signed in to change notification settings - Fork 319
/
try-ci-build.ps1
70 lines (65 loc) · 1.9 KB
/
try-ci-build.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
[CmdletBinding(PositionalBinding=$false)]
Param(
[string][Alias('c')]$configuration = "Debug",
[string]$platform = $null,
[string] $projects,
[string][Alias('v')]$verbosity = "minimal",
[string] $msbuildEngine = $null,
[bool] $warnAsError = $true,
[bool] $nodeReuse = $true,
[switch][Alias('r')]$restore,
[switch] $deployDeps,
[switch][Alias('b')]$build,
[switch] $rebuild,
[switch] $deploy,
[switch][Alias('t')]$test,
[switch] $integrationTest,
[switch] $performanceTest,
[switch] $sign,
[switch] $pack,
[switch] $publish,
[switch] $clean,
[switch][Alias('bl')]$binaryLog,
[switch][Alias('nobl')]$excludeCIBinarylog,
[switch] $ci,
[switch] $prepareMachine,
[string] $runtimeSourceFeed = '',
[string] $runtimeSourceFeedKey = '',
[switch] $excludePrereleaseVS,
[switch] $nativeToolsOnMachine,
[switch] $help,
[Parameter(ValueFromRemainingArguments=$true)][String[]]$properties
)
$count = 0
$err = $null
$path = "$PSScriptRoot/common/build.ps1"
# CIBuild.cmd script specifies restore -build -test -sign -pack -publish -ci $args
$PSBoundParameters["restore"] = $true
$PSBoundParameters["build"] = $true
$PSBoundParameters["test"] = $true
$PSBoundParameters["sign"] = $true
$PSBoundParameters["pack"] = $true
$PSBoundParameters["publish"] = $true
$PSBoundParameters["ci"] = $true
$cmd = "$path $(foreach($pair in $PSBoundParameters.GetEnumerator()) { "-$($pair.Key)=$($pair.Value)"})"
while (3 -gt $count) {
$err = $null
$count++
try {
& $path @PSBoundParameters
if (0 -ne $LASTEXITCODE) {
Write-Host ">>> Try ${count}: Command '$cmd' failed, with exit code $LASTEXITCODE."
continue
}
}
catch {
$err = $_
Write-Host ">>> Try ${count}: Command '$cmd' failed, with $_."
continue
}
Write-Host ">>> Try ${count}: Command '$cmd' succeeded."
break
}
if ($null -ne $err) {
throw $err
}