1- trigger :
1+ trigger :
22 branches :
33 include :
44 - rel/v*
@@ -11,6 +11,20 @@ resources:
1111 name : 1ESPipelineTemplates/1ESPipelineTemplates
1212 ref : refs/tags/release
1313
14+ parameters :
15+ - name : DoEsrp
16+ type : boolean
17+ default : true
18+ - name : signingIdentity
19+ type : object
20+ default :
21+ serviceName : $(SigningServiceName)
22+ appId : $(SigningAppId)
23+ tenantId : $(SigningTenantId)
24+ akvName : $(SigningAKVName)
25+ authCertName : $(SigningAuthCertName)
26+ signCertName : $(SigningSignCertName)
27+
1428extends :
1529 template : v1/1ES.Official.PipelineTemplate.yml@1esPipelines
1630 parameters :
@@ -34,6 +48,12 @@ extends:
3448 displayName : Setup .NET 9
3549 inputs :
3650 version : 9.0.x
51+ - ${{ if eq(parameters.DoEsrp, 'true') }} :
52+ - task : UseDotNet@2
53+ displayName : Setup .NET 6.0 (For ESRP Task)
54+ inputs :
55+ packageType : runtime
56+ version : 6.0.x
3757 - task : UseNode@1
3858 displayName : Setup Node.js 24
3959 inputs :
@@ -47,4 +67,102 @@ extends:
4767 filePath : ' .pipelines/Unstub.ps1'
4868 - template : ./.pipelines/templates/build.yaml@self
4969 parameters :
50- stable : ' true'
70+ stable : ' true'
71+ DoEsrp : ${{ parameters.DoEsrp }}
72+ signingIdentity : ${{ parameters.signingIdentity }}
73+ - task : PowerShell@2
74+ name : SetMeta
75+ displayName : Build + compute versions
76+ inputs :
77+ targetType : inline
78+ script : |
79+ # Get version info
80+ $versionJson = Get-Content "version.json" | ConvertFrom-Json
81+ $baseVersion = $versionJson.version
82+ $buildNumber = & ".\scripts\get-build-number.ps1"
83+ $fullVersion = "$baseVersion-prerelease.$buildNumber"
84+
85+ Write-Host "BaseVersion: $baseVersion"
86+ Write-Host "BuildNumber: $buildNumber"
87+ Write-Host "FullVersion: $fullVersion"
88+
89+ # Export as **output variables** for other stages/jobs
90+ Write-Host "##vso[task.setvariable variable=version;isOutput=true]$fullVersion"
91+ Write-Host "##vso[task.setvariable variable=base_version;isOutput=true]$baseVersion"
92+ Write-Host "##vso[task.setvariable variable=build_number;isOutput=true]$buildNumber"
93+
94+ - stage : Release
95+ displayName : Create GitHub Pre-release
96+ dependsOn : Build
97+ variables :
98+ version : $[ stageDependencies.Build.Build.outputs['SetMeta.version'] ]
99+ base_version : $[ stageDependencies.Build.Build.outputs['SetMeta.base_version'] ]
100+ build_number : $[ stageDependencies.Build.Build.outputs['SetMeta.build_number'] ]
101+ jobs :
102+ - job : create_release
103+ displayName : GitHub Pre-release
104+ templateContext :
105+ type : releaseJob
106+ inputs :
107+ - input : pipelineArtifact
108+ artifactName : cli-binaries
109+ targetPath : $(Pipeline.Workspace)/cli-binaries
110+ - input : pipelineArtifact
111+ artifactName : npm-package
112+ targetPath : $(Pipeline.Workspace)/npm-package
113+ steps :
114+ - task : ArchiveFiles@2
115+ displayName : Archive CLI binaries - x64
116+ inputs :
117+ rootFolderOrFile : $(Pipeline.Workspace)/cli-binaries/win-x64
118+ includeRootFolder : false
119+ archiveFile : $(Pipeline.Workspace)/winappcli-x64.zip
120+
121+ - task : ArchiveFiles@2
122+ displayName : Archive CLI binaries - arm64
123+ inputs :
124+ rootFolderOrFile : $(Pipeline.Workspace)/cli-binaries/arm64
125+ includeRootFolder : false
126+ archiveFile : $(Pipeline.Workspace)/winappcli-arm64.zip
127+
128+ - task : GitHubRelease@1
129+ displayName : " Create GitHub Pre-release"
130+ inputs :
131+ gitHubConnection : ' github-service-connection'
132+ repositoryName : ' microsoft/winappcli'
133+ action : ' create'
134+ target : ' $(Build.SourceVersion)'
135+ tagSource : ' manual'
136+ tag : ' v$(version)'
137+ title : ' Pre-release v$(version)'
138+ isPreRelease : true
139+ assets : |
140+ $(Pipeline.Workspace)/winappcli-x64.zip
141+ $(Pipeline.Workspace)/winappcli-arm64.zip
142+ $(Pipeline.Workspace)/npm-package/*.tgz
143+ assetUploadMode : ' delete'
144+ addChangeLog : false
145+ releaseNotesSource : ' inline'
146+ releaseNotesInline : |
147+ 🚀 **Automated Pre-release Build**
148+
149+ Version: `$(version)`
150+ Base Version: `$(base_version)`
151+ Build Number: `$(build_number)`
152+ Commit: `$(Build.SourceVersion)`
153+
154+ ## Installation Options
155+
156+ ### 📦 Standalone CLI Binaries
157+ 1. Download `winappcli-x64.zip` for x64 or `winappcli-arm64.zip` for ARM64
158+ 2. Extract to your desired location
159+ 3. Add to PATH or run directly: `winapp.exe`
160+
161+ ### 📚 NPM Package (for Electron or NodeJS)
162+ ```bash
163+ npm install microsoft-winappcli-$(version).tgz
164+ ```
165+
166+ ## What's Included
167+ - ✅ Standalone CLI binaries (x64 and ARM64)
168+ - ✅ NPM package for NodeJS/Electron integration
0 commit comments