Skip to content

Commit 39d7a1c

Browse files
committed
Modify OneBranch pipeline for vscode-powershell
1 parent a3f2d9d commit 39d7a1c

File tree

1 file changed

+77
-18
lines changed

1 file changed

+77
-18
lines changed

.pipelines/vscode-powershell-Official.yml

+77-18
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,29 @@ parameters:
1818

1919
variables:
2020
system.debug: ${{ parameters.debug }}
21+
BuildConfiguration: Release
2122
WindowsContainerImage: onebranch.azurecr.io/windows/ltsc2019/vse2022:latest
2223

2324
resources:
24-
repositories:
25+
repositories:
2526
- repository: templates
2627
type: git
2728
name: OneBranch.Pipelines/GovernedTemplates
2829
ref: refs/heads/main
30+
- repository: PowerShellEditorServices
31+
type: git
32+
name: PowerShellEditorServices
33+
ref: release
34+
pipelines:
35+
- pipeline: PowerShellEditorServices-Official
36+
source: PowerShellEditorServices-Official
37+
trigger:
38+
branches:
39+
- release
2940

3041
extends:
3142
# https://aka.ms/obpipelines/templates
32-
template: v2/OneBranch.Official.CrossPlat.yml@templates
43+
template: v2/OneBranch.Official.CrossPlat.yml@templates
3344
parameters:
3445
globalSdl: # https://aka.ms/obpipelines/sdl
3546
asyncSdl:
@@ -45,7 +56,10 @@ extends:
4556
variables:
4657
ob_outputDirectory: $(Build.SourcesDirectory)/out
4758
steps:
48-
- pwsh: Write-Output "##vso[task.setvariable variable=version;isOutput=true]$((Get-Content -Raw -Path package.json | ConvertFrom-Json).version)"
59+
- pwsh: |
60+
[semver]$version = (Get-Content -Raw -Path package.json | ConvertFrom-Json).version
61+
Write-Output "##vso[task.setvariable variable=version;isOutput=true]$version"
62+
Write-Output "##vso[task.setvariable variable=prerelease;isOutput=true]$($version.Minor % 2 -ne 0)"
4963
name: package
5064
displayName: Get version from package.json
5165
- task: onebranch.pipeline.version@1
@@ -61,18 +75,42 @@ extends:
6175
displayName: Authenticate NPM with Azure Artifacts
6276
inputs:
6377
workingFile: .npmrc
64-
- pwsh: npm ci
65-
displayName: Install NPM packages
66-
- pwsh: npm run compile -- --minify
67-
displayName: Build minified extension
78+
- task: PowerShell@2
79+
displayName: Install PSResources
80+
inputs:
81+
pwsh: true
82+
filePath: tools/installPSResources.ps1
83+
- task: DownloadPipelineArtifact@2
84+
displayName: Download PowerShellEditorServices
85+
inputs:
86+
source: specific
87+
project: PowerShellCore
88+
definition: 2905
89+
specificBuildWithTriggering: true
90+
artifact: drop_release_github
91+
itemPattern: PowerShellEditorServices.zip
92+
- task: ExtractFiles@1
93+
displayName: Extract PowerShellEditorServices module
94+
inputs:
95+
archiveFilePatterns: $(Pipeline.Workspace)/PowerShellEditorServices.zip
96+
destinationFolder: $(Build.SourcesDirectory)/modules
97+
- pwsh: Invoke-Build Build -Configuration $(BuildConfiguration)
98+
displayName: Build
6899
- task: onebranch.pipeline.signing@1
69-
displayName: Sign 1st-party files
100+
displayName: Sign 1st-party extension files
70101
inputs:
71102
command: sign
72103
signing_environment: external_distribution
73104
search_root: $(Build.SourcesDirectory)/dist
74-
files_to_sign: extension.js
75-
- pwsh: New-Item -ItemType Directory -Force out && npm run package -- --out out/
105+
files_to_sign: '**/*.js'
106+
- task: onebranch.pipeline.signing@1
107+
displayName: Sign 1st-party example files
108+
inputs:
109+
command: sign
110+
signing_environment: external_distribution
111+
search_root: $(Build.SourcesDirectory)/examples
112+
files_to_sign: '**/*.js;**/*.ps1;**/*.psd1;**/*.psm1'
113+
- pwsh: Invoke-Build Package
76114
displayName: Create package
77115
- job: test
78116
displayName: Build and run tests
@@ -85,22 +123,34 @@ extends:
85123
ob_outputDirectory: $(Build.SourcesDirectory)/out
86124
skipComponentGovernanceDetection: true
87125
steps:
126+
- checkout: self
127+
- checkout: PowerShellEditorServices
88128
- task: UseNode@1
89129
displayName: Use Node 18.x
90130
inputs:
91131
version: 18.x
92132
- task: npmAuthenticate@0
93133
displayName: Authenticate NPM with Azure Artifacts
94134
inputs:
95-
workingFile: .npmrc
96-
- pwsh: npm ci
97-
displayName: Install NPM packages
98-
- pwsh: npm run test
135+
workingFile: vscode-powershell/.npmrc
136+
- task: UseDotNet@2
137+
displayName: Use .NET 8.x SDK
138+
inputs:
139+
packageType: sdk
140+
version: 8.x
141+
- task: PowerShell@2
142+
displayName: Install PSResources
143+
inputs:
144+
pwsh: true
145+
filePath: vscode-powershell/tools/installPSResources.ps1
146+
- pwsh: Invoke-Build Test -Configuration $(BuildConfiguration)
99147
displayName: Run tests
148+
workingDirectory: vscode-powershell
100149
- stage: release
101150
dependsOn: build
102151
variables:
103152
version: $[ stageDependencies.build.main.outputs['package.version'] ]
153+
prerelease: $[ stageDependencies.build.main.outputs['package.prerelease'] ]
104154
drop: $(Pipeline.Workspace)/drop_build_main
105155
jobs:
106156
- job: validation
@@ -116,7 +166,7 @@ extends:
116166
instructions: Please validate the release
117167
timeoutInMinutes: 1440
118168
- job: github
119-
dependsOn: validation
169+
# TODO: dependsOn: validation
120170
displayName: Publish draft to GitHub
121171
pool:
122172
type: windows
@@ -129,11 +179,12 @@ extends:
129179
displayName: Create GitHub release
130180
inputs:
131181
gitHubConnection: GitHub
132-
repositoryName: microsoft/vscode-azurearcenabledmachines
133-
assets: $(drop)/vscode-azurearcenabledmachines-$(version).vsix
182+
repositoryName: PowerShell/vscode-powershell
183+
assets: $(drop)/vscode-powershell-$(version).vsix
134184
tagSource: userSpecifiedTag
135185
tag: v$(version)
136186
isDraft: true
187+
isPreRelease: $(prerelease)
137188
addChangeLog: false
138189
releaseNotesSource: inline
139190
releaseNotesInline: |
@@ -156,5 +207,13 @@ extends:
156207
workingFile: .npmrc
157208
- pwsh: npm ci
158209
displayName: Install NPM packages (for vsce)
159-
- pwsh: npm run publish -- --pat $(token) --packagePath $(drop)/vscode-azurearcenabledmachines-$(version).vsix
210+
- pwsh: |
211+
$publishArgs = @(
212+
'--pat'
213+
'$(token)'
214+
'--packagePath'
215+
'$(drop)/vscode-powershell-$(version).vsix'
216+
if ([bool]::Parse('$(prerelease)')) { '--pre-release' }
217+
)
218+
npm run publish -- @publishArgs
160219
displayName: Run vsce publish

0 commit comments

Comments
 (0)