Skip to content

Commit c3cd66c

Browse files
committed
Add PowerShell task to publish to WinGet.
1 parent d5efac3 commit c3cd66c

File tree

1 file changed

+95
-21
lines changed

1 file changed

+95
-21
lines changed

.pipelines/release.yml

Lines changed: 95 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,13 @@ extends:
8686
8787
Write-Host "##vso[task.setvariable variable=version;isOutput=true]$fullVersion"
8888
89-
- stage: Release
89+
- stage: Release_GitHub
9090
displayName: Create GitHub Release
9191
dependsOn: Build
9292
variables:
9393
version: $[ stageDependencies.Build.Build.outputs['SetMeta.version'] ]
9494
jobs:
95-
- job: create_release
95+
- job: create_github_release
9696
pool:
9797
name: Azure-Pipelines-1ESPT-ExDShared
9898
image: windows-latest
@@ -173,22 +173,96 @@ extends:
173173
- ✅ Standalone CLI binaries (x64 and ARM64)
174174
- ✅ NPM package for NodeJS/Electron integration
175175
176-
# Commented out ESRP release to npm for now
177-
# - ${{ if eq(parameters.DoEsrp, 'true') }}:
178-
# - task: EsrpRelease@10
179-
# inputs:
180-
# ConnectedServiceName: ${{ parameters.signingIdentity.serviceName }}
181-
# usemanagedidentity: true
182-
# keyvaultname: ${{ parameters.signingIdentity.akvName }}
183-
# signcertname: ${{ parameters.signingIdentity.signTTSCertName }}
184-
# clientid: ${{ parameters.signingIdentity.appId }}
185-
# intent: 'PackageDistribution'
186-
# contenttype: 'npm'
187-
# contentsource: 'Folder'
188-
# folderlocation: $(Pipeline.Workspace)/npm-package/
189-
# waitforreleasecompletion: true
190-
# owners: '[email protected]'
191-
# approvers: '[email protected]'
192-
# serviceendpointurl: 'https://api.esrp.microsoft.com'
193-
# mainpublisher: 'winappcli'
194-
# domaintenantid: ${{ parameters.signingIdentity.tenantId }}
176+
# Commented out ESRP release to npm for now
177+
# - ${{ if eq(parameters.DoEsrp, 'true') }}:
178+
# - stage: Release_Npm
179+
# displayName: Create Npm Release
180+
# dependsOn: Release_GitHub
181+
# jobs:
182+
# - job: create_npm_release
183+
# pool:
184+
# name: Azure-Pipelines-1ESPT-ExDShared
185+
# image: windows-latest
186+
# os: windows
187+
# hostArchitecture: amd64
188+
# displayName: NPM Release
189+
# templateContext:
190+
# type: releaseJob
191+
# isProduction: true
192+
# inputs:
193+
# - input: pipelineArtifact
194+
# artifactName: npm-package
195+
# targetPath: $(Pipeline.Workspace)/npm-package
196+
# steps:
197+
# - task: EsrpRelease@10
198+
# condition: always()
199+
# inputs:
200+
# ConnectedServiceName: ${{ parameters.signingIdentity.serviceName }}
201+
# usemanagedidentity: true
202+
# keyvaultname: ${{ parameters.signingIdentity.akvName }}
203+
# signcertname: ${{ parameters.signingIdentity.signTTSCertName }}
204+
# clientid: ${{ parameters.signingIdentity.appId }}
205+
# intent: 'PackageDistribution'
206+
# contenttype: 'npm'
207+
# contentsource: 'Folder'
208+
# folderlocation: $(Pipeline.Workspace)/npm-package/
209+
# waitforreleasecompletion: true
210+
# owners: '[email protected]'
211+
# approvers: '[email protected]'
212+
# serviceendpointurl: 'https://api.esrp.microsoft.com'
213+
# mainpublisher: 'winappcli'
214+
# domaintenantid: ${{ parameters.signingIdentity.tenantId }}
215+
216+
- stage: Release_WinGet
217+
displayName: Create WinGet Release
218+
dependsOn: [Build, Release_GitHub]
219+
variables:
220+
version: $[ stageDependencies.Build.Build.outputs['SetMeta.version'] ]
221+
jobs:
222+
- job: create_winget_release
223+
pool:
224+
name: Azure-Pipelines-1ESPT-ExDShared
225+
image: windows-latest
226+
os: windows
227+
hostArchitecture: amd64
228+
displayName: WinGet Release
229+
templateContext:
230+
type: releaseJob
231+
isProduction: true
232+
steps:
233+
- task: PowerShell@2
234+
displayName: "Publish to WinGet"
235+
env:
236+
# PAT lasts 90 days, regenerate as needed and re-run if it failes due to authentication
237+
WINGET_CREATE_GITHUB_TOKEN: $(GITHUB_TOKEN)
238+
inputs:
239+
targetType: 'inline'
240+
script: |
241+
# Download and install C++ Runtime framework package
242+
Write-Host "Installing VCLibs dependency..."
243+
$vcLibsFile = "Microsoft.VCLibs.x64.14.00.Desktop.appx"
244+
Invoke-WebRequest https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx -OutFile $vcLibsFile
245+
Add-AppxPackage $vcLibsFile
246+
247+
# Download and install wingetcreate
248+
Write-Host "Installing wingetcreate..."
249+
$wingetCreateBundle = "wingetcreate.msixbundle"
250+
Invoke-WebRequest https://aka.ms/wingetcreate/latest/msixbundle -OutFile $wingetCreateBundle
251+
Add-AppxPackage $wingetCreateBundle
252+
253+
# Get the installer URLs from the GitHub release
254+
$x64MsixUrl = "https://github.com/microsoft/winappcli/releases/download/v$(version)/winappcli_$(version).0_x64.msix"
255+
$arm64MsixUrl = "https://github.com/microsoft/winappcli/releases/download/v$(version)/winappcli_$(version).0_arm64.msix"
256+
257+
Write-Host "Submitting to WinGet..."
258+
Write-Host "Version: $(version)"
259+
Write-Host "x64 MSIX: $x64MsixUrl"
260+
Write-Host "ARM64 MSIX: $arm64MsixUrl"
261+
262+
# Submit to WinGet repository
263+
# Commented out for now to prevent accidental submissions
264+
# wingetcreate update Microsoft.WinAppCli `
265+
# --version $(version) `
266+
# --urls $x64MsixUrl $arm64MsixUrl `
267+
# --submit
268+
pwsh: true

0 commit comments

Comments
 (0)