Skip to content

Commit

Permalink
Update Continuous-Integration.yml for Azure Pipelines
Browse files Browse the repository at this point in the history
  • Loading branch information
karthikmacherla committed Nov 27, 2023
1 parent 40bf4f8 commit 8ab0f8d
Showing 1 changed file with 286 additions and 61 deletions.
347 changes: 286 additions & 61 deletions Exdi/exdigdbsrv/yaml/Continuous-Integration.yml
Original file line number Diff line number Diff line change
@@ -1,91 +1,316 @@
#################################################################################
# OneBranch Pipelines - Official #
# This pipeline was created by EasyStart from a sample located at: #
# https://aka.ms/obpipelines/easystart/samples #
# Documentation: https://aka.ms/obpipelines #
# Yaml Schema: https://aka.ms/obpipelines/yaml/schema #
# Retail Tasks: https://aka.ms/obpipelines/tasks #
# Support: https://aka.ms/onebranchsup #
#################################################################################

name: $(TeamProject)_$(BuildDefinitionName)_$(SourceBranchName)_$(Date:yyyyMMdd)$(Rev:.r)

trigger:
trigger:
batch: true
branches:
include:
- master
paths:
include:
- Exdi/exdigdbsrv
- main

pool:
vmImage: 'windows-2022'
parameters: # parameters are shown up in ADO UI in a build queue time
- name: 'debug'
displayName: 'Enable debug output'
type: boolean
default: true # set for now in order to test

variables:
ProjectName: 'ExdiGdbSrv'
buildDisplayName: 'Build ExdiGdbSrv VPack'
buildConfiguration: 'Release'
major: 1
minor: 1
majorDotMinor: '$(major).$(minor)'
revision: $[counter(variables['majorDotMinor'], 0)]
CDP_DEFINITION_BUILD_COUNT: $[counter('', 0)] # needed for onebranch.pipeline.version task https://aka.ms/obpipelines/versioning
system.debug: ${{ parameters.debug }}
WindowsContainerImage: 'onebranch.azurecr.io/windows/ltsc2022/vse2022:latest' #'onebranch.azurecr.io/windows/ltsc2022/vse2022:latest' # Docker image which is used to build the project https://aka.ms/obpipelines/containers
ENABLE_PRS_DELAYSIGN: 1

steps:
- template: Build-Steps.yml
resources:
repositories:
- repository: templates
type: git
name: OneBranch.Pipelines/GovernedTemplates
ref: refs/heads/main

extends:
template: v2/Microsoft.Official.yml@templates # https://aka.ms/obpipelines/templates
parameters:
BuildConfiguration: $(buildConfiguration)
platform:
name: 'windows_undocked'
cloudvault: # Please refer the wiki for more information: https://aka.ms/obpipelines/cloudvault
enabled: false
globalSdl: # Refer the wiki for more options in this parameter: https://aka.ms/obpipelines/sdl
tsa:
enabled: false # onebranch publish all sdl results to TSA. If TSA is disabled all SDL tools will forced into 'break' build mode. Please provide TSAOptions.json.
binskim:
break: true # always break the build on binskim issues in addition to TSA upload
policheck:
break: true # always break the build on policheck issues. You can disable it by setting to 'false'
# suppression:
# suppressionFile: $(Build.SourcesDirectory)\.gdn\global.gdnsuppress
featureFlags:
# Use Windows 2022 for OneBranch's own containers, as with WindowsContainerImage above.
WindowsHostVersion: '1ESWindows2022'

- task: PublishBuildArtifacts@1
displayName: 'Publish Artifact: bin'
inputs:
PathtoPublish: '$(Build.SourcesDirectory)\Exdi\exdigdbsrv\$(buildConfiguration)'
stages:
- stage: build
jobs:
- job: PrepareBuildNumber
pool:
type: windows # read more about custom job pool types at https://aka.ms/obpipelines/yaml/jobs

variables: # More settings at https://aka.ms/obpipelines/yaml/jobs
ob_outputDirectory: '$(Build.ArtifactStagingDirectory)' # this directory is uploaded to pipeline artifacts, reddog and cloudvault. More info at https://aka.ms/obpipelines/artifacts
# https://aka.ms/obpipelines/sdl
ob_sdl_binskim_break: true # always break the build on binskim issues, even if TSA enabled. You can disable it by setting to 'false'
ob_sdl_roslyn_break: true
ob_sdl_codeSignValidation_excludes: -|**\*.pdb;-|**\Newtonsoft.Json.dll;-|**\*.js;-|**\*.json;-|**\*.txt;-|**\*.nuspec;-|**\*.nupkg
ob_symbolsPublishing_enabled: false # https://aka.ms/obpipelines/symbols
# Use "vnext" for the checks so "CheckCFlags" works. As of this writing it fails with this error:"[CheckCFlags]Missing symbol file for binary: C:\__w\1\a\build\Microsoft.Identity.Client.dll."
# TODO: Consider removing when no longer needed.
Windows_SDL_Container_Version: 'vnext'
# ${{ if eq(variables['Build.SourceBranch'], 'refs/heads/main') }}: # conditionally enable symbolsPublishing for master branch only
# ob_symbolsPublishing_enabled: true # https://aka.ms/obpipelines/symbols
# ${{ else }}:
# ob_sdl_suppression_suppressionFile: $(Build.SourcesDirectory)\.gdn\job.gdnsuppress

