Skip to content

Commit 680b940

Browse files
update official pipeline
1 parent b8b8dc0 commit 680b940

File tree

1 file changed

+129
-158
lines changed

1 file changed

+129
-158
lines changed

build/build.yml

+129-158
Original file line numberDiff line numberDiff line change
@@ -2,163 +2,134 @@
22
# Licensed under the MIT License.
33

44
parameters:
5-
- name: prerelease
6-
type: boolean
7-
default: false
5+
- name: prerelease
6+
type: boolean
7+
default: false
88

99
jobs:
10-
- job: Build
11-
pool:
12-
name: VSEngSS-MicroBuild2019-1ES
13-
variables:
14-
# MicroBuild requires TeamName to be set.
15-
TeamName: C++ Cross Platform and Cloud
16-
steps:
17-
- task: MicroBuildSigningPlugin@3
18-
displayName: Install MicroBuild Signing
19-
inputs:
20-
signType: $(SignType)
21-
zipSources: false
22-
# MicroBuild signing will always fail on public PRs.
23-
condition: ne(variables['Build.Reason'], 'PullRequest')
24-
25-
# Run these scanners first so that they don't detect issues in dependencies.
26-
# Failures won't break the build until "Check for compliance errors" step.
27-
- task: CredScan@3
28-
displayName: Run CredScan
29-
inputs:
30-
toolMajorVersion: V2
31-
- task: PoliCheck@2
32-
displayName: Run PoliCheck
33-
inputs:
34-
targetType: F
35-
targetArgument: $(Build.SourcesDirectory)
36-
37-
# Node 14 matches the version of Node used by VS Code when this was written,
38-
# but it should be updated when VS Code updates its Node version.
39-
- task: NodeTool@0
40-
displayName: Use Node 16.x
41-
inputs:
42-
versionSpec: 16.x
43-
44-
# Override the patch version if this is a pre-release build.
45-
- ${{ if parameters.prerelease }}:
46-
- pwsh: node -e "p=require('./package.json');p.version=p.version.replace(/\.\d+$/,'.'+$(Build.BuildNumber));require('fs').writeFileSync('./package.json',JSON.stringify(p,undefined,2))"
47-
48-
- script: npm install --global gulp node-gyp @vscode/vsce
49-
displayName: Install global dependencies
50-
- script: npm install
51-
displayName: Install project dependencies
52-
53-
- task: ComponentGovernanceComponentDetection@0
54-
displayName: Detect components
55-
- task: notice@0
56-
displayName: Generate NOTICE file
57-
inputs:
58-
outputfile: $(Build.SourcesDirectory)/NOTICE.txt
59-
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
60-
61-
- script: gulp tslint
62-
displayName: Check for linting errors
63-
- script: gulp genAikey
64-
displayName: Use production AI key
65-
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags'))
66-
# Pack the extension now even though it's unsigned so that we ignore files
67-
# from .vscodeignore. This will reduce load on the signing server later and
68-
# ensure we only attempt to sign shipping files.
69-
- ${{ if parameters.prerelease }}:
70-
- script: node build/package.js --pre-release
71-
displayName: Build and pack extension
72-
- ${{ else }}:
73-
- script: node build/package.js
74-
displayName: Build and pack extension
75-
76-
# Extract the VSIXes, sign what we can, then pack it back up and publish it.
77-
- pwsh: |
78-
$path = Join-Path $Env:TEMP "7z-installer.exe"
79-
Invoke-WebRequest https://www.7-zip.org/a/7z2201-x64.exe -OutFile $path
80-
Start-Process -FilePath $path -Args "/S" -Verb RunAs -Wait
81-
Remove-Item $path
82-
Echo "##vso[task.prependpath]$Env:PROGRAMFILES\7-Zip\"
83-
displayName: Install 7zip
84-
- pwsh: Get-ChildItem out\vsix | Foreach-Object { 7z x $_.FullName -o$(Build.StagingDirectory)\vscode-arduino\$($_.BaseName) }
85-
displayName: Extract extension for signing
86-
- task: NuGetToolInstaller@1
87-
displayName: Install NuGet
88-
- task: NuGetAuthenticate@0
89-
displayName: Authenticate NuGet
90-
- script: nuget restore .\build\SignFiles.proj -PackagesDirectory .\build\packages
91-
displayName: Restore MicroBuild Core
92-
# MicroBuild signing will always fail on public PRs.
93-
condition: ne(variables['Build.Reason'], 'PullRequest')
94-
- task: MSBuild@1
95-
displayName: Sign files
96-
inputs:
97-
solution: .\build\SignFiles.proj
98-
msbuildArguments: /p:SignType=$(SignType)
99-
# MicroBuild signing will always fail on public PRs.
100-
condition: ne(variables['Build.Reason'], 'PullRequest')
101-
- pwsh: |
102-
Get-ChildItem -Directory $(Build.StagingDirectory)\vscode-arduino | Foreach-Object { 7z a ($_.FullName + ".vsix") ($_.FullName + "\*") -tzip }
103-
New-Item -Path $(Build.StagingDirectory)\vscode-arduino\vsix -ItemType Directory
104-
Get-Item $(Build.StagingDirectory)\vscode-arduino\*.vsix | Move-Item -Destination $(Build.StagingDirectory)\vscode-arduino\vsix
105-
displayName: Pack signed files
106-
- task: MSBuild@1
107-
displayName: Sign VSIXes
108-
inputs:
109-
solution: .\build\SignVsix.proj
110-
msbuildArguments: /p:SignType=$(SignType)
111-
# MicroBuild signing will always fail on public PRs.
112-
condition: ne(variables['Build.Reason'], 'PullRequest')
113-
- publish: $(Build.StagingDirectory)\vscode-arduino\vsix
114-
artifact: extension-vsixes
115-
displayName: Publish extension VSIXes as artifact
116-
117-
# Install the Arduino IDE and run tests.
118-
- script: curl -LO https://downloads.arduino.cc/arduino-1.8.19-windows.zip
119-
displayName: Download Arduino IDE
120-
- script: >-
121-
node build/checkHash.js arduino-1.8.19-windows.zip
122-
c704a821089eab2588f1deae775916219b1517febd1dd574ff29958dca873945
123-
displayName: Verify Arduino IDE
124-
- task: ExtractFiles@1
125-
displayName: Extract Arduino IDE
126-
inputs:
127-
archiveFilePatterns: arduino-1.8.19-windows.zip
128-
destinationFolder: arduino-ide
129-
- script: "echo ##vso[task.prependpath]$(Build.SourcesDirectory)\\arduino-ide\\arduino-1.8.19"
130-
displayName: Add Arduino IDE to PATH
131-
- script: npm test --silent
132-
displayName: Run tests
133-
134-
- task: PostAnalysis@2
135-
displayName: Check for compliance errors
136-
# To avoid spirious warnings about missing logs, explicitly declare what we scanned.
137-
inputs:
138-
CredScan: true
139-
PoliCheck: true
140-
141-
# Trust Services Automation (TSA) can automatically open bugs for compliance issues.
142-
# https://www.1eswiki.com/wiki/Trust_Services_Automation_(TSA)
143-
- task: TSAUpload@2
144-
displayName: Upload logs to TSA
145-
inputs:
146-
GdnPublishTsaOnboard: true
147-
GdnPublishTsaConfigFile: $(Build.SourcesDirectory)\build\tsa.gdntsa
148-
# Don't open bugs for PR builds
149-
condition: ne(variables['Build.Reason'], 'PullRequest')
150-
151-
- task: GitHubRelease@0
152-
displayName: Publish to GitHub
153-
inputs:
154-
gitHubConnection: embeddedbot
155-
repositoryName: microsoft/vscode-arduino
156-
action: create
157-
target: $(Build.SourceVersion)
158-
tagSource: auto
159-
assets: $(Build.StagingDirectory)\vscode-arduino\vsix\*.vsix
160-
isPreRelease: $[contains(variables['Build.SourceBranch'], '-rc')]
161-
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags'))
162-
163-
- task: MicroBuildCleanup@1
164-
displayName: Clean up MicroBuild
10+
- job: Build
11+
pool:
12+
name: VSEngSS-MicroBuild2022-1ES
13+
variables:
14+
TeamName: C++ Cross Platform and Cloud
15+
templateContext:
16+
outputs:
17+
- output: pipelineArtifact
18+
displayName: 'Publish extension VSIXes as artifact'
19+
targetPath: $(Build.StagingDirectory)\vscode-arduino\vsix
20+
artifactName: extension-vsixes
21+
steps:
22+
- task: MicroBuildSigningPlugin@3
23+
displayName: Install MicroBuild Signing
24+
inputs:
25+
signType: $(SignType)
26+
zipSources: false
27+
condition: ne(variables['Build.Reason'], 'PullRequest')
28+
- task: CredScan@3
29+
displayName: Run CredScan
30+
inputs:
31+
toolMajorVersion: V2
32+
- task: PoliCheck@2
33+
displayName: Run PoliCheck
34+
inputs:
35+
targetType: F
36+
targetArgument: $(Build.SourcesDirectory)
37+
- task: NodeTool@0
38+
displayName: Use Node 16.x
39+
inputs:
40+
versionSpec: 16.x
41+
- ${{ if parameters.prerelease }}:
42+
- pwsh: node -e "p=require('./package.json');p.version=p.version.replace(/\.\d+$/,'.'+$(Build.BuildNumber));require('fs').writeFileSync('./package.json',JSON.stringify(p,undefined,2))"
43+
- script: npm install --global gulp node-gyp @vscode/vsce
44+
displayName: Install global dependencies
45+
- script: npm install
46+
displayName: Install project dependencies
47+
- task: ComponentGovernanceComponentDetection@0
48+
displayName: Detect components
49+
- task: notice@0
50+
displayName: Generate NOTICE file
51+
inputs:
52+
outputfile: $(Build.SourcesDirectory)/NOTICE.txt
53+
condition: and(succeeded(), ne(variables['Build.Reason'], 'PullRequest'))
54+
- script: gulp tslint
55+
displayName: Check for linting errors
56+
- script: gulp genAikey
57+
displayName: Use production AI key
58+
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags'))
59+
- ${{ if parameters.prerelease }}:
60+
- script: node build/package.js --pre-release
61+
displayName: Build and pack extension
62+
- ${{ else }}:
63+
- script: node build/package.js
64+
displayName: Build and pack extension
65+
- pwsh: |
66+
$path = Join-Path $Env:TEMP "7z-installer.exe"
67+
Invoke-WebRequest https://www.7-zip.org/a/7z2201-x64.exe -OutFile $path
68+
Start-Process -FilePath $path -Args "/S" -Verb RunAs -Wait
69+
Remove-Item $path
70+
Echo "##vso[task.prependpath]$Env:PROGRAMFILES\7-Zip\"
71+
displayName: Install 7zip
72+
- pwsh: Get-ChildItem out\vsix | Foreach-Object { 7z x $_.FullName -o$(Build.StagingDirectory)\vscode-arduino\$($_.BaseName) }
73+
displayName: Extract extension for signing
74+
- task: NuGetToolInstaller@1
75+
displayName: Install NuGet
76+
- task: NuGetAuthenticate@0
77+
displayName: Authenticate NuGet
78+
- script: nuget restore .\build\SignFiles.proj -PackagesDirectory .\build\packages
79+
displayName: Restore MicroBuild Core
80+
condition: ne(variables['Build.Reason'], 'PullRequest')
81+
- task: MSBuild@1
82+
displayName: Sign files
83+
inputs:
84+
solution: .\build\SignFiles.proj
85+
msbuildArguments: /p:SignType=$(SignType)
86+
condition: ne(variables['Build.Reason'], 'PullRequest')
87+
- pwsh: |
88+
Get-ChildItem -Directory $(Build.StagingDirectory)\vscode-arduino | Foreach-Object { 7z a ($_.FullName + ".vsix") ($_.FullName + "\*") -tzip }
89+
New-Item -Path $(Build.StagingDirectory)\vscode-arduino\vsix -ItemType Directory
90+
Get-Item $(Build.StagingDirectory)\vscode-arduino\*.vsix | Move-Item -Destination $(Build.StagingDirectory)\vscode-arduino\vsix
91+
displayName: Pack signed files
92+
- task: MSBuild@1
93+
displayName: Sign VSIXes
94+
inputs:
95+
solution: .\build\SignVsix.proj
96+
msbuildArguments: /p:SignType=$(SignType)
97+
condition: ne(variables['Build.Reason'], 'PullRequest')
98+
- script: curl -LO https://downloads.arduino.cc/arduino-1.8.19-windows.zip
99+
displayName: Download Arduino IDE
100+
- script: >-
101+
node build/checkHash.js arduino-1.8.19-windows.zip c704a821089eab2588f1deae775916219b1517febd1dd574ff29958dca873945
102+
displayName: Verify Arduino IDE
103+
- task: ExtractFiles@1
104+
displayName: Extract Arduino IDE
105+
inputs:
106+
archiveFilePatterns: arduino-1.8.19-windows.zip
107+
destinationFolder: arduino-ide
108+
- script: "echo ##vso[task.prependpath]$(Build.SourcesDirectory)\\arduino-ide\\arduino-1.8.19"
109+
displayName: Add Arduino IDE to PATH
110+
- script: npm test --silent
111+
displayName: Run tests
112+
- task: PostAnalysis@2
113+
displayName: Check for compliance errors
114+
inputs:
115+
CredScan: true
116+
PoliCheck: true
117+
- task: TSAUpload@2
118+
displayName: Upload logs to TSA
119+
inputs:
120+
GdnPublishTsaOnboard: true
121+
GdnPublishTsaConfigFile: $(Build.SourcesDirectory)\build\tsa.gdntsa
122+
condition: ne(variables['Build.Reason'], 'PullRequest')
123+
- task: GitHubRelease@0
124+
displayName: Publish to GitHub
125+
inputs:
126+
gitHubConnection: embeddedbot
127+
repositoryName: microsoft/vscode-arduino
128+
action: create
129+
target: $(Build.SourceVersion)
130+
tagSource: auto
131+
assets: $(Build.StagingDirectory)\vscode-arduino\vsix\*.vsix
132+
isPreRelease: $[contains(variables['Build.SourceBranch'], '-rc')]
133+
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags'))
134+
- task: MicroBuildCleanup@1
135+
displayName: Clean up MicroBuild

0 commit comments

Comments
 (0)