-
Notifications
You must be signed in to change notification settings - Fork 60
/
azure-pipelines.yml
165 lines (142 loc) · 8.26 KB
/
azure-pipelines.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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
# .NET
trigger:
- master
pr: [master, Features/Linux-Migration, Releases/*, Releases/*/* ]
jobs:
# ------------------------------------------------------------------------------------------------------
# Request Windows VM Windows windows-2022 with Visual Studio 2022 - set Ginger solution
# ------------------------------------------------------------------------------------------------------
- job: Windows
pool:
vmImage: 'windows-2022' #Visual Studio 2022 Preview on Windows Server 2019
workspace:
clean: outputs
# ------------------------------------------------------------------------------------------------------
# Job Variables
# ------------------------------------------------------------------------------------------------------
variables:
solution: '**/*.sln' # = D:\a\1\s\Ginger\Ginger.sln
buildPlatform: 'Any CPU'
buildConfiguration: 'Release'
solutionDirectory: 'Ginger-Automation/Ginger'
testDLLs: |
**\GingerUtilsTest\bin\$(buildConfiguration)\net8.0\GingerUtilsTest.dll
**\GingerCoreCommonTest\bin\$(buildConfiguration)\net8.0\GingerCoreCommonTest.dll
**\GingerCoreNETUnitTest\bin\$(buildConfiguration)\net8.0\GingerCoreNETUnitTest.dll
**\GingerConsoleTest\bin\$(buildConfiguration)\net8.0\GingerConsoleTest.dll
**\GingerAutoPilotTest\bin\$(buildConfiguration)\net8.0\GingerAutoPilotTest.dll
**\GingerPluginCoreTest\bin\$(buildConfiguration)\net8.0\GingerPluginCoreTest.dll
artifactsFolder: 'D:\a\1\a'
# ------------------------------------------------------------------------------------------------------
# Steps task
# ------------------------------------------------------------------------------------------------------
steps:
# ------------------------------------------------------------------------------------------------------
# Install .Net core SDK 8.0.100
# ------------------------------------------------------------------------------------------------------
- task: UseDotNet@2
inputs:
packageType: 'sdk'
version: '8.0.100'
# ------------------------------------------------------------------------------------------------------
# Install Nuget tool
# ------------------------------------------------------------------------------------------------------
- task: NuGetToolInstaller@1
displayName: NuGet Tool Installer
# ------------------------------------------------------------------------------------------------------
# Restore Ginger solution NuGet packages
# ------------------------------------------------------------------------------------------------------
- task: NuGetCommand@2
inputs:
command: restore
restoreSolution: '$(solution)'
displayName: Restore Ginger Solution Nuget Packages
- task: PowerShell@2
inputs:
targetType: 'inline'
script: |
Write-Output "Build Reason = $(Build.Reason)"
$sldomain="amdocs.sealights.co"
$slagenttoken= "$(SLAGENTTOKEN)"
$APP_NAME='Ginger'
$APP_NAMESPACE='Amdocs.*,ginger.*'
Write-Output "Token $($SLAGENTTOKEN.SubString($SLAGENTTOKEN.Length-5))"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Write-Output "Download the Sealights DotNet agent version set in settings..."
$agentversion = ((iwr -Uri https://$($sldomain)/api/v2/agents/dotnet/recommended -Headers @{'Accept' = 'application/json'; 'Authorization' = "Bearer $($slagenttoken)"}).Content | ConvertFrom-Json | Select-Object agent).agent.version
iwr -OutFile sealights-dotnet-agent.zip -Uri http://agents.sealights.co/SL.DotNet/SL.DotNet-$($agentversion).zip
Expand-Archive .\sealights-dotnet-agent.zip -DestinationPath SL.DotNet -Force
Write-Output "Sealights agent version used is:$(Get-Content .\SL.DotNet\version.txt)"
#Retrieve the same name of target branch as reported in Sealights Dashboard by removing the uncecessary prefix
$PR_NUMBER="$(system.pullRequest.pullRequestNumber)"
$REPO_URL="$(System.PullRequest.SourceRepositoryURI)"
$PR_TARGET_BRANCH="Releases/" + "$(System.PullRequest.TargetBranch)".Replace("refs/heads/","")
#Retrieve the last Commit Hash from the PR branch and not the one from the ADO local Merge (via git log history)
$PR_LAST_COMMIT=$(git log -2 --format=%H).Split(" ")[1]
Write-Output "`n*** Create PR BSID ***"
.\SL.DotNet\x64\SL.DotNet.exe prConfig --appName $APP_NAME --pullRequestNumber $PR_NUMBER --targetBranch $PR_TARGET_BRANCH --latestCommit $PR_LAST_COMMIT --repositoryUrl $REPO_URL --includeNamespace $APP_NAMESPACE --buildSessionIdFile $(Build.ArtifactStagingDirectory)\SealightsBuildSessionId.txt --token $($slagenttoken) --logEnabled true --logAppendConsole true --ignoreCertificateErrors true
Write-Output "`n*** Prepare for MSBuild ***"
.\SL.DotNet\x64\SL.DotNet.exe prepareForMsBuild --buildSessionIdFile $(Build.ArtifactStagingDirectory)\SealightsBuildSessionId.txt --workspacePath $(Build.Repository.LocalPath)\Ginger --baseDir $(Build.Repository.LocalPath) --ignoreGeneratedCode true --debugMode true --logEnabled true --logAppendConsole true --ignoreCertificateErrors true --token $($slagenttoken) --scm git --scmProvider vsts
displayName: Prepare for PR Build
continueOnError: true
# ------------------------------------------------------------------------------------------------------
# Build Ginger Solution
# ------------------------------------------------------------------------------------------------------
- task: VSBuild@1
inputs:
solution: '$(solution)' # = D:\a\1\s\Ginger\Ginger.sln
# platform: 'x86'
# clean: true
configuration: '$(buildConfiguration)'
msbuildArgs: /NoLogo /m
# /TargetFrameworkVersion /TargetCompactFramework
# msbuildArchitecture: 'x86' # Optional. Options: x86, x64
# TreatWarningsAsErrors / NoWarn -- do not allow warnings - do it later when we have zero warnings
displayName: Build Ginger solution
- task: StartTestExecution@2
inputs:
testStage: 'Unit Tests'
profilerArchitecture: 'x86'
sealightsToken: "$(SLAGENTTOKEN)"
SealightsBuildSessionId : $(Build.ArtifactStagingDirectory)\SealightsBuildSessionId.txt
# ------------------------------------------------------------------------------------------------------
# Run Unit Test for .NET Core test DLLs
# ------------------------------------------------------------------------------------------------------
- task: VSTest@2
displayName: 'Run tests for Ginger .Net Core *Test DLLs'
inputs:
testAssemblyVer2: $(testDLLs)
runInParallel: True
codeCoverageEnabled: True
# ------------------------------------------------------------------------------------------------------
# Run .Net Framework tests using powershell and publish the results
# ------------------------------------------------------------------------------------------------------
- task: PowerShell@2
displayName: Run tests for Ginger .NetFramework *Test Dlls
inputs:
filePath: TestDotNetFramework.ps1
- task: PublishTestResults@2
displayName: Publish .Net Framework test result
condition: succeededOrFailed()
inputs:
testResultsFormat: VSTest
testResultsFiles: '**/DotNetFramework/*.trx'
- task: EndTestExecution@2
inputs:
sealightsToken: "$(SLAGENTTOKEN)"
SealightsBuildSessionId : $(Build.ArtifactStagingDirectory)\SealightsBuildSessionId.txt
# ------------------------------------------------------------------------------------------------------
# Package Ginger EXE
# ------------------------------------------------------------------------------------------------------
#
# - task: PowerShell@2
# displayName: Package Ginger EXE
# inputs:
# filePath: PackageGingerEXE.ps1
# condition: succeededOrFailed()
#
# ------------------------------------------------------------------------------------------------------
# PublishBuildArtifacts
# ------------------------------------------------------------------------------------------------------
# - task: PublishBuildArtifacts@1
# condition: succeededOrFailed()