1
+ Write-Output " build: Tool versions follow"
2
+
3
+ dotnet -- version
4
+ dotnet -- list- sdks
5
+
1
6
Write-Output " build: Build started"
2
7
3
8
Push-Location $PSScriptRoot
9
+ try {
10
+ if (Test-Path .\artifacts) {
11
+ Write-Output " build: Cleaning ./artifacts"
12
+ Remove-Item ./ artifacts - Force - Recurse
13
+ }
4
14
5
- if (Test-Path .\artifacts) {
6
- Write-Output " build: Cleaning .\artifacts"
7
- Remove-Item .\artifacts - Force - Recurse
8
- }
15
+ & dotnet restore -- no- cache
9
16
10
- $branch = @ { $true = $env: APPVEYOR_REPO_BRANCH ; $false = $ (git symbolic- ref -- short - q HEAD) }[$env: APPVEYOR_REPO_BRANCH -ne $NULL ];
11
- $revision = @ { $true = " {0:00000}" -f [convert ]::ToInt32(" 0" + $env: APPVEYOR_BUILD_NUMBER , 10 ); $false = " local" }[$env: APPVEYOR_BUILD_NUMBER -ne $NULL ];
12
- $suffix = @ { $true = " " ; $false = " $ ( $branch.Substring (0 , [math ]::Min(10 , $branch.Length ))) -$revision " }[$branch -eq " main" -and $revision -ne " local" ]
13
- $commitHash = $ (git rev- parse -- short HEAD)
14
- $buildSuffix = @ { $true = " $ ( $suffix ) -$ ( $commitHash ) " ; $false = " $ ( $branch ) -$ ( $commitHash ) " }[$suffix -ne " " ]
17
+ $dbp = [Xml ] (Get-Content .\Directory.Version.props)
18
+ $versionPrefix = $dbp.Project.PropertyGroup.VersionPrefix
15
19
16
- Write-Output " build: Package version suffix is $suffix "
17
- Write-Output " build: Build version suffix is $buildSuffix "
20
+ Write-Output " build: Package version prefix is $versionPrefix "
18
21
19
- & dotnet build -- configuration Release -- version- suffix= $buildSuffix / p:ContinuousIntegrationBuild= true
22
+ $branch = @ { $true = $env: CI_TARGET_BRANCH ; $false = $ (git symbolic- ref -- short - q HEAD) }[$NULL -ne $env: CI_TARGET_BRANCH ];
23
+ $revision = @ { $true = " {0:00000}" -f [convert ]::ToInt32(" 0" + $env: CI_BUILD_NUMBER , 10 ); $false = " local" }[$NULL -ne $env: CI_BUILD_NUMBER ];
24
+ $suffix = @ { $true = " " ; $false = " $ ( $branch.Substring (0 , [math ]::Min(10 , $branch.Length )) -replace ' ([^a-zA-Z0-9\-]*)' , ' ' ) -$revision " }[$branch -eq " main" -and $revision -ne " local" ]
25
+ $commitHash = $ (git rev- parse -- short HEAD)
26
+ $buildSuffix = @ { $true = " $ ( $suffix ) -$ ( $commitHash ) " ; $false = " $ ( $branch ) -$ ( $commitHash ) " }[$suffix -ne " " ]
20
27
21
- if ($LASTEXITCODE -ne 0 ) { throw ' build failed' }
28
+ Write-Output " build: Package version suffix is $suffix "
29
+ Write-Output " build: Build version suffix is $buildSuffix "
22
30
23
- if ($suffix ) {
24
- & dotnet pack src\Serilog.Settings.Configuration -- configuration Release -- no- build -- no- restore - o artifacts -- version- suffix= $suffix
25
- } else {
26
- & dotnet pack src\Serilog.Settings.Configuration -- configuration Release -- no- build -- no- restore - o artifacts
27
- }
31
+ & dotnet build - c Release -- version- suffix= $buildSuffix / p:ContinuousIntegrationBuild= true
32
+ if ($LASTEXITCODE -ne 0 ) { throw " Build failed" }
33
+
34
+ foreach ($src in Get-ChildItem src/* ) {
35
+ Push-Location $src
36
+
37
+ Write-Output " build: Packaging project in $src "
38
+
39
+ if ($suffix ) {
40
+ & dotnet pack - c Release -- no- build -- no- restore - o ../ ../ artifacts -- version- suffix= $suffix
41
+ } else {
42
+ & dotnet pack - c Release -- no- build -- no- restore - o ../ ../ artifacts
43
+ }
44
+ if ($LASTEXITCODE -ne 0 ) { throw " Packaging failed" }
28
45
29
- if ($LASTEXITCODE -ne 0 ) { throw ' pack failed' }
46
+ Pop-Location
47
+ }
30
48
31
- Write-Output " build: Testing"
49
+ foreach ($test in Get-ChildItem test/* .Tests) {
50
+ Push-Location $test
32
51
33
- # Dotnet test doesn't run separate TargetFrameworks in parallel: https://github.com/dotnet/sdk/issues/19147
34
- # Workaround: use `dotnet test` on dlls directly in order to pass the `--parallel` option to vstest.
35
- # The _reported_ runtime is wrong but the _actual_ used runtime is correct, see https://github.com/microsoft/vstest/issues/2037#issuecomment-720549173
36
- & dotnet test test\Serilog.Settings.Configuration.Tests\bin\Release\* \Serilog.Settings.Configuration.Tests.dll -- parallel
52
+ Write-Output " build: Testing project in $test "
37
53
38
- if ($LASTEXITCODE -ne 0 ) { throw ' unit tests failed' }
54
+ & dotnet test - c Release -- no- build -- no- restore
55
+ if ($LASTEXITCODE -ne 0 ) { throw " Testing failed" }
56
+
57
+ Pop-Location
58
+ }
59
+
60
+ if ($env: NUGET_API_KEY ) {
61
+ # GitHub Actions will only supply this to branch builds and not PRs. We publish
62
+ # builds from any branch this action targets (i.e. main and dev).
63
+
64
+ Write-Output " build: Publishing NuGet packages"
65
+
66
+ foreach ($nupkg in Get-ChildItem artifacts/* .nupkg) {
67
+ & dotnet nuget push - k $env: NUGET_API_KEY - s https:// api.nuget.org/ v3/ index.json " $nupkg "
68
+ if ($LASTEXITCODE -ne 0 ) { throw " Publishing failed" }
69
+ }
70
+
71
+ if (! ($suffix )) {
72
+ Write-Output " build: Creating release for version $versionPrefix "
73
+
74
+ iex " gh release create v$versionPrefix --title v$versionPrefix --generate-notes $ ( get-item ./ artifacts/* .nupkg) $ ( get-item ./ artifacts/* .snupkg) "
75
+ }
76
+ }
77
+ } finally {
78
+ Pop-Location
79
+ }
0 commit comments