From 84236209d89276b3170159c26c0cc2829bbc91aa Mon Sep 17 00:00:00 2001 From: Krzysztof Wicher Date: Wed, 10 Apr 2019 13:33:33 -0700 Subject: [PATCH 1/5] Update License Update License to match https://github.com/dotnet/arcade/commit/1e49672184ca450fbf3ea73e1122924ed4bb2ccc and fix issue with https://github.com/dotnet/iot/pull/339 --- LICENSE | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/LICENSE b/LICENSE index f6b64dc48f..984713a496 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,8 @@ -MIT License +The MIT License (MIT) -Copyright (c) 2018 .NET Foundation +Copyright (c) .NET Foundation and Contributors + +All rights reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 7812c790d77be7cb7c2d2956474b214638e1a247 Mon Sep 17 00:00:00 2001 From: Krzysztof Wicher Date: Thu, 11 Apr 2019 11:20:09 -0700 Subject: [PATCH 2/5] define only PackageLicenseExpression, update SDK to 2.1.503 --- Directory.Build.props | 9 ++------- global.json | 4 ++-- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/Directory.Build.props b/Directory.Build.props index 169bc4a620..9621d00570 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -3,25 +3,20 @@ - - $(CopyrightNetFoundation) + MIT - + false C# true true Latest - - - LICENSE - diff --git a/global.json b/global.json index 5d45e06eb5..8d1345bebf 100644 --- a/global.json +++ b/global.json @@ -1,9 +1,9 @@ { "tools": { - "dotnet": "2.1.403" + "dotnet": "2.1.503" }, "sdk": { - "version": "2.1.403" + "version": "2.1.503" }, "msbuild-sdks": { "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.19161.14" From bdcfece702541cc7b40e548012ec7ae02984c4b3 Mon Sep 17 00:00:00 2001 From: Krzysztof Wicher Date: Thu, 11 Apr 2019 11:33:37 -0700 Subject: [PATCH 3/5] add copyright back --- Directory.Build.props | 1 + 1 file changed, 1 insertion(+) diff --git a/Directory.Build.props b/Directory.Build.props index 9621d00570..82ab570fbd 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -4,6 +4,7 @@ + $(CopyrightNetFoundation) MIT From 36b93e8be7cbc45f510aaa6cc3f0a220d5b8f282 Mon Sep 17 00:00:00 2001 From: Krzysztof Wicher Date: Thu, 11 Apr 2019 12:56:40 -0700 Subject: [PATCH 4/5] remove Copyright from .props --- src/Iot.Device.Bindings/Directory.Build.props | 3 +-- src/System.Device.Gpio/Directory.Build.props | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/Iot.Device.Bindings/Directory.Build.props b/src/Iot.Device.Bindings/Directory.Build.props index d5b51ff0e6..32ab593778 100644 --- a/src/Iot.Device.Bindings/Directory.Build.props +++ b/src/Iot.Device.Bindings/Directory.Build.props @@ -4,9 +4,8 @@ 0 1 This preview package provides a set of Device Bindings that use System.Device.Gpio package to communicate with a microcontroller. - Microsoft Corporation, All rights reserved. .NET Core GPIO Pins SPI I2C PWM BCM2835 BCM2837 RPi IoT Device Bindings - \ No newline at end of file + diff --git a/src/System.Device.Gpio/Directory.Build.props b/src/System.Device.Gpio/Directory.Build.props index 86cdad5da3..0638ea40a9 100644 --- a/src/System.Device.Gpio/Directory.Build.props +++ b/src/System.Device.Gpio/Directory.Build.props @@ -5,11 +5,10 @@ 1 The System.Device.Gpio preview package supports general-purpose I/O (GPIO) pins, PWM, I2C, SPI and related interfaces for interacting with low level hardware pins to control hardware sensors, displays and input devices on single-board-computers; Raspberry Pi, BeagleBoard, HummingBoard, ODROID, and other single-board-computers that are supported by Linux and Windows 10 IoT Core OS can be used with .NET Core and System.Device.Gpio. On Windows 10 IoT Core OS, the library wraps the Windows.Devices.Gpio.dll assembly. On Linux, the library supports three driver modes: libgpiod for fast full-featured GPIO access on all Linux distros since version 4.8 of the Linux kernel; slower and limited-functionality GPIO access via the deprecated Sysfs interface (/sys/class/gpio) when running on older Linux distro versions with a Linux kernel older than version 4.8; and lastly board-specific Linux drivers that access GPIO addresses in /dev/mem for fasted performance at the trade-off of being able to run on very specific versions of single-board-computers. In the future, the board-specific Linux drivers may be removed in favor of only supporting libgpiod and sysfs Linux interfaces. In addition to System.Device.Gpio, the optional IoT.Device.Bindings NuGet package contains device bindings for many sensors, displays, and input devices that can be used with System.Device.Gpio. - Microsoft Corporation, All rights reserved. false .NET Core GPIO Pins SPI I2C PWM BCM2835 RPi IoT - + win From 9cee3e96f2e4c0c089eb3157e8f92436d2a5bf12 Mon Sep 17 00:00:00 2001 From: Jose Perez Rodriguez Date: Fri, 12 Apr 2019 10:53:03 -0700 Subject: [PATCH 5/5] Get latest version of arcade to get new licensing changes --- eng/Version.Details.xml | 4 +- eng/common/PublishToPackageFeed.proj | 52 +++++++++--- eng/common/PublishToSymbolServers.proj | 82 ++++++++++++++++++ eng/common/SigningValidation.proj | 83 +++++++++++++++++++ eng/common/darc-init.ps1 | 2 +- eng/common/darc-init.sh | 2 +- eng/common/generate-graph-files.ps1 | 46 +++++++--- eng/common/init-tools-native.ps1 | 14 +++- .../templates/job/publish-build-assets.yml | 4 + eng/common/templates/jobs/jobs.yml | 4 + .../templates/phases/publish-build-assets.yml | 2 + eng/common/templates/steps/send-to-helix.yml | 8 +- eng/common/tools.ps1 | 4 + global.json | 2 +- 14 files changed, 280 insertions(+), 29 deletions(-) create mode 100644 eng/common/PublishToSymbolServers.proj create mode 100644 eng/common/SigningValidation.proj diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 87b8ad3deb..221b712141 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -2,9 +2,9 @@ - + https://github.com/dotnet/arcade - 2ca74c76adc84f0459b4a0352034db463d0b910f + 9d0fd805448082c8d55e2434607b481bca70a146 diff --git a/eng/common/PublishToPackageFeed.proj b/eng/common/PublishToPackageFeed.proj index b26d28a90b..e17f72644e 100644 --- a/eng/common/PublishToPackageFeed.proj +++ b/eng/common/PublishToPackageFeed.proj @@ -1,21 +1,29 @@ - + + + netcoreapp2.1 + + + - + @@ -26,7 +34,31 @@ - + + + + https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json + https://dotnetfeed.blob.core.windows.net/arcade-validation/index.json + https://dotnetfeed.blob.core.windows.net/aspnet-aspnetcore/index.json + https://dotnetfeed.blob.core.windows.net/aspnet-aspnetcore-tooling/index.json + https://dotnetfeed.blob.core.windows.net/aspnet-entityframeworkcore/index.json + https://dotnetfeed.blob.core.windows.net/aspnet-extensions/index.json + https://dotnetfeed.blob.core.windows.net/dotnet-coreclr/index.json + https://dotnetfeed.blob.core.windows.net/dotnet-sdk/index.json + https://dotnetfeed.blob.core.windows.net/dotnet-tools-internal/index.json + https://dotnetfeed.blob.core.windows.net/dotnet-toolset/index.json + https://dotnetfeed.blob.core.windows.net/dotnet-windowsdesktop/index.json + https://dotnetfeed.blob.core.windows.net/nuget-nugetclient/index.json + + + + + PackageAssetsBasePath="$(PackageBasePath)"/> diff --git a/eng/common/PublishToSymbolServers.proj b/eng/common/PublishToSymbolServers.proj new file mode 100644 index 0000000000..5d55e312b0 --- /dev/null +++ b/eng/common/PublishToSymbolServers.proj @@ -0,0 +1,82 @@ + + + + + + netcoreapp2.1 + + + + + + + + + + + + + + + + 3650 + true + false + + + + + + + + + + + + + + + + + diff --git a/eng/common/SigningValidation.proj b/eng/common/SigningValidation.proj new file mode 100644 index 0000000000..7045fb6fb9 --- /dev/null +++ b/eng/common/SigningValidation.proj @@ -0,0 +1,83 @@ + + + + + + netcoreapp2.1 + + + + + + + + $(NuGetPackageRoot)Microsoft.DotNet.SignCheck\$(SignCheckVersion)\tools\Microsoft.DotNet.SignCheck.exe + + $(PackageBasePath) + signcheck.log + signcheck.errors.log + signcheck.exclusions.txt + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/eng/common/darc-init.ps1 b/eng/common/darc-init.ps1 index 2467ebdd42..81ffd16779 100644 --- a/eng/common/darc-init.ps1 +++ b/eng/common/darc-init.ps1 @@ -19,7 +19,7 @@ function InstallDarcCli ($darcVersion) { # Until we can anonymously query the BAR API for the latest arcade-services # build applied to the PROD channel, this is hardcoded. if (-not $darcVersion) { - $darcVersion = '1.1.0-beta.19151.3' + $darcVersion = '1.1.0-beta.19205.4' } $arcadeServicesSource = 'https://dotnetfeed.blob.core.windows.net/dotnet-arcade/index.json' diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh index 8d63dd711b..bd7eb46398 100644 --- a/eng/common/darc-init.sh +++ b/eng/common/darc-init.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash source="${BASH_SOURCE[0]}" -darcVersion="1.1.0-beta.19151.3" +darcVersion="1.1.0-beta.19205.4" while [[ $# > 0 ]]; do opt="$(echo "$1" | awk '{print tolower($0)}')" diff --git a/eng/common/generate-graph-files.ps1 b/eng/common/generate-graph-files.ps1 index e09c64e9f6..a05b84f798 100644 --- a/eng/common/generate-graph-files.ps1 +++ b/eng/common/generate-graph-files.ps1 @@ -3,7 +3,8 @@ Param( [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 = '1.1.0-beta.19156.4', # darc's version + [string] $darcVersion = '1.1.0-beta.19175.6', # 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 ) @@ -11,6 +12,8 @@ Param( $ErrorActionPreference = "Stop" . $PSScriptRoot\tools.ps1 +Import-Module -Name (Join-Path $PSScriptRoot "native\CommonLibrary.psm1") + function CheckExitCode ([string]$stage) { $exitCode = $LASTEXITCODE @@ -27,27 +30,48 @@ try { . .\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" - $graphFilePath = "$outputFolder\graph.txt" - $options = "get-dependency-graph --graphviz '$graphVizFilePath' --github-pat $gitHubPat --azdev-pat $azdoPat --password $barToken --output-file $graphFilePath" + $graphVizImageFilePath = "$outputFolder\graph.png" + $normalGraphFilePath = "$outputFolder\graph-full.txt" + $flatGraphFilePath = "$outputFolder\graph-flat.txt" + $baseOptions = "get-dependency-graph --github-pat $gitHubPat --azdev-pat $azdoPat --password $barToken" if ($includeToolset) { Write-Host "Toolsets will be included in the graph..." - $options += " --include-toolset" + $baseOptions += " --include-toolset" } - Write-Host "Generating dependency graph..." - Invoke-Expression "& `"$darcExe`" $options" - CheckExitCode "Generating dependency graph" + Write-Host "Generating standard dependency graph..." + Invoke-Expression "& `"$darcExe`" $baseOptions --output-file $normalGraphFilePath" + CheckExitCode "Generating normal dependency graph" + + Write-Host "Generating flat dependency graph and graphviz file..." + Invoke-Expression "& `"$darcExe`" $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" + Invoke-Expression "& `"$dotFilePath`" -Tpng -o'$graphVizImageFilePath' `"$graphVizFilePath`"" + CheckExitCode "Generating graphviz image" - $graph = Get-Content $graphVizFilePath - Set-Content $graphVizFilePath -Value "Paste the following digraph object in http://www.webgraphviz.com `r`n", $graph - Write-Host "'$graphVizFilePath' and '$graphFilePath' created!" + Write-Host "'$graphVizFilePath', '$flatGraphFilePath', '$normalGraphFilePath' and '$graphVizImageFilePath' created!" } catch { if (!$includeToolset) { @@ -58,4 +82,6 @@ catch { Write-Host $_.Exception Write-Host $_.ScriptStackTrace ExitWithExitCode 1 +} finally { + Pop-Location } \ No newline at end of file diff --git a/eng/common/init-tools-native.ps1 b/eng/common/init-tools-native.ps1 index e25c60fed4..495a563a75 100644 --- a/eng/common/init-tools-native.ps1 +++ b/eng/common/init-tools-native.ps1 @@ -98,10 +98,20 @@ try { Write-Verbose "Executing '$LocalInstallerCommand'" Invoke-Expression "$LocalInstallerCommand" if ($LASTEXITCODE -Ne "0") { - Write-Error "Execution failed" - exit 1 + $errMsg = "$ToolName installation failed" + if ((Get-Variable 'DoNotAbortNativeToolsInstallationOnFailure' -ErrorAction 'SilentlyContinue') -and $DoNotAbortNativeToolsInstallationOnFailure) { + Write-Warning $errMsg + $toolInstallationFailure = $true + } else { + Write-Error $errMsg + exit 1 + } } } + + if ((Get-Variable 'toolInstallationFailure' -ErrorAction 'SilentlyContinue') -and $toolInstallationFailure) { + exit 1 + } } else { Write-Host "No native tools defined in global.json" diff --git a/eng/common/templates/job/publish-build-assets.yml b/eng/common/templates/job/publish-build-assets.yml index d6d8697cbd..620bd3c62e 100644 --- a/eng/common/templates/job/publish-build-assets.yml +++ b/eng/common/templates/job/publish-build-assets.yml @@ -20,6 +20,9 @@ parameters: # if 'true', the build won't run any of the internal only steps, even if it is running in non-public projects. runAsPublic: false + # Optional: whether the build's artifacts will be published using release pipelines or direct feed publishing + publishUsingPipelines: false + jobs: - job: Asset_Registry_Publish @@ -52,6 +55,7 @@ jobs: /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' /p:BuildAssetRegistryToken=$(MaestroAccessToken) /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com + /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }} /p:Configuration=$(_BuildConfig) condition: ${{ parameters.condition }} continueOnError: ${{ parameters.continueOnError }} diff --git a/eng/common/templates/jobs/jobs.yml b/eng/common/templates/jobs/jobs.yml index 06ed58de41..6a2f98c036 100644 --- a/eng/common/templates/jobs/jobs.yml +++ b/eng/common/templates/jobs/jobs.yml @@ -13,6 +13,9 @@ parameters: # Optional: Enable publishing to the build asset registry enablePublishBuildAssets: false + + # Optional: Enable publishing using release pipelines + enablePublishUsingPipelines: false graphFileGeneration: # Optional: Enable generating the graph files at the end of the build @@ -73,6 +76,7 @@ jobs: pool: vmImage: vs2017-win2016 runAsPublic: ${{ parameters.runAsPublic }} + publishUsingPipelines: ${{ parameters.enablePublishUsingPipelines }} enablePublishBuildArtifacts: ${{ parameters.enablePublishBuildArtifacts }} - ${{ if and(eq(parameters.graphFileGeneration.enabled, true), eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}: diff --git a/eng/common/templates/phases/publish-build-assets.yml b/eng/common/templates/phases/publish-build-assets.yml index 211967deba..a0a8074282 100644 --- a/eng/common/templates/phases/publish-build-assets.yml +++ b/eng/common/templates/phases/publish-build-assets.yml @@ -5,6 +5,7 @@ parameters: condition: succeeded() continueOnError: false runAsPublic: false + publishUsingPipelines: false phases: - phase: Asset_Registry_Publish displayName: Publish to Build Asset Registry @@ -36,6 +37,7 @@ phases: /p:ManifestsPath='$(Build.StagingDirectory)/Download/AssetManifests' /p:BuildAssetRegistryToken=$(MaestroAccessToken) /p:MaestroApiEndpoint=https://maestro-prod.westus2.cloudapp.azure.com + /p:PublishUsingPipelines=${{ parameters.publishUsingPipelines }} /p:Configuration=$(_BuildConfig) condition: ${{ parameters.condition }} continueOnError: ${{ parameters.continueOnError }} diff --git a/eng/common/templates/steps/send-to-helix.yml b/eng/common/templates/steps/send-to-helix.yml index 0925e8ebd1..7c185e9414 100644 --- a/eng/common/templates/steps/send-to-helix.yml +++ b/eng/common/templates/steps/send-to-helix.yml @@ -1,8 +1,9 @@ +# Please remember to update the documentation if you make changes to these parameters! parameters: HelixSource: 'pr/default' # required -- sources must start with pr/, official/, prodcon/, or agent/ HelixType: 'tests/default/' # required -- Helix telemetry which identifies what type of data this is; should include "test" for clarity and must end in '/' HelixBuild: $(Build.BuildNumber) # required -- the build number Helix will use to identify this -- automatically set to the AzDO build number - HelixTargetQueues: '' # required -- semicolon delimited list of Helix queues to test on; see https://helix.dot.net/api/2018-03-14/info/queues for a list of queues + HelixTargetQueues: '' # required -- semicolon delimited list of Helix queues to test on; see https://helix.dot.net/ for a list of queues HelixAccessToken: '' # required -- access token to make Helix API requests; should be provided by the appropriate variable group HelixPreCommands: '' # optional -- commands to run before Helix work item execution HelixPostCommands: '' # optional -- commands to run after Helix work item execution @@ -11,6 +12,7 @@ parameters: WorkItemTimeout: '' # optional -- a timeout in seconds for the work item command; requires WorkItemDirectory; incompatible with XUnitProjects CorrelationPayloadDirectory: '' # optional -- a directory to zip up and send to Helix as a correlation payload XUnitProjects: '' # optional -- semicolon delimited list of XUnitProjects to parse and send to Helix; requires XUnitRuntimeTargetFramework, XUnitPublishTargetFramework, XUnitRunnerVersion, and IncludeDotNetCli=true + XUnitWorkItemTimeout: '' # optional -- the workitem timeout in seconds for all workitems created from the xUnit projects specified by XUnitProjects XUnitPublishTargetFramework: '' # optional -- framework to use to publish your xUnit projects XUnitRuntimeTargetFramework: '' # optional -- framework to use for the xUnit console runner XUnitRunnerVersion: '' # optional -- version of the xUnit nuget package you wish to use on Helix; required for XUnitProjects @@ -42,6 +44,7 @@ steps: WorkItemTimeout: ${{ parameters.WorkItemTimeout }} CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} XUnitProjects: ${{ parameters.XUnitProjects }} + XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} @@ -70,6 +73,7 @@ steps: WorkItemTimeout: ${{ parameters.WorkItemTimeout }} CorrelationPayloadDirectory: ${{ parameters.CorrelationPayloadDirectory }} XUnitProjects: ${{ parameters.XUnitProjects }} + XUnitWorkItemTimeout: ${{ parameters.XUnitWorkItemTimeout }} XUnitPublishTargetFramework: ${{ parameters.XUnitPublishTargetFramework }} XUnitRuntimeTargetFramework: ${{ parameters.XUnitRuntimeTargetFramework }} XUnitRunnerVersion: ${{ parameters.XUnitRunnerVersion }} @@ -81,4 +85,4 @@ steps: Creator: ${{ parameters.Creator }} SYSTEM_ACCESSTOKEN: $(System.AccessToken) condition: and(${{ parameters.condition }}, ne(variables['Agent.Os'], 'Windows_NT')) - continueOnError: ${{ parameters.continueOnError }} \ No newline at end of file + continueOnError: ${{ parameters.continueOnError }} diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index de7523cae5..5c4a129c86 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -518,6 +518,10 @@ Create-Directory $TempDir Create-Directory $LogDir if ($ci) { + Write-Host "##vso[task.setvariable variable=Artifacts]$ArtifactsDir" + Write-Host "##vso[task.setvariable variable=Artifacts.Toolset]$ToolsetDir" + Write-Host "##vso[task.setvariable variable=Artifacts.Log]$LogDir" + $env:TEMP = $TempDir $env:TMP = $TempDir } diff --git a/global.json b/global.json index 8d1345bebf..21d0943048 100644 --- a/global.json +++ b/global.json @@ -6,6 +6,6 @@ "version": "2.1.503" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.19161.14" + "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.19212.2" } }