-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy path.gitlab-ci.yml
94 lines (86 loc) · 3.92 KB
/
.gitlab-ci.yml
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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
include:
- project: "dracoon/cicd/pipeline/apps-guild-ci/dotnet-ci"
ref: "main"
file:
- "base.yml"
- "fetch-credentials.yml"
- "dependency-scanning.yml"
- "secret-detection.yml"
- "deploy-nupkg-artifactory.yml"
- "deploy-nupkg-nuget.yml"
#------------------------------- PREPARE ------------------------------
prepare-build:
stage: prepare
tags:
- windows-amd64
script:
- nuget locals all -clear
#
# extract project version
- $VERSION_LINE = $(get-content -Path .\DracoonSdk\DracoonSdk.csproj | Select-String -Pattern '<Version>').ToString()
- $VERSION = $VERSION_LINE.SubString($VERSION_LINE.IndexOf("<Version>") + 9, $VERSION_LINE.IndexOf("</Version>") - $VERSION_LINE.IndexOf("<Version>") - 9)
- echo "$VERSION" >> shared.txt
artifacts:
expire_in: 1 week
paths:
- .\shared.txt
#-------------------------------- BUILD -------------------------------
build:
stage: build
tags:
- windows-amd64
before_script:
- mkdir .\dist
script:
- nuget restore .\DracoonSdk\DracoonSdk.csproj -Source https://api.nuget.org/v3/index.json
- dotnet pack -c Release .\DracoonSdk\DracoonSdk.csproj -o .\dist
artifacts:
expire_in: 1 week
paths:
- .\dist
#-------------------------------- TEST --------------------------------
unit-test:
stage: test
secrets:
ARTIFACTORY_DOMAIN:
vault: Artifactory/domain@Build-Environment
file: false
tags:
- windows-amd64
script:
- nuget restore .\DracoonSdk.sln -Source https://api.nuget.org/v3/index.json -Source https://$ARTIFACTORY_DOMAIN/artifactory/api/nuget/nuget-local
- C:\BuildToolsNEW\VS2022BuildTools\MSBuild\Current\Bin\MSBuild.exe DracoonSdkUnitTest\DracoonSdkUnitTest.csproj /p:Configuration="Release"
- C:\BuildTools\TelerikJustMock\Libraries\Telerik.JustMock.Console runadvanced --command "dotnet" --command-args "vstest .\DracoonSdkUnitTest\bin\Release\Dracoon.Sdk.UnitTest.dll"
#-------------------------------- ANALYZE --------------------------------
sonar:
stage: analyze
secrets:
ARTIFACTORY_DOMAIN:
vault: Artifactory/domain@Build-Environment
file: false
SONAR_TOKEN:
vault: Sonar/token@Build-Environment
file: false
SONAR_URL:
vault: Sonar/url@Build-Environment
file: false
rules:
- if: $DC_DISABLE_SONAR_GATES == 'true'
when: on_success
allow_failure: true
- allow_failure: false
tags:
- windows-amd64
dependencies:
- prepare-build
before_script:
- $VERSION = (GET-CONTENT ./shared.txt)
- $BASE_DIR=(Get-Location).path
script:
- nuget restore .\DracoonSdk.sln -Source https://api.nuget.org/v3/index.json -Source https://$ARTIFACTORY_DOMAIN/artifactory/api/nuget/nuget-local
- C:\BuildToolsNEW\VS2022BuildTools\MSBuild\Current\Bin\MSBuild.exe DracoonSdkUnitTest\DracoonSdkUnitTest.csproj /p:Configuration="Release"
- C:\BuildTools\TelerikJustMock\Libraries\Telerik.JustMock.Console runadvanced --command "C:\BuildTools\dotCover\dotCover.exe" --command-args 'cover /TargetExecutable="C:\BuildToolsNEW\VS2022BuildTools\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe" /TargetArguments="Dracoon.Sdk.UnitTest.dll" /TargetWorkingDir="DracoonSdkUnitTest\bin\Release" /Scope="Dracoon.Sdk.dll" /Filters="-:module=Dracoon.Sdk.Example;-:module=Dracoon.Sdk.UnitTest" /Output=".\dotCoverResult.html" /ReportType="HTML"'
- dotnet clean -c Release .\DracoonSdk.sln
- C:\ProgramData\chocolatey\lib\sonarscanner-msbuild-net46\tools\SonarScanner.MSBuild.exe begin /s:${BASE_DIR}\SonarQube.Analysis.xml /k:dracoon-sdk-csharp /v:${VERSION} /d:sonar.host.url=$SONAR_URL /d:sonar.login=$SONAR_TOKEN /d:sonar.branch.name="${CI_COMMIT_REF_SLUG}" /d:sonar.scm.revision=${CI_COMMIT_SHORT_SHA}
- dotnet build -c Release .\DracoonSdk\DracoonSdk.csproj
- C:\ProgramData\chocolatey\lib\sonarscanner-msbuild-net46\tools\SonarScanner.MSBuild.exe end /d:sonar.login=$SONAR_TOKEN