- task: PublishSymbols@2
displayName: 'Source index symbols 2'
inputs:
SearchPattern: '$(Build.SourcesDirectory)\Exdi\exdigdbsrv\$(buildConfiguration)\**\*.pdb'
SymbolServerType: 'TeamServices'
steps:
- script: echo '$(Build.BuildNumber)'
displayName: Display BuildNumber 1

- task: onebranch.pipeline.version@1 # generates automatic version. For other versioning options check https://aka.ms/obpipelines/versioning
displayName: Setup BuildNumber
inputs:
system: 'RevisionCounter'
major: '1'
minor: '3'
exclude_commit: true

- script: echo '$(Build.BuildNumber)'
displayName: Display BuildNumber 2

- powershell: |
Write-Host "Build Number: $(Build.BuildNumber)" # looks like 1.3.02306.79
$curDate = Get-Date

# Maximum number for either of the version parts can't be above 65534 - https://stackoverflow.com/questions/37941195/the-specified-version-string-does-not-conform-to-the-required-format-major-mi

$packageVersion = "$($curDate.ToString("yyyy.MMdd")).$(CDP_PATCH_NUMBER)" # like 2023.0425.0230679
Write-Host "Custom Package version: $($packageVersion)"

$buildVersion = "$($curDate.ToString("yyyy.MMdd")).$(CDP_BUILD_NUMBER).$(CDP_REVISION_NUMBER)" # like 2023.0425.02306.79
Write-Host "Custom Build version: $($buildVersion)"

Write-Host "##vso[task.setvariable variable=Package_Version;isOutput=true]$($packageVersion)"
Write-Host "##vso[task.setvariable variable=Build_Version;isOutput=true]$($buildVersion)"
displayName: 'Prepare custom release version'
name: CustomBuildNumber

- task: ms-vscs-artifact.build-tasks.artifactSymbolTask-1.artifactSymbolTask@0
displayName: 'Publish to Symbols to Artifact Services'
inputs:
symbolServiceURI: 'https://microsoft.artifacts.visualstudio.com/DefaultCollection'
requestName: 'DebuggingExperiences/$(Build.BuildNumber)/$(Build.BuildId)'
sourcePath: '$(Build.SourcesDirectory)\Exdi\exdigdbsrv'
expirationInDays: '365'
- job: build_release
pool:
type: windows

#Add the ExdiGdbSrv vpack steps.
variables:
# this directory is uploaded to pipeline artifacts, reddog and cloudvault. More info at https://aka.ms/obpipelines/artifacts
ob_outputDirectory: '$(Build.SourcesDirectory)\build'
ob_artifactBaseName: release
GITHUB_CHECKOUT_PATH: 'Windbg-Samples'
WindbgSamplesREPOROOT: $(Pipeline.Workspace)\Windbg-Samples

- task: CmdLine@2
displayName: dir files for debugging
inputs:
script: >
echo dir Build.SourcesDirectory...
steps:
- task: NuGetToolInstaller@1

dir /s/b $(Build.SourcesDirectory)\Exdi\exdigdbsrv
- task: 333b11bd-d341-40d9-afcf-b32d5ce6f23b@2
inputs:
restoreSolution: '$(Build.SourcesDirectory)\Exdi\**\*.sln'

- task: PowerShell@2
displayName: "Create sourcelink file for current commit"
timeoutInMinutes: 30
inputs:
filePath: $(Build.SourcesDirectory)\Exdi\exdigdbsrv\exdigdbsrv\SourceLinkGeneration.ps1
arguments: "-SourcesDir $(WindbgSamplesREPOROOT) -OutputDir $(Build.SourcesDirectory)\\Exdi\\exdigdbsrv\\exdigdbsrv\\ -GitRelativePath /Exdi/exdigdbsrv -GitOwner microsoft"
pwsh: true

echo dir Exdi\exdigdbsrv\Release\x64...
- task: VSBuild@1
displayName: 'Build x64'
inputs:
platform: 'x64'
solution: '$(Build.SourcesDirectory)\Exdi\**\*.sln'
configuration: '$(buildConfiguration)'

