66# 1. Validates the repository's pull requests and commits
77# 2. Builds and publishes release artifacts
88# 3. This pipeline will be extended to the OneESPT template
9-
109name : $(date:yyyyMMdd)$(rev:.r)
11-
1210pr :
1311 branches :
1412 include :
3028 - README.md
3129 - azure-pipelines.yml
3230 - package-lock.json
33-
3431variables :
3532 isMaster : $[eq(variables['Build.SourceBranch'], 'refs/heads/master')]
3633 isDev : $[eq(variables['Build.SourceBranch'], 'refs/heads/dev')]
37-
3834trigger :
3935 branches :
4036 include :
@@ -56,7 +52,6 @@ trigger:
5652 - README.md
5753 - azure-pipelines.yml
5854 - package-lock.json
59-
6055resources :
6156 repositories :
6257 - repository : 1ESPipelineTemplates
@@ -66,65 +61,53 @@ resources:
6661 - repository : ReleasePipelines
6762 type : git
6863 name : " Graph Developer Experiences/release-pipelines"
69-
7064extends :
7165 template : v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates
7266 parameters :
7367 pool :
7468 name : Azure-Pipelines-1ESPT-ExDShared
7569 image : windows-latest
7670 os : windows
77-
7871 sdl :
7972 sourceRepositoriesToScan :
8073 exclude :
8174 - repository : ReleasePipelines
82-
8375 customBuildTags :
8476 - ES365AIMigrationTooling
85-
8677 stages :
8778 - stage : BuildTestAndPublish
8879 jobs :
8980 - job : One
9081 displayName : " Build and test validation"
9182 steps :
92-
9383 - task : ComponentGovernanceComponentDetection@0
9484 inputs :
9585 scanType : " Register"
9686 verbosity : " Verbose"
9787 alertWarningLevel : " High"
9888 ignoreDirectories : " .github,.vscode/"
99-
10089 - task : NodeTool@0
10190 inputs :
10291 versionSpec : " 18.16.x"
10392 displayName : " Install Node.js"
104-
10593 - script : |
10694 npm install
10795 displayName: "npm install"
108-
10996 - script : |
11097 npm run lint
11198 displayName: "Runs linting checks"
112-
11399 - script : |
114100 npm test
115101 displayName: "Runs Unit tests"
116-
117102 - task : PublishTestResults@2
118103 condition : succeededOrFailed()
119104 inputs :
120105 testResultsFormat : " JUnit"
121106 testResultsFiles : " test-report.xml"
122107 displayName : " Publish Test Results"
123-
124108 - script : |
125109 npm run build
126110 displayName: "Run build"
127-
128111 - job : Two
129112 displayName : " Run playwright tests"
130113 condition : eq(variables['isDev'], 'true')
@@ -133,24 +116,19 @@ extends:
133116 inputs :
134117 versionSpec : " 18.16.x"
135118 displayName : " Install npm"
136-
137119 - script : |
138120 npm install
139121 displayName: "npm install"
140-
141122 - script : |
142123 npm install -D @playwright/test
143124 npx playwright install-deps
144125 displayName: "Install playwright dependancies"
145-
146126 - script : |
147127 npx playwright install
148128 displayName: "Install playwright"
149-
150129 - script : |
151130 npm run test-playwright-accessibility
152131 displayName: "Run accessibility tests"
153-
154132 - script : |
155133 set CI=true
156134 npm run test-playwright
@@ -167,15 +145,13 @@ extends:
167145 PLAYWRIGHT_TESTS_USERNAME: $(PLAYWRIGHT_TESTS_USERNAME)
168146 PLAYWRIGHT_TESTS_PASSWORD: $(PLAYWRIGHT_TESTS_PASSWORD)
169147 displayName: "Run playwright tests"
170-
171148 templateContext :
172149 outputs :
173150 - output : pipelineArtifact
174151 displayName : ' Publish test results'
175152 condition : always()
176153 targetPath : $(System.DefaultWorkingDirectory)/playwright-report
177154 artifactName : playwright-report
178-
179155 - job : Three
180156 displayName : " Publish artifacts"
181157 dependsOn : One
@@ -184,11 +160,9 @@ extends:
184160 inputs :
185161 versionSpec : " 18.16.x"
186162 displayName : " Install Node.js"
187-
188163 - script : |
189164 npm install
190165 displayName: "npm install"
191-
192166 - script : |
193167 npm run build
194168 env:
@@ -203,7 +177,6 @@ extends:
203177 REACT_APP_DEVX_API_URL: $(REACT_APP_DEVX_API_URL)
204178 REACT_APP_MIGRATION_PARAMETER: $(REACT_APP_MIGRATION_PARAMETER)
205179 displayName: "Build static assets for staging"
206-
207180 - task : PowerShell@2
208181 displayName : " Set version-number"
209182 condition : and(succeeded(), eq(variables['isMaster'], 'true'))
@@ -215,7 +188,6 @@ extends:
215188 $versionNumber = $json.version;
216189 Write-Host "Setting the build number variable to '$versionNumber'."
217190 Write-Host "##vso[build.updatebuildnumber]$versionNumber"
218-
219191 - script : |
220192 npm run build
221193 condition: and(succeeded(), eq(variables['isMaster'], 'true'))
@@ -231,7 +203,6 @@ extends:
231203 REACT_APP_DEVX_API_URL: $(REACT_APP_DEVX_API_URL)
232204 REACT_APP_MIGRATION_PARAMETER: $(REACT_APP_MIGRATION_PARAMETER)
233205 displayName: "Build static assets for prod"
234-
235206 - task : PowerShell@2
236207 displayName : " Create _manifest directory"
237208 inputs :
@@ -240,39 +211,33 @@ extends:
240211 $manifestPath = "$Env:SYSTEM_DEFAULTWORKINGDIRECTORY/_manifest"
241212 mkdir -p $manifestPath
242213 Write-Host "Created directory '$manifestPath'."
243-
244214 - task : ManifestGeneratorTask@0
245215 inputs :
246216 ManifestDirPath : " $(System.DefaultWorkingDirectory)/_manifest"
247217 BuildComponentPath : " $(System.DefaultWorkingDirectory)/build"
248218 PackageName : " graph-explorer-v2"
249219 PackageVersion : " $(Build.UpdateBuildNumber)"
250-
251220 - task : CopyFiles@1
252221 displayName : " Copy manifest files to artifact staging dir: manifest"
253222 inputs :
254223 SourceFolder : " $(System.DefaultWorkingDirectory)/_manifest"
255224 TargetFolder : " $(Build.ArtifactStagingDirectory)/manifest"
256-
257225 - task : CopyFiles@1
258226 displayName : " Copy files to: $(Build.ArtifactStagingDirectory)/build"
259227 inputs :
260228 SourceFolder : " $(System.DefaultWorkingDirectory)/build"
261229 TargetFolder : " $(Build.ArtifactStagingDirectory)/build"
262-
263230 - task : DeleteFiles@1
264231 inputs :
265232 contents : node_modules
266233 displayName : " Delete node_modules"
267-
268234 - task : ArchiveFiles@2
269235 inputs :
270236 rootFolderOrFile : ' $(Build.ArtifactStagingDirectory)/build'
271237 includeRootFolder : false
272238 archiveType : ' zip'
273239 archiveFile : ' $(Build.ArtifactStagingDirectory)/build/graph-explorer.zip'
274240 replaceExistingArchive : true
275-
276241 templateContext :
277242 outputs :
278243 - output : pipelineArtifact
@@ -283,9 +248,61 @@ extends:
283248 displayName : ' Publish Artifact: drop'
284249 targetPath : " $(build.ArtifactStagingDirectory)/build"
285250 artifactName : drop
286-
287251 - template : pipelines/templates/checkout-and-copy-1es.yml@ReleasePipelines
288252 parameters :
289253 directory : ' microsoft-graph-explorer-v4'
290254 repoName : ReleasePipelines
291- dependsOn : ['Three']
255+ dependsOn : ['Three']
256+
257+ - stage : DeployProduction
258+ condition : and(contains(variables['build.sourceBranch'], 'refs/heads/master'), succeeded())
259+ dependsOn : BuildTestAndPublish
260+ jobs :
261+ - deployment : production
262+ templateContext :
263+ type : releaseJob
264+ isProduction : true
265+ inputs :
266+ - input : pipelineArtifact
267+ artifactName : drop
268+ targetPath : ' $(Build.ArtifactStagingDirectory)/drop'
269+ environment : graphexplorer-production
270+ strategy :
271+ runOnce :
272+ deploy :
273+ steps :
274+ - task : AzureFileCopy@6
275+ displayName : ' Deploy to portal - staging'
276+ inputs :
277+ SourcePath : ' $(Build.ArtifactStagingDirectory)/drop/*'
278+ azureSubscription : ' Federated GE-Portals Managed Identity Connection'
279+ Destination : AzureBlob
280+ storage : graphstagingblobstorage
281+ ContainerName : staging
282+ BlobPrefix : ' vendor/bower_components/explorer$(Build.BuildNumber)/build'
283+
284+ - task : AzureFileCopy@6
285+ displayName : ' Deploy to portal - production'
286+ inputs :
287+ SourcePath : ' $(Build.ArtifactStagingDirectory)/drop/*'
288+ azureSubscription : ' Federated GE-Portals Managed Identity Connection'
289+ Destination : AzureBlob
290+ storage : graphprodblobstorage
291+ ContainerName : prod
292+ BlobPrefix : ' vendor/bower_components/explorer$(Build.BuildNumber)/build'
293+
294+ - task : ArchiveFiles@2
295+ displayName : ' Archive built assets'
296+ inputs :
297+ rootFolderOrFile : ' $(Build.ArtifactStagingDirectory)/drop/'
298+ archiveFile : ' $(Build.ArtifactStagingDirectory)/graph-explorer-$(Build.BuildNumber)-$(Build.BuildId).zip'
299+
300+ - task : GitHubRelease@1
301+ displayName : ' GitHub release (v$(Build.BuildNumber)-$(Build.BuildId))'
302+ inputs :
303+ gitHubConnection : ' GitHub - thewahome'
304+ action : edit
305+ tag : ' v$(Build.BuildNumber)'
306+ title : ' Graph Explorer - v$(Build.BuildNumber)'
307+ assets : ' $(Build.ArtifactStagingDirectory)/*.zip'
308+ changeLogType : issueBased
0 commit comments