|
2 | 2 | param (
|
3 | 3 | [Parameter(Mandatory = $false)]
|
4 | 4 | [Switch]
|
5 |
| - $SkipTests |
6 |
| -) |
7 |
| - |
8 |
| -echo "build: Build started" |
9 |
| - |
10 |
| -Push-Location "$PSScriptRoot" |
11 |
| - |
12 |
| -if (Test-Path .\artifacts) { |
13 |
| - echo "build: Cleaning .\artifacts" |
14 |
| - Remove-Item .\artifacts -Force -Recurse |
15 |
| -} |
16 |
| - |
17 |
| -& dotnet restore --no-cache |
| 5 | + $SkipTests, |
18 | 6 |
|
19 |
| -$branch = @{ $true = $env:GITHUB_REF_NAME; $false = $(git symbolic-ref --short -q HEAD) }[$env:GITHUB_REF_NAME -ne $NULL] |
20 |
| -$revision = @{ $true = "{0:00000}" -f [convert]::ToInt32("0" + $env:GITHUB_RUN_NUMBER, 10); $false = "local" }[$env:GITHUB_RUN_NUMBER -ne $NULL] |
21 |
| -$suffix = @{ $true = ""; $false = "$($branch.Substring(0, [math]::Min(10, $branch.Length)))-$revision" }[$branch -ne "dev" -and $revision -ne "local"] |
| 7 | + [Parameter(Mandatory = $false)] |
| 8 | + [Switch] |
| 9 | + $SkipPerfTests, |
22 | 10 |
|
23 |
| -echo "build: Version suffix is $suffix" |
| 11 | + [Parameter(Mandatory = $false)] |
| 12 | + [Switch] |
| 13 | + $SkipSamples |
| 14 | +) |
24 | 15 |
|
25 |
| -foreach ($src in Get-ChildItem "$PSScriptRoot/src" -Directory) { |
26 |
| - Push-Location $src.FullName |
| 16 | +echo "build: Build started" |
27 | 17 |
|
28 |
| - echo "build: Packaging project in $($src.FullName)" |
| 18 | +try |
| 19 | +{ |
| 20 | + Push-Location "$PSScriptRoot" |
29 | 21 |
|
30 |
| - if ($suffix) { |
31 |
| - & dotnet pack -c Release -o ..\..\artifacts --version-suffix=$suffix |
32 |
| - } else { |
33 |
| - & dotnet pack -c Release -o ..\..\artifacts |
| 22 | + if (Test-Path .\artifacts) |
| 23 | + { |
| 24 | + echo "build: Cleaning .\artifacts" |
| 25 | + Remove-Item .\artifacts -Force -Recurse |
34 | 26 | }
|
35 |
| - if ($LASTEXITCODE -ne 0) { exit 1 } |
36 | 27 |
|
37 |
| - Pop-Location |
38 |
| -} |
39 |
| - |
40 |
| -if ($SkipTests -eq $false) { |
41 |
| - foreach ($test in Get-ChildItem "$PSScriptRoot/test" -Filter "*.Tests" -Directory) { |
42 |
| - Push-Location $test.FullName |
43 |
| - |
44 |
| - echo "build: Testing project in $($test.FullName)" |
45 |
| - |
46 |
| - & dotnet test -c Release --collect "XPlat Code Coverage" |
47 |
| - if ($LASTEXITCODE -ne 0) { exit 3 } |
| 28 | + echo "build: Restoring packages for solution" |
| 29 | + & dotnet restore --no-cache |
| 30 | + if ($LASTEXITCODE -ne 0) |
| 31 | + { |
| 32 | + echo "Error returned by dotnet restore. Aborting build." |
| 33 | + exit 1 |
| 34 | + } |
48 | 35 |
|
| 36 | + $branch = @{ $true = $env:GITHUB_REF_NAME; $false = $( git symbolic-ref --short -q HEAD ) }[$env:GITHUB_REF_NAME -ne $NULL] |
| 37 | + $revision = @{ $true = "{0:00000}" -f [convert]::ToInt32("0" + $env:GITHUB_RUN_NUMBER, 10); $false = "local" }[$env:GITHUB_RUN_NUMBER -ne $NULL] |
| 38 | + $suffix = @{ $true = ""; $false = "$($branch.Substring(0,[math]::Min(10, $branch.Length)) )-$revision" }[$branch -ne "dev" -and $revision -ne "local"] |
| 39 | + |
| 40 | + echo "build: Version suffix is $suffix" |
| 41 | + |
| 42 | + $sinkProjectPath = "$PSScriptRoot/src/Serilog.Sinks.MSSqlServer" |
| 43 | + try |
| 44 | + { |
| 45 | + Push-Location "$sinkProjectPath" |
| 46 | + |
| 47 | + echo "build: Packaging sink main project in $sinkProjectPath" |
| 48 | + if ($suffix) |
| 49 | + { |
| 50 | + & dotnet pack -c Release -o ..\..\artifacts --version-suffix=$suffix |
| 51 | + } |
| 52 | + else |
| 53 | + { |
| 54 | + & dotnet pack -c Release -o ..\..\artifacts |
| 55 | + } |
| 56 | + if ($LASTEXITCODE -ne 0) |
| 57 | + { |
| 58 | + echo "Error returned by dotnet pack. Aborting build." |
| 59 | + exit 1 |
| 60 | + } |
| 61 | + } |
| 62 | + finally |
| 63 | + { |
49 | 64 | Pop-Location
|
50 | 65 | }
|
51 | 66 |
|
52 |
| - # The performance benchmark tests should at least build without errors during PR validation |
53 |
| - $perfTestProjectPath = "$PSScriptRoot/test/Serilog.Sinks.MSSqlServer.PerformanceTests" |
54 |
| - Push-Location "$perfTestProjectPath" |
| 67 | + if ($SkipTests -eq $false) |
| 68 | + { |
| 69 | + $testProjectPath = "$PSScriptRoot/test/Serilog.Sinks.MSSqlServer.Tests" |
| 70 | + try |
| 71 | + { |
| 72 | + Push-Location "$testProjectPath" |
| 73 | + |
| 74 | + echo "build: Testing project in $testProjectPath" |
| 75 | + & dotnet test -c Release --collect "XPlat Code Coverage" |
| 76 | + if ($LASTEXITCODE -ne 0) |
| 77 | + { |
| 78 | + exit 2 |
| 79 | + } |
| 80 | + |
| 81 | + } |
| 82 | + finally |
| 83 | + { |
| 84 | + Pop-Location |
| 85 | + } |
| 86 | + } |
| 87 | + |
| 88 | + if ($SkipPerfTests -eq $false) |
| 89 | + { |
| 90 | + # The performance benchmark tests should at least build without errors during PR validation |
| 91 | + $perfTestProjectPath = "$PSScriptRoot/test/Serilog.Sinks.MSSqlServer.PerformanceTests" |
| 92 | + try |
| 93 | + { |
| 94 | + Push-Location "$perfTestProjectPath" |
| 95 | + |
| 96 | + echo "build: Building performance test project in $perfTestProjectPath" |
| 97 | + & dotnet build -c Release |
| 98 | + if ($LASTEXITCODE -ne 0) |
| 99 | + { |
| 100 | + exit 3 |
| 101 | + } |
| 102 | + } |
| 103 | + finally |
| 104 | + { |
| 105 | + Pop-Location |
| 106 | + } |
| 107 | + } |
55 | 108 |
|
56 |
| - echo "build: Building performance test project in $perfTestProjectPath" |
57 |
| - & dotnet build -c Release |
| 109 | + if ($SkipSamples -eq $false) |
| 110 | + { |
| 111 | + foreach ($src in Get-ChildItem "$PSScriptRoot/samples/**/*.csproj" -File) |
| 112 | + { |
| 113 | + try |
| 114 | + { |
| 115 | + Push-Location $src.DirectoryName |
| 116 | + |
| 117 | + echo "build: Building sample project $( $src.FullName )" |
| 118 | + & dotnet pack -c Release -o ..\..\artifacts |
| 119 | + if ($LASTEXITCODE -ne 0) |
| 120 | + { |
| 121 | + echo "Error returned by dotnet build. Aborting build." |
| 122 | + exit 4 |
| 123 | + } |
| 124 | + } |
| 125 | + finally |
| 126 | + { |
| 127 | + Pop-Location |
| 128 | + } |
| 129 | + } |
| 130 | + } |
58 | 131 |
|
| 132 | +} |
| 133 | +finally |
| 134 | +{ |
59 | 135 | Pop-Location
|
60 | 136 | }
|
61 |
| - |
62 |
| -Pop-Location |
|
0 commit comments