dir $(Build.SourcesDirectory)\Exdi\exdigdbsrv\Release\x64
- task: VSBuild@1
displayName: 'Build ARM64'
inputs:
platform: 'ARM64'
solution: '$(WindbgSamplesREPOROOT)\Exdi\**\*.sln'
configuration: '$(buildConfiguration)'

echo dir Exdi\exdigdbsrv\Release\ARM64...
- powershell: |
echo "dir -r $(WindbgSamplesREPOROOT)"
dir -r $(WindbgSamplesREPOROOT)
dir $(Build.SourcesDirectory)\Exdi\exdigdbsrv\Release\ARM64
displayName: 'Debug Print'
# prepare vpack folder here
- task: CmdLine@2
displayName: Prepare VPack Output Folder
inputs:
script: >
echo -- dir Build.SourcesDirectory
md $(Agent.TempDirectory)
dir /s/b $(Build.SourcesDirectory)
md $(Agent.TempDirectory)\ExdiGdbSrv.vpack.temp
md $(ob_outputDirectory)
md $(Agent.TempDirectory)\ExdiGdbSrv.vpack.temp\x64
md $(ob_outputDirectory)\x64\
md $(Agent.TempDirectory)\ExdiGdbSrv.vpack.temp\ARM64
md $(ob_outputDirectory)\ARM64\
echo Copy files ...
echo Copy files ...
copy $(WindbgSamplesREPOROOT)\Exdi\exdigdbsrv\Release\x64\ExdiGdbSrv.dll $(ob_outputDirectory)\x64
copy $(WindbgSamplesREPOROOT)\Exdi\exdigdbsrv\GdbSrvControllerLib\systemregisters.xml $(ob_outputDirectory)\x64
copy $(WindbgSamplesREPOROOT)\Exdi\exdigdbsrv\GdbSrvControllerLib\exdiConfigData.xml $(ob_outputDirectory)\x64
copy $(WindbgSamplesREPOROOT)\Exdi\exdigdbsrv\Release\ARM64\ExdiGdbSrv.dll $(ob_outputDirectory)\ARM64
copy $(WindbgSamplesREPOROOT)\Exdi\exdigdbsrv\GdbSrvControllerLib\systemregisters.xml $(ob_outputDirectory)\ARM64
copy $(WindbgSamplesREPOROOT)\Exdi\exdigdbsrv\GdbSrvControllerLib\exdiConfigData.xml $(ob_outputDirectory)\ARM64
copy $(Build.SourcesDirectory)\Exdi\exdigdbsrv\Release\x64\ExdiGdbSrv.dll $(Agent.TempDirectory)\ExdiGdbSrv.vpack.temp\x64
copy $(Build.SourcesDirectory)\Exdi\exdigdbsrv\GdbSrvControllerLib\systemregisters.xml $(Agent.TempDirectory)\ExdiGdbSrv.vpack.temp\x64
rmdir /s /q $(WindbgSamplesREPOROOT)
copy $(Build.SourcesDirectory)\Exdi\exdigdbsrv\GdbSrvControllerLib\exdiConfigData.xml $(Agent.TempDirectory)\ExdiGdbSrv.vpack.temp\x64
- job: build_vpack
dependsOn:
- PrepareBuildNumber
- build_release
pool:
type: windows # read more about custom job pool types at https://aka.ms/obpipelines/yaml/jobs

# For VPack creation you can refer to the following links:
# https://www.osgwiki.com/wiki/OneBranch_Windows_Undocked_Pipelines
# https://www.osgwiki.com/wiki/Submit_Files_to_Git_in_Package_ES

variables:
REPOROOT: $(Build.SourcesDirectory)
DBG_VPACK_NAME: 'Windows.Debugger.ExdiGdbSrv'
DBG_PR_WORK_ITEM: '46960971'
DBG_VPACK_MAN_FILE: 'ExdiGdbSrv.man'
DBG_VPACK_MAN_FOLDER: '/onecore/sdktools/debuggers/external/vpack'
Package_Version: $[ dependencies.PrepareBuildNumber.outputs['CustomBuildNumber.Package_Version'] ]
ob_outputDirectory: '$(System.DefaultWorkingDirectory)\build_and_pack' # this directory is uploaded to pipeline artifacts, reddog and cloudvault. More info at https://aka.ms/obpipelines/artifacts

