forked from nbehave/NBehave
/
Run-build.ps1
61 lines (51 loc) · 1.87 KB
/
Run-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
param(
$task = "default",
$buildFile = ".\build.ps1",
$buildNumber = "0",
$preReleaseTag = "devlocal"
)
$env:EnableNuGetPackageRestore = $TRUE
$scriptPath = Split-Path -parent $MyInvocation.MyCommand.path
Write-Host "task $task"
Write-Host "buildFile $buildFile"
Write-Host "buildNumber $buildNumber"
Write-Host "preReleaseTag $preReleaseTag"
function WriteExtraArguments() {
$s = $script:args
$argName = ""
$content = ""
foreach ( $arg in $s ) {
if ($argName -eq "") {
$m = $arg -match "\w+"
$argName = $matches[0]
}
else {
$value = $arg
$content += "`$$argName = `"$value`"`r`n"
$argName = ""
}
}
$content > "$scriptPath\ExtraArgs.ps1"
}
function Build($framework, $taskToRun) {
invoke-psake $buildFile -framework '4.0x86' -t $taskToRun -parameters @{"buildNumber"="$buildNumber";"preReleaseTag"="$preReleaseTag";"frameworkVersion"="$framework"}
if ($psake.build_success -eq $FALSE) {
$errMsg = $psake.build_error_message
$replace = @{ "\|" = "||"; "`n" = "|n"; "`r" = "|r"; "'" = "|'"; "\[" = "|["; "\]" = "|]"; '0x0085' = "|x"; '0x2028' = "|l"; '0x2029' = "|p" }
$replace.GetEnumerator() | ForEach-Object { $errMsg = $errMsg -replace $_.Key, $_.Value }
write-host "##teamcity[message text='build failed: $errMsg' errorDetails='$errMsg' status='ERROR']"
throw $errMsg
}
}
# Install psake
$psakeVersion = "4.2.0.1"
& $scriptPath\src\.nuget\NuGet.exe install psake -OutputDirectory buildframework -Version $psakeVersion
remove-module psake -ea 'SilentlyContinue'
Import-Module (join-path $scriptPath ".\buildframework\psake.$psakeVersion\tools\psake.psm1")
if (-not(test-path $buildFile)) {
$buildFile = (join-path $scriptPath $buildFile)
}
WriteExtraArguments
Build "3.5" "Init"
Build "3.5" $task
Build "4.0" $task