1ES Pipelines Template Adoption (#4670)

* 1ES Pipelines Template Adoption

- Added 1Es templates ci
- Changed pools for Windows/Ubuntu to 1ES pools
- Disabled sign validation

* 1ES Pipelines Template Adoption

- Added baseline
- Added pool to proxy tests

* 1ES Pipelines Template Adoption

- Restored sign validation

* 1ES Pipelines Template Adoption

- replaced pipelineArtifacts with buildArtifacts
- changed artifact conditions

* 1ES Pipelines Template Adoption

- Skip CG
- Add mariner pool

* 1ES Pipelines Template Adoption

- Skip CG
- Add mariner pool

* 1ES Pipelines Template Adoption

- Skip CG
- Add mariner pool

* 1ES Pipelines Template Adoption

- Add parameter for notifications

* 1ES Pipelines Template Adoption

- Add parameter for notifications

* 1ES Pipelines Template Adoption

- Add parameter for notifications

* 1ES Pipelines Template Adoption

- Add arm pool

* 1ES Pipelines Template Adoption

- changed to dnf

* 1ES Pipelines Template Adoption

- changed to dnf

* 1ES Pipelines Template Adoption

- changed to dnf

* 1ES Pipelines Template Adoption

- changed to dnf

* 1ES Pipelines Template Adoption

- replaced mariner pool with 1ES-ABTT-Shared-Pool

* 1ES Pipelines Template Adoption

- Restore release conditions

* 1ES Pipelines Template Adoption

- Temporary set agent's version

* 1ES Pipelines Template Adoption

- Skip directories when copying hashes

* 1ES Pipelines Template Adoption

- Skip directories when copying hashes

* 1ES Pipelines Template Adoption

- Change os to unix

* 1ES Pipelines Template Adoption

- Restore agent version
This commit is contained in:
Dmitrii Bobreshev 2024-02-28 13:41:50 +01:00 коммит произвёл GitHub
Родитель 1e9f5f154a
Коммит 2b80cee166
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
9 изменённых файлов: 654 добавлений и 439 удалений

Просмотреть файл

@ -1,3 +1,4 @@
# This Yaml Document has been converted by ESAI Yaml Pipeline Conversion Tool.
parameters:
- name: jobName
@ -43,9 +44,6 @@ parameters:
- name: codeCoverage
type: boolean
- name: componentDetection
type: boolean
- name: sign
type: boolean
@ -87,15 +85,26 @@ jobs:
DisableDockerDetector: true
nugetMultiFeedWarnLevel: none
CheckoutBranch: ${{ parameters.branch }}
templateContext:
outputs:
- ${{ if or(parameters.unitTests, parameters.functionalTests) }}:
- output: buildArtifacts
displayName: 'Publish Test logs'
condition: always()
PathtoPublish: src/Test/TestLogs
ArtifactName: ${{ parameters.os }}-${{ parameters.arch }}-$(System.JobId)
- ${{ if eq(parameters.publishArtifact, true) }}:
- output: buildArtifacts
displayName: 'Publish Hash Artifact'
PathtoPublish: _package
ArtifactName: agent
- ${{ if eq(parameters.publishArtifact, true) }}:
- output: buildArtifacts
displayName: 'Publish Agent Artifact'
PathtoPublish: _package_hash
ArtifactName: hash
steps:
# Component detection
- ${{ if parameters.componentDetection }}:
- task: ms.vss-governance-buildtask.governance-build-task-component-detection.ComponentGovernanceComponentDetection@0
displayName: 'Component Detection'
# Clean
- checkout: self
clean: true
@ -113,7 +122,7 @@ jobs:
# 1ES images used on the ARM pool doesn't contain unzip tool, so we need to install it before starting the build
- ${{ if and(eq(parameters.arch, 'arm64'), ne(parameters.os, 'osx')) }}:
- script: sudo apt-get update && sudo apt-get -y install unzip
- script: sudo dnf -y update && sudo dnf -y install unzip
displayName: Install unzip
retryCountOnTaskFailure: 5
@ -159,9 +168,9 @@ jobs:
- task: UseDotNet@2
displayName: Install .NET Core 6 SDK
inputs:
version: '6.0.418'
packageType: sdk
performMultiLevelLookup: true
version: '6.0.418'
packageType: sdk
performMultiLevelLookup: true
- script: ${{ variables.devCommand }} testl1 Debug ${{ parameters.os }}-${{ parameters.arch }}
workingDirectory: src
displayName: Functional tests
@ -176,15 +185,6 @@ jobs:
testRunTitle: 'Agent Tests - ${{ parameters.os }}-${{ parameters.arch }}'
condition: always()
# Upload test log
- task: PublishBuildArtifacts@1.200.0
displayName: Publish Test logs
inputs:
pathToPublish: src/Test/TestLogs
artifactName: ${{ parameters.os }}-${{ parameters.arch }}-$(System.JobId)
artifactType: container
condition: always()
# Code coverage
- ${{ if and(parameters.codeCoverage, parameters.unitTests, parameters.functionalTests) }}:
- script: dotnet tool install --global dotnet-reportgenerator-globaltool
@ -208,7 +208,7 @@ jobs:
- ${{ if parameters.sign }}:
# Signing steps
- template: signing.yml
- template: /.azure-pipelines/signing.yml@self
parameters:
layoutRoot: ${{ variables.layoutRoot }}
isWindows: ${{ eq(parameters.os, 'win') }}
@ -218,7 +218,7 @@ jobs:
# Package .NET Core Windows dependency (VC++ Redistributable)
- ${{ if eq(parameters.os, 'win') }}:
- template: package-vcredist.yml
- template: /.azure-pipelines/package-vcredist.yml@self
parameters:
layoutRoot: ${{ variables.layoutRoot }}
flavor: ${{ parameters.arch }}
@ -232,23 +232,6 @@ jobs:
workingDirectory: src
displayName: Hash Package
# Upload agent package zip as build artifact
- task: PublishBuildArtifacts@1.200.0
displayName: Publish Artifact
inputs:
pathToPublish: _package
artifactName: agent
artifactType: container
# Publish agent package hash too
- task: PublishBuildArtifacts@1.200.0
displayName: Publish Artifact
inputs:
pathToPublish: _package_hash
artifactName: hash
artifactType: container
# Signing verification
- ${{ if parameters.verifySigning }}:
# Verify all binaries are signed (generate report)
@ -263,4 +246,4 @@ jobs:
inputs:
CodesignValidation: true
CodesignValidationBreakOn: WarningAbove
ToolLogsNotFoundAction: Error
ToolLogsNotFoundAction: Error

Просмотреть файл

@ -1,3 +1,5 @@
# This Yaml Document has been converted by ESAI Yaml Pipeline Conversion Tool.
parameters:
- name: jobName
@ -39,9 +41,6 @@ parameters:
type: boolean
default: false
- name: componentDetection
type: boolean
- name: sign
type: boolean
@ -61,41 +60,39 @@ parameters:
default: false
jobs:
- template: build-job.yml
- template: /.azure-pipelines/build-job.yml@self
parameters:
jobName: ${{ parameters.jobName }}
displayName: ${{ parameters.displayName }}
pool: ${{ parameters.pool }}
container: ${{ parameters.container }}
timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
os: ${{ parameters.os }}
arch: ${{ parameters.arch }}
branch: ${{ parameters.branch }}
codeCoverage: ${{ parameters.codeCoverage }}
unitTests: ${{ parameters.unitTests }}
functionalTests: ${{ parameters.functionalTests }}
sign: ${{ parameters.sign }}
verifySigning: ${{ parameters.verifySigning }}
publishArtifact: ${{ parameters.publishArtifacts }}
packageType: agent
- ${{ if parameters.buildAlternatePackage }}:
- template: /.azure-pipelines/build-job.yml@self
parameters:
jobName: ${{ parameters.jobName }}
displayName: ${{ parameters.displayName }}
jobName: ${{ parameters.jobName }}_alternate
displayName: ${{ parameters.displayName }} (without Node 6)
pool: ${{ parameters.pool }}
container: ${{ parameters.container }}
timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
os: ${{ parameters.os }}
arch: ${{ parameters.arch }}
branch: ${{ parameters.branch }}
codeCoverage: ${{ parameters.codeCoverage }}
componentDetection: ${{ parameters.componentDetection }}
unitTests: ${{ parameters.unitTests }}
functionalTests: ${{ parameters.functionalTests }}
codeCoverage: false
unitTests: false
functionalTests: false
sign: ${{ parameters.sign }}
verifySigning: ${{ parameters.verifySigning }}
publishArtifact: ${{ parameters.publishArtifacts }}
packageType: agent
- ${{ if parameters.buildAlternatePackage }}:
- template: build-job.yml
parameters:
jobName: ${{ parameters.jobName }}_alternate
displayName: ${{ parameters.displayName }} (without Node 6)
pool: ${{ parameters.pool }}
container: ${{ parameters.container }}
timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
os: ${{ parameters.os }}
arch: ${{ parameters.arch }}
branch: ${{ parameters.branch }}
codeCoverage: false
componentDetection: ${{ parameters.componentDetection }}
unitTests: false
functionalTests: false
sign: ${{ parameters.sign }}
verifySigning: ${{ parameters.verifySigning }}
publishArtifact: ${{ parameters.publishArtifacts }}
packageType: pipelines-agent
packageType: pipelines-agent

Просмотреть файл

@ -1,3 +1,4 @@
# This Yaml Document has been converted by ESAI Yaml Pipeline Conversion Tool.
parameters:
- name: layoutRoot
type: string
@ -19,4 +20,4 @@ steps:
[System.IO.Compression.ZipFile]::ExtractToDirectory($outFile, $unzipDir)
$agentLayoutBin = Join-Path -Path $(Build.SourcesDirectory) -ChildPath "${{ parameters.layoutRoot }}\bin"
Copy-Item -Path $unzipDir -Destination $agentLayoutBin -Force
displayName: Package UCRT
displayName: Package UCRT

Просмотреть файл

@ -1,3 +1,5 @@
# This Yaml Document has been converted by ESAI Yaml Pipeline Conversion Tool.
# This pipeline will be extended to the OneESPT template
parameters:
- name: preBuildStages
type: stageList
@ -5,9 +7,6 @@ parameters:
- name: postBuildStages
type: stageList
default: []
- name: componentDetection
type: boolean
default: false
- name: test
type: boolean
default: true
@ -58,193 +57,225 @@ parameters:
- name: macOS_arm64
type: boolean
default: true
resources:
repositories:
- repository: 1ESPipelineTemplates
type: git
name: 1ESPipelineTemplates/1ESPipelineTemplates
ref: refs/tags/release
extends:
template: v1/1ES.Official.PipelineTemplate.yml@1ESPipelineTemplates
parameters:
featureFlags:
autoBaseline: false
sdl:
# do not fail on CG
componentgovernance:
failOnAlert: false
alertWarningLevel: "Never"
baseline:
baselineSet: default
baselineFile: $(Build.SourcesDirectory)/.gdn/.gdnbaselines
sourceAnalysisPool:
name: 1ES-ABTT-Shared-Pool
image: abtt-windows-2022
os: windows
customBuildTags:
- ES365AIMigrationTooling
stages:
stages:
- ${{ parameters.preBuildStages }}
- ${{ parameters.preBuildStages }}
- stage: build
displayName: Build
${{ if ne(length(parameters.stageDependencies), 0)}}:
dependsOn: ${{ parameters.stageDependencies }}
${{ if ne(parameters.stageCondition, '') }}:
condition: ${{ parameters.stageCondition }}
jobs:
# Test Proxy Agent
- ${{ if parameters.testProxyAgent }}:
- job: test_proxy_agent
displayName: Test Proxy Agent
pool:
name: 1ES-ABTT-Shared-Pool
image: abtt-ubuntu-2204
os: linux
variables:
DisableDockerDetector: true
nugetMultiFeedWarnLevel: none
timeoutInMinutes: 300
steps:
- bash: |
cd ./.azure-pipelines/scripts/
npm install axios minimist
- stage: build
displayName: Build
${{ if ne(length(parameters.stageDependencies), 0)}}:
dependsOn: ${{ parameters.stageDependencies }}
${{ if ne(parameters.stageCondition, '') }}:
condition: ${{ parameters.stageCondition }}
jobs:
# Test Proxy Agent
- ${{ if parameters.testProxyAgent }}:
- job: test_proxy_agent
displayName: Test Proxy Agent
pool:
vmImage: ubuntu-latest
variables:
DisableDockerDetector: true
nugetMultiFeedWarnLevel: none
timeoutInMinutes: 300
steps:
- bash: |
cd ./.azure-pipelines/scripts/
npm install axios minimist
releaseBranch="${{ parameters.branch }}"
sourceBranch="$(Build.SourceBranch)"
branch="${releaseBranch:-"${sourceBranch}"}"
echo "Canary \"branch\" parameter: \"${branch}\""
releaseBranch="${{ parameters.branch }}"
sourceBranch="$(Build.SourceBranch)"
branch="${releaseBranch:-"${sourceBranch}"}"
echo "Canary \"branch\" parameter: \"${branch}\""
node ./run-and-verify.js \
--projectUrl "$(CANARY_PROJECT_URL)" \
--pipelineId "$(CANARY_PIPELINE_ID)" \
--token "$(CANARY_PAT)" \
--templateParameters "{ \"branch\": \"${branch}\" }"
displayName: Test Proxy Agent
node ./run-and-verify.js \
--projectUrl "$(CANARY_PROJECT_URL)" \
--pipelineId "$(CANARY_PIPELINE_ID)" \
--token "$(CANARY_PAT)" \
--templateParameters "{ \"branch\": \"${branch}\" }"
displayName: Test Proxy Agent
# Windows (x64)
- ${{ if parameters.win_x64 }}:
- template: build-jobs.yml
parameters:
jobName: build_windows_x64
displayName: Windows (x64)
pool:
vmImage: windows-2022
os: win
arch: x64
branch: ${{ parameters.branch }}
codeCoverage: true
componentDetection: ${{ parameters.componentDetection }}
unitTests: ${{ parameters.test }}
functionalTests: ${{ parameters.test }}
sign: ${{ parameters.sign }}
verifySigning: ${{ parameters.sign }}
publishArtifacts: ${{ parameters.publishArtifacts }}
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
- ${{ if parameters.win_x64 }}:
- template: /.azure-pipelines/build-jobs.yml@self
parameters:
jobName: build_windows_x64
displayName: Windows (x64)
pool:
name: 1ES-ABTT-Shared-Pool
image: abtt-windows-2022
os: windows
os: win
arch: x64
branch: ${{ parameters.branch }}
codeCoverage: true
unitTests: ${{ parameters.test }}
functionalTests: ${{ parameters.test }}
sign: ${{ parameters.sign }}
verifySigning: ${{ parameters.sign }}
publishArtifacts: ${{ parameters.publishArtifacts }}
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
# Windows (x86)
- ${{ if parameters.win_x86 }}:
- template: build-jobs.yml
parameters:
jobName: build_windows_x86
displayName: Windows (x86)
pool:
vmImage: windows-2022
os: win
arch: x86
branch: ${{ parameters.branch }}
componentDetection: false
unitTests: ${{ parameters.test }}
functionalTests: ${{ parameters.test }}
sign: ${{ parameters.sign }}
publishArtifacts: ${{ parameters.publishArtifacts }}
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
- ${{ if parameters.win_x86 }}:
- template: /.azure-pipelines/build-jobs.yml@self
parameters:
jobName: build_windows_x86
displayName: Windows (x86)
pool:
name: 1ES-ABTT-Shared-Pool
image: abtt-windows-2022
os: windows
os: win
arch: x86
branch: ${{ parameters.branch }}
unitTests: ${{ parameters.test }}
functionalTests: ${{ parameters.test }}
sign: ${{ parameters.sign }}
publishArtifacts: ${{ parameters.publishArtifacts }}
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
# Linux (x64)
- ${{ if parameters.linux_x64 }}:
- template: build-jobs.yml
parameters:
jobName: build_linux_x64
displayName: Linux (x64)
pool:
vmImage: ubuntu-20.04
os: linux
arch: x64
branch: ${{ parameters.branch }}
componentDetection: ${{ parameters.componentDetection }}
unitTests: ${{ parameters.test }}
functionalTests: ${{ parameters.test }}
sign: ${{ parameters.sign }}
publishArtifacts: ${{ parameters.publishArtifacts }}
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
- ${{ if parameters.linux_x64 }}:
- template: /.azure-pipelines/build-jobs.yml@self
parameters:
jobName: build_linux_x64
displayName: Linux (x64)
pool:
name: 1ES-ABTT-Shared-Pool
image: abtt-ubuntu-2204
os: linux
os: linux
arch: x64
branch: ${{ parameters.branch }}
unitTests: ${{ parameters.test }}
functionalTests: ${{ parameters.test }}
sign: ${{ parameters.sign }}
publishArtifacts: ${{ parameters.publishArtifacts }}
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
# Linux (ARM)
- ${{ if parameters.linux_arm }}:
- template: build-jobs.yml
parameters:
jobName: build_linux_arm
displayName: Linux (ARM)
pool:
vmImage: ubuntu-20.04
timeoutInMinutes: 75
os: linux
arch: arm
branch: ${{ parameters.branch }}
componentDetection: false
unitTests: false
functionalTests: false
sign: false
publishArtifacts: ${{ parameters.publishArtifacts }}
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
- ${{ if parameters.linux_arm }}:
- template: /.azure-pipelines/build-jobs.yml@self
parameters:
jobName: build_linux_arm
displayName: Linux (ARM)
pool:
name: 1ES-ABTT-Shared-Pool
image: abtt-ubuntu-2204
os: linux
timeoutInMinutes: 75
os: linux
arch: arm
branch: ${{ parameters.branch }}
unitTests: false
functionalTests: false
sign: false
publishArtifacts: ${{ parameters.publishArtifacts }}
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
# Linux (ARM64)
- ${{ if parameters.linux_arm64 }}:
- template: build-jobs.yml
parameters:
jobName: build_linux_arm64
displayName: Linux (ARM64)
pool:
name: 1ES_ARM_Agent_Pool
vmImage: Ubuntu_2004_ARM64
timeoutInMinutes: 75
os: linux
arch: arm64
branch: ${{ parameters.branch }}
componentDetection: false
unitTests: ${{ parameters.test }}
functionalTests: ${{ parameters.test }}
sign: false
publishArtifacts: ${{ parameters.publishArtifacts }}
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
- ${{ if parameters.linux_arm64 }}:
- template: /.azure-pipelines/build-jobs.yml@self
parameters:
jobName: build_linux_arm64
displayName: Linux (ARM64)
pool:
name: 1ES-ABTT-Shared-ARM-64-Pool
vmImage: abtt-mariner_arm64
os: linux
timeoutInMinutes: 75
os: linux
arch: arm64
branch: ${{ parameters.branch }}
unitTests: ${{ parameters.test }}
functionalTests: ${{ parameters.test }}
sign: false
publishArtifacts: ${{ parameters.publishArtifacts }}
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
# Alpine (x64)
- ${{ if parameters.alpine_x64 }}:
- template: build-jobs.yml
parameters:
jobName: build_alpine_x64
displayName: Alpine (x64)
pool:
vmImage: ubuntu-latest
#container: alpine
os: linux-musl
arch: x64
branch: ${{ parameters.branch }}
componentDetection: false
unitTests: ${{ parameters.test }}
functionalTests: false
sign: false
publishArtifacts: ${{ parameters.publishArtifacts }}
buildAlternatePackage: false
- ${{ if parameters.alpine_x64 }}:
- template: /.azure-pipelines/build-jobs.yml@self
parameters:
jobName: build_alpine_x64
displayName: Alpine (x64)
pool:
name: 1ES-ABTT-Shared-Pool
image: abtt-ubuntu-2204
os: linux
#container: alpine
os: linux-musl
arch: x64
branch: ${{ parameters.branch }}
unitTests: ${{ parameters.test }}
functionalTests: false
sign: false
publishArtifacts: ${{ parameters.publishArtifacts }}
buildAlternatePackage: false
# macOS (x64)
- ${{ if parameters.macOS_x64 }}:
- template: build-jobs.yml
parameters:
jobName: build_osx
displayName: macOS (x64)
pool:
vmImage: macOS-11
os: osx
arch: x64
branch: ${{ parameters.branch }}
componentDetection: ${{ parameters.componentDetection }}
unitTests: ${{ parameters.test }}
functionalTests: ${{ parameters.test }}
sign: ${{ parameters.sign }}
publishArtifacts: ${{ parameters.publishArtifacts }}
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
- ${{ if parameters.macOS_x64 }}:
- template: /.azure-pipelines/build-jobs.yml@self
parameters:
jobName: build_osx
displayName: macOS (x64)
pool:
name: Azure Pipelines
image: macOS-11
os: macOS
os: osx
arch: x64
branch: ${{ parameters.branch }}
unitTests: ${{ parameters.test }}
functionalTests: ${{ parameters.test }}
sign: ${{ parameters.sign }}
publishArtifacts: ${{ parameters.publishArtifacts }}
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
# macOS (ARM64)
- ${{ if parameters.macOS_arm64 }}:
- template: build-jobs.yml
parameters:
jobName: build_osx_arm64
displayName: macOS (ARM64)
pool:
vmImage: macOS-12
os: osx
arch: arm64
branch: ${{ parameters.branch }}
componentDetection: ${{ parameters.componentDetection }}
unitTests: false
functionalTests: false
sign: ${{ parameters.sign }}
publishArtifacts: ${{ parameters.publishArtifacts }}
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
- ${{ parameters.postBuildStages }}
- ${{ if parameters.macOS_arm64 }}:
- template: /.azure-pipelines/build-jobs.yml@self
parameters:
jobName: build_osx_arm64
displayName: macOS (ARM64)
pool:
name: Azure Pipelines
image: macOS-12
os: macOS
os: osx
arch: arm64
branch: ${{ parameters.branch }}
unitTests: false
functionalTests: false
sign: ${{ parameters.sign }}
publishArtifacts: ${{ parameters.publishArtifacts }}
buildAlternatePackage: ${{ parameters.buildAlternatePackage }}
- ${{ parameters.postBuildStages }}

Просмотреть файл

@ -1,202 +1,202 @@
# This Yaml Document has been converted by ESAI Yaml Pipeline Conversion Tool.
parameters:
- name: layoutRoot
type: string
- name: isWindows
type: boolean
default: true
- name: layoutRoot
type: string
- name: isWindows
type: boolean
default: true
steps:
- ${{ if parameters.isWindows }}:
- task: PowerShell@2
inputs:
targetType: 'filePath'
filePath: ./.azure-pipelines/scripts/RemoveSignatureForThirdPartyAssemlies.ps1
arguments: '-LayoutRoot ${{ parameters.layoutRoot }}'
errorActionPreference: 'continue'
displayName: Remove signatures from the third party packages
condition: ne(variables['DISABLE_SIGNATURE_REMOVAL'], 'true')
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@2
inputs:
ConnectedServiceName: VSTSAgentESRP
FolderPath: '${{ parameters.layoutRoot }}/bin'
Pattern: AgentService.exe
signConfigType: inlineSignParams
inlineOperation: |
[{
"keyCode": "CP-235845-SN",
"operationSetCode": "StrongNameSign",
"parameters": [],
"toolName": "sign",
"toolVersion": "1.0"
},
{
"keyCode": "CP-235845-SN",
"operationSetCode": "StrongNameVerify",
"parameters": [],
"toolName": "sign",
"toolVersion": "1.0"
}
]
displayName: Sign Agent Assemblies (Strong Name Signing)
- ${{ if parameters.isWindows }}:
- task: PowerShell@2
inputs:
targetType: 'filePath'
filePath: ./.azure-pipelines/scripts/RemoveSignatureForThirdPartyAssemlies.ps1
arguments: '-LayoutRoot ${{ parameters.layoutRoot }}'
errorActionPreference: 'continue'
displayName: Remove signatures from the third party packages
condition: ne(variables['DISABLE_SIGNATURE_REMOVAL'], 'true')
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@2
inputs:
ConnectedServiceName: VSTSAgentESRP
FolderPath: '${{ parameters.layoutRoot }}/bin'
Pattern: |
Agent.*.dll
Agent.*.exe
Microsoft.VisualStudio.Services.Agent.dll
AgentService.exe
**\AgentService.resources.dll
UseMinimatch: true
Pattern: AgentService.exe
signConfigType: inlineSignParams
inlineOperation: |
[{
"keyCode": "CP-230012",
"operationSetCode": "SigntoolSign",
"parameters": [{
"parameterName": "OpusName",
"parameterValue": "Microsoft"
},
{
"parameterName": "OpusInfo",
"parameterValue": "http://www.microsoft.com"
},
{
"parameterName": "FileDigest",
"parameterValue": "/fd \"SHA256\""
},
{
"parameterName": "PageHash",
"parameterValue": "/NPH"
},
{
"parameterName": "TimeStamp",
"parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
}
],
"keyCode": "CP-235845-SN",
"operationSetCode": "StrongNameSign",
"parameters": [],
"toolName": "sign",
"toolVersion": "1.0"
},
{
"keyCode": "CP-230012",
"operationSetCode": "SigntoolVerify",
"keyCode": "CP-235845-SN",
"operationSetCode": "StrongNameVerify",
"parameters": [],
"toolName": "sign",
"toolVersion": "1.0"
}
]
displayName: Sign Agent Assemblies (Authenticode Signing)
displayName: Sign Agent Assemblies (Strong Name Signing)
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@2
inputs:
ConnectedServiceName: VSTSAgentESRP
FolderPath: '${{ parameters.layoutRoot }}'
Pattern: |
bin\powershell\**\*.ps1
bin\powershell\**\*.psm1
externals\vstshost\**\*.ps1
externals\vstshost\**\*.psd1
externals\vstshost\**\*.psm1
UseMinimatch: true
signConfigType: inlineSignParams
inlineOperation: |
[{
"keyCode": "CP-230012",
"operationSetCode": "SigntoolSign",
"parameters": [{
"parameterName": "OpusName",
"parameterValue": "Microsoft"
},
{
"parameterName": "OpusInfo",
"parameterValue": "http://www.microsoft.com"
},
{
"parameterName": "FileDigest",
"parameterValue": "/fd \"SHA256\""
},
{
"parameterName": "PageHash",
"parameterValue": "/NPH"
},
{
"parameterName": "TimeStamp",
"parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
}
],
"toolName": "sign",
"toolVersion": "1.0"
},
{
"keyCode": "CP-230012",
"operationSetCode": "SigntoolVerify",
"parameters": [],
"toolName": "sign",
"toolVersion": "1.0"
}
]
displayName: Sign PowerShell Scripts (Authenticode Signing)
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@2
inputs:
ConnectedServiceName: VSTSAgentESRP
FolderPath: '${{ parameters.layoutRoot }}/bin'
Pattern: |
Agent.*.dll
Agent.*.exe
Microsoft.VisualStudio.Services.Agent.dll
AgentService.exe
**\AgentService.resources.dll
UseMinimatch: true
signConfigType: inlineSignParams
inlineOperation: |
[{
"keyCode": "CP-230012",
"operationSetCode": "SigntoolSign",
"parameters": [{
"parameterName": "OpusName",
"parameterValue": "Microsoft"
},
{
"parameterName": "OpusInfo",
"parameterValue": "http://www.microsoft.com"
},
{
"parameterName": "FileDigest",
"parameterValue": "/fd \"SHA256\""
},
{
"parameterName": "PageHash",
"parameterValue": "/NPH"
},
{
"parameterName": "TimeStamp",
"parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
}
],
"toolName": "sign",
"toolVersion": "1.0"
},
{
"keyCode": "CP-230012",
"operationSetCode": "SigntoolVerify",
"parameters": [],
"toolName": "sign",
"toolVersion": "1.0"
}
]
displayName: Sign Agent Assemblies (Authenticode Signing)
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@2
inputs:
ConnectedServiceName: VSTSAgentESRP
FolderPath: '${{ parameters.layoutRoot }}'
Pattern: |
bin\**\*.dll
bin\**\*.exe
externals\**\*.exe
externals\**\*.dll
externals\**\*.pyd
UseMinimatch: true
signConfigType: inlineSignParams
inlineOperation: |
[{
"keyCode": "CP-231522",
"operationSetCode": "SigntoolSign",
"parameters": [{
"parameterName": "OpusName",
"parameterValue": "Microsoft"
},
{
"parameterName": "OpusInfo",
"parameterValue": "http://www.microsoft.com"
},
{
"parameterName": "Append",
"parameterValue": "/as"
},
{
"parameterName": "FileDigest",
"parameterValue": "/fd \"SHA256\""
},
{
"parameterName": "PageHash",
"parameterValue": "/NPH"
},
{
"parameterName": "TimeStamp",
"parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
}
],
"toolName": "sign",
"toolVersion": "1.0"
},
{
"keyCode": "CP-231522",
"operationSetCode": "SigntoolVerify",
"parameters": [],
"toolName": "sign",
"toolVersion": "1.0"
}
]
displayName: Sign Agent Assemblies (3rd Party Assemblies Signing)
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@2
inputs:
ConnectedServiceName: VSTSAgentESRP
FolderPath: '${{ parameters.layoutRoot }}'
Pattern: |
bin\powershell\**\*.ps1
bin\powershell\**\*.psm1
externals\vstshost\**\*.ps1
externals\vstshost\**\*.psd1
externals\vstshost\**\*.psm1
UseMinimatch: true
signConfigType: inlineSignParams
inlineOperation: |
[{
"keyCode": "CP-230012",
"operationSetCode": "SigntoolSign",
"parameters": [{
"parameterName": "OpusName",
"parameterValue": "Microsoft"
},
{
"parameterName": "OpusInfo",
"parameterValue": "http://www.microsoft.com"
},
{
"parameterName": "FileDigest",
"parameterValue": "/fd \"SHA256\""
},
{
"parameterName": "PageHash",
"parameterValue": "/NPH"
},
{
"parameterName": "TimeStamp",
"parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
}
],
"toolName": "sign",
"toolVersion": "1.0"
},
{
"keyCode": "CP-230012",
"operationSetCode": "SigntoolVerify",
"parameters": [],
"toolName": "sign",
"toolVersion": "1.0"
}
]
displayName: Sign PowerShell Scripts (Authenticode Signing)
- task: DeleteFiles@1
inputs:
SourceFolder: '${{ parameters.layoutRoot }}'
Contents: '**\CodeSignSummary-*.md'
displayName: Delete CodeSignSummary.md
retryCountOnTaskFailure: 4
- task: SFP.build-tasks.custom-build-task-1.EsrpCodeSigning@2
inputs:
ConnectedServiceName: VSTSAgentESRP
FolderPath: '${{ parameters.layoutRoot }}'
Pattern: |
bin\**\*.dll
bin\**\*.exe
externals\**\*.exe
externals\**\*.dll
externals\**\*.pyd
UseMinimatch: true
signConfigType: inlineSignParams
inlineOperation: |
[{
"keyCode": "CP-231522",
"operationSetCode": "SigntoolSign",
"parameters": [{
"parameterName": "OpusName",
"parameterValue": "Microsoft"
},
{
"parameterName": "OpusInfo",
"parameterValue": "http://www.microsoft.com"
},
{
"parameterName": "Append",
"parameterValue": "/as"
},
{
"parameterName": "FileDigest",
"parameterValue": "/fd \"SHA256\""
},
{
"parameterName": "PageHash",
"parameterValue": "/NPH"
},
{
"parameterName": "TimeStamp",
"parameterValue": "/tr \"http://rfc3161.gtm.corp.microsoft.com/TSS/HttpTspServer\" /td sha256"
}
],
"toolName": "sign",
"toolVersion": "1.0"
},
{
"keyCode": "CP-231522",
"operationSetCode": "SigntoolVerify",
"parameters": [],
"toolName": "sign",
"toolVersion": "1.0"
}
]
displayName: Sign Agent Assemblies (3rd Party Assemblies Signing)
- task: DeleteFiles@1
inputs:
SourceFolder: '${{ parameters.layoutRoot }}'
Contents: '**\CodeSignSummary-*.md'
displayName: Delete CodeSignSummary.md
retryCountOnTaskFailure: 4

179
.gdn/.gdnbaselines Normal file
Просмотреть файл

@ -0,0 +1,179 @@
{
"hydrated": false,
"properties": {
"helpUri": "https://eng.ms/docs/microsoft-security/security/azure-security/cloudai-security-fundamentals-engineering/security-integration/guardian-wiki/microsoft-guardian/general/baselines",
"hydrationStatus": "This file does not contain identifying data. It is safe to check into your repo. To hydrate this file with identifying data, run `guardian hydrate --help` and follow the guidance."
},
"version": "1.0.0",
"baselines": {
"default": {
"name": "default",
"createdDate": "2024-02-20 10:22:13Z",
"lastUpdatedDate": "2024-02-20 10:22:13Z"
}
},
"results": {
"24c3ac3899a30f6cc0775a00314ef848344ec59d6429bfa50d42fd4ea866cae2": {
"signature": "24c3ac3899a30f6cc0775a00314ef848344ec59d6429bfa50d42fd4ea866cae2",
"alternativeSignatures": [],
"memberOf": [
"default"
],
"justification": "Example in docs",
"createdDate": "2024-02-20 10:22:13Z"
},
"8d297344c1e1bf3e258d1b2ca4afb5c06636a18e5f21a336b76668c3cf8992e0": {
"signature": "8d297344c1e1bf3e258d1b2ca4afb5c06636a18e5f21a336b76668c3cf8992e0",
"alternativeSignatures": [],
"memberOf": [
"default"
],
"justification": "Unit test data",
"createdDate": "2024-02-20 10:22:13Z"
},
"f9fad72c2307e7267d7c6b3b34b728a7eb5552ab3fbe26e1f3d8432de62fe8e5": {
"signature": "f9fad72c2307e7267d7c6b3b34b728a7eb5552ab3fbe26e1f3d8432de62fe8e5",
"alternativeSignatures": [],
"memberOf": [
"default"
],
"justification": "Unit test data",
"createdDate": "2024-02-20 10:22:13Z"
},
"2bccc624deb3e079e5ec8f549a788ef9f8afc9cd2a00d7921e2ebc81ffc62fef": {
"signature": "2bccc624deb3e079e5ec8f549a788ef9f8afc9cd2a00d7921e2ebc81ffc62fef",
"alternativeSignatures": [],
"memberOf": [
"default"
],
"justification": "Unit test data",
"createdDate": "2024-02-20 10:22:13Z"
},
"cd2a3f2e3843934826515e4f92b5bb47485d6728cf43adfb6be002b1f39b46d0": {
"signature": "cd2a3f2e3843934826515e4f92b5bb47485d6728cf43adfb6be002b1f39b46d0",
"alternativeSignatures": [],
"memberOf": [
"default"
],
"justification": "Unit test data",
"createdDate": "2024-02-20 10:22:13Z"
},
"ad90cfc89d359b0392b75f577f9a61d68cb9d09d303e7e60e5bafdbdbf8f88ff": {
"signature": "ad90cfc89d359b0392b75f577f9a61d68cb9d09d303e7e60e5bafdbdbf8f88ff",
"alternativeSignatures": [],
"memberOf": [
"default"
],
"justification": "Unit test data",
"createdDate": "2024-02-20 10:22:13Z"
},
"63c639fec8bb7c8c06b0fe22589d7f2e95fd3a1b9bb4010961d3c94486a91b4e": {
"signature": "63c639fec8bb7c8c06b0fe22589d7f2e95fd3a1b9bb4010961d3c94486a91b4e",
"alternativeSignatures": [],
"memberOf": [
"default"
],
"justification": "Unit test data",
"createdDate": "2024-02-20 10:22:13Z"
},
"2e1df57b20080483b99c3d0aa1de7bfb007cbbbd45343560f0ea2f1477cdda7f": {
"signature": "2e1df57b20080483b99c3d0aa1de7bfb007cbbbd45343560f0ea2f1477cdda7f",
"alternativeSignatures": [],
"memberOf": [
"default"
],
"justification": "Unit test data",
"createdDate": "2024-02-20 10:22:13Z"
},
"60fd239d334298ee57982ad36171899470733b0565f9bc00e4b559055bb4b65c": {
"signature": "60fd239d334298ee57982ad36171899470733b0565f9bc00e4b559055bb4b65c",
"alternativeSignatures": [],
"memberOf": [
"default"
],
"justification": "Unit test data",
"createdDate": "2024-02-20 10:22:13Z"
},
"cb0545311ac45e0b78b48f086b5ab75612bb6c8a92bf4115f2f70c66bfff6ee6": {
"signature": "cb0545311ac45e0b78b48f086b5ab75612bb6c8a92bf4115f2f70c66bfff6ee6",
"alternativeSignatures": [],
"memberOf": [
"default"
],
"justification": "Unit test data",
"createdDate": "2024-02-20 10:22:13Z"
},
"020b01b4118ec031d8cc6925ebf1df0aa73ff1691eabed38c71f8e032971b4b7": {
"signature": "020b01b4118ec031d8cc6925ebf1df0aa73ff1691eabed38c71f8e032971b4b7",
"alternativeSignatures": [],
"memberOf": [
"default"
],
"justification": "Unit test data",
"createdDate": "2024-02-20 10:22:13Z"
},
"0e722333a0cb7a1c68f4f23bb6a2cd55f51e197cb0fce079901be64258777d9b": {
"signature": "0e722333a0cb7a1c68f4f23bb6a2cd55f51e197cb0fce079901be64258777d9b",
"alternativeSignatures": [],
"memberOf": [
"default"
],
"justification": "Unit test data",
"createdDate": "2024-02-20 10:22:13Z"
},
"a5d9c9fbcf9e89b1c0b173e56bc5c36bcc1d2706fbc02253109b266428c628dd": {
"signature": "a5d9c9fbcf9e89b1c0b173e56bc5c36bcc1d2706fbc02253109b266428c628dd",
"alternativeSignatures": [],
"memberOf": [
"default"
],
"justification": "Unit test data",
"createdDate": "2024-02-20 10:22:13Z"
},
"7b69a473e0bf71b21c85fd488b7078d34d3e7c8be3ab7fd3cef0d8e3af69ac64": {
"signature": "7b69a473e0bf71b21c85fd488b7078d34d3e7c8be3ab7fd3cef0d8e3af69ac64",
"alternativeSignatures": [],
"memberOf": [
"default"
],
"justification": "Unit test data",
"createdDate": "2024-02-20 10:22:13Z"
},
"d4a48c94f2e9feb9ac86451e56cf788f42442371f9eee17eb33a75ff174fe93f": {
"signature": "d4a48c94f2e9feb9ac86451e56cf788f42442371f9eee17eb33a75ff174fe93f",
"alternativeSignatures": [],
"memberOf": [
"default"
],
"justification": "Unit test data",
"createdDate": "2024-02-20 10:22:13Z"
},
"01462e1d7e4c0bbe58b525a90f718a86b40e0e07c1e52f6b70783d3d82bb1819": {
"signature": "01462e1d7e4c0bbe58b525a90f718a86b40e0e07c1e52f6b70783d3d82bb1819",
"alternativeSignatures": [],
"memberOf": [
"default"
],
"justification": "Unit test data",
"createdDate": "2024-02-20 10:22:13Z"
},
"d295cac3872ea43d805ece11f6f89ad1e73c525c6fd1dd20a70486a362ac35b2": {
"signature": "d295cac3872ea43d805ece11f6f89ad1e73c525c6fd1dd20a70486a362ac35b2",
"alternativeSignatures": [],
"memberOf": [
"default"
],
"justification": "Unit test data",
"createdDate": "2024-02-20 10:22:13Z"
},
"85b71727a6d63622ddd1e13b79d79161e65ffe16c08f0a422f4957e2f527860d": {
"signature": "85b71727a6d63622ddd1e13b79d79161e65ffe16c08f0a422f4957e2f527860d",
"alternativeSignatures": [],
"memberOf": [
"default"
],
"justification": "Unit test data",
"createdDate": "2024-02-20 10:22:13Z"
}
}
}

Просмотреть файл

@ -1,3 +1,4 @@
# This Yaml Document has been converted by ESAI Yaml Pipeline Conversion Tool.
parameters:
- name: testProxyAgent
type: boolean
@ -47,9 +48,8 @@ pr:
- 'docs/*'
extends:
template: .azure-pipelines/pipeline.yml
template: /.azure-pipelines/pipeline.yml@self
parameters:
componentDetection: ${{ eq(variables['Build.Reason'], 'PullRequest') }}
publishArtifacts: ${{ ne(variables['Build.Reason'], 'PullRequest') }}
buildAlternatePackage: false
testProxyAgent: ${{ parameters.testProxyAgent }}

Просмотреть файл

@ -1,3 +1,5 @@
# This Yaml Document has been converted by ESAI Yaml Pipeline Conversion Tool.
schedules:
- cron: '0 6 * * 2'
displayName: Scheduled weekly run
@ -35,11 +37,20 @@ parameters:
default: true
displayName: Test Proxy Agent
- name: disableNotifications
type: boolean
default: false
displayName: Disable Teams Notifications
# Skip CG
variables:
- name: OneES_JobScannedCount
value: 1
extends:
template: .azure-pipelines/pipeline.yml
template: /.azure-pipelines/pipeline.yml@self
parameters:
branch: $[ stageDependencies.Verify_release.Set_variables.outputs['SetReleaseVariables.releaseBranch'] ]
componentDetection: false
branch: $[ stageDependencies.Verify_release.Set_variables.outputs['SetReleaseVariables.releaseBranch'] ]
test: ${{ not(parameters.skipTests) }}
sign: true
publishArtifacts: true
@ -57,7 +68,9 @@ extends:
- stage: Verify_release
displayName: Verify it's a release run
pool:
vmImage: ubuntu-latest
name: 1ES-ABTT-Shared-Pool
image: abtt-ubuntu-2204
os: linux
jobs:
- job: Set_variables
displayName: Set release-specific variables
@ -129,7 +142,9 @@ extends:
AgentVersion: $[ stageDependencies.Verify_release.Set_variables.outputs['SetReleaseVariables.agentVersion'] ]
condition: and(succeeded(), eq(variables.IsRelease, 'True'))
pool:
vmImage: ubuntu-latest
name: 1ES-ABTT-Shared-Pool
image: abtt-ubuntu-2204
os: linux
steps:
- checkout: self
@ -271,7 +286,9 @@ extends:
- Verify_release
condition: and(succeeded(), not(${{ parameters.onlyGitHubRelease }}))
pool:
name: 1ES-Shared-Hosted-Pool_Linux-Mariner-2
name: 1ES-ABTT-Shared-Pool
image: abtt-mariner
os: linux
jobs:
################################################################################
- job: create_ado_prs
@ -314,9 +331,10 @@ extends:
dependsOn:
- Verify_release
- CreatePRs
condition: always()
pool:
vmImage: ubuntu-latest
name: 1ES-ABTT-Shared-Pool
image: abtt-ubuntu-2204
os: linux
jobs:
- job: j_SendPRsNotifications
displayName: Send Release PRs notifications
@ -328,6 +346,7 @@ extends:
CcPrLink: $[ stageDependencies.CreatePRs.create_ado_prs.outputs['s_CreateAdoPrs.CcPrLink'] ]
condition: |
and(
not(${{ parameters.disableNotifications }}),
eq(variables.IsRelease, 'True'),
not(${{ parameters.onlyGitHubRelease }})
)

Просмотреть файл

@ -93,9 +93,14 @@ exports.getHashes = function() {
const hashes = {};
for (const hashFileName of hashFiles) {
const hashFilePath = path.join(hashesDirPath, hashFileName);
if (fs.statSync(hashFilePath).isDirectory()) {
console.log(`Skipping directory ${hashFilePath}`);
continue;
}
const agentPackageFileName = hashFileName.replace('.sha256', '');
const hashFileContent = fs.readFileSync(path.join(hashesDirPath, hashFileName), 'utf-8').trim();
const hashFileContent = fs.readFileSync(hashFilePath, 'utf-8').trim();
// Last 64 characters are the sha256 hash value
const hashStringLength = 64;
const hash = hashFileContent.slice(hashFileContent.length - hashStringLength);