Skip to content

Commit 663b89f

Browse files
authored
Move Apex tests to DartLab on CloudTest (#6966)
1 parent 11ea99e commit 663b89f

4 files changed

Lines changed: 59 additions & 144 deletions

File tree

eng/pipelines/dailytests.yml

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,14 @@ trigger:
77
- dev
88

99
parameters:
10-
# Dartlab options
11-
- name: DartLabEnvironment
12-
displayName: DartLab Environment
13-
type: string
14-
default: Production
15-
values:
16-
- Production
17-
- Staging
1810
- name: ApexAgentCleanup
19-
displayName: Delete or keep VS Apex test machine for debugging
11+
displayName: Cleanup VS Apex test machine
2012
type: string
21-
default: delete
13+
default: Always
2214
values:
23-
- delete
24-
- stop
15+
- Always
16+
- Never
17+
- OnSuccess
2518

2619
resources:
2720
pipelines:
@@ -58,19 +51,14 @@ stages:
5851
dependsOn:
5952
- Build
6053
variables:
61-
- name: VsBootstrapperUrl
54+
- name: bootstrapperUrl
6255
value: $[stageDependencies.Build.Build.outputs['dartlab_variables.bootstrapperUrl']]
63-
- name: VsBaseBuildDrop
64-
value: $[stageDependencies.Build.Build.outputs['dartlab_variables.BaseBuildDrop']]
65-
- name: QBuildSessionId
66-
value: $[stageDependencies.Build.Build.outputs['dartlab_variables.QBuildSessionId']]
6756
- name: RunSettingsDrop
6857
value: $[stageDependencies.Build.Build.outputs['dartlab_variables.RunSettingsDrop']]
69-
baseBuildDrop: $(VsBaseBuildDrop)
70-
bootstrapperUrl: $(VsBootstrapperUrl)
71-
dartLabEnvironment: ${{parameters.DartLabEnvironment}}
72-
isOfficialBuild: false
73-
QBuildSessionId: $(QBuildSessionId)
58+
- name: VsBootstrapperBranch
59+
value: $[stageDependencies.Build.Build.outputs['dartlab_variables.VsBootstrapperBranch']]
60+
bootstrapperUrl: $(bootstrapperUrl)
7461
runSettingsURI: https://vsdrop.corp.microsoft.com/file/v1/$(RunSettingsDrop);NuGet.Tests.Apex.Daily.runsettings
7562
testExecutionJobTimeoutInMinutes: 150
76-
testMachineCleanUpStrategy: ${{parameters.ApexAgentCleanup}}
63+
testDeploymentCleanupMode: ${{parameters.ApexAgentCleanup}}
64+
VsBootstrapperBranch: $(VsBootstrapperBranch)

eng/pipelines/vs-test/apex.yml

Lines changed: 27 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -3,144 +3,65 @@ parameters:
33
type: object
44
- name: bootstrapperUrl
55
type: string
6-
- name: baseBuildDrop
7-
type: string
86
- name: runSettingsURI
97
type: string
10-
- name: DartLabEnvironment
8+
- name: VsBootstrapperBranch
119
type: string
1210
- name: condition
1311
type: string
1412
- name: variables
1513
type: object
1614
- name: testExecutionJobTimeoutInMinutes
1715
type: number
18-
- name: testMachineCleanUpStrategy
16+
- name: testDeploymentCleanupMode
1917
type: string
20-
default: delete
18+
default: OnSuccess
2119
values:
22-
- delete
23-
- stop
24-
- name: isOfficialBuild
25-
type: boolean
26-
default: false
27-
- name: QBuildSessionId
28-
type: string
20+
- Always
21+
- Never
22+
- OnSuccess
2923

3024
stages:
31-
- template: stages\visual-studio\build-to-build-upgrade\single-runsettings.yml@DartLabTemplates
25+
- template: stages/cloudtest/visual-studio/single-runsettings.yml@DartLabTemplates
3226
parameters:
3327
name: VS_Apex_Tests
3428
displayName: Apex Tests On Windows
3529
condition: ${{parameters.condition}}
3630
dependsOn: ${{parameters.dependsOn}}
3731
variables:
38-
- name: bootstrapperUrl
39-
value: ${{parameters.bootstrapperUrl}}
4032
- ${{if gt(length(parameters.variables), 0)}}:
4133
- ${{parameters.variables}}
34+
owner: nugetclienteng
35+
testMachineLab: "NuGet"
4236
runSettingsURI: ${{parameters.runSettingsURI}}
43-
visualStudioBootstrapperURI: $(bootstrapperUrl)
44-
baseVisualStudioBootstrapperURI: https://vsdrop.microsoft.com/file/v1/$(VisualStudio.BaseBuild.ProductsDropName);bootstrappers/Enterprise/vs_enterprise.exe
45-
candidateBaselineBuilds: $(BaselineBuildCommitIds)
46-
testLabPoolName: VS-Platform
47-
dartLabEnvironment: ${{parameters.DartLabEnvironment}}
37+
visualStudioBootstrapperURI: ${{parameters.bootstrapperUrl}}
4838
visualStudioSigning: Test
4939
testMachineConfigurationJobTimeoutInMinutes: 30
50-
testMachineDeploymentJobTimeoutInMinutes: 240
5140
testMachineConfigurationJobDisplayName: 'Apex Test Machine Configuration'
52-
testMachineDeploymentJobDisplayName: 'Apex Test Machine Deployment'
5341
testExecutionJobDisplayName: 'Apex Test Execution'
54-
testMachineCleanUpJobDisplayName: 'Apex Test Machine Clean Up'
55-
testRunContinueOnError: ${{ parameters.isOfficialBuild }}
5642
testExecutionJobTimeoutInMinutes: ${{parameters.testExecutionJobTimeoutInMinutes}}
57-
testMachineCleanUpStrategy: ${{parameters.testMachineCleanUpStrategy}}
58-
testAgentElevated: true
43+
testDeploymentCleanupMode: ${{parameters.testDeploymentCleanupMode}}
44+
testMachineConfigurationJobVariables:
45+
- name: VisualStudio.InstallationUnderTest.BootstrapperBranch
46+
value: ${{parameters.VsBootstrapperBranch}}
5947

6048
##############################
61-
## preTestMachineConfigurationStepList
49+
## preDeployAndRunTestsOperations
6250
##############################
63-
preTestMachineConfigurationStepList:
64-
- template: \steps\powershell\execute-script.yml@DartLabTemplates
65-
parameters:
66-
displayName: Get Baseline Build ID using CloudBuild Session ID
67-
continueOnError: true
68-
filePath: $(DartLab.Path)\Scripts\AzureDevOps\Build\Get-BuildIdFromCloudBuildSessionID.ps1
69-
arguments: -ClientSecret (ConvertTo-SecureString '$(CloudBuild-ClientSecret)' -AsPlainText -Force) -ClientID '$(CloudBuild-ClientID)' -SessionID '${{ parameters.QBuildSessionId }}' -OutVariableName 'BaselineBuildID'
70-
71-
- task: PowerShell@2
72-
displayName: "Get Baseline build commit ids"
73-
name: "getbaselinebuildcommitids"
74-
retryCountOnTaskFailure: 3
75-
continueOnError: true
76-
inputs:
77-
targetType: 'inline'
78-
script: |
79-
try {
80-
Write-Host "Getting Baseline build commit ids for build: '$(BaselineBuildID)'"
81-
82-
$artifactName = 'BuildArtifacts'
83-
$baselineBuildsFile = Join-Path $(Agent.TempDirectory) "BaselineBuilds.json"
84-
85-
$artifact = Get-BuildArtifact -InstanceURL 'https://dev.azure.com/devdiv' -ProjectName 'DevDiv' -BuildID $(BaselineBuildID) -ArtifactName $artifactName -OAuthAccessToken (ConvertTo-SecureString '$(System.AccessToken)' -AsPlainText -Force)
86-
$containerName = $artifact.Resource.Data -Split '/' | Select-Object -Last 1
87-
$fileName = Join-Path $containerName 'BaselineBuilds.json'
88-
$jsonString = Read-BuildArtifactFile -InstanceURL 'https://dev.azure.com/devdiv' -ProjectName 'DevDiv' -BuildID $(BaselineBuildID) -ArtifactName $artifactName -FileName $fileName -OAuthAccessToken (ConvertTo-SecureString '$(System.AccessToken)' -AsPlainText -Force)
89-
90-
$jsonString | Out-File -FilePath $baselineBuildsFile
91-
92-
$(DartLab.Path)\Scripts\VisualStudio\Build\Get-BaselineBuildCommitIDs.ps1 -BuildJson $baselineBuildsFile -OutVariableName "BaselineBuildCommitIds"
93-
} catch {
94-
Write-Host "Unable to get Baseline build commit ids: $_"
95-
}
96-
- task: PowerShell@2
97-
name: SetVisualStudioBaseBuildID
98-
displayName: Set 'VisualStudio.BaseBuild.ID'
99-
retryCountOnTaskFailure: 3
100-
condition: ne(variables['BaselineBuildCommitIds'], '')
101-
continueOnError: true
102-
inputs:
103-
filePath: $(DartLab.Path)\Scripts\VisualStudio\Build\Get-BaselineBuildID.ps1
104-
arguments: -OAuthAccessToken (ConvertTo-SecureString '$(System.AccessToken)' -AsPlainText -Force) -InstanceURL '$(System.CollectionUri)' -RepositoryName 'VS' -ProjectName '$(System.TeamProject)' -CommitIDs $(BaselineBuildCommitIds) -BuildDefinitionIDs 10289 -OutVariableName 'VisualStudio.BaseBuild.ID'
105-
- task: PowerShell@2
106-
name: SetVisualStudioBaseBuildProductsDropName
107-
displayName: Set 'VisualStudio.BaseBuild.ProductsDropName'
108-
retryCountOnTaskFailure: 3
109-
condition: ne(variables['VisualStudio.BaseBuild.ID'], '')
110-
inputs:
111-
filePath: $(DartLab.Path)\Scripts\VisualStudio\Build\Get-VisualStudioDropName.ps1
112-
arguments: -AccessToken (ConvertTo-SecureString '$(System.AccessToken)' -AsPlainText -Force) -DropNamePrefix 'Products' -AccountURL '$(System.CollectionUri)' -ProjectName '$(System.TeamProject)' -BuildID $(VisualStudio.BaseBuild.ID) -OutVariableName 'VisualStudio.BaseBuild.ProductsDropName'
113-
- task: PowerShell@2
114-
name: SetBaseProductsDropNameToTarget
115-
displayName: Set 'VisualStudio.BaseBuild.ProductsDropName' to drop from target build
116-
retryCountOnTaskFailure: 3
117-
condition: eq(variables['VisualStudio.BaseBuild.ID'], '')
118-
inputs:
119-
targetType: 'inline'
120-
script: |
121-
$buildDrop = "${{parameters.baseBuildDrop}}" -split "/"
122-
$dropName = "Products/DevDiv/VS/$($buildDrop[-2])/$($buildDrop[-1])"
123-
Write-Host "##vso[task.setvariable variable=VisualStudio.BaseBuild.ProductsDropName]$dropName"
124-
125-
##############################
126-
## preDeployAndRunTestsStepList
127-
##############################
128-
preDeployAndRunTestsStepList:
129-
- task: PowerShell@1
51+
preDeployAndRunTestsOperations:
52+
- operation: executePowerShellInline
13053
displayName: "Print Environment Variables"
131-
inputs:
132-
scriptType: "inlineScript"
133-
inlineScript: |
134-
Get-ChildItem Env: | Sort-Object Name | Format-Table -Wrap -AutoSize
54+
scriptBlock: |
55+
Get-ChildItem Env: | Sort-Object Name | Format-Table -Wrap -AutoSize
56+
timeout: "0:0:5:0"
13557

136-
- task: DownloadPipelineArtifact@2
58+
- operation: downloadAzureArtifactsDrop
13759
displayName: "Download scripts"
138-
inputs:
139-
artifactName: "scripts"
140-
downloadPath: "$(Build.StagingDirectory)/scripts"
60+
dropName: "$(RunSettingsDrop)"
61+
destinationDirectory: "c:\\nuget\\RunSettings"
62+
timeout: "0:0:10:0"
14163

142-
- task: PowerShell@1
64+
- operation: executePowerShellScript
14365
displayName: "SetupFunctionalTests.ps1"
144-
inputs:
145-
scriptName: "$(Build.StagingDirectory)/scripts/e2etests/SetupFunctionalTests.ps1"
146-
66+
scriptPath: "c:\\nuget\\RunSettings\\scripts\\e2etests\\SetupFunctionalTests.ps1"
67+
timeout: "0:0:10:0"

eng/pipelines/vs-test/build.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -167,6 +167,12 @@ steps:
167167
Contents: "NuGet.exe"
168168
TargetFolder: "$(Build.StagingDirectory)\\E2ETests"
169169

170+
- task: CopyFiles@2
171+
displayName: "Copy scripts for cloudbuild machines"
172+
inputs:
173+
SourceFolder: "$(Build.Repository.LocalPath)\\scripts"
174+
TargetFolder: "$(Build.StagingDirectory)\\RunSettings\\scripts"
175+
170176
- task: NuGetToolInstaller@1
171177

172178
- task: NuGetCommand@2
@@ -218,6 +224,10 @@ steps:
218224
Write-Host "Run Settings Drop: $runSettingsDrop"
219225
Write-Host "##vso[task.setvariable variable=RunSettingsDrop]$runSettingsDrop"
220226
Write-Host "##vso[task.setvariable variable=RunSettingsDrop;isOutput=true]$runSettingsDrop"
227+
228+
$vsBootstrapperBranch = dotnet msbuild -getProperty:VsTargetBranch build\config.props
229+
Write-Host "VS Bootstrapper Branch: $vsBootstrapperBranch"
230+
Write-Host "##vso[task.setvariable variable=VsBootstrapperBranch;isOutput=true]$vsBootstrapperBranch"
221231
} catch {
222232
Write-Host "##vso[task.LogIssue type=error;]Unable to set variables for DartLab: $_"
223233
exit 1

eng/pipelines/vs-tests.yml

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,13 @@ parameters:
4040
- delete
4141
- stop
4242
- name: ApexAgentCleanup
43-
displayName: Delete or keep VS Apex test machine for debugging
43+
displayName: Cleanup VS Apex test machine
4444
type: string
45-
default: delete
45+
default: Always
4646
values:
47-
- delete
48-
- stop
47+
- Always
48+
- Never
49+
- OnSuccess
4950

5051
resources:
5152
pipelines:
@@ -134,19 +135,14 @@ stages:
134135
dependsOn:
135136
- Build
136137
variables:
137-
- name: VsBootstrapperUrl
138+
- name: bootstrapperUrl
138139
value: $[stageDependencies.Build.Build.outputs['dartlab_variables.bootstrapperUrl']]
139-
- name: VsBaseBuildDrop
140-
value: $[stageDependencies.Build.Build.outputs['dartlab_variables.BaseBuildDrop']]
141-
- name: QBuildSessionId
142-
value: $[stageDependencies.Build.Build.outputs['dartlab_variables.QBuildSessionId']]
143140
- name: RunSettingsDrop
144141
value: $[stageDependencies.Build.Build.outputs['dartlab_variables.RunSettingsDrop']]
145-
baseBuildDrop: $(VsBaseBuildDrop)
146-
bootstrapperUrl: $(VsBootstrapperUrl)
147-
dartLabEnvironment: ${{parameters.DartLabEnvironment}}
148-
isOfficialBuild: false
149-
QBuildSessionId: $(QBuildSessionId)
142+
- name: VsBootstrapperBranch
143+
value: $[stageDependencies.Build.Build.outputs['dartlab_variables.VsBootstrapperBranch']]
144+
bootstrapperUrl: $(bootstrapperUrl)
150145
runSettingsURI: https://vsdrop.corp.microsoft.com/file/v1/$(RunSettingsDrop);NuGet.Tests.Apex.runsettings
151146
testExecutionJobTimeoutInMinutes: 150
152-
testMachineCleanUpStrategy: ${{parameters.ApexAgentCleanup}}
147+
testDeploymentCleanupMode: ${{parameters.ApexAgentCleanup}}
148+
VsBootstrapperBranch: $(VsBootstrapperBranch)

0 commit comments

Comments
 (0)