Skip to content
This repository was archived by the owner on Oct 1, 2024. It is now read-only.

Set up CI with Azure Pipelines #1400

Merged
merged 1 commit into from
Jan 5, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
121 changes: 121 additions & 0 deletions azure-pipelines.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.

name: $(Date:yyyyMMdd)$(Rev:.r).0-$(SourceBranchName)

pr:
- master
- dev

trigger:
branches:
include:
- master
- dev
tags:
include:
- v*

pool:
name: VSEngSS-MicroBuild2019-1ES

steps:
# Run these scanners first so that they don't detect issues in dependencies.
# Failures won't break the build until "Check for compliance errors" step.
- task: CredScan@2
displayName: Run CredScan
inputs:
toolMajorVersion: V2
- task: PoliCheck@1
displayName: Run PoliCheck
inputs:
targetType: F
targetArgument: $(Build.SourcesDirectory)

# Node 14 matches the version of Node used by VS Code when this was written,
# but it should be updated when VS Code updates its Node version.
- task: NodeTool@0
displayName: Use Node 14.x
inputs:
versionSpec: 14.x
- script: npm install --global gulp node-gyp vsce
displayName: Install global dependencies
- script: npm install
displayName: Install project dependencies

- script: gulp tslint
displayName: Check for linting errors
- script: gulp genAikey
displayName: Use production AI key
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags'))
- script: vsce package --out vscode-arduino.vsix
displayName: Build and pack extension
- publish: vscode-arduino.vsix
artifact: VS Code extension VSIX
displayName: Publish extension VSIX as artifact

- task: ComponentGovernanceComponentDetection@0
displayName: Detect components

# Install the Arduino IDE and run tests.
- script: curl -LO https://downloads.arduino.cc/arduino-1.8.19-windows.zip
displayName: Download Arduino IDE
- script: >-
node --eval "process.exit(require('crypto').createHash('sha256').update(
require('fs').readFileSync('arduino-1.8.19-windows.zip')).digest('hex')
== 'c704a821089eab2588f1deae775916219b1517febd1dd574ff29958dca873945'
? 0 : 1)"
displayName: Verify Arduino IDE
- task: ExtractFiles@1
displayName: Extract Arduino IDE
inputs:
archiveFilePatterns: arduino-1.8.19-windows.zip
destinationFolder: arduino-ide
- script: "echo ##vso[task.prependpath]$(Build.SourcesDirectory)\\arduino-ide\\arduino-1.8.19"
displayName: Add Arduino IDE to PATH
- script: npm test --silent
displayName: Run tests

- task: PostAnalysis@1
displayName: Check for compliance errors
# To avoid spirious warnings about missing logs, explicitly declare what we scanned.
inputs:
CredScan: true
PoliCheck: true

# Trust Services Automation (TSA) can automatically open bugs for compliance issues.
# https://www.1eswiki.com/wiki/Trust_Services_Automation_(TSA)
- task: TSAUpload@1
displayName: Upload logs to TSA
inputs:
tsaVersion: TsaV2
codebase: NewOrUpdate
codeBaseName: vscode-arduino
notificationAlias: [email protected]
instanceUrlForTsaV2: DEVDIV
projectNameDEVDIV: DevDiv
areaPath: DevDiv\Cpp Developer Experience\Cross Platform\Embedded
iterationPath: DevDiv
# To avoid spurious warnings about missing logs, explicitly declare what we don't upload.
uploadAPIScan: false
uploadBinSkim: false
uploadFortifySCA: false
uploadFxCop: false
uploadModernCop: false
uploadPREfast: false
uploadRoslyn: false
uploadTSLint: false
# Don't open bugs for PR builds
condition: ne(variables['Build.Reason'], 'PullRequest')

- task: GitHubRelease@0
displayName: Publish to GitHub
inputs:
gitHubConnection: embeddedbot
repositoryName: microsoft/vscode-arduino
action: create
target: $(Build.SourceVersion)
tagSource: auto
assets: $(Build.SourcesDirectory)\vscode-arduino.vsix
isPreRelease: $[contains(variables['Build.SourceBranch'], '-rc')]
condition: and(succeeded(), startsWith(variables['Build.SourceBranch'], 'refs/tags'))