mirror of https://github.com/dotnet/tye.git
committed by
GitHub
9 changed files with 85 additions and 157 deletions
@ -1,86 +0,0 @@ |
|||||
Param( |
|
||||
[Parameter(Mandatory=$true)][string] $barToken, # Token generated at https://maestro-prod.westus2.cloudapp.azure.com/Account/Tokens |
|
||||
[Parameter(Mandatory=$true)][string] $gitHubPat, # GitHub personal access token from https://github.com/settings/tokens (no auth scopes needed) |
|
||||
[Parameter(Mandatory=$true)][string] $azdoPat, # Azure Dev Ops tokens from https://dev.azure.com/dnceng/_details/security/tokens (code read scope needed) |
|
||||
[Parameter(Mandatory=$true)][string] $outputFolder, # Where the graphviz.txt file will be created |
|
||||
[string] $darcVersion, # darc's version |
|
||||
[string] $graphvizVersion = '2.38', # GraphViz version |
|
||||
[switch] $includeToolset # Whether the graph should include toolset dependencies or not. i.e. arcade, optimization. For more about |
|
||||
# toolset dependencies see https://github.com/dotnet/arcade/blob/master/Documentation/Darc.md#toolset-vs-product-dependencies |
|
||||
) |
|
||||
|
|
||||
function CheckExitCode ([string]$stage) |
|
||||
{ |
|
||||
$exitCode = $LASTEXITCODE |
|
||||
if ($exitCode -ne 0) { |
|
||||
Write-PipelineTelemetryError -Category 'Arcade' -Message "Something failed in stage: '$stage'. Check for errors above. Exiting now..." |
|
||||
ExitWithExitCode $exitCode |
|
||||
} |
|
||||
} |
|
||||
|
|
||||
try { |
|
||||
$ErrorActionPreference = 'Stop' |
|
||||
. $PSScriptRoot\tools.ps1 |
|
||||
|
|
||||
Import-Module -Name (Join-Path $PSScriptRoot 'native\CommonLibrary.psm1') |
|
||||
|
|
||||
Push-Location $PSScriptRoot |
|
||||
|
|
||||
Write-Host 'Installing darc...' |
|
||||
. .\darc-init.ps1 -darcVersion $darcVersion |
|
||||
CheckExitCode 'Running darc-init' |
|
||||
|
|
||||
$engCommonBaseDir = Join-Path $PSScriptRoot 'native\' |
|
||||
$graphvizInstallDir = CommonLibrary\Get-NativeInstallDirectory |
|
||||
$nativeToolBaseUri = 'https://netcorenativeassets.blob.core.windows.net/resource-packages/external' |
|
||||
$installBin = Join-Path $graphvizInstallDir 'bin' |
|
||||
|
|
||||
Write-Host 'Installing dot...' |
|
||||
.\native\install-tool.ps1 -ToolName graphviz -InstallPath $installBin -BaseUri $nativeToolBaseUri -CommonLibraryDirectory $engCommonBaseDir -Version $graphvizVersion -Verbose |
|
||||
|
|
||||
$darcExe = "$env:USERPROFILE\.dotnet\tools" |
|
||||
$darcExe = Resolve-Path "$darcExe\darc.exe" |
|
||||
|
|
||||
Create-Directory $outputFolder |
|
||||
|
|
||||
# Generate 3 graph descriptions: |
|
||||
# 1. Flat with coherency information |
|
||||
# 2. Graphviz (dot) file |
|
||||
# 3. Standard dependency graph |
|
||||
$graphVizFilePath = "$outputFolder\graphviz.txt" |
|
||||
$graphVizImageFilePath = "$outputFolder\graph.png" |
|
||||
$normalGraphFilePath = "$outputFolder\graph-full.txt" |
|
||||
$flatGraphFilePath = "$outputFolder\graph-flat.txt" |
|
||||
$baseOptions = @( '--github-pat', "$gitHubPat", '--azdev-pat', "$azdoPat", '--password', "$barToken" ) |
|
||||
|
|
||||
if ($includeToolset) { |
|
||||
Write-Host 'Toolsets will be included in the graph...' |
|
||||
$baseOptions += @( '--include-toolset' ) |
|
||||
} |
|
||||
|
|
||||
Write-Host 'Generating standard dependency graph...' |
|
||||
& "$darcExe" get-dependency-graph @baseOptions --output-file $normalGraphFilePath |
|
||||
CheckExitCode 'Generating normal dependency graph' |
|
||||
|
|
||||
Write-Host 'Generating flat dependency graph and graphviz file...' |
|
||||
& "$darcExe" get-dependency-graph @baseOptions --flat --coherency --graphviz $graphVizFilePath --output-file $flatGraphFilePath |
|
||||
CheckExitCode 'Generating flat and graphviz dependency graph' |
|
||||
|
|
||||
Write-Host "Generating graph image $graphVizFilePath" |
|
||||
$dotFilePath = Join-Path $installBin "graphviz\$graphvizVersion\release\bin\dot.exe" |
|
||||
& "$dotFilePath" -Tpng -o"$graphVizImageFilePath" "$graphVizFilePath" |
|
||||
CheckExitCode 'Generating graphviz image' |
|
||||
|
|
||||
Write-Host "'$graphVizFilePath', '$flatGraphFilePath', '$normalGraphFilePath' and '$graphVizImageFilePath' created!" |
|
||||
} |
|
||||
catch { |
|
||||
if (!$includeToolset) { |
|
||||
Write-Host 'This might be a toolset repo which includes only toolset dependencies. ' -NoNewline -ForegroundColor Yellow |
|
||||
Write-Host 'Since -includeToolset is not set there is no graph to create. Include -includeToolset and try again...' -ForegroundColor Yellow |
|
||||
} |
|
||||
Write-Host $_.ScriptStackTrace |
|
||||
Write-PipelineTelemetryError -Category 'Arcade' -Message $_ |
|
||||
ExitWithExitCode 1 |
|
||||
} finally { |
|
||||
Pop-Location |
|
||||
} |
|
||||
@ -1,48 +0,0 @@ |
|||||
parameters: |
|
||||
# Optional: dependencies of the job |
|
||||
dependsOn: '' |
|
||||
|
|
||||
# Optional: A defined YAML pool - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#pool |
|
||||
pool: {} |
|
||||
|
|
||||
# Optional: Include toolset dependencies in the generated graph files |
|
||||
includeToolset: false |
|
||||
|
|
||||
jobs: |
|
||||
- job: Generate_Graph_Files |
|
||||
|
|
||||
dependsOn: ${{ parameters.dependsOn }} |
|
||||
|
|
||||
displayName: Generate Graph Files |
|
||||
|
|
||||
pool: ${{ parameters.pool }} |
|
||||
|
|
||||
variables: |
|
||||
# Publish-Build-Assets provides: MaestroAccessToken, BotAccount-dotnet-maestro-bot-PAT |
|
||||
# DotNet-AllOrgs-Darc-Pats provides: dn-bot-devdiv-dnceng-rw-code-pat |
|
||||
- group: Publish-Build-Assets |
|
||||
- group: DotNet-AllOrgs-Darc-Pats |
|
||||
- name: _GraphArguments |
|
||||
value: -gitHubPat $(BotAccount-dotnet-maestro-bot-PAT) |
|
||||
-azdoPat $(dn-bot-devdiv-dnceng-rw-code-pat) |
|
||||
-barToken $(MaestroAccessToken) |
|
||||
-outputFolder '$(Build.StagingDirectory)/GraphFiles/' |
|
||||
- ${{ if ne(parameters.includeToolset, 'false') }}: |
|
||||
- name: _GraphArguments |
|
||||
value: ${{ variables._GraphArguments }} -includeToolset |
|
||||
|
|
||||
steps: |
|
||||
- task: PowerShell@2 |
|
||||
displayName: Generate Graph Files |
|
||||
inputs: |
|
||||
filePath: eng\common\generate-graph-files.ps1 |
|
||||
arguments: $(_GraphArguments) |
|
||||
continueOnError: true |
|
||||
- task: PublishBuildArtifacts@1 |
|
||||
displayName: Publish Graph to Artifacts |
|
||||
inputs: |
|
||||
PathtoPublish: '$(Build.StagingDirectory)/GraphFiles' |
|
||||
PublishLocation: Container |
|
||||
ArtifactName: GraphFiles |
|
||||
continueOnError: true |
|
||||
condition: always() |
|
||||
@ -0,0 +1,31 @@ |
|||||
|
parameters: |
||||
|
# See schema documentation in /Documentation/AzureDevOps/TemplateSchema.md |
||||
|
continueOnError: false |
||||
|
# Required: A collection of jobs to run - https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=vsts&tabs=schema#job |
||||
|
jobs: [] |
||||
|
# Optional: if specified, restore and use this version of Guardian instead of the default. |
||||
|
overrideGuardianVersion: '' |
||||
|
|
||||
|
jobs: |
||||
|
- template: /eng/common/templates/jobs/jobs.yml |
||||
|
parameters: |
||||
|
enableMicrobuild: false |
||||
|
enablePublishBuildArtifacts: false |
||||
|
enablePublishTestResults: false |
||||
|
enablePublishBuildAssets: false |
||||
|
enablePublishUsingPipelines: false |
||||
|
enableTelemetry: true |
||||
|
|
||||
|
variables: |
||||
|
- group: Publish-Build-Assets |
||||
|
# The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in |
||||
|
# sync with the packages.config file. |
||||
|
- name: DefaultGuardianVersion |
||||
|
value: 0.109.0 |
||||
|
- name: GuardianPackagesConfigFile |
||||
|
value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config |
||||
|
- name: GuardianVersion |
||||
|
value: ${{ coalesce(parameters.overrideGuardianVersion, '$(DefaultGuardianVersion)') }} |
||||
|
|
||||
|
jobs: ${{ parameters.jobs }} |
||||
|
|
||||
@ -0,0 +1,32 @@ |
|||||
|
parameters: |
||||
|
# Language that should be analyzed. Defaults to csharp |
||||
|
language: csharp |
||||
|
# Build Commands |
||||
|
buildCommands: '' |
||||
|
overrideParameters: '' # Optional: to override values for parameters. |
||||
|
additionalParameters: '' # Optional: parameters that need user specific values eg: '-SourceToolsList @("abc","def") -ArtifactToolsList @("ghi","jkl")' |
||||
|
# Optional: if specified, restore and use this version of Guardian instead of the default. |
||||
|
overrideGuardianVersion: '' |
||||
|
# Optional: if true, publish the '.gdn' folder as a pipeline artifact. This can help with in-depth |
||||
|
# diagnosis of problems with specific tool configurations. |
||||
|
publishGuardianDirectoryToPipeline: false |
||||
|
# The script to run to execute all SDL tools. Use this if you want to use a script to define SDL |
||||
|
# parameters rather than relying on YAML. It may be better to use a local script, because you can |
||||
|
# reproduce results locally without piecing together a command based on the YAML. |
||||
|
executeAllSdlToolsScript: 'eng/common/sdl/execute-all-sdl-tools.ps1' |
||||
|
# There is some sort of bug (has been reported) in Azure DevOps where if this parameter is named |
||||
|
# 'continueOnError', the parameter value is not correctly picked up. |
||||
|
# This can also be remedied by the caller (post-build.yml) if it does not use a nested parameter |
||||
|
# optional: determines whether to continue the build if the step errors; |
||||
|
sdlContinueOnError: false |
||||
|
|
||||
|
steps: |
||||
|
- template: /eng/common/templates/steps/execute-sdl.yml |
||||
|
parameters: |
||||
|
overrideGuardianVersion: ${{ parameters.overrideGuardianVersion }} |
||||
|
executeAllSdlToolsScript: ${{ parameters.executeAllSdlToolsScript }} |
||||
|
overrideParameters: ${{ parameters.overrideParameters }} |
||||
|
additionalParameters: '${{ parameters.additionalParameters }} |
||||
|
-CodeQLAdditionalRunConfigParams @("BuildCommands < ${{ parameters.buildCommands }}", "Language < ${{ parameters.language }}")' |
||||
|
publishGuardianDirectoryToPipeline: ${{ parameters.publishGuardianDirectoryToPipeline }} |
||||
|
sdlContinueOnError: ${{ parameters.sdlContinueOnError }} |
||||
Loading…
Reference in new issue