Skip to content

Commit

Permalink
Create a separate unofficial.yml pipeline (#334)
Browse files Browse the repository at this point in the history
  • Loading branch information
matteo-prosperi authored Jan 14, 2025
1 parent 862f998 commit d158387
Show file tree
Hide file tree
Showing 5 changed files with 141 additions and 89 deletions.
2 changes: 1 addition & 1 deletion Expand-Template.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ try {
$YmlReplacements = @{
"(?m)^\s+- microbuild`r?`n"=""
}
Replace-Placeholders -Path "azure-pipelines\official.yml" -Replacements $YmlReplacements
Replace-Placeholders -Path "azure-pipelines\unofficial.yml" -Replacements $YmlReplacements
Replace-Placeholders -Path "azure-pipelines.yml" -Replacements $YmlReplacements

$YmlReplacements = @{}
Expand Down
8 changes: 8 additions & 0 deletions azure-pipelines/apiscan.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
parameters:
- name: windowsPool
type: object
- name: RealSign
type: boolean

jobs:
- job: apiscan
Expand All @@ -9,6 +11,12 @@ jobs:
pool: ${{ parameters.windowsPool }}
timeoutInMinutes: 120
templateContext:
${{ if not(parameters.RealSign) }}:
mb:
signing: # if the build is test-signed, install the signing plugin so that CSVTestSignPolicy.xml is available
enabled: true
zipSources: false
signType: test
outputs:
- output: pipelineArtifact
displayName: 📢 collect apiscan artifact
Expand Down
1 change: 1 addition & 0 deletions azure-pipelines/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -313,3 +313,4 @@ jobs:
- template: apiscan.yml
parameters:
windowsPool: ${{ parameters.windowsPool }}
RealSign: ${{ parameters.RealSign }}
129 changes: 41 additions & 88 deletions azure-pipelines/official.yml
Original file line number Diff line number Diff line change
@@ -1,17 +1,5 @@
trigger:
batch: true
branches:
include:
- main
- microbuild
- 'validate/*'
paths:
exclude:
- doc/
- '*.md'
- .vscode/
- azure-pipelines/release.yml
- azure-pipelines/vs-insertion.yml
trigger: none # We only want to trigger manually or based on a schedule
pr: none
#schedules:
#- cron: "0 3 * * *" # Daily @ 8 PM PST
# displayName: Daily vs-insertion
Expand All @@ -23,10 +11,6 @@ parameters:
# As an entrypoint pipeline yml file, all parameters here show up in the Queue Run dialog.
# If any paramaters should NOT be queue-time options, they should be removed from here
# and references to them in this file replaced with hard-coded values.
- name: ForceOfficialBuild
displayName: Official build (sign, compliance, etc.)
type: boolean
default: false # this should remain false so PR builds using this pipeline are unofficial
# - name: ShouldSkipOptimize # Uncomment this and references to it below when setting EnableOptProf to true in build.yml.
# displayName: Skip OptProf optimization
# type: boolean
Expand Down Expand Up @@ -55,75 +39,44 @@ variables:
- template: GlobalVariables.yml

extends:
${{ if or(parameters.ForceOfficialBuild, eq(variables['Build.Reason'],'Schedule')) }}:
template: azure-pipelines/MicroBuild.1ES.Official.yml@MicroBuildTemplate
parameters:
sdl:
sourceAnalysisPool: VSEngSS-MicroBuild2022-1ES
codeSignValidation:
enabled: true
break: true
additionalTargetsGlobPattern: -|Variables-*\*.ps1;-|APIScanInputs-*\**;-|test_symbols-*\**;-|MicroBuild\**
policheck:
enabled: true
exclusionsFile: $(System.DefaultWorkingDirectory)\azure-pipelines\PoliCheckExclusions.xml
suppression:
suppressionFile: $(System.DefaultWorkingDirectory)\azure-pipelines\falsepositives.gdnsuppress
sbom:
enabled: true
stages:
- stage: Build
variables:
- template: /azure-pipelines/BuildStageVariables.yml@self
jobs:
- template: /azure-pipelines/build.yml@self
parameters:
Is1ESPT: true
RealSign: true
# ShouldSkipOptimize: ${{ parameters.ShouldSkipOptimize }}
EnableAPIScan: ${{ and(parameters.EnableAPIScan, ne(variables['Build.Reason'], 'pullRequest')) }}
windowsPool: VSEngSS-MicroBuild2022-1ES
linuxPool:
name: AzurePipelines-EO
demands:
- ImageOverride -equals 1ESPT-Ubuntu22.04
os: Linux
macOSPool:
name: Azure Pipelines
vmImage: macOS-14
os: macOS
EnableMacOSBuild: ${{ parameters.EnableMacOSBuild }}
RunTests: ${{ parameters.RunTests }}
- template: /azure-pipelines/prepare-insertion-stages.yml@self
template: azure-pipelines/MicroBuild.1ES.Official.yml@MicroBuildTemplate
parameters:
sdl:
sourceAnalysisPool: VSEngSS-MicroBuild2022-1ES
codeSignValidation:
enabled: true
break: true
additionalTargetsGlobPattern: -|Variables-*\*.ps1;-|APIScanInputs-*\**;-|test_symbols-*\**;-|MicroBuild\**
policheck:
enabled: true
exclusionsFile: $(System.DefaultWorkingDirectory)\azure-pipelines\PoliCheckExclusions.xml
suppression:
suppressionFile: $(System.DefaultWorkingDirectory)\azure-pipelines\falsepositives.gdnsuppress
sbom:
enabled: true
stages:
- stage: Build
variables:
- template: /azure-pipelines/BuildStageVariables.yml@self
jobs:
- template: /azure-pipelines/build.yml@self
parameters:
Is1ESPT: true
RealSign: true
${{ else }}:
template: azure-pipelines/MicroBuild.1ES.Unofficial.yml@MicroBuildTemplate
parameters:
sdl:
sourceAnalysisPool: VSEngSS-MicroBuild2022-1ES
suppression:
suppressionFile: $(System.DefaultWorkingDirectory)\azure-pipelines\falsepositives.gdnsuppress
stages:
- stage: Build
variables:
- template: /azure-pipelines/BuildStageVariables.yml@self
jobs:
- template: /azure-pipelines/build.yml@self
parameters:
Is1ESPT: true
RealSign: false
# ShouldSkipOptimize: ${{ parameters.ShouldSkipOptimize }}
EnableAPIScan: false
windowsPool: VSEngSS-MicroBuild2022-1ES
linuxPool:
name: AzurePipelines-EO
demands:
- ImageOverride -equals 1ESPT-Ubuntu22.04
os: Linux
macOSPool:
name: Azure Pipelines
vmImage: macOS-14
os: macOS
EnableMacOSBuild: ${{ parameters.EnableMacOSBuild }}
RunTests: ${{ parameters.RunTests }}
# ShouldSkipOptimize: ${{ parameters.ShouldSkipOptimize }}
EnableAPIScan: ${{ parameters.EnableAPIScan }}
windowsPool: VSEngSS-MicroBuild2022-1ES
linuxPool:
name: AzurePipelines-EO
demands:
- ImageOverride -equals 1ESPT-Ubuntu22.04
os: Linux
macOSPool:
name: Azure Pipelines
vmImage: macOS-14
os: macOS
EnableMacOSBuild: ${{ parameters.EnableMacOSBuild }}
RunTests: ${{ parameters.RunTests }}
- template: /azure-pipelines/prepare-insertion-stages.yml@self
parameters:
RealSign: true
90 changes: 90 additions & 0 deletions azure-pipelines/unofficial.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
trigger:
batch: true
branches:
include:
- main
- microbuild
- 'validate/*'
paths:
exclude:
- doc/
- '*.md'
- .vscode/
- azure-pipelines/release.yml
- azure-pipelines/vs-insertion.yml

parameters:
# As an entrypoint pipeline yml file, all parameters here show up in the Queue Run dialog.
# If any paramaters should NOT be queue-time options, they should be removed from here
# and references to them in this file replaced with hard-coded values.
# - name: ShouldSkipOptimize # Uncomment this and references to it below when setting EnableOptProf to true in build.yml.
# displayName: Skip OptProf optimization
# type: boolean
# default: false
- name: EnableMacOSBuild
displayName: Build on macOS
type: boolean
default: false # macOS is often bogged down in Azure Pipelines
- name: RunTests
displayName: Run tests
type: boolean
default: true
- name: EnableAPIScan
displayName: Include APIScan with compliance tools
type: boolean
default: false
- name: EnableProductionSDL
displayName: Enable Production SDL
type: boolean
default: false

resources:
repositories:
- repository: MicroBuildTemplate
type: git
name: 1ESPipelineTemplates/MicroBuildTemplate
ref: refs/tags/release

variables:
- template: GlobalVariables.yml

extends:
template: azure-pipelines/MicroBuild.1ES.Unofficial.yml@MicroBuildTemplate
parameters:
sdl:
sourceAnalysisPool: VSEngSS-MicroBuild2022-1ES
suppression:
suppressionFile: $(System.DefaultWorkingDirectory)\azure-pipelines\falsepositives.gdnsuppress
enableProductionSDL: ${{ parameters.EnableProductionSDL }}
codeSignValidation:
enabled: ${{ parameters.EnableProductionSDL }}
break: true
policyFile: $(MBSIGN_APPFOLDER)\CSVTestSignPolicy.xml
policheck:
enabled: ${{ parameters.EnableProductionSDL }}
exclusionsFile: $(System.DefaultWorkingDirectory)\azure-pipelines\PoliCheckExclusions.xml
sbom:
enabled: ${{ parameters.EnableProductionSDL }}
stages:
- stage: Build
variables:
- template: /azure-pipelines/BuildStageVariables.yml@self
jobs:
- template: /azure-pipelines/build.yml@self
parameters:
Is1ESPT: true
RealSign: false
# ShouldSkipOptimize: ${{ parameters.ShouldSkipOptimize }}
EnableAPIScan: ${{ parameters.EnableAPIScan }}
windowsPool: VSEngSS-MicroBuild2022-1ES
linuxPool:
name: AzurePipelines-EO
demands:
- ImageOverride -equals 1ESPT-Ubuntu22.04
os: Linux
macOSPool:
name: Azure Pipelines
vmImage: macOS-14
os: macOS
EnableMacOSBuild: ${{ parameters.EnableMacOSBuild }}
RunTests: ${{ parameters.RunTests }}

0 comments on commit d158387

Please sign in to comment.