Skip to content

Commit 06ed838

Browse files
authored
Release pipelines for themes and extension pack (#12589)
1 parent 4a7fe28 commit 06ed838

File tree

7 files changed

+299
-0
lines changed

7 files changed

+299
-0
lines changed
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: $(date:yyyyMMdd)$(rev:.r)
2+
trigger: none
3+
pr: none
4+
5+
parameters:
6+
- name: verifyVersion
7+
displayName: Attest version in package.json is correct
8+
type: boolean
9+
default: false
10+
- name: verifyReadme
11+
displayName: Attest README.md is updated
12+
type: boolean
13+
default: false
14+
15+
resources:
16+
repositories:
17+
- repository: MicroBuildTemplate
18+
type: git
19+
name: 1ESPipelineTemplates/MicroBuildTemplate
20+
ref: refs/tags/release
21+
22+
extends:
23+
template: azure-pipelines/MicroBuild.1ES.Official.yml@MicroBuildTemplate
24+
parameters:
25+
pool:
26+
name: AzurePipelines-EO
27+
image: AzurePipelinesWindows2022compliantGPT
28+
os: windows
29+
sdl:
30+
sourceAnalysisPool:
31+
name: AzurePipelines-EO
32+
image: AzurePipelinesWindows2022compliantGPT
33+
os: windows
34+
35+
stages:
36+
- stage: package
37+
jobs:
38+
# Introduce pipeline compilation errors to block scheduling if the requisite parameters are not set
39+
- ${{ if not(eq(parameters.verifyVersion, true)) }}:
40+
- 'The version in package.json should be updated before scheduling the pipeline.'
41+
42+
- ${{ if not(eq(parameters.verifyReadme, true)) }}:
43+
- 'README.md should be updated before scheduling the pipeline.'
44+
45+
- template: /Build/package/jobs_package_vsix.yml@self
46+
parameters:
47+
vsixName: cpptools-extension-pack.vsix
48+
srcDir: ExtensionPack

Build/package/cpptools_themes.yml

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
name: $(date:yyyyMMdd)$(rev:.r)
2+
trigger: none
3+
pr: none
4+
5+
parameters:
6+
- name: verifyVersion
7+
displayName: Attest version in package.json is correct
8+
type: boolean
9+
default: false
10+
- name: verifyReadme
11+
displayName: Attest README.md is updated
12+
type: boolean
13+
default: false
14+
15+
resources:
16+
repositories:
17+
- repository: MicroBuildTemplate
18+
type: git
19+
name: 1ESPipelineTemplates/MicroBuildTemplate
20+
ref: refs/tags/release
21+
22+
extends:
23+
template: azure-pipelines/MicroBuild.1ES.Official.yml@MicroBuildTemplate
24+
parameters:
25+
pool:
26+
name: AzurePipelines-EO
27+
image: AzurePipelinesWindows2022compliantGPT
28+
os: windows
29+
sdl:
30+
sourceAnalysisPool:
31+
name: AzurePipelines-EO
32+
image: AzurePipelinesWindows2022compliantGPT
33+
os: windows
34+
35+
stages:
36+
- stage: package
37+
jobs:
38+
# Introduce pipeline compilation errors to block scheduling if the requisite parameters are not set
39+
- ${{ if not(eq(parameters.verifyVersion, true)) }}:
40+
- 'The version in package.json should be updated before scheduling the pipeline.'
41+
42+
- ${{ if not(eq(parameters.verifyReadme, true)) }}:
43+
- 'README.md should be updated before scheduling the pipeline.'
44+
45+
- template: /Build/package/jobs_package_vsix.yml@self
46+
parameters:
47+
vsixName: cpptools-themes.vsix
48+
srcDir: Themes
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
parameters:
2+
- name: vsixName
3+
type: string
4+
default: ''
5+
- name: srcDir
6+
type: string
7+
default: ''
8+
9+
jobs:
10+
- job: package
11+
displayName: Build ${{ parameters.vsixName }}
12+
timeoutInMinutes: 30
13+
cancelTimeoutInMinutes: 1
14+
templateContext:
15+
outputs:
16+
- output: pipelineArtifact
17+
displayName: '${{ parameters.vsixName }}'
18+
targetPath: $(Build.ArtifactStagingDirectory)\vsix
19+
artifactName: vsix
20+
21+
steps:
22+
- checkout: self
23+
24+
- task: UseNode@1
25+
displayName: Use Node 18.x
26+
inputs:
27+
version: 18.x
28+
29+
- task: Npm@0
30+
displayName: Install vsce
31+
inputs:
32+
arguments: --global @vscode/vsce
33+
34+
- task: geeklearningio.gl-vsts-tasks-yarn.yarn-installer-task.YarnInstaller@3
35+
displayName: Use Yarn 1.x
36+
37+
- task: CmdLine@1
38+
displayName: Create Staging Directory
39+
inputs:
40+
filename: mkdir
41+
arguments: $(Build.ArtifactStagingDirectory)\vsix
42+
43+
- task: CmdLine@1
44+
displayName: Run VSCE to package vsix
45+
inputs:
46+
filename: vsce
47+
arguments: package --yarn -o $(Build.ArtifactStagingDirectory)\vsix\${{ parameters.vsixName }}
48+
workingFolder: $(Build.SourcesDirectory)\${{ parameters.srcDir }}
49+
50+
- task: Npm@0
51+
displayName: Uninstall vsce
52+
inputs:
53+
command: uninstall
54+
arguments: --global @vscode/vsce
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: $(Date:yyyyMMdd)$(rev:.r)
2+
trigger: none
3+
pr: none
4+
5+
resources:
6+
repositories:
7+
- repository: MicroBuildTemplate
8+
type: git
9+
name: 1ESPipelineTemplates/MicroBuildTemplate
10+
ref: refs/tags/release
11+
pipelines:
12+
- pipeline: vsixBuild
13+
source: '\VC\VSCode\CpptoolsVSIX\Package cpptools-extension-pack'
14+
trigger: true
15+
16+
extends:
17+
template: azure-pipelines/MicroBuild.1ES.Official.yml@MicroBuildTemplate
18+
parameters:
19+
pool:
20+
name: AzurePipelines-EO
21+
image: AzurePipelinesWindows2022compliantGPT
22+
os: windows
23+
sdl:
24+
sourceAnalysisPool:
25+
name: AzurePipelines-EO
26+
image: AzurePipelinesWindows2022compliantGPT
27+
os: windows
28+
29+
stages:
30+
- stage: Validate
31+
jobs:
32+
- template: /Build/publish/jobs_manual_validation.yml@self
33+
parameters:
34+
notifyUsers: $(NotifyUsers)
35+
releaseBuildUrl: $(ReleaseBuildUrl)
36+
37+
- stage: Release
38+
dependsOn: Validate
39+
jobs:
40+
- template: /Build/publish/jobs_publish_vsix.yml@self
41+
parameters:
42+
vsixName: cpptools-extension-pack.vsix
43+

Build/publish/cpptools_themes.yml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
name: $(Date:yyyyMMdd)$(rev:.r)
2+
trigger: none
3+
pr: none
4+
5+
resources:
6+
repositories:
7+
- repository: MicroBuildTemplate
8+
type: git
9+
name: 1ESPipelineTemplates/MicroBuildTemplate
10+
ref: refs/tags/release
11+
pipelines:
12+
- pipeline: vsixBuild
13+
source: '\VC\VSCode\CpptoolsVSIX\Package cpptools-themes'
14+
trigger: true
15+
16+
extends:
17+
template: azure-pipelines/MicroBuild.1ES.Official.yml@MicroBuildTemplate
18+
parameters:
19+
pool:
20+
name: AzurePipelines-EO
21+
image: AzurePipelinesWindows2022compliantGPT
22+
os: windows
23+
sdl:
24+
sourceAnalysisPool:
25+
name: AzurePipelines-EO
26+
image: AzurePipelinesWindows2022compliantGPT
27+
os: windows
28+
29+
stages:
30+
- stage: Validate
31+
jobs:
32+
- template: /Build/publish/jobs_manual_validation.yml@self
33+
parameters:
34+
notifyUsers: $(NotifyUsers)
35+
releaseBuildUrl: $(ReleaseBuildUrl)
36+
37+
- stage: Release
38+
dependsOn: Validate
39+
jobs:
40+
- template: /Build/publish/jobs_publish_vsix.yml@self
41+
parameters:
42+
vsixName: cpptools-themes.vsix
43+
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
parameters:
2+
- name: notifyUsers
3+
type: string
4+
default: ''
5+
- name: releaseBuildUrl
6+
type: string
7+
default: ''
8+
9+
jobs:
10+
- job: WaitForValidation
11+
displayName: Wait for VSIX validation
12+
pool: server
13+
steps:
14+
- task: ManualValidation@0
15+
displayName: "Manual Validation"
16+
inputs:
17+
notifyUsers: $(notifyUsers)
18+
instructions: |
19+
Download and test the vsix from the latest release build: $(releaseBuildUrl)
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
parameters:
2+
- name: vsixName
3+
type: string
4+
default: ''
5+
6+
jobs:
7+
- job: Publish
8+
displayName: Publish to Marketplace
9+
templateContext:
10+
type: releaseJob
11+
isProduction: true
12+
inputs:
13+
- input: pipelineArtifact
14+
pipeline: vsixBuild
15+
artifactName: vsix
16+
targetPath: $(Build.StagingDirectory)\vsix
17+
18+
steps:
19+
- task: NodeTool@0
20+
displayName: Use Node 18.x
21+
inputs:
22+
versionSpec: 18.x
23+
24+
- task: Npm@0
25+
displayName: Install vsce
26+
inputs:
27+
arguments: --global @vscode/vsce
28+
29+
- task: AzureCLI@2
30+
displayName: Generate AAD_TOKEN
31+
inputs:
32+
azureSubscription: $(AzureSubscription)
33+
scriptType: ps
34+
scriptLocation: inlineScript
35+
inlineScript: |
36+
$aadToken = az account get-access-token --query accessToken --resource $(AzureGuid) -o tsv
37+
Write-Host "##vso[task.setvariable variable=AAD_TOKEN;issecret=true]$aadToken"
38+
39+
- script: |
40+
vsce publish --packagePath $(Build.StagingDirectory)\vsix\${{ parameters.vsixName }}
41+
displayName: Publish to Marketplace
42+
env:
43+
VSCE_PAT: $(AAD_TOKEN)
44+

0 commit comments

Comments
 (0)