Skip to content

Commit fb6373f

Browse files
committed
[ci] Add API Scan job
Context: https://devdiv.visualstudio.com/DevDiv/_wiki/wikis/DevDiv.wiki/25351/APIScan-step-by-step-guide-to-setting-up-a-Pipeline The ApiScan task has been added to pipeline runs against `main`. This task should help us identify related issues earlier, rather than having to wait for a full scan of VS.
1 parent 4b560da commit fb6373f

File tree

2 files changed

+70
-2
lines changed

2 files changed

+70
-2
lines changed

build-llvm.cmd

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ set PDBS=llvm-mc.pdb llvm-strip.pdb lld.pdb llc.pdb
1212
set HOST_BUILD_DIR=%BUILD_DIR%\%HOST%
1313
set HOST_BIN_DIR=%HOST_BUILD_DIR%\Release\bin
1414
set HOST_ARTIFACTS_DIR=%ARTIFACTS_DIR%\%HOST%
15-
set LLVM_VERSION_FILE=%HOST_ARTIFACTS_DIR%\llvm-version.txtt
16-
set CXXFLAGS="/Qspectre /sdl"
15+
set LLVM_VERSION_FILE=%HOST_ARTIFACTS_DIR%\llvm-version.txt
16+
set CMAKE_EXE_LINKER_FLAGS_INIT="/PROFILE /DYNAMICBASE /CETCOMPAT"
17+
set CMAKE_CXXFLAGS="/Qspectre /sdl"
1718

1819
if exist %HOST_BUILD_DIR% (rmdir /S /Q %HOST_BUILD_DIR%)
1920
mkdir %HOST_BUILD_DIR%

build-tools/automation/azure-pipelines.yml

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,10 @@ resources:
1919
ref: refs/heads/main
2020
endpoint: xamarin
2121

22+
parameters:
23+
- name: ApiScanSourceBranch
24+
default: refs/heads/main
25+
2226
variables:
2327
- name: TeamName
2428
value: XamarinAndroid
@@ -241,3 +245,66 @@ stages:
241245
TargetFolders: $(Build.SourcesDirectory)\artifacts
242246
ExcludeSNVerify: true
243247
condition: and(succeededOrFailed(), eq(variables['MicroBuildSignType'], 'Real'))
248+
249+
- stage: compliance_scan
250+
displayName: Compliance
251+
dependsOn: build
252+
condition: and(eq(dependencies.build.result, 'Succeeded'), eq(variables['Build.SourceBranch'], '${{ parameters.ApiScanSourceBranch }}'))
253+
jobs:
254+
- job: api_scan
255+
displayName: API Scan
256+
pool:
257+
name: Azure Pipelines
258+
vmImage: windows-2022
259+
timeoutInMinutes: 480
260+
workspace:
261+
clean: all
262+
steps:
263+
- task: DownloadPipelineArtifact@2
264+
inputs:
265+
artifactName: artifacts-windows-unsigned
266+
downloadPath: $(Build.SourcesDirectory)\artifacts
267+
268+
- task: CopyFiles@2
269+
displayName: Collect Files for APIScan
270+
inputs:
271+
Contents: |
272+
$(Build.SourcesDirectory)\artifacts\**\?(*.dll|*.exe|*.pdb)
273+
TargetFolder: $(Build.StagingDirectory)\apiscan
274+
275+
- powershell: Get-ChildItem -Path "$(Build.StagingDirectory)\apiscan" -Recurse
276+
displayName: List Files for APIScan
277+
278+
- task: APIScan@2
279+
displayName: Run APIScan
280+
inputs:
281+
softwareFolder: $(Build.StagingDirectory)\apiscan
282+
symbolsFolder: 'SRV*http://symweb;$(Build.StagingDirectory)\apiscan'
283+
softwareName: $(ApiScanName)
284+
softwareVersionNum: $(Build.SourceBranchName)-$(Build.SourceVersion)
285+
isLargeApp: true
286+
toolVersion: Latest
287+
env:
288+
AzureServicesAuthConnectionString: runAs=App;AppId=$(ApiScanClientId);TenantId=$(ApiScanTenant);AppKey=$(ApiScanSecret)
289+
290+
- task: SdtReport@2
291+
displayName: Guardian Export - Security Report
292+
inputs:
293+
GdnExportAllTools: false
294+
GdnExportGdnToolApiScan: true
295+
GdnExportOutputSuppressionFile: source.gdnsuppress
296+
297+
- task: PublishSecurityAnalysisLogs@3
298+
displayName: Publish Guardian Artifacts
299+
inputs:
300+
ArtifactName: APIScan Logs
301+
ArtifactType: Container
302+
AllTools: false
303+
APIScan: true
304+
ToolLogsNotFoundAction: Warning
305+
306+
- task: PostAnalysis@2
307+
displayName: Fail Build on Guardian Issues
308+
inputs:
309+
GdnBreakAllTools: false
310+
GdnBreakGdnToolApiScan: true

0 commit comments

Comments
 (0)