3
3
4
4
name : $(Date:yyyyMMdd)$(Rev:.r).0-$(SourceBranchName)
5
5
6
+ parameters :
7
+ - name : SignTypeOverride
8
+ displayName : Signing type override
9
+ type : string
10
+ default : default
11
+ values :
12
+ - default
13
+ - test
14
+ - real
15
+
6
16
pr :
7
17
- master
8
18
- dev
@@ -19,7 +29,27 @@ trigger:
19
29
pool :
20
30
name : VSEngSS-MicroBuild2019-1ES
21
31
32
+ variables :
33
+ # MicroBuild requires TeamName to be set.
34
+ TeamName : C++ Cross Platform and Cloud
35
+ # If the user didn't override the signing type, then only real-sign on tags,
36
+ # master, or dev.
37
+ ${{ if ne(parameters.SignTypeOverride, 'default') }} :
38
+ SignType : ${{ parameters.SignTypeOverride }}
39
+ ${{ if and(eq(parameters.SignTypeOverride, 'default'), or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), eq(variables['Build.SourceBranchName'], 'master'), eq(variables['Build.SourceBranchName'], 'dev'))) }} :
40
+ SignType : real
41
+ ${{ if and(eq(parameters.SignTypeOverride, 'default'), not(or(startsWith(variables['Build.SourceBranch'], 'refs/tags'), eq(variables['Build.SourceBranchName'], 'master'), eq(variables['Build.SourceBranchName'], 'dev')))) }} :
42
+ SignType : test
43
+
22
44
steps :
45
+ - task : MicroBuildSigningPlugin@3
46
+ displayName : Install MicroBuild Signing
47
+ inputs :
48
+ signType : $(SignType)
49
+ zipSources : false
50
+ # MicroBuild signing will always fail on public PRs.
51
+ condition : ne(variables['Build.Reason'], 'PullRequest')
52
+
23
53
# Run these scanners first so that they don't detect issues in dependencies.
24
54
# Failures won't break the build until "Check for compliance errors" step.
25
55
- task : CredScan@2
@@ -48,15 +78,54 @@ steps:
48
78
- script : gulp genAikey
49
79
displayName : Use production AI key
50
80
condition : and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags'))
81
+ # Pack the extension now even though it's unsigned so that we ignore files
82
+ # from .vscodeignore. This will reduce load on the signing server later and
83
+ # ensure we only attempt to sign shipping files.
51
84
- script : vsce package --out vscode-arduino.vsix
52
85
displayName : Build and pack extension
53
- - publish : vscode-arduino.vsix
54
- artifact : VS Code extension VSIX
55
- displayName : Publish extension VSIX as artifact
56
86
57
87
- task : ComponentGovernanceComponentDetection@0
58
88
displayName : Detect components
59
89
90
+ # Extract the VSIX, sign what we can, then pack it back up and publish it.
91
+ - task : ExtractFiles@1
92
+ displayName : Extract extension for signing
93
+ inputs :
94
+ archiveFilePatterns : vscode-arduino.vsix
95
+ destinationFolder : $(Build.StagingDirectory)\vscode-arduino
96
+ - task : NuGetToolInstaller@1
97
+ displayName : Install NuGet
98
+ - task : NuGetAuthenticate@0
99
+ displayName : Authenticate NuGet
100
+ - script : nuget restore .\build\SignFiles.proj -PackagesDirectory .\build\packages
101
+ displayName : Restore MicroBuild Core
102
+ # MicroBuild signing will always fail on public PRs.
103
+ condition : ne(variables['Build.Reason'], 'PullRequest')
104
+ - task : MSBuild@1
105
+ displayName : Sign files
106
+ inputs :
107
+ solution : .\build\SignFiles.proj
108
+ msbuildArguments : /p:SignType=$(SignType)
109
+ # MicroBuild signing will always fail on public PRs.
110
+ condition : ne(variables['Build.Reason'], 'PullRequest')
111
+ - task : ArchiveFiles@2
112
+ displayName : Pack signed files
113
+ inputs :
114
+ rootFolderOrFile : $(Build.StagingDirectory)\vscode-arduino
115
+ includeRootFolder : false
116
+ archiveType : zip
117
+ archiveFile : $(Build.StagingDirectory)\vscode-arduino.vsix
118
+ - task : MSBuild@1
119
+ displayName : Sign VSIX
120
+ inputs :
121
+ solution : .\build\SignVsix.proj
122
+ msbuildArguments : /p:SignType=$(SignType)
123
+ # MicroBuild signing will always fail on public PRs.
124
+ condition : ne(variables['Build.Reason'], 'PullRequest')
125
+ - publish : $(Build.StagingDirectory)\vscode-arduino.vsix
126
+ artifact : VS Code extension VSIX
127
+ displayName : Publish extension VSIX as artifact
128
+
60
129
# Install the Arduino IDE and run tests.
61
130
- script : curl -LO https://downloads.arduino.cc/arduino-1.8.19-windows.zip
62
131
displayName : Download Arduino IDE
@@ -114,6 +183,9 @@ steps:
114
183
action : create
115
184
target : $(Build.SourceVersion)
116
185
tagSource : auto
117
- assets : $(Build.SourcesDirectory )\vscode-arduino.vsix
186
+ assets : $(Build.StagingDirectory )\vscode-arduino.vsix
118
187
isPreRelease : $[contains(variables['Build.SourceBranch'], '-rc')]
119
188
condition : and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags'))
189
+
190
+ - task : MicroBuildCleanup@1
191
+ displayName : Clean up MicroBuild
0 commit comments