1
+ parameters :
2
+ - name : environmentIdentifier
3
+ displayName : Environment identifier
4
+ type : string
5
+ - name : environmentDisplayName
6
+ displayName : Environment display name
7
+ type : string
8
+ - name : environmentDomainName
9
+ displayName : Environment domain name
10
+ type : string
11
+ - name : buildUrl
12
+ displayName : Build URL
13
+ type : string
14
+ - name : repositoryName
15
+ displayName : Repository Name
16
+ type : string
17
+
18
+ stages :
19
+ - stage : ProvisionEnvironment
20
+ displayName : Provision environment
21
+ variables :
22
+ - name : Environment.Identifier
23
+ value : ${{ parameters.environmentIdentifier }}
24
+ - name : Environment.DisplayName
25
+ value : ${{ parameters.environmentDisplayName }} $(Environment.Identifier)
26
+ - name : TestEnvironment.DomainName
27
+ value : ${{ parameters.environmentDomainName }}-$(Environment.Identifier)
28
+ - group : Dataverse users
29
+ jobs :
30
+ - job : ProvisionEnvironmentJob
31
+ displayName : Provision environment
32
+ steps :
33
+ - task : PowerPlatformToolInstaller@0
34
+ displayName : Install Power Platform Build Tools
35
+ inputs :
36
+ DefaultVersion : true
37
+ - task : PowerPlatformCreateEnvironment@0
38
+ displayName : Create environment
39
+ inputs :
40
+ authenticationType : PowerPlatformSPN
41
+ PowerPlatformSPN : Dataverse (placeholder)
42
+ DisplayName : $(Environment.DisplayName)
43
+ EnvironmentSku : Sandbox
44
+ LocationName : unitedkingdom
45
+ LanguageName : 1033
46
+ CurrencyName : GBP
47
+ DomainName : $(TestEnvironment.DomainName)
48
+ - powershell : |
49
+ echo "##vso[task.setvariable variable=EnvironmentUrl;isOutput=true]$env:BUILDTOOLS_ENVIRONMENTURL"
50
+ echo "##vso[task.setvariable variable=EnvironmentName;isOutput=true]$env:BUILDTOOLS_ENVIRONMENTID"
51
+ displayName: Set output variables
52
+ name: SetEnvironmentOutputVariables
53
+ - stage : BuildAndTest
54
+ displayName : Build and Test
55
+ dependsOn : ProvisionEnvironment
56
+ variables :
57
+ - name : BuildTools.EnvironmentUrl
58
+ value : $[ stageDependencies.ProvisionEnvironment.ProvisionEnvironmentJob.outputs['SetEnvironmentOutputVariables.EnvironmentUrl'] ]
59
+ - name : BuildTools.EnvironmentId
60
+ value : $[ stageDependencies.ProvisionEnvironment.ProvisionEnvironmentJob.outputs['SetEnvironmentOutputVariables.EnvironmentName'] ]
61
+ - group : Dataverse users
62
+ jobs :
63
+ - template : build-and-test-job.yml
64
+ parameters :
65
+ environmentUrl : $(BuildTools.EnvironmentUrl)
66
+ environmentName : $(BuildTools.EnvironmentId)
67
+ username : $(DataverseUsers.AzureDevOps.Username)
68
+ password : $(DataverseUsers.AzureDevOps.Password)
69
+ - stage : ManualValidation
70
+ displayName : Manual validation
71
+ dependsOn :
72
+ - ProvisionEnvironment
73
+ - BuildAndTest
74
+ condition : and(not(canceled()), ne(dependencies.ProvisionEnvironment.outputs['ProvisionEnvironmentJob.SetEnvironmentOutputVariables.EnvironmentUrl'], ''))
75
+ variables :
76
+ RepositoryName : ${{ parameters.repositoryName }}
77
+ BuildUrl : ${{ parameters.buildUrl }}
78
+ BuildTools.EnvironmentUrl : $[ stageDependencies.ProvisionEnvironment.ProvisionEnvironmentJob.outputs['SetEnvironmentOutputVariables.EnvironmentUrl'] ]
79
+ jobs :
80
+ - job : ManualValidationCommentJob
81
+ displayName : Manual validation (comment)
82
+ steps :
83
+ - task : GitHubComment@0
84
+ inputs :
85
+ gitHubConnection : ' github.com_tdashworth'
86
+ repositoryName : ' $(RepositoryName)'
87
+ comment : |
88
+ **Manual validation requested**
89
+ Please perform any checks required on $(BuildTools.EnvironmentUrl) then approve $(BuildUrl).
90
+ - job : ManualValidationJob
91
+ displayName : Manual validation
92
+ pool : server
93
+ timeoutInMinutes : 8640
94
+ steps :
95
+ - task : ManualValidation@0
96
+ displayName : Wait for manual validation
97
+ timeoutInMinutes : 7200
98
+ inputs :
99
+ onTimeout : resume
100
+ instructions : Please perform any checks required on $(BuildTools.EnvironmentUrl).
101
+ - stage : DeleteEnvironment
102
+ displayName : Delete environment
103
+ dependsOn :
104
+ - ProvisionEnvironment
105
+ - ManualValidation
106
+ condition : ne(dependencies.ProvisionEnvironment.outputs['ProvisionEnvironmentJob.SetEnvironmentOutputVariables.EnvironmentUrl'], '')
107
+ variables :
108
+ BuildTools.EnvironmentUrl : $[ stageDependencies.ProvisionEnvironment.ProvisionEnvironmentJob.outputs['SetEnvironmentOutputVariables.EnvironmentUrl'] ]
109
+ jobs :
110
+ - job : DeleteEnvironmentJob
111
+ displayName : Delete environment
112
+ steps :
113
+ - checkout : none
114
+ - task : PowerPlatformToolInstaller@0
115
+ displayName : Install Power Platform Build Tools
116
+ inputs :
117
+ DefaultVersion : true
118
+ - task : PowerPlatformDeleteEnvironment@0
119
+ displayName : Delete environment
120
+ continueOnError : true
121
+ inputs :
122
+ authenticationType : PowerPlatformSPN
123
+ PowerPlatformSPN : Dataverse (placeholder)
0 commit comments