99# ################################################################################
1010
1111trigger :
12- - main
12+ - main
1313
1414resources :
1515 repositories :
@@ -19,14 +19,14 @@ resources:
1919 ref : refs/heads/main
2020
2121parameters :
22- - name : debug
23- displayName : Enable debug output
24- type : boolean
25- default : false
26- - name : OfficialBuild
27- displayName : Use Official OneBranch template
28- type : boolean
29- default : false
22+ - name : debug
23+ displayName : Enable debug output
24+ type : boolean
25+ default : false
26+ - name : OfficialBuild
27+ displayName : Use Official OneBranch template
28+ type : boolean
29+ default : false
3030
3131variables :
3232 system.debug : ${{ parameters.debug }}
@@ -52,111 +52,111 @@ extends:
5252 release :
5353 category : NonAzure
5454 stages :
55- - stage : build
56- jobs :
57- - job : main
58- displayName : Build package
59- pool :
60- type : windows
55+ - stage : build
56+ jobs :
57+ - job : main
58+ displayName : Build package
59+ pool :
60+ type : windows
61+ variables :
62+ ob_outputDirectory : $(Build.SourcesDirectory)/out
63+ steps :
64+ - pwsh : |
65+ [xml]$xml = Get-Content PowerShellEditorServices.Common.props
66+ $version = $xml.Project.PropertyGroup.VersionPrefix
67+ $prerelease = $xml.Project.PropertyGroup.VersionSuffix
68+ if ($prerelease) { $version += "-$prerelease" }
69+ Write-Output "##vso[task.setvariable variable=version;isOutput=true]$version"
70+ Write-Output "##vso[task.setvariable variable=prerelease;isOutput=true]$(-not [string]::IsNullOrEmpty($prerelease))"
71+ name: package
72+ displayName: Get version from project properties
73+ - task : onebranch.pipeline.version@1
74+ displayName : Set OneBranch version
75+ inputs :
76+ system : Custom
77+ customVersion : $(package.version)
78+ - task : UseDotNet@2
79+ displayName : Use .NET 8.x SDK
80+ inputs :
81+ packageType : sdk
82+ useGlobalJson : true
83+ - pwsh : ./tools/installPSResources.ps1 -PSRepository CFS
84+ displayName : Install PSResources
85+ - pwsh : Invoke-Build TestFull -Configuration $(BuildConfiguration) -PSRepository CFS
86+ displayName : Build and test
87+ - task : PublishTestResults@2
88+ displayName : Publish test results
89+ inputs :
90+ testRunner : VSTest
91+ testResultsFiles : " **/*.trx"
92+ failTaskOnFailedTests : true
93+ - pwsh : |
94+ $assembly = [Reflection.Assembly]::LoadFile("$(Build.SourcesDirectory)/module/PowerShellEditorServices/bin/Core/Microsoft.PowerShell.EditorServices.Hosting.dll")
95+ if ($assembly.GetCustomAttributes([System.Diagnostics.DebuggableAttribute], $true).IsJITOptimizerDisabled) {
96+ Write-Host "##vso[task.LogIssue type=error;]Was not built in release configuration!"
97+ exit 1
98+ }
99+ displayName: Assert release configuration
100+ continueOnError: true
101+ - task : onebranch.pipeline.signing@1
102+ displayName : Sign 1st-party files
103+ inputs :
104+ command : sign
105+ signing_profile : external_distribution
106+ search_root : $(Build.SourcesDirectory)/module
107+ files_to_sign : |
108+ **/*.ps1;
109+ **/*.psd1;
110+ **/*.psm1;
111+ **/*.ps1xml;
112+ **/Microsoft.PowerShell.EditorServices*.dll;
113+ - task : onebranch.pipeline.signing@1
114+ displayName : Sign 3rd-party files
115+ inputs :
116+ command : sign
117+ signing_profile : 135020002
118+ search_root : $(Build.SourcesDirectory)/module
119+ files_to_sign : |
120+ **/MediatR.dll;
121+ **/Nerdbank.Streams.dll;
122+ **/Newtonsoft.Json.dll;
123+ **/OmniSharp.Extensions*.dll;
124+ **/System.Reactive.dll;
125+ - task : ArchiveFiles@2
126+ displayName : Zip signed artifacts
127+ inputs :
128+ rootFolderOrFile : $(Build.SourcesDirectory)/module
129+ includeRootFolder : false
130+ archiveType : zip
131+ archiveFile : out/PowerShellEditorServices.zip
132+ - stage : release
133+ dependsOn : build
134+ condition : and(succeeded(), ${{ eq(parameters.OfficialBuild, true) }})
61135 variables :
62- ob_outputDirectory : $(Build.SourcesDirectory)/out
63- steps :
64- - pwsh : |
65- [xml]$xml = Get-Content PowerShellEditorServices.Common.props
66- $version = $xml.Project.PropertyGroup.VersionPrefix
67- $prerelease = $xml.Project.PropertyGroup.VersionSuffix
68- if ($prerelease) { $version += "-$prerelease" }
69- Write-Output "##vso[task.setvariable variable=version;isOutput=true]$version"
70- Write-Output "##vso[task.setvariable variable=prerelease;isOutput=true]$(-not [string]::IsNullOrEmpty($prerelease))"
71- name: package
72- displayName: Get version from project properties
73- - task : onebranch.pipeline.version@1
74- displayName : Set OneBranch version
75- inputs :
76- system : Custom
77- customVersion : $(package.version)
78- - task : UseDotNet@2
79- displayName : Use .NET 8.x SDK
80- inputs :
81- packageType : sdk
82- useGlobalJson : true
83- - pwsh : ./tools/installPSResources.ps1 -PSRepository CFS
84- displayName : Install PSResources
85- - pwsh : Invoke-Build TestFull -Configuration $(BuildConfiguration) -PSRepository CFS
86- displayName : Build and test
87- - task : PublishTestResults@2
88- displayName : Publish test results
89- inputs :
90- testRunner : VSTest
91- testResultsFiles : ' **/*.trx'
92- failTaskOnFailedTests : true
93- - pwsh : |
94- $assembly = [Reflection.Assembly]::LoadFile("$(Build.SourcesDirectory)/module/PowerShellEditorServices/bin/Core/Microsoft.PowerShell.EditorServices.Hosting.dll")
95- if ($assembly.GetCustomAttributes([System.Diagnostics.DebuggableAttribute], $true).IsJITOptimizerDisabled) {
96- Write-Host "##vso[task.LogIssue type=error;]Was not built in release configuration!"
97- exit 1
98- }
99- displayName: Assert release configuration
100- continueOnError: true
101- - task : onebranch.pipeline.signing@1
102- displayName : Sign 1st-party files
103- inputs :
104- command : sign
105- signing_profile : external_distribution
106- search_root : $(Build.SourcesDirectory)/module
107- files_to_sign : |
108- **/*.ps1;
109- **/*.psd1;
110- **/*.psm1;
111- **/*.ps1xml;
112- **/Microsoft.PowerShell.EditorServices*.dll;
113- - task : onebranch.pipeline.signing@1
114- displayName : Sign 3rd-party files
115- inputs :
116- command : sign
117- signing_profile : 135020002
118- search_root : $(Build.SourcesDirectory)/module
119- files_to_sign : |
120- **/MediatR.dll;
121- **/Nerdbank.Streams.dll;
122- **/Newtonsoft.Json.dll;
123- **/OmniSharp.Extensions*.dll;
124- **/System.Reactive.dll;
125- - task : ArchiveFiles@2
126- displayName : Zip signed artifacts
127- inputs :
128- rootFolderOrFile : $(Build.SourcesDirectory)/module
129- includeRootFolder : false
130- archiveType : zip
131- archiveFile : out/PowerShellEditorServices.zip
132- - stage : release
133- dependsOn : build
134- condition : and(succeeded(), ${{ eq(parameters.OfficialBuild, true) }})
135- variables :
136- ob_release_environment : ${{ iif(parameters.OfficialBuild, 'Production', 'Test') }}
137- version : $[ stageDependencies.build.main.outputs['package.version'] ]
138- prerelease : $[ stageDependencies.build.main.outputs['package.prerelease'] ]
139- jobs :
140- - job : github
141- displayName : Publish draft to GitHub
142- pool :
143- type : release
144- templateContext :
145- inputs :
146- - input : pipelineArtifact
147- artifactName : drop_build_main
148- steps :
149- - task : GitHubRelease@1
150- displayName : Create GitHub release
151- inputs :
152- gitHubConnection : github.com_andyleejordan
153- repositoryName : PowerShell/PowerShellEditorServices
154- target : main
155- assets : $(Pipeline.Workspace)/PowerShellEditorServices.zip
156- tagSource : userSpecifiedTag
157- tag : v$(version)
158- isDraft : true
159- isPreRelease : $(prerelease)
160- addChangeLog : false
161- releaseNotesSource : inline
162- releaseNotesInline : " <!-- TODO: Generate release notes on GitHub! -->"
136+ ob_release_environment : ${{ iif(parameters.OfficialBuild, 'Production', 'Test') }}
137+ version : $[ stageDependencies.build.main.outputs['package.version'] ]
138+ prerelease : $[ stageDependencies.build.main.outputs['package.prerelease'] ]
139+ jobs :
140+ - job : github
141+ displayName : Publish draft to GitHub
142+ pool :
143+ type : release
144+ templateContext :
145+ inputs :
146+ - input : pipelineArtifact
147+ artifactName : drop_build_main
148+ steps :
149+ - task : GitHubRelease@1
150+ displayName : Create GitHub release
151+ inputs :
152+ gitHubConnection : github.com_andyleejordan
153+ repositoryName : PowerShell/PowerShellEditorServices
154+ target : main
155+ assets : $(Pipeline.Workspace)/PowerShellEditorServices.zip
156+ tagSource : userSpecifiedTag
157+ tag : v$(version)
158+ isDraft : true
159+ isPreRelease : $(prerelease)
160+ addChangeLog : false
161+ releaseNotesSource : inline
162+ releaseNotesInline : " <!-- TODO: Generate release notes on GitHub! -->"
0 commit comments