## createVPack: # information for Vpack (Learn more: https://www.osgwiki.com/wiki/OneBranch_Windows_Undocked_Pipelines)
ob_createvpack_enabled: true
ob_createvpack_packagename: '$(DBG_VPACK_NAME)' # "$(VpackPrefix).release.$(buildPlatform)"
ob_createvpack_description: '$(DBG_VPACK_NAME) release' # "$(VpackPrefix)"
# ob_artifactSuffix: $(binId)
# ob_createvpack_relPath: $(Provider_Build_Folder)
# ob_createvpack_targetDestinationDirectory: $(Provider_Build_Folder)
ob_createvpack_targetDestinationDirectory: '$(Destination)'
ob_createvpack_versionAs: string
ob_createvpack_version: $(Package_Version)
ob_createvpack_owneralias: 'dex-triage@microsoft.com'
ob_createvpack_provData: true
ob_createvpack_propsFile: false
ob_createvpack_verbose: true
# updateOSManifest: #information for GitSubmit
ob_updateOSManifest_enabled: true
ob_updateOSManifest_osbranch: 'official/oc_es_debug'
ob_updateOSManifest_source: "$(DBG_VPACK_MAN_FOLDER)/$(DBG_VPACK_MAN_FILE)"
ob_updateOSManifest_destination: '$(REPOROOT)'
ob_updateOSManifest_gitcheckinConfigPath: ''
ob_updateOSManifest_manifest: ''
## << Please refer wiki for more Vpack options >>

steps:
- task: DownloadPipelineArtifact@2
displayName: 'Download build artifacts'
inputs:
artifact: release
path: $(System.DefaultWorkingDirectory)\extracted

copy $(Build.SourcesDirectory)\Exdi\exdigdbsrv\Release\ARM64\ExdiGdbSrv.dll $(Agent.TempDirectory)\ExdiGdbSrv.vpack.temp\ARM64
- script: |
robocopy "$(System.DefaultWorkingDirectory)\extracted" "$(System.DefaultWorkingDirectory)\build_and_pack" *.* /s
copy $(Build.SourcesDirectory)\Exdi\exdigdbsrv\GdbSrvControllerLib\systemregisters.xml $(Agent.TempDirectory)\ExdiGdbSrv.vpack.temp\ARM64
dir /s/b $(System.DefaultWorkingDirectory)\build_and_pack
copy $(Build.SourcesDirectory)\Exdi\exdigdbsrv\GdbSrvControllerLib\exdiConfigData.xml $(Agent.TempDirectory)\ExdiGdbSrv.vpack.temp\ARM64
exit 0
displayName: 'Copy files to build_and_pack'
- task: CmdLine@2
displayName: Copy Checkin.json file
inputs:
script: >
copy /Y $(REPOROOT)\Scripts\GitCheckin.json $(REPOROOT)\GitCheckin.json
echo done.

- task: PkgESVPack@12
displayName: 'Create ExdiGdbSrv VPack '
inputs:
sourceDirectory: '$(Agent.TempDirectory)\ExdiGdbSrv.vpack.temp'
description: 'ExdiGdbSrv binary'
pushPkgName: ExdiGdbSrv.vpack.binary
- pwsh: |
Write-Host "PS Version (pwsh task): $($PSVersionTable.PSVersion.ToString())"
$jsonFileName = Join-Path -Path "$(REPOROOT)"-ChildPath "GitCheckin.json"
$fileContent = Get-Content -Path $jsonFileName -Raw
# PowerShell 7.x verion of 'ConvertFrom-Json' strips out the comments from JSON file
$fileContentAsJson = ConvertFrom-Json $fileContent
$fileContent = $fileContentAsJson | ConvertTo-Json -depth 100
$fileContent = $fileContent -replace 'DBG_VPACK_PT_TITLE', "Sync to latest $(DBG_VPACK_NAME) VPack update $(Package_Version)"
$fileContent = $fileContent -replace 'DBG_PR_WORK_ITEM', "$(DBG_PR_WORK_ITEM)"
$fileContent = $fileContent -replace 'DBG_VPACK_MAN_FOLDER', "$(DBG_VPACK_MAN_FOLDER)"
$fileContent = $fileContent -replace 'DBG_VPACK_MAN_FILE', "$(DBG_VPACK_MAN_FILE)"
[System.IO.File]::WriteAllText($jsonFileName, $fileContent)
#
displayName: 'Update GitCheckin.json'
- task: CmdLine@2
displayName: 'Debug print 2'
inputs:
script: >
echo --- GitCheckin.json
type $(REPOROOT)\GitCheckin.json

echo --- Package_Version

echo $(Package_Version)

echo --- all variables

set

echo --- dir Build.SourcesDirectory

dir /s/b $(Build.SourcesDirectory)

echo --- dir Build.BinariesDirectory

dir /s/b $(Build.BinariesDirectory)

echo --- dir System.DefaultWorkingDirectory

dir /s/b $(System.DefaultWorkingDirectory)

echo --- dir Build.ArtifactStagingDirectory

dir /s/b "$(Build.ArtifactStagingDirectory)"

echo --- dir $(System.DefaultWorkingDirectory)\build_and_pack

dir /s/b "$(System.DefaultWorkingDirectory)\build_and_pack"

echo --- dir $(REPOROOT)

dir /s/b $(REPOROOT)

echo --- done.

0 comments on commit 8ab0f8d

Please sign in to comment.