diff --git a/Directory.Packages.props b/Directory.Packages.props
index ba3df2fdebd..dc3da890ce4 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -10,8 +10,8 @@
4.0.0-rc3-24214-00
5.8.4
- 3.14.1-9323.2545153
- 6.0.3-dotnet.4
+ 3.14.1-11027.2914512
+ 5.0.2-dotnet.2811440
2.9.3
@@ -50,6 +50,7 @@
+
diff --git a/eng/Version.Details.props b/eng/Version.Details.props
index 4ea9896449a..daec4c76d5f 100644
--- a/eng/Version.Details.props
+++ b/eng/Version.Details.props
@@ -50,14 +50,6 @@ This file should be imported by eng/Versions.props
10.0.100-preview.4.25220.1
11.0.0-prerelease.26181.1
-
- 7.0.3
- 7.0.3
- 7.0.3
- 7.0.3
- 7.0.3
- 7.0.3
- 7.0.3
@@ -106,13 +98,5 @@ This file should be imported by eng/Versions.props
$(MicrosoftTemplateEngineAuthoringTasksPackageVersion)
$(MicrosoftDotNetXHarnessCLIPackageVersion)
-
- $(NuGetCommandsPackageVersion)
- $(NuGetCommonPackageVersion)
- $(NuGetConfigurationPackageVersion)
- $(NuGetFrameworksPackageVersion)
- $(NuGetPackagingPackageVersion)
- $(NuGetProjectModelPackageVersion)
- $(NuGetVersioningPackageVersion)
diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml
index c229ead64cf..6875dba638a 100644
--- a/eng/Version.Details.xml
+++ b/eng/Version.Details.xml
@@ -1,6 +1,6 @@
-
+
@@ -141,40 +141,5 @@
https://github.com/dotnet/msbuild
d1cce8d7cc03c23a4f1bad8e9240714fd9d199a3
-
-
- https://github.com/nuget/nuget.client
- 779eff1e73420573dd39dbbe54896ff8f08955e1
-
-
- https://github.com/nuget/nuget.client
- 779eff1e73420573dd39dbbe54896ff8f08955e1
-
-
- https://github.com/nuget/nuget.client
- 779eff1e73420573dd39dbbe54896ff8f08955e1
-
-
- https://github.com/nuget/nuget.client
- 779eff1e73420573dd39dbbe54896ff8f08955e1
-
-
- https://github.com/nuget/nuget.client
- 779eff1e73420573dd39dbbe54896ff8f08955e1
-
-
- https://github.com/nuget/nuget.client
- 779eff1e73420573dd39dbbe54896ff8f08955e1
-
-
- https://github.com/nuget/nuget.client
- 779eff1e73420573dd39dbbe54896ff8f08955e1
-
-
- https://github.com/dotnet/runtime
- dc5fd7a8dce8309e4add8fd4bd5d8718f221b15a
-
diff --git a/eng/Versions.props b/eng/Versions.props
index c6e1e5ffa91..30c4c5aa544 100644
--- a/eng/Versions.props
+++ b/eng/Versions.props
@@ -13,6 +13,14 @@
4.3.0
+
+
+ 7.0.3
+ 7.0.3
+ 7.0.3
+ 7.0.3
+ 7.0.3
5.0.0
6.0.4
diff --git a/eng/common/core-templates/job/job.yml b/eng/common/core-templates/job/job.yml
index 748c4f07a64..66c7988f222 100644
--- a/eng/common/core-templates/job/job.yml
+++ b/eng/common/core-templates/job/job.yml
@@ -26,12 +26,12 @@ parameters:
enablePublishBuildArtifacts: false
enablePublishBuildAssets: false
enablePublishTestResults: false
+ enablePublishing: false
enableBuildRetry: false
mergeTestResults: false
testRunTitle: ''
testResultsFormat: ''
name: ''
- componentGovernanceSteps: []
preSteps: []
artifactPublishSteps: []
runAsPublic: false
@@ -152,9 +152,6 @@ jobs:
- ${{ each step in parameters.steps }}:
- ${{ step }}
- - ${{ each step in parameters.componentGovernanceSteps }}:
- - ${{ step }}
-
- ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
- template: /eng/common/core-templates/steps/cleanup-microbuild.yml
parameters:
diff --git a/eng/common/core-templates/job/publish-build-assets.yml b/eng/common/core-templates/job/publish-build-assets.yml
index 9d7490518c4..700f7711465 100644
--- a/eng/common/core-templates/job/publish-build-assets.yml
+++ b/eng/common/core-templates/job/publish-build-assets.yml
@@ -172,17 +172,18 @@ jobs:
targetPath: '$(Build.ArtifactStagingDirectory)/MergedManifest.xml'
artifactName: AssetManifests
displayName: 'Publish Merged Manifest'
- retryCountOnTaskFailure: 10 # for any logs being locked
- sbomEnabled: false # we don't need SBOM for logs
+ retryCountOnTaskFailure: 10 # for any files being locked
+ isProduction: false # just metadata for publishing
- - template: /eng/common/core-templates/steps/publish-build-artifacts.yml
+ - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
args:
displayName: Publish ReleaseConfigs Artifact
- pathToPublish: '$(Build.StagingDirectory)/ReleaseConfigs'
- publishLocation: Container
+ targetPath: '$(Build.StagingDirectory)/ReleaseConfigs'
artifactName: ReleaseConfigs
+ retryCountOnTaskFailure: 10 # for any files being locked
+ isProduction: false # just metadata for publishing
- ${{ if or(eq(parameters.publishAssetsImmediately, 'true'), eq(parameters.isAssetlessBuild, 'true')) }}:
- template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
@@ -218,4 +219,5 @@ jobs:
- template: /eng/common/core-templates/steps/publish-logs.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
+ StageLabel: 'BuildAssetRegistry'
JobLabel: 'Publish_Artifacts_Logs'
diff --git a/eng/common/core-templates/job/renovate.yml b/eng/common/core-templates/job/renovate.yml
index ab233539b5d..ff86c80b468 100644
--- a/eng/common/core-templates/job/renovate.yml
+++ b/eng/common/core-templates/job/renovate.yml
@@ -135,7 +135,7 @@ jobs:
condition: succeededOrFailed()
targetPath: $(Build.ArtifactStagingDirectory)
artifactName: $(Agent.JobName)_Logs_Attempt$(System.JobAttempt)
- sbomEnabled: false
+ isProduction: false # logs are non-production artifacts
steps:
- checkout: self
diff --git a/eng/common/core-templates/jobs/jobs.yml b/eng/common/core-templates/jobs/jobs.yml
index 01ada747665..cc8cce45278 100644
--- a/eng/common/core-templates/jobs/jobs.yml
+++ b/eng/common/core-templates/jobs/jobs.yml
@@ -43,6 +43,10 @@ parameters:
artifacts: {}
is1ESPipeline: ''
+
+ # Publishing version w/default.
+ publishingVersion: 3
+
repositoryAlias: self
officialBuildId: ''
@@ -102,6 +106,7 @@ jobs:
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
continueOnError: ${{ parameters.continueOnError }}
+ publishingVersion: ${{ parameters.publishingVersion }}
dependsOn:
- ${{ if ne(parameters.publishBuildAssetsDependsOn, '') }}:
- ${{ each job in parameters.publishBuildAssetsDependsOn }}:
diff --git a/eng/common/core-templates/post-build/common-variables.yml b/eng/common/core-templates/post-build/common-variables.yml
index d5627a994ae..db298ae16ba 100644
--- a/eng/common/core-templates/post-build/common-variables.yml
+++ b/eng/common/core-templates/post-build/common-variables.yml
@@ -11,8 +11,6 @@ variables:
- name: MaestroApiVersion
value: "2020-02-20"
- - name: SourceLinkCLIVersion
- value: 3.0.0
- name: SymbolToolVersion
value: 1.0.1
- name: BinlogToolVersion
diff --git a/eng/common/core-templates/post-build/post-build.yml b/eng/common/core-templates/post-build/post-build.yml
index 0994189969f..fcf40d1d2e6 100644
--- a/eng/common/core-templates/post-build/post-build.yml
+++ b/eng/common/core-templates/post-build/post-build.yml
@@ -9,6 +9,7 @@ parameters:
default: 3
values:
- 3
+ - 4
- name: BARBuildId
displayName: BAR Build Id
@@ -130,16 +131,30 @@ stages:
PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
is1ESPipeline: ${{ parameters.is1ESPipeline }}
- - task: DownloadBuildArtifacts@0
- displayName: Download Package Artifacts
- inputs:
- buildType: specific
- buildVersionToDownload: specific
- project: $(AzDOProjectName)
- pipeline: $(AzDOPipelineId)
- buildId: $(AzDOBuildId)
- artifactName: PackageArtifacts
- checkDownloadedFiles: true
+ - ${{ if ne(parameters.publishingInfraVersion, 4) }}:
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Package Artifacts
+ inputs:
+ buildType: specific
+ buildVersionToDownload: specific
+ project: $(AzDOProjectName)
+ pipeline: $(AzDOPipelineId)
+ buildId: $(AzDOBuildId)
+ artifactName: PackageArtifacts
+ checkDownloadedFiles: true
+ - ${{ if eq(parameters.publishingInfraVersion, 4) }}:
+ - task: DownloadPipelineArtifact@2
+ displayName: Download Pipeline Artifacts (V4)
+ inputs:
+ itemPattern: '*/packages/**/*.nupkg'
+ targetPath: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload'
+ - task: CopyFiles@2
+ displayName: Flatten packages to PackageArtifacts
+ inputs:
+ SourceFolder: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload'
+ Contents: '**/*.nupkg'
+ TargetFolder: '$(Build.ArtifactStagingDirectory)/PackageArtifacts'
+ flattenFolders: true
- task: PowerShell@2
displayName: Validate
@@ -173,16 +188,30 @@ stages:
PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
is1ESPipeline: ${{ parameters.is1ESPipeline }}
- - task: DownloadBuildArtifacts@0
- displayName: Download Package Artifacts
- inputs:
- buildType: specific
- buildVersionToDownload: specific
- project: $(AzDOProjectName)
- pipeline: $(AzDOPipelineId)
- buildId: $(AzDOBuildId)
- artifactName: PackageArtifacts
- checkDownloadedFiles: true
+ - ${{ if ne(parameters.publishingInfraVersion, 4) }}:
+ - task: DownloadBuildArtifacts@0
+ displayName: Download Package Artifacts
+ inputs:
+ buildType: specific
+ buildVersionToDownload: specific
+ project: $(AzDOProjectName)
+ pipeline: $(AzDOPipelineId)
+ buildId: $(AzDOBuildId)
+ artifactName: PackageArtifacts
+ checkDownloadedFiles: true
+ - ${{ if eq(parameters.publishingInfraVersion, 4) }}:
+ - task: DownloadPipelineArtifact@2
+ displayName: Download Pipeline Artifacts (V4)
+ inputs:
+ itemPattern: '*/packages/**/*.nupkg'
+ targetPath: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload'
+ - task: CopyFiles@2
+ displayName: Flatten packages to PackageArtifacts
+ inputs:
+ SourceFolder: '$(Build.ArtifactStagingDirectory)/PipelineArtifactsDownload'
+ Contents: '**/*.nupkg'
+ TargetFolder: '$(Build.ArtifactStagingDirectory)/PackageArtifacts'
+ flattenFolders: true
# This is necessary whenever we want to publish/restore to an AzDO private feed
# Since sdk-task.ps1 tries to restore packages we need to do this authentication here
@@ -208,53 +237,20 @@ stages:
JobLabel: 'Signing'
BinlogToolVersion: $(BinlogToolVersion)
- - job:
- displayName: SourceLink Validation
- condition: eq( ${{ parameters.enableSourceLinkValidation }}, 'true')
- pool:
- # We don't use the collection uri here because it might vary (.visualstudio.com vs. dev.azure.com)
- ${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
- name: AzurePipelines-EO
- image: 1ESPT-Windows2025
- demands: Cmd
- os: windows
- # If it's not devdiv, it's dnceng
- ${{ else }}:
- ${{ if eq(parameters.is1ESPipeline, true) }}:
- name: $(DncEngInternalBuildPool)
- image: windows.vs2026.amd64
- os: windows
- ${{ else }}:
- name: $(DncEngInternalBuildPool)
- demands: ImageOverride -equals windows.vs2026.amd64
- steps:
- - template: /eng/common/core-templates/post-build/setup-maestro-vars.yml
- parameters:
- BARBuildId: ${{ parameters.BARBuildId }}
- PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
- is1ESPipeline: ${{ parameters.is1ESPipeline }}
-
- - task: DownloadBuildArtifacts@0
- displayName: Download Blob Artifacts
- inputs:
- buildType: specific
- buildVersionToDownload: specific
- project: $(AzDOProjectName)
- pipeline: $(AzDOPipelineId)
- buildId: $(AzDOBuildId)
- artifactName: BlobArtifacts
- checkDownloadedFiles: true
-
- - task: PowerShell@2
- displayName: Validate
- inputs:
- filePath: $(System.DefaultWorkingDirectory)/eng/common/post-build/sourcelink-validation.ps1
- arguments: -InputPath $(Build.ArtifactStagingDirectory)/BlobArtifacts/
- -ExtractPath $(Agent.BuildDirectory)/Extract/
- -GHRepoName $(Build.Repository.Name)
- -GHCommit $(Build.SourceVersion)
- -SourcelinkCliVersion $(SourceLinkCLIVersion)
- continueOnError: true
+ # SourceLink validation has been removed — the underlying CLI tool
+ # (targeting netcoreapp2.1) has not functioned for years.
+ # The enableSourceLinkValidation parameter is kept but ignored so
+ # existing pipelines that pass it are not broken.
+ # See https://github.com/dotnet/arcade/issues/16647
+ - ${{ if eq(parameters.enableSourceLinkValidation, 'true') }}:
+ - job:
+ displayName: 'SourceLink Validation Removed - please remove enableSourceLinkValidation from your pipeline'
+ pool: server
+ steps:
+ - task: Delay@1
+ displayName: 'Warning: SourceLink validation removed (see https://github.com/dotnet/arcade/issues/16647)'
+ inputs:
+ delayForMinutes: '0'
- ${{ if ne(parameters.publishAssetsImmediately, 'true') }}:
- stage: publish_using_darc
@@ -317,7 +313,7 @@ stages:
scriptPath: $(System.DefaultWorkingDirectory)/eng/common/post-build/publish-using-darc.ps1
arguments: >
-BuildId $(BARBuildId)
- -PublishingInfraVersion ${{ parameters.publishingInfraVersion }}
+ -PublishingInfraVersion 3
-AzdoToken '$(System.AccessToken)'
-WaitPublishingFinish true
-RequireDefaultChannels ${{ parameters.requireDefaultChannels }}
diff --git a/eng/common/core-templates/post-build/setup-maestro-vars.yml b/eng/common/core-templates/post-build/setup-maestro-vars.yml
index a7abd58c4bb..6dfa99ec5e3 100644
--- a/eng/common/core-templates/post-build/setup-maestro-vars.yml
+++ b/eng/common/core-templates/post-build/setup-maestro-vars.yml
@@ -8,12 +8,11 @@ steps:
- 'Illegal entry point, is1ESPipeline is not defined. Repository yaml should not directly reference templates in core-templates folder.': error
- ${{ if eq(coalesce(parameters.PromoteToChannelIds, 0), 0) }}:
- - task: DownloadBuildArtifacts@0
+ - task: DownloadPipelineArtifact@2
displayName: Download Release Configs
inputs:
- buildType: current
artifactName: ReleaseConfigs
- checkDownloadedFiles: true
+ targetPath: '$(Build.StagingDirectory)/ReleaseConfigs'
- task: AzureCLI@2
name: setReleaseVars
diff --git a/eng/common/core-templates/steps/component-governance.yml b/eng/common/core-templates/steps/component-governance.yml
deleted file mode 100644
index cf0649aa956..00000000000
--- a/eng/common/core-templates/steps/component-governance.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-parameters:
- disableComponentGovernance: false
- componentGovernanceIgnoreDirectories: ''
- is1ESPipeline: false
- displayName: 'Component Detection'
-
-steps:
-- ${{ if eq(parameters.disableComponentGovernance, 'true') }}:
- - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true"
- displayName: Set skipComponentGovernanceDetection variable
-- ${{ if ne(parameters.disableComponentGovernance, 'true') }}:
- - task: ComponentGovernanceComponentDetection@0
- continueOnError: true
- displayName: ${{ parameters.displayName }}
- inputs:
- ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }}
diff --git a/eng/common/core-templates/steps/generate-sbom.yml b/eng/common/core-templates/steps/generate-sbom.yml
index 003f7eae0fa..aad0a8aeda3 100644
--- a/eng/common/core-templates/steps/generate-sbom.yml
+++ b/eng/common/core-templates/steps/generate-sbom.yml
@@ -1,54 +1,14 @@
-# BuildDropPath - The root folder of the drop directory for which the manifest file will be generated.
-# PackageName - The name of the package this SBOM represents.
-# PackageVersion - The version of the package this SBOM represents.
-# ManifestDirPath - The path of the directory where the generated manifest files will be placed
-# IgnoreDirectories - Directories to ignore for SBOM generation. This will be passed through to the CG component detector.
-
parameters:
- PackageVersion: 11.0.0
- BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts'
- PackageName: '.NET'
- ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom
- IgnoreDirectories: ''
- sbomContinueOnError: true
- is1ESPipeline: false
- # disable publishArtifacts if some other step is publishing the artifacts (like job.yml).
- publishArtifacts: true
+ PackageVersion: unused
+ BuildDropPath: unused
+ PackageName: unused
+ ManifestDirPath: unused
+ IgnoreDirectories: unused
+ sbomContinueOnError: unused
+ is1ESPipeline: unused
+ publishArtifacts: unused
steps:
-- task: PowerShell@2
- displayName: Prep for SBOM generation in (Non-linux)
- condition: or(eq(variables['Agent.Os'], 'Windows_NT'), eq(variables['Agent.Os'], 'Darwin'))
- inputs:
- filePath: ./eng/common/generate-sbom-prep.ps1
- arguments: ${{parameters.manifestDirPath}}
-
-# Chmodding is a workaround for https://github.com/dotnet/arcade/issues/8461
- script: |
- chmod +x ./eng/common/generate-sbom-prep.sh
- ./eng/common/generate-sbom-prep.sh ${{parameters.manifestDirPath}}
- displayName: Prep for SBOM generation in (Linux)
- condition: eq(variables['Agent.Os'], 'Linux')
- continueOnError: ${{ parameters.sbomContinueOnError }}
-
-- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
- displayName: 'Generate SBOM manifest'
- continueOnError: ${{ parameters.sbomContinueOnError }}
- inputs:
- PackageName: ${{ parameters.packageName }}
- BuildDropPath: ${{ parameters.buildDropPath }}
- PackageVersion: ${{ parameters.packageVersion }}
- ManifestDirPath: ${{ parameters.manifestDirPath }}/$(ARTIFACT_NAME)
- ${{ if ne(parameters.IgnoreDirectories, '') }}:
- AdditionalComponentDetectorArgs: '--IgnoreDirectories ${{ parameters.IgnoreDirectories }}'
-
-- ${{ if eq(parameters.publishArtifacts, 'true')}}:
- - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
- parameters:
- is1ESPipeline: ${{ parameters.is1ESPipeline }}
- args:
- displayName: Publish SBOM manifest
- continueOnError: ${{parameters.sbomContinueOnError}}
- targetPath: '${{ parameters.manifestDirPath }}'
- artifactName: $(ARTIFACT_NAME)
-
+ echo "##vso[task.logissue type=warning]Including generate-sbom.yml is deprecated, SBOM generation is handled 1ES PT now. Remove this include."
+ displayName: Issue generate-sbom.yml deprecation warning
diff --git a/eng/common/core-templates/steps/publish-logs.yml b/eng/common/core-templates/steps/publish-logs.yml
index a9ea99ba6aa..84a1922c73f 100644
--- a/eng/common/core-templates/steps/publish-logs.yml
+++ b/eng/common/core-templates/steps/publish-logs.yml
@@ -50,13 +50,15 @@ steps:
TargetFolder: '$(Build.ArtifactStagingDirectory)/PostBuildLogs'
condition: always()
-- template: /eng/common/core-templates/steps/publish-build-artifacts.yml
+- template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
args:
displayName: Publish Logs
- pathToPublish: '$(Build.ArtifactStagingDirectory)/PostBuildLogs'
- publishLocation: Container
- artifactName: PostBuildLogs
+ targetPath: '$(Build.ArtifactStagingDirectory)/PostBuildLogs'
+ artifactName: PostBuildLogs_${{ parameters.StageLabel }}_${{ parameters.JobLabel }}_Attempt$(System.JobAttempt)
continueOnError: true
condition: always()
+ retryCountOnTaskFailure: 10 # for any files being locked
+ isProduction: false # logs are non-production artifacts
+
diff --git a/eng/common/core-templates/steps/source-build.yml b/eng/common/core-templates/steps/source-build.yml
index acf16ed3496..b75f59c428d 100644
--- a/eng/common/core-templates/steps/source-build.yml
+++ b/eng/common/core-templates/steps/source-build.yml
@@ -62,4 +62,4 @@ steps:
artifactName: BuildLogs_SourceBuild_${{ parameters.platform.name }}_Attempt$(System.JobAttempt)
continueOnError: true
condition: succeededOrFailed()
- sbomEnabled: false # we don't need SBOM for logs
+ isProduction: false # logs are non-production artifacts
diff --git a/eng/common/darc-init.ps1 b/eng/common/darc-init.ps1
index e3374310563..a5be41db690 100644
--- a/eng/common/darc-init.ps1
+++ b/eng/common/darc-init.ps1
@@ -29,11 +29,11 @@ function InstallDarcCli ($darcVersion, $toolpath) {
Write-Host "Installing Darc CLI version $darcVersion..."
Write-Host 'You may need to restart your command window if this is the first dotnet tool you have installed.'
if (-not $toolpath) {
- Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --add-source '$arcadeServicesSource' -v $verbosity -g"
- & "$dotnet" tool install $darcCliPackageName --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity -g
+ Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --source '$arcadeServicesSource' -v $verbosity -g"
+ & "$dotnet" tool install $darcCliPackageName --version $darcVersion --source "$arcadeServicesSource" -v $verbosity -g
}else {
- Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --add-source '$arcadeServicesSource' -v $verbosity --tool-path '$toolpath'"
- & "$dotnet" tool install $darcCliPackageName --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath"
+ Write-Host "'$dotnet' tool install $darcCliPackageName --version $darcVersion --source '$arcadeServicesSource' -v $verbosity --tool-path '$toolpath'"
+ & "$dotnet" tool install $darcCliPackageName --version $darcVersion --source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath"
}
}
diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh
index 9f5ad6b763b..b56d40e5706 100755
--- a/eng/common/darc-init.sh
+++ b/eng/common/darc-init.sh
@@ -73,9 +73,9 @@ function InstallDarcCli {
echo "Installing Darc CLI version $darcVersion..."
echo "You may need to restart your command shell if this is the first dotnet tool you have installed."
if [ -z "$toolpath" ]; then
- echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity -g)
+ echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --source "$arcadeServicesSource" -v $verbosity -g)
else
- echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath")
+ echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath")
fi
}
diff --git a/eng/common/generate-sbom-prep.ps1 b/eng/common/generate-sbom-prep.ps1
deleted file mode 100644
index a0c7d792a76..00000000000
--- a/eng/common/generate-sbom-prep.ps1
+++ /dev/null
@@ -1,29 +0,0 @@
-Param(
- [Parameter(Mandatory=$true)][string] $ManifestDirPath # Manifest directory where sbom will be placed
-)
-
-. $PSScriptRoot\pipeline-logging-functions.ps1
-
-# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly
-# with their own overwriting ours. So we create it as a sub directory of the requested manifest path.
-$ArtifactName = "${env:SYSTEM_STAGENAME}_${env:AGENT_JOBNAME}_SBOM"
-$SafeArtifactName = $ArtifactName -replace '["/:<>\\|?@*"() ]', '_'
-$SbomGenerationDir = Join-Path $ManifestDirPath $SafeArtifactName
-
-Write-Host "Artifact name before : $ArtifactName"
-Write-Host "Artifact name after : $SafeArtifactName"
-
-Write-Host "Creating dir $ManifestDirPath"
-
-# create directory for sbom manifest to be placed
-if (!(Test-Path -path $SbomGenerationDir))
-{
- New-Item -ItemType Directory -path $SbomGenerationDir
- Write-Host "Successfully created directory $SbomGenerationDir"
-}
-else{
- Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder."
-}
-
-Write-Host "Updating artifact name"
-Write-Host "##vso[task.setvariable variable=ARTIFACT_NAME]$SafeArtifactName"
diff --git a/eng/common/generate-sbom-prep.sh b/eng/common/generate-sbom-prep.sh
deleted file mode 100644
index b8ecca72bbf..00000000000
--- a/eng/common/generate-sbom-prep.sh
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env bash
-
-source="${BASH_SOURCE[0]}"
-
-# resolve $SOURCE until the file is no longer a symlink
-while [[ -h $source ]]; do
- scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
- source="$(readlink "$source")"
-
- # if $source was a relative symlink, we need to resolve it relative to the path where the
- # symlink file was located
- [[ $source != /* ]] && source="$scriptroot/$source"
-done
-scriptroot="$( cd -P "$( dirname "$source" )" && pwd )"
-. $scriptroot/pipeline-logging-functions.sh
-
-
-# replace all special characters with _, some builds use special characters like : in Agent.Jobname, that is not a permissible name while uploading artifacts.
-artifact_name=$SYSTEM_STAGENAME"_"$AGENT_JOBNAME"_SBOM"
-safe_artifact_name="${artifact_name//["/:<>\\|?@*$" ]/_}"
-manifest_dir=$1
-
-# Normally - we'd listen to the manifest path given, but 1ES templates will overwrite if this level gets uploaded directly
-# with their own overwriting ours. So we create it as a sub directory of the requested manifest path.
-sbom_generation_dir="$manifest_dir/$safe_artifact_name"
-
-if [ ! -d "$sbom_generation_dir" ] ; then
- mkdir -p "$sbom_generation_dir"
- echo "Sbom directory created." $sbom_generation_dir
-else
- Write-PipelineTelemetryError -category 'Build' "Unable to create sbom folder."
-fi
-
-echo "Artifact name before : "$artifact_name
-echo "Artifact name after : "$safe_artifact_name
-export ARTIFACT_NAME=$safe_artifact_name
-echo "##vso[task.setvariable variable=ARTIFACT_NAME]$safe_artifact_name"
-
-exit 0
diff --git a/eng/common/post-build/redact-logs.ps1 b/eng/common/post-build/redact-logs.ps1
index fc0218a013d..672f4e2652e 100644
--- a/eng/common/post-build/redact-logs.ps1
+++ b/eng/common/post-build/redact-logs.ps1
@@ -49,8 +49,8 @@ try {
Write-Host "Installing Binlog redactor CLI..."
Write-Host "'$dotnet' new tool-manifest"
& "$dotnet" new tool-manifest
- Write-Host "'$dotnet' tool install $packageName --local --add-source '$PackageFeed' -v $verbosity --version $BinlogToolVersion"
- & "$dotnet" tool install $packageName --local --add-source "$PackageFeed" -v $verbosity --version $BinlogToolVersion
+ Write-Host "'$dotnet' tool install $packageName --local --source '$PackageFeed' -v $verbosity --version $BinlogToolVersion"
+ & "$dotnet" tool install $packageName --local --source "$PackageFeed" -v $verbosity --version $BinlogToolVersion
if (Test-Path $TokensFilePath) {
Write-Host "Adding additional sensitive data for redaction from file: " $TokensFilePath
diff --git a/eng/common/post-build/sourcelink-validation.ps1 b/eng/common/post-build/sourcelink-validation.ps1
deleted file mode 100644
index 1976ef70fb8..00000000000
--- a/eng/common/post-build/sourcelink-validation.ps1
+++ /dev/null
@@ -1,327 +0,0 @@
-param(
- [Parameter(Mandatory=$true)][string] $InputPath, # Full path to directory where Symbols.NuGet packages to be checked are stored
- [Parameter(Mandatory=$true)][string] $ExtractPath, # Full path to directory where the packages will be extracted during validation
- [Parameter(Mandatory=$false)][string] $GHRepoName, # GitHub name of the repo including the Org. E.g., dotnet/arcade
- [Parameter(Mandatory=$false)][string] $GHCommit, # GitHub commit SHA used to build the packages
- [Parameter(Mandatory=$true)][string] $SourcelinkCliVersion # Version of SourceLink CLI to use
-)
-
-$ErrorActionPreference = 'Stop'
-Set-StrictMode -Version 2.0
-
-# `tools.ps1` checks $ci to perform some actions. Since the post-build
-# scripts don't necessarily execute in the same agent that run the
-# build.ps1/sh script this variable isn't automatically set.
-$ci = $true
-$disableConfigureToolsetImport = $true
-. $PSScriptRoot\..\tools.ps1
-
-# Cache/HashMap (File -> Exist flag) used to consult whether a file exist
-# in the repository at a specific commit point. This is populated by inserting
-# all files present in the repo at a specific commit point.
-$global:RepoFiles = @{}
-
-# Maximum number of jobs to run in parallel
-$MaxParallelJobs = 16
-
-$MaxRetries = 5
-$RetryWaitTimeInSeconds = 30
-
-# Wait time between check for system load
-$SecondsBetweenLoadChecks = 10
-
-if (!$InputPath -or !(Test-Path $InputPath)){
- Write-Host "No files to validate."
- ExitWithExitCode 0
-}
-
-$ValidatePackage = {
- param(
- [string] $PackagePath # Full path to a Symbols.NuGet package
- )
-
- . $using:PSScriptRoot\..\tools.ps1
-
- # Ensure input file exist
- if (!(Test-Path $PackagePath)) {
- Write-Host "Input file does not exist: $PackagePath"
- return [pscustomobject]@{
- result = 1
- packagePath = $PackagePath
- }
- }
-
- # Extensions for which we'll look for SourceLink information
- # For now we'll only care about Portable & Embedded PDBs
- $RelevantExtensions = @('.dll', '.exe', '.pdb')
-
- Write-Host -NoNewLine 'Validating ' ([System.IO.Path]::GetFileName($PackagePath)) '...'
-
- $PackageId = [System.IO.Path]::GetFileNameWithoutExtension($PackagePath)
- $ExtractPath = Join-Path -Path $using:ExtractPath -ChildPath $PackageId
- $FailedFiles = 0
-
- Add-Type -AssemblyName System.IO.Compression.FileSystem
-
- [System.IO.Directory]::CreateDirectory($ExtractPath) | Out-Null
-
- try {
- $zip = [System.IO.Compression.ZipFile]::OpenRead($PackagePath)
-
- $zip.Entries |
- Where-Object {$RelevantExtensions -contains [System.IO.Path]::GetExtension($_.Name)} |
- ForEach-Object {
- $FileName = $_.FullName
- $Extension = [System.IO.Path]::GetExtension($_.Name)
- $FakeName = -Join((New-Guid), $Extension)
- $TargetFile = Join-Path -Path $ExtractPath -ChildPath $FakeName
-
- # We ignore resource DLLs
- if ($FileName.EndsWith('.resources.dll')) {
- return [pscustomobject]@{
- result = 0
- packagePath = $PackagePath
- }
- }
-
- [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_, $TargetFile, $true)
-
- $ValidateFile = {
- param(
- [string] $FullPath, # Full path to the module that has to be checked
- [string] $RealPath,
- [ref] $FailedFiles
- )
-
- $sourcelinkExe = "$env:USERPROFILE\.dotnet\tools"
- $sourcelinkExe = Resolve-Path "$sourcelinkExe\sourcelink.exe"
- $SourceLinkInfos = & $sourcelinkExe print-urls $FullPath | Out-String
-
- if ($LASTEXITCODE -eq 0 -and -not ([string]::IsNullOrEmpty($SourceLinkInfos))) {
- $NumFailedLinks = 0
-
- # We only care about Http addresses
- $Matches = (Select-String '(http[s]?)(:\/\/)([^\s,]+)' -Input $SourceLinkInfos -AllMatches).Matches
-
- if ($Matches.Count -ne 0) {
- $Matches.Value |
- ForEach-Object {
- $Link = $_
- $CommitUrl = "https://raw.githubusercontent.com/${using:GHRepoName}/${using:GHCommit}/"
-
- $FilePath = $Link.Replace($CommitUrl, "")
- $Status = 200
- $Cache = $using:RepoFiles
-
- $attempts = 0
-
- while ($attempts -lt $using:MaxRetries) {
- if ( !($Cache.ContainsKey($FilePath)) ) {
- try {
- $Uri = $Link -as [System.URI]
-
- if ($Link -match "submodules") {
- # Skip submodule links until sourcelink properly handles submodules
- $Status = 200
- }
- elseif ($Uri.AbsoluteURI -ne $null -and ($Uri.Host -match 'github' -or $Uri.Host -match 'githubusercontent')) {
- # Only GitHub links are valid
- $Status = (Invoke-WebRequest -Uri $Link -UseBasicParsing -Method HEAD -TimeoutSec 5).StatusCode
- }
- else {
- # If it's not a github link, we want to break out of the loop and not retry.
- $Status = 0
- $attempts = $using:MaxRetries
- }
- }
- catch {
- Write-Host $_
- $Status = 0
- }
- }
-
- if ($Status -ne 200) {
- $attempts++
-
- if ($attempts -lt $using:MaxRetries)
- {
- $attemptsLeft = $using:MaxRetries - $attempts
- Write-Warning "Download failed, $attemptsLeft attempts remaining, will retry in $using:RetryWaitTimeInSeconds seconds"
- Start-Sleep -Seconds $using:RetryWaitTimeInSeconds
- }
- else {
- if ($NumFailedLinks -eq 0) {
- if ($FailedFiles.Value -eq 0) {
- Write-Host
- }
-
- Write-Host "`tFile $RealPath has broken links:"
- }
-
- Write-Host "`t`tFailed to retrieve $Link"
-
- $NumFailedLinks++
- }
- }
- else {
- break
- }
- }
- }
- }
-
- if ($NumFailedLinks -ne 0) {
- $FailedFiles.value++
- $global:LASTEXITCODE = 1
- }
- }
- }
-
- &$ValidateFile $TargetFile $FileName ([ref]$FailedFiles)
- }
- }
- catch {
- Write-Host $_
- }
- finally {
- $zip.Dispose()
- }
-
- if ($FailedFiles -eq 0) {
- Write-Host 'Passed.'
- return [pscustomobject]@{
- result = 0
- packagePath = $PackagePath
- }
- }
- else {
- Write-PipelineTelemetryError -Category 'SourceLink' -Message "$PackagePath has broken SourceLink links."
- return [pscustomobject]@{
- result = 1
- packagePath = $PackagePath
- }
- }
-}
-
-function CheckJobResult(
- $result,
- $packagePath,
- [ref]$ValidationFailures,
- [switch]$logErrors) {
- if ($result -ne '0') {
- if ($logErrors) {
- Write-PipelineTelemetryError -Category 'SourceLink' -Message "$packagePath has broken SourceLink links."
- }
- $ValidationFailures.Value++
- }
-}
-
-function ValidateSourceLinkLinks {
- if ($GHRepoName -ne '' -and !($GHRepoName -Match '^[^\s\/]+/[^\s\/]+$')) {
- if (!($GHRepoName -Match '^[^\s-]+-[^\s]+$')) {
- Write-PipelineTelemetryError -Category 'SourceLink' -Message "GHRepoName should be in the format / or -. '$GHRepoName'"
- ExitWithExitCode 1
- }
- else {
- $GHRepoName = $GHRepoName -replace '^([^\s-]+)-([^\s]+)$', '$1/$2';
- }
- }
-
- if ($GHCommit -ne '' -and !($GHCommit -Match '^[0-9a-fA-F]{40}$')) {
- Write-PipelineTelemetryError -Category 'SourceLink' -Message "GHCommit should be a 40 chars hexadecimal string. '$GHCommit'"
- ExitWithExitCode 1
- }
-
- if ($GHRepoName -ne '' -and $GHCommit -ne '') {
- $RepoTreeURL = -Join('http://api.github.com/repos/', $GHRepoName, '/git/trees/', $GHCommit, '?recursive=1')
- $CodeExtensions = @('.cs', '.vb', '.fs', '.fsi', '.fsx', '.fsscript')
-
- try {
- # Retrieve the list of files in the repo at that particular commit point and store them in the RepoFiles hash
- $Data = Invoke-WebRequest $RepoTreeURL -UseBasicParsing | ConvertFrom-Json | Select-Object -ExpandProperty tree
-
- foreach ($file in $Data) {
- $Extension = [System.IO.Path]::GetExtension($file.path)
-
- if ($CodeExtensions.Contains($Extension)) {
- $RepoFiles[$file.path] = 1
- }
- }
- }
- catch {
- Write-Host "Problems downloading the list of files from the repo. Url used: $RepoTreeURL . Execution will proceed without caching."
- }
- }
- elseif ($GHRepoName -ne '' -or $GHCommit -ne '') {
- Write-Host 'For using the http caching mechanism both GHRepoName and GHCommit should be informed.'
- }
-
- if (Test-Path $ExtractPath) {
- Remove-Item $ExtractPath -Force -Recurse -ErrorAction SilentlyContinue
- }
-
- $ValidationFailures = 0
-
- # Process each NuGet package in parallel
- Get-ChildItem "$InputPath\*.symbols.nupkg" |
- ForEach-Object {
- Write-Host "Starting $($_.FullName)"
- Start-Job -ScriptBlock $ValidatePackage -ArgumentList $_.FullName | Out-Null
- $NumJobs = @(Get-Job -State 'Running').Count
-
- while ($NumJobs -ge $MaxParallelJobs) {
- Write-Host "There are $NumJobs validation jobs running right now. Waiting $SecondsBetweenLoadChecks seconds to check again."
- sleep $SecondsBetweenLoadChecks
- $NumJobs = @(Get-Job -State 'Running').Count
- }
-
- foreach ($Job in @(Get-Job -State 'Completed')) {
- $jobResult = Wait-Job -Id $Job.Id | Receive-Job
- CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures) -LogErrors
- Remove-Job -Id $Job.Id
- }
- }
-
- foreach ($Job in @(Get-Job)) {
- $jobResult = Wait-Job -Id $Job.Id | Receive-Job
- CheckJobResult $jobResult.result $jobResult.packagePath ([ref]$ValidationFailures)
- Remove-Job -Id $Job.Id
- }
- if ($ValidationFailures -gt 0) {
- Write-PipelineTelemetryError -Category 'SourceLink' -Message "$ValidationFailures package(s) failed validation."
- ExitWithExitCode 1
- }
-}
-
-function InstallSourcelinkCli {
- $sourcelinkCliPackageName = 'sourcelink'
-
- $dotnetRoot = InitializeDotNetCli -install:$true
- $dotnet = "$dotnetRoot\dotnet.exe"
- $toolList = & "$dotnet" tool list --global
-
- if (($toolList -like "*$sourcelinkCliPackageName*") -and ($toolList -like "*$sourcelinkCliVersion*")) {
- Write-Host "SourceLink CLI version $sourcelinkCliVersion is already installed."
- }
- else {
- Write-Host "Installing SourceLink CLI version $sourcelinkCliVersion..."
- Write-Host 'You may need to restart your command window if this is the first dotnet tool you have installed.'
- & "$dotnet" tool install $sourcelinkCliPackageName --version $sourcelinkCliVersion --verbosity "minimal" --global
- }
-}
-
-try {
- InstallSourcelinkCli
-
- foreach ($Job in @(Get-Job)) {
- Remove-Job -Id $Job.Id
- }
-
- ValidateSourceLinkLinks
-}
-catch {
- Write-Host $_.Exception
- Write-Host $_.ScriptStackTrace
- Write-PipelineTelemetryError -Category 'SourceLink' -Message $_
- ExitWithExitCode 1
-}
diff --git a/eng/common/sdk-task.ps1 b/eng/common/sdk-task.ps1
index 68119de603e..64fd2f8abec 100644
--- a/eng/common/sdk-task.ps1
+++ b/eng/common/sdk-task.ps1
@@ -22,7 +22,7 @@ $warnAsError = if ($noWarnAsError) { $false } else { $true }
function Print-Usage() {
Write-Host "Common settings:"
- Write-Host " -task Name of Arcade task (name of a project in toolset directory of the Arcade SDK package)"
+ Write-Host " -task Name of Arcade task (name of a project in SdkTasks directory of the Arcade SDK package)"
Write-Host " -restore Restore dependencies"
Write-Host " -verbosity Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]"
Write-Host " -help Print help and exit"
diff --git a/eng/common/sdk-task.sh b/eng/common/sdk-task.sh
index 1cf71bb2aea..3270f83fa9a 100755
--- a/eng/common/sdk-task.sh
+++ b/eng/common/sdk-task.sh
@@ -2,7 +2,7 @@
show_usage() {
echo "Common settings:"
- echo " --task Name of Arcade task (name of a project in toolset directory of the Arcade SDK package)"
+ echo " --task Name of Arcade task (name of a project in SdkTasks directory of the Arcade SDK package)"
echo " --restore Restore dependencies"
echo " --verbosity Msbuild verbosity: q[uiet], m[inimal], n[ormal], d[etailed], and diag[nostic]"
echo " --help Print help and exit"
diff --git a/eng/common/template-guidance.md b/eng/common/template-guidance.md
index cdc62e72b07..f772aa3d78f 100644
--- a/eng/common/template-guidance.md
+++ b/eng/common/template-guidance.md
@@ -81,7 +81,6 @@ eng\common\
publish-build-artifacts.yml (logic)
publish-pipeline-artifacts.yml (logic)
component-governance.yml (shim)
- generate-sbom.yml (shim)
publish-logs.yml (shim)
retain-build.yml (shim)
send-to-helix.yml (shim)
@@ -104,7 +103,6 @@ eng\common\
setup-maestro-vars.yml (logic)
steps\
component-governance.yml (logic)
- generate-sbom.yml (logic)
publish-build-artifacts.yml (redirect)
publish-logs.yml (logic)
publish-pipeline-artifacts.yml (redirect)
diff --git a/eng/common/templates-official/job/job.yml b/eng/common/templates-official/job/job.yml
index f70224eaa45..d68e9fbc265 100644
--- a/eng/common/templates-official/job/job.yml
+++ b/eng/common/templates-official/job/job.yml
@@ -1,24 +1,15 @@
parameters:
-# Sbom related params
- enableSbom: true
runAsPublic: false
- PackageVersion: 9.0.0
- BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts'
+# Sbom related params, unused now and can eventually be removed
+ enableSbom: unused
+ PackageVersion: unused
+ BuildDropPath: unused
jobs:
- template: /eng/common/core-templates/job/job.yml
parameters:
is1ESPipeline: true
- componentGovernanceSteps:
- - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}:
- - template: /eng/common/templates/steps/generate-sbom.yml
- parameters:
- PackageVersion: ${{ parameters.packageVersion }}
- BuildDropPath: ${{ parameters.buildDropPath }}
- ManifestDirPath: $(Build.ArtifactStagingDirectory)/sbom
- publishArtifacts: false
-
# publish artifacts
# for 1ES managed templates, use the templateContext.output to handle multiple outputs.
templateContext:
@@ -26,12 +17,19 @@ jobs:
outputs:
- ${{ if ne(parameters.artifacts.publish, '') }}:
- ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}:
- - output: buildArtifacts
+ - output: pipelineArtifact
displayName: Publish pipeline artifacts
- PathtoPublish: '$(Build.ArtifactStagingDirectory)/artifacts'
- ArtifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}
- condition: always()
- retryCountOnTaskFailure: 10 # for any logs being locked
+ targetPath: '$(Build.ArtifactStagingDirectory)/artifacts'
+ artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}
+ condition: succeeded()
+ retryCountOnTaskFailure: 10 # for any files being locked
+ continueOnError: true
+ - output: pipelineArtifact
+ displayName: Publish pipeline artifacts
+ targetPath: '$(Build.ArtifactStagingDirectory)/artifacts'
+ artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}_Attempt$(System.JobAttempt)
+ condition: not(succeeded())
+ retryCountOnTaskFailure: 10 # for any files being locked
continueOnError: true
- ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}:
- output: pipelineArtifact
@@ -40,8 +38,8 @@ jobs:
displayName: 'Publish logs'
continueOnError: true
condition: always()
- retryCountOnTaskFailure: 10 # for any logs being locked
- sbomEnabled: false # we don't need SBOM for logs
+ retryCountOnTaskFailure: 10 # for any files being locked
+ isProduction: false # logs are non-production artifacts
- ${{ if eq(parameters.enablePublishBuildArtifacts, true) }}:
- output: pipelineArtifact
@@ -50,7 +48,8 @@ jobs:
artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' ) }}
continueOnError: true
condition: always()
- sbomEnabled: false # we don't need SBOM for logs
+ retryCountOnTaskFailure: 10 # for any files being locked
+ isProduction: false # logs are non-production artifacts
- ${{ if eq(parameters.enableBuildRetry, 'true') }}:
- output: pipelineArtifact
@@ -58,14 +57,20 @@ jobs:
artifactName: 'BuildConfiguration'
displayName: 'Publish build retry configuration'
continueOnError: true
- sbomEnabled: false # we don't need SBOM for BuildConfiguration
+ retryCountOnTaskFailure: 10 # for any files being locked
+ isProduction: false # BuildConfiguration is a non-production artifact
- - ${{ if and(eq(parameters.runAsPublic, 'false'), ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.enableSbom, 'true')) }}:
+ # V4 publishing: automatically publish staged artifacts as a pipeline artifact.
+ # The artifact name matches the SDK's FutureArtifactName ($(System.PhaseName)_Artifacts),
+ # which is encoded in the asset manifest for downstream publishing to discover.
+ # Jobs can opt in by setting enablePublishing: true.
+ - ${{ if and(eq(parameters.publishingVersion, 4), eq(parameters.enablePublishing, 'true')) }}:
- output: pipelineArtifact
- displayName: Publish SBOM manifest
+ displayName: 'Publish V4 pipeline artifacts'
+ targetPath: '$(Build.ArtifactStagingDirectory)/artifacts'
+ artifactName: '$(System.PhaseName)_Artifacts'
continueOnError: true
- targetPath: $(Build.ArtifactStagingDirectory)/sbom
- artifactName: $(ARTIFACT_NAME)
+ retryCountOnTaskFailure: 10 # for any files being locked
# add any outputs provided via root yaml
- ${{ if ne(parameters.templateContext.outputs, '') }}:
diff --git a/eng/common/templates-official/steps/component-governance.yml b/eng/common/templates-official/steps/component-governance.yml
deleted file mode 100644
index 30bb3985ca2..00000000000
--- a/eng/common/templates-official/steps/component-governance.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-steps:
-- template: /eng/common/core-templates/steps/component-governance.yml
- parameters:
- is1ESPipeline: true
-
- ${{ each parameter in parameters }}:
- ${{ parameter.key }}: ${{ parameter.value }}
diff --git a/eng/common/templates-official/steps/publish-pipeline-artifacts.yml b/eng/common/templates-official/steps/publish-pipeline-artifacts.yml
index 172f9f0fdc9..9e5981365e5 100644
--- a/eng/common/templates-official/steps/publish-pipeline-artifacts.yml
+++ b/eng/common/templates-official/steps/publish-pipeline-artifacts.yml
@@ -24,5 +24,7 @@ steps:
artifactName: ${{ parameters.args.artifactName }}
${{ if parameters.args.properties }}:
properties: ${{ parameters.args.properties }}
- ${{ if parameters.args.sbomEnabled }}:
+ ${{ if ne(parameters.args.sbomEnabled, '') }}:
sbomEnabled: ${{ parameters.args.sbomEnabled }}
+ ${{ if ne(parameters.args.isProduction, '') }}:
+ isProduction: ${{ parameters.args.isProduction }}
diff --git a/eng/common/templates/job/job.yml b/eng/common/templates/job/job.yml
index 7f1b5d97d1a..5e261f34db4 100644
--- a/eng/common/templates/job/job.yml
+++ b/eng/common/templates/job/job.yml
@@ -1,12 +1,12 @@
parameters:
enablePublishBuildArtifacts: false
- disableComponentGovernance: ''
- componentGovernanceIgnoreDirectories: ''
-# Sbom related params
- enableSbom: true
runAsPublic: false
- PackageVersion: 9.0.0
- BuildDropPath: '$(System.DefaultWorkingDirectory)/artifacts'
+# CG related params, unused now and can eventually be removed
+ disableComponentGovernance: unused
+# Sbom related params, unused now and can eventually be removed
+ enableSbom: unused
+ PackageVersion: unused
+ BuildDropPath: unused
jobs:
- template: /eng/common/core-templates/job/job.yml
@@ -21,32 +21,34 @@ jobs:
- ${{ each step in parameters.steps }}:
- ${{ step }}
- componentGovernanceSteps:
- - template: /eng/common/templates/steps/component-governance.yml
- parameters:
- ${{ if eq(parameters.disableComponentGovernance, '') }}:
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'), eq(parameters.runAsPublic, 'false'), or(startsWith(variables['Build.SourceBranch'], 'refs/heads/release/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/dotnet/'), startsWith(variables['Build.SourceBranch'], 'refs/heads/microsoft/'), eq(variables['Build.SourceBranch'], 'refs/heads/main'))) }}:
- disableComponentGovernance: false
- ${{ else }}:
- disableComponentGovernance: true
- ${{ else }}:
- disableComponentGovernance: ${{ parameters.disableComponentGovernance }}
- componentGovernanceIgnoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }}
+ # we don't run CG in public
+ - ${{ if eq(variables['System.TeamProject'], 'public') }}:
+ - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true"
+ displayName: Set skipComponentGovernanceDetection variable
artifactPublishSteps:
- ${{ if ne(parameters.artifacts.publish, '') }}:
- ${{ if and(ne(parameters.artifacts.publish.artifacts, 'false'), ne(parameters.artifacts.publish.artifacts, '')) }}:
- - template: /eng/common/core-templates/steps/publish-build-artifacts.yml
+ - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
parameters:
is1ESPipeline: false
args:
displayName: Publish pipeline artifacts
- pathToPublish: '$(Build.ArtifactStagingDirectory)/artifacts'
- publishLocation: Container
+ targetPath: '$(Build.ArtifactStagingDirectory)/artifacts'
artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}
continueOnError: true
- condition: always()
- retryCountOnTaskFailure: 10 # for any logs being locked
+ condition: succeeded()
+ retryCountOnTaskFailure: 10 # for any files being locked
+ - template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
+ parameters:
+ is1ESPipeline: false
+ args:
+ displayName: Publish pipeline artifacts
+ targetPath: '$(Build.ArtifactStagingDirectory)/artifacts'
+ artifactName: ${{ coalesce(parameters.artifacts.publish.artifacts.name , 'Artifacts_$(Agent.Os)_$(_BuildConfig)') }}_Attempt$(System.JobAttempt)
+ continueOnError: true
+ condition: not(succeeded())
+ retryCountOnTaskFailure: 10 # for any files being locked
- ${{ if and(ne(parameters.artifacts.publish.logs, 'false'), ne(parameters.artifacts.publish.logs, '')) }}:
- template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
parameters:
@@ -57,8 +59,7 @@ jobs:
displayName: 'Publish logs'
continueOnError: true
condition: always()
- retryCountOnTaskFailure: 10 # for any logs being locked
- sbomEnabled: false # we don't need SBOM for logs
+ retryCountOnTaskFailure: 10 # for any files being locked
- ${{ if ne(parameters.enablePublishBuildArtifacts, 'false') }}:
- template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
@@ -70,7 +71,7 @@ jobs:
artifactName: ${{ coalesce(parameters.enablePublishBuildArtifacts.artifactName, '$(Agent.Os)_$(Agent.JobName)_Attempt$(System.JobAttempt)' ) }}
continueOnError: true
condition: always()
- sbomEnabled: false
+ retryCountOnTaskFailure: 10 # for any files being locked
- ${{ if eq(parameters.enableBuildRetry, 'true') }}:
- template: /eng/common/core-templates/steps/publish-pipeline-artifacts.yml
@@ -81,4 +82,4 @@ jobs:
artifactName: 'BuildConfiguration'
displayName: 'Publish build retry configuration'
continueOnError: true
- sbomEnabled: false # we don't need SBOM for BuildConfiguration
+ retryCountOnTaskFailure: 10 # for any files being locked
diff --git a/eng/common/templates/steps/component-governance.yml b/eng/common/templates/steps/component-governance.yml
deleted file mode 100644
index c12a5f8d21d..00000000000
--- a/eng/common/templates/steps/component-governance.yml
+++ /dev/null
@@ -1,7 +0,0 @@
-steps:
-- template: /eng/common/core-templates/steps/component-governance.yml
- parameters:
- is1ESPipeline: false
-
- ${{ each parameter in parameters }}:
- ${{ parameter.key }}: ${{ parameter.value }}
diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1
index 9d63019aa83..508773a1594 100644
--- a/eng/common/tools.ps1
+++ b/eng/common/tools.ps1
@@ -489,6 +489,7 @@ function LocateVisualStudio([object]$vsRequirements = $null){
if (Get-Member -InputObject $GlobalJson.tools -Name 'vswhere') {
$vswhereVersion = $GlobalJson.tools.vswhere
} else {
+ # keep this in sync with the VSWhereVersion in DefaultVersions.props
$vswhereVersion = '3.1.7'
}
@@ -623,17 +624,7 @@ function GetNuGetPackageCachePath() {
# Returns a full path to an Arcade SDK task project file.
function GetSdkTaskProject([string]$taskName) {
- $toolsetDir = Split-Path (InitializeToolset) -Parent
- $proj = Join-Path $toolsetDir "$taskName.proj"
- if (Test-Path $proj) {
- return $proj
- }
- # TODO: Remove this fallback once all supported versions use the new layout.
- $legacyProj = Join-Path $toolsetDir "SdkTasks\$taskName.proj"
- if (Test-Path $legacyProj) {
- return $legacyProj
- }
- throw "Unable to find $taskName.proj in toolset at: $toolsetDir"
+ return Join-Path (Split-Path (InitializeToolset) -Parent) "SdkTasks\$taskName.proj"
}
function InitializeNativeTools() {
@@ -670,18 +661,13 @@ function InitializeToolset() {
$nugetCache = GetNuGetPackageCachePath
$toolsetVersion = Read-ArcadeSdkVersion
- $toolsetToolsDir = Join-Path $ToolsetDir $toolsetVersion
-
- # Check if the toolset has already been extracted
- $toolsetBuildProj = $null
- $buildProjPath = Join-Path $toolsetToolsDir 'Build.proj'
-
- if (Test-Path $buildProjPath) {
- $toolsetBuildProj = $buildProjPath
- }
+ $toolsetLocationFile = Join-Path $ToolsetDir "$toolsetVersion.txt"
- if ($toolsetBuildProj -ne $null) {
- return $global:_InitializeToolset = $toolsetBuildProj
+ if (Test-Path $toolsetLocationFile) {
+ $path = Get-Content $toolsetLocationFile -TotalCount 1
+ if (Test-Path $path) {
+ return $global:_InitializeToolset = $path
+ }
}
if (-not $restore) {
@@ -689,40 +675,21 @@ function InitializeToolset() {
ExitWithExitCode 1
}
- $downloadArgs = @("package", "download", "Microsoft.DotNet.Arcade.Sdk@$toolsetVersion", "--verbosity", "minimal", "--prerelease", "--output", "$nugetCache")
- if ($env:NUGET_CONFIG) {
- $downloadArgs += "--configfile"
- $downloadArgs += $env:NUGET_CONFIG
- }
- DotNet @downloadArgs
+ $buildTool = InitializeBuildTool
- $packageDir = Join-Path $nugetCache (Join-Path 'microsoft.dotnet.arcade.sdk' $toolsetVersion)
- $packageToolsetDir = Join-Path $packageDir 'toolset'
- $packageToolsDir = Join-Path $packageDir 'tools'
+ $proj = Join-Path $ToolsetDir 'restore.proj'
+ $bl = if ($binaryLog) { '/bl:' + (Join-Path $LogDir 'ToolsetRestore.binlog') } else { '' }
- # TODO: Remove the tools/ check once all supported versions have the toolset folder.
- if (!(Test-Path $packageToolsetDir) -and !(Test-Path $packageToolsDir)) {
- Write-PipelineTelemetryError -Category 'InitializeToolset' -Message "Arcade SDK package does not contain a toolset or tools folder: $packageDir"
- ExitWithExitCode 3
- }
+ '' | Set-Content $proj
- New-Item -ItemType Directory -Path $toolsetToolsDir -Force | Out-Null
+ MSBuild-Core $proj $bl /t:__WriteToolsetLocation /clp:ErrorsOnly`;NoSummary /p:__ToolsetLocationOutputFile=$toolsetLocationFile
- # Copy toolset if present at the package root (new layout), otherwise fall back to tools
- if (Test-Path $packageToolsetDir) {
- Copy-Item -Path "$packageToolsetDir\*" -Destination $toolsetToolsDir -Recurse -Force
- } else {
- # TODO: Remove this fallback once all supported versions have the toolset folder.
- Copy-Item -Path "$packageToolsDir\*" -Destination $toolsetToolsDir -Recurse -Force
+ $path = Get-Content $toolsetLocationFile -Encoding UTF8 -TotalCount 1
+ if (!(Test-Path $path)) {
+ throw "Invalid toolset path: $path"
}
- if (Test-Path $buildProjPath) {
- $toolsetBuildProj = $buildProjPath
- } else {
- throw "Unable to find Build.proj in toolset at: $toolsetToolsDir"
- }
-
- return $global:_InitializeToolset = $toolsetBuildProj
+ return $global:_InitializeToolset = $path
}
function ExitWithExitCode([int] $exitCode) {
@@ -783,40 +750,6 @@ function MSBuild() {
MSBuild-Core @args
}
-#
-# Executes a dotnet command with arguments passed to the function.
-# Terminates the script if the command fails.
-#
-function DotNet() {
- $dotnetRoot = InitializeDotNetCli -install:$restore
- $dotnetPath = Join-Path $dotnetRoot (GetExecutableFileName 'dotnet')
-
- $cmdArgs = ""
- foreach ($arg in $args) {
- if ($null -ne $arg -and $arg.Trim() -ne "") {
- if ($arg.EndsWith('\')) {
- $arg = $arg + "\"
- }
- $cmdArgs += " `"$arg`""
- }
- }
-
- $env:ARCADE_BUILD_TOOL_COMMAND = "`"$dotnetPath`" $cmdArgs"
-
- $exitCode = Exec-Process $dotnetPath $cmdArgs
-
- if ($exitCode -ne 0) {
- Write-Host "dotnet command failed with exit code $exitCode. Check errors above." -ForegroundColor Red
-
- if ($ci -and $env:SYSTEM_TEAMPROJECT -ne $null -and !$fromVMR) {
- Write-PipelineSetResult -Result "Failed" -Message "dotnet command execution failed."
- ExitWithExitCode 0
- } else {
- ExitWithExitCode $exitCode
- }
- }
-}
-
#
# Executes msbuild (or 'dotnet msbuild') with arguments passed to the function.
# The arguments are automatically quoted.
diff --git a/eng/common/tools.sh b/eng/common/tools.sh
index 4407bc870b7..b886c087f23 100755
--- a/eng/common/tools.sh
+++ b/eng/common/tools.sh
@@ -420,18 +420,15 @@ function InitializeToolset {
ReadGlobalVersion "Microsoft.DotNet.Arcade.Sdk"
local toolset_version=$_ReadGlobalVersion
- local toolset_tools_dir="$toolset_dir/$toolset_version"
+ local toolset_location_file="$toolset_dir/$toolset_version.txt"
- # Check if the toolset has already been extracted
- local toolset_build_proj=""
- if [[ -a "$toolset_tools_dir/Build.proj" ]]; then
- toolset_build_proj="$toolset_tools_dir/Build.proj"
- fi
-
- if [[ -n "$toolset_build_proj" ]]; then
- # return value
- _InitializeToolset="$toolset_build_proj"
- return
+ if [[ -a "$toolset_location_file" ]]; then
+ local path=`cat "$toolset_location_file"`
+ if [[ -a "$path" ]]; then
+ # return value
+ _InitializeToolset="$path"
+ return
+ fi
fi
if [[ "$restore" != true ]]; then
@@ -439,34 +436,20 @@ function InitializeToolset {
ExitWithExitCode 2
fi
- local download_args=("package" "download" "Microsoft.DotNet.Arcade.Sdk@$toolset_version" "--verbosity" "minimal" "--prerelease" "--output" "$_GetNuGetPackageCachePath")
- if [[ -n "${NUGET_CONFIG:-}" ]]; then
- download_args+=("--configfile" "$NUGET_CONFIG")
- fi
- DotNet "${download_args[@]}"
-
- local package_dir="$_GetNuGetPackageCachePath/microsoft.dotnet.arcade.sdk/$toolset_version"
+ local proj="$toolset_dir/restore.proj"
- # TODO: Remove the tools/ check once all supported versions have the toolset folder.
- if [[ ! -d "$package_dir/toolset" && ! -d "$package_dir/tools" ]]; then
- Write-PipelineTelemetryError -category 'InitializeToolset' "Arcade SDK package does not contain a toolset or tools folder: $package_dir"
- ExitWithExitCode 3
+ local bl=""
+ if [[ "$binary_log" == true ]]; then
+ bl="/bl:$log_dir/ToolsetRestore.binlog"
fi
- mkdir -p "$toolset_tools_dir"
+ echo '' > "$proj"
+ MSBuild-Core "$proj" $bl /t:__WriteToolsetLocation /clp:ErrorsOnly\;NoSummary /p:__ToolsetLocationOutputFile="$toolset_location_file"
- # Copy toolset if present at the package root (new layout), otherwise fall back to tools
- if [[ -d "$package_dir/toolset" ]]; then
- cp -r "$package_dir/toolset/." "$toolset_tools_dir"
- else
- # TODO: Remove this fallback once all supported versions have the toolset folder.
- cp -r "$package_dir/tools/." "$toolset_tools_dir"
- fi
+ local toolset_build_proj=`cat "$toolset_location_file"`
- if [[ -a "$toolset_tools_dir/Build.proj" ]]; then
- toolset_build_proj="$toolset_tools_dir/Build.proj"
- else
- Write-PipelineTelemetryError -category 'Build' "Unable to find Build.proj in toolset at: $toolset_tools_dir"
+ if [[ ! -a "$toolset_build_proj" ]]; then
+ Write-PipelineTelemetryError -category 'Build' "Invalid toolset path: $toolset_build_proj"
ExitWithExitCode 3
fi
@@ -488,26 +471,6 @@ function StopProcesses {
return 0
}
-function DotNet {
- InitializeDotNetCli $restore
-
- local dotnet_path="$_InitializeDotNetCli/dotnet"
-
- export ARCADE_BUILD_TOOL_COMMAND="$dotnet_path $@"
-
- "$dotnet_path" "$@" || {
- local exit_code=$?
- echo "dotnet command failed with exit code $exit_code. Check errors above."
-
- if [[ "$ci" == true && -n ${SYSTEM_TEAMPROJECT:-} && "$from_vmr" != true ]]; then
- Write-PipelineSetResult -result "Failed" -message "dotnet command execution failed."
- ExitWithExitCode 0
- else
- ExitWithExitCode $exit_code
- fi
- }
-}
-
function MSBuild {
local args=( "$@" )
if [[ "$pipelines_log" == true ]]; then
@@ -610,22 +573,8 @@ function GetDarc {
# Returns a full path to an Arcade SDK task project file.
function GetSdkTaskProject {
- local taskName=$1
- local toolsetDir
- toolsetDir="$(dirname "$_InitializeToolset")"
- local proj="$toolsetDir/$taskName.proj"
- if [[ -a "$proj" ]]; then
- echo "$proj"
- return
- fi
- # TODO: Remove this fallback once all supported versions use the new layout.
- local legacyProj="$toolsetDir/SdkTasks/$taskName.proj"
- if [[ -a "$legacyProj" ]]; then
- echo "$legacyProj"
- return
- fi
- Write-PipelineTelemetryError -category 'Build' "Unable to find $taskName.proj in toolset at: $toolsetDir"
- ExitWithExitCode 3
+ taskName=$1
+ echo "$(dirname $_InitializeToolset)/SdkTasks/$taskName.proj"
}
ResolvePath "${BASH_SOURCE[0]}"
diff --git a/global.json b/global.json
index d2fea3eb0db..331af2abcbb 100644
--- a/global.json
+++ b/global.json
@@ -1,6 +1,6 @@
{
"sdk": {
- "version": "11.0.100-preview.4.26210.111",
+ "version": "11.0.100-preview.3.26170.106",
"rollForward": "latestFeature",
"paths": [
".dotnet",
@@ -9,7 +9,7 @@
"errorMessage": "The required .NET SDK wasn't found. Please run ./eng/common/dotnet.cmd/sh to install it."
},
"tools": {
- "dotnet": "11.0.100-preview.4.26210.111"
+ "dotnet": "11.0.100-preview.3.26170.106"
},
"msbuild-sdks": {
"Microsoft.DotNet.Arcade.Sdk": "11.0.0-beta.26211.1",
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/Microsoft.DotNet.Arcade.Sdk.csproj b/src/Microsoft.DotNet.Arcade.Sdk/Microsoft.DotNet.Arcade.Sdk.csproj
index dddba69cd4d..861028474b9 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/Microsoft.DotNet.Arcade.Sdk.csproj
+++ b/src/Microsoft.DotNet.Arcade.Sdk/Microsoft.DotNet.Arcade.Sdk.csproj
@@ -17,7 +17,7 @@
false
<_GeneratedVersionFilePath>$(IntermediateOutputPath)DefaultVersions.Generated.props
- $(NoWarn);3021;NU5100;NU5105;NU5111;SYSLIB0013
+ $(NoWarn);3021;NU5105;NU5111;SYSLIB0013
@@ -40,9 +40,6 @@
-
@@ -87,10 +84,10 @@
+ PackagePath="tools\net\Microsoft.DotNet.ArcadeLogging.dll" />
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/sdk/Sdk.props b/src/Microsoft.DotNet.Arcade.Sdk/sdk/Sdk.props
index b560dbf5b65..10e1fe67ea4 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/sdk/Sdk.props
+++ b/src/Microsoft.DotNet.Arcade.Sdk/sdk/Sdk.props
@@ -1,6 +1,16 @@
-
+
+
+ <_SuppressSdkImports>false
+ <_SuppressSdkImports Condition="'$(__ToolsetLocationOutputFile)' != ''">true
+
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/sdk/Sdk.targets b/src/Microsoft.DotNet.Arcade.Sdk/sdk/Sdk.targets
index a55e12a0efc..11708bccc85 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/sdk/Sdk.targets
+++ b/src/Microsoft.DotNet.Arcade.Sdk/sdk/Sdk.targets
@@ -10,10 +10,21 @@
<_BeforeCommonTargetsHookUsed Condition="'$(_ArcadeBeforeCommonTargetsImported)' != 'true'">false
-
-
+
+
-
-
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/AfterSigning.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/AfterSigning.proj
similarity index 54%
rename from src/Microsoft.DotNet.Arcade.Sdk/toolset/AfterSigning.proj
rename to src/Microsoft.DotNet.Arcade.Sdk/tools/AfterSigning.proj
index 74f91d51b5e..be73c83cef3 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/AfterSigning.proj
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/AfterSigning.proj
@@ -1,5 +1,43 @@
-
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+ BeforeBuild;
+ CoreBuild;
+ AfterBuild
+
+
+
+
+
+
+
+
+
+
+
+ BeforePack;
+ CorePack;
+ AfterPack
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/Build.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/Build.proj
similarity index 95%
rename from src/Microsoft.DotNet.Arcade.Sdk/toolset/Build.proj
rename to src/Microsoft.DotNet.Arcade.Sdk/tools/Build.proj
index ad5e7b9b478..802e0962075 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/Build.proj
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/Build.proj
@@ -1,5 +1,5 @@
-
+
+ true
@@ -47,6 +49,9 @@
+
+
+
@@ -148,8 +153,12 @@
<_RestoreToolsProps Include="@(_CommonProps)"/>
+ <_RestoreToolsProps Include="BaseIntermediateOutputPath=$(ArtifactsToolsetDir)Common"/>
<_RestoreToolsProps Include="ExcludeRestorePackageImports=true"/>
- <_RestoreToolsProps Condition="'@(_SolutionBuildTargets)' != ''" Include="_SolutionBuildTargets=true"/>
+ <_RestoreToolsProps Include="_NuGetRestoreTargets=$(_NuGetRestoreTargets)"/>
+
+
+ <_RestoreToolsProps Include="Publish=$(Publish)"/>
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/BuildReleasePackages.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/BuildReleasePackages.targets
similarity index 79%
rename from src/Microsoft.DotNet.Arcade.Sdk/toolset/BuildReleasePackages.targets
rename to src/Microsoft.DotNet.Arcade.Sdk/tools/BuildReleasePackages.targets
index 31bfb572a10..048dcff3db1 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/BuildReleasePackages.targets
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/BuildReleasePackages.targets
@@ -1,12 +1,15 @@
-
-
-
+
+ <_NuGetRepackAssembly>$(NuGetPackageRoot)microsoft.dotnet.nugetrepack.tasks\$(MicrosoftDotnetNuGetRepackTasksVersion)\tools\net\Microsoft.DotNet.NuGetRepack.Tasks.dll
+
+
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/BuildStep.props b/src/Microsoft.DotNet.Arcade.Sdk/tools/BuildStep.props
new file mode 100644
index 00000000000..a48dd077e84
--- /dev/null
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/BuildStep.props
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/BuildTasks.props b/src/Microsoft.DotNet.Arcade.Sdk/tools/BuildTasks.props
index 370a4fd9754..9a51d5b4cb9 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/BuildTasks.props
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/BuildTasks.props
@@ -15,23 +15,4 @@
$(MSBuildThisFileDirectory)net\Microsoft.DotNet.Arcade.Sdk.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/DefaultVersions.props b/src/Microsoft.DotNet.Arcade.Sdk/tools/DefaultVersions.props
index a2a5866204e..b56d1efedb2 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/DefaultVersions.props
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/DefaultVersions.props
@@ -93,16 +93,16 @@
$(MSTestVersion)
$(ArcadeSdkVersion)
$(ArcadeSdkVersion)
+
+ 3.1.7
1.0.0
$(ArcadeSdkVersion)
$(ArcadeSdkVersion)
1.0.0
2.1.3
1.1.286
- 3.14.1-9323.2545153
- 6.0.3-dotnet.4
- $(ArcadeSdkVersion)
- $(ArcadeSdkVersion)
+ 3.14.1-11027.2914512
+ 5.0.2-dotnet.2811440
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/Directory.Build.props b/src/Microsoft.DotNet.Arcade.Sdk/tools/Directory.Build.props
new file mode 100644
index 00000000000..baea506b124
--- /dev/null
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/Directory.Build.props
@@ -0,0 +1,11 @@
+
+
+
+
+
+ false
+ false
+
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/Empty.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/Empty.targets
index e1a79f00fbd..fd18c0474aa 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/Empty.targets
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/Empty.targets
@@ -1,5 +1,5 @@
-
+
- true
- false
- false
- false
- false
- false
- true
- false
- false
- true
- true
- false
- false
- false
- None
- false
- false
+
+ false
-
-
-
-
-
-
-
-
+
+
+
+
-
-
+
-
-
-
-
-
-
-
-
-
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/EmptyDisableRestore.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/EmptyDisableRestore.targets
deleted file mode 100644
index 9ece989244e..00000000000
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/EmptyDisableRestore.targets
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
-
-
- false
-
-
-
-
-
-
-
-
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/ExcludeFromBuild.BeforeCommonTargets.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/ExcludeFromBuild.BeforeCommonTargets.targets
index d196db8678a..3e7006260e8 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/ExcludeFromBuild.BeforeCommonTargets.targets
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/ExcludeFromBuild.BeforeCommonTargets.targets
@@ -46,6 +46,7 @@
avoid building tests in certain product build scenarios.
-->
+ <_SuppressAllTargets>false
<_SuppressAllTargets Condition="'$(DotNetBuildSourceOnly)' == 'true' and '$(ExcludeFromSourceOnlyBuild)' == 'true'">true
<_SuppressAllTargets Condition="'$(DotNetBuild)' == 'true' and '$(ExcludeFromDotNetBuild)' == 'true'">true
@@ -56,7 +57,7 @@
which will avoid importing the restore targets inside the .NET SDK. If the restore targets exist, then static graph restore will attempt tpo
execute. -->
true
- $(MSBuildThisFileDirectory)NoRestore.targets
+ $(MSBuildThisFileDirectory)NoRestore.targets
false
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/GenerateChecksums.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/GenerateChecksums.targets
index 02089e3a6d1..b625b3e70e9 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/GenerateChecksums.targets
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/GenerateChecksums.targets
@@ -1,6 +1,8 @@
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/GenerateResxSource.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/GenerateResxSource.targets
index d031f0d797f..e7f105c21d0 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/GenerateResxSource.targets
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/GenerateResxSource.targets
@@ -6,6 +6,8 @@
The source file is generated to intermediate output dir to avoid polluting the source tree.
See https://github.com/dotnet/sdk/issues/94 that tracks productization of this code.
-->
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/InstallDotNetCore.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/InstallDotNetCore.targets
similarity index 72%
rename from src/Microsoft.DotNet.Arcade.Sdk/toolset/InstallDotNetCore.targets
rename to src/Microsoft.DotNet.Arcade.Sdk/tools/InstallDotNetCore.targets
index 27bccaf4b26..aba176e26b2 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/InstallDotNetCore.targets
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/InstallDotNetCore.targets
@@ -1,13 +1,17 @@
-
+
+
+
<_DotNetInstallScript>$(RepositoryEngineeringDir)common\dotnet-install.cmd
<_DotNetInstallScript Condition="'$(OS)' != 'Windows_NT'">$(RepositoryEngineeringDir)common\dotnet-install.sh
-
+
+
+
+
+
$(IntermediateOutputPath)$(TargetFileName).pcbm
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/Publish.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj
similarity index 96%
rename from src/Microsoft.DotNet.Arcade.Sdk/toolset/Publish.proj
rename to src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj
index ada96117b82..44834f60188 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/Publish.proj
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/Publish.proj
@@ -1,5 +1,5 @@
-
+
-
-
-
+
+
+ true
+
+
+
+
+
+
@@ -65,7 +72,7 @@
- GatherPublishItems;AutoGenerateSymbolPackages
+ BeforePublish;AutoGenerateSymbolPackages
assets/symbols/
$(SymbolPackageBaseRelativeBlobPath)$(BUILD_REPOSITORY_NAME)/
@@ -125,9 +132,11 @@
-
+
+
+
-
+
<_ExistingSymbolPackage Include="@(Artifact)" Condition="'%(Artifact.SkipPublish)' != 'true' and $([System.String]::Copy('%(Filename)%(Extension)').EndsWith('.symbols.nupkg'))">
@@ -174,7 +183,7 @@
-
+
$(ArtifactsTmpDir)SymbolPackages\
@@ -339,7 +348,7 @@
true
-
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/RepositoryInfo.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/RepositoryInfo.targets
index 36233e7cd88..f3f1dc0a5d9 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/RepositoryInfo.targets
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/RepositoryInfo.targets
@@ -56,6 +56,7 @@
Condition="'$(DisableSourceLinkUrlTranslation)' == 'false'"
DependsOnTargets="$(SourceControlManagerUrlTranslationTargets)"
BeforeTargets="SourceControlManagerPublishTranslatedUrls">
+
@@ -77,6 +78,7 @@
Generates and adds {PackageId}.SourceLink.targets file to the build directory of the source package.
-->
+
$(BeforePack);_AddSourcePackageSourceLinkFile
@@ -117,31 +119,14 @@
-
-
-
-
-
-
-
-
- <_LicenseExpression>$(PackageLicenseExpression)
- <_LicenseExpression Condition="'$(_LicenseExpression)' == ''">$(PackageLicenseExpressionInternal)
-
- <_ExpectedLicensePath>$(MSBuildThisFileDirectory)Licenses\$(_LicenseExpression).txt
-
-
-
-
-
-
-
-
-
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/RepositoryValidation.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/RepositoryValidation.proj
index b45d2f307ab..5efc4b438dd 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/RepositoryValidation.proj
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/RepositoryValidation.proj
@@ -8,6 +8,9 @@
+
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/RuntimeIdentifierInference.BeforeNETSdkTargets.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/RuntimeIdentifierInference.BeforeNETSdkTargets.targets
index 4840877b1ad..e0d310a92a4 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/RuntimeIdentifierInference.BeforeNETSdkTargets.targets
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/RuntimeIdentifierInference.BeforeNETSdkTargets.targets
@@ -86,6 +86,9 @@
<_FilterRuntimeIdentifier Condition="'$(PortableTargetRid)' != ''">$(PortableTargetRid)
+
+ <_SuppressAllTargets Condition="'$(DisableArcadeExcludeFromBuildSupport)' != 'true' and $(_ExplicitlySpecifiedRuntimeIdentifiers.Contains(';$(_FilterRuntimeIdentifier);')) == 'false'">true
+
$(RuntimeIdentifier)
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/CreateBaselineUpdatePR.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/CreateBaselineUpdatePR.proj
similarity index 78%
rename from src/Microsoft.DotNet.Arcade.Sdk/toolset/CreateBaselineUpdatePR.proj
rename to src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/CreateBaselineUpdatePR.proj
index 30d5b7300c8..c3c1920baaa 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/CreateBaselineUpdatePR.proj
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/CreateBaselineUpdatePR.proj
@@ -2,11 +2,12 @@
+ $(BundledNETCoreAppTargetFramework)
Publish
-
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/Directory.Build.props b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/Directory.Build.props
new file mode 100644
index 00000000000..a889329a529
--- /dev/null
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/Directory.Build.props
@@ -0,0 +1,14 @@
+
+
+
+
+ $([System.IO.Path]::GetFullPath('$(RepoRoot)/'))
+
+
+
+
+
+
+
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/PublishArtifactsInManifest.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishArtifactsInManifest.proj
similarity index 98%
rename from src/Microsoft.DotNet.Arcade.Sdk/toolset/PublishArtifactsInManifest.proj
rename to src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishArtifactsInManifest.proj
index e551d8cf8f3..1c09e11e205 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/PublishArtifactsInManifest.proj
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishArtifactsInManifest.proj
@@ -75,16 +75,14 @@
-->
+ $(BundledNETCoreAppTargetFramework)
Publish
false
-
-
-
-
+
@@ -160,7 +158,12 @@
StreamingPublishingMaxClients="$(StreamingPublishingMaxClients)"
NonStreamingPublishingMaxClients="$(NonStreamingPublishingMaxClients)"
FeedKeys="@(FeedKey)"
- FeedOverrides="@(FeedOverride)" />
+ FeedOverrides="@(FeedOverride)"
+ />
+
+
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/PublishBuildAssets.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishBuildAssets.proj
similarity index 83%
rename from src/Microsoft.DotNet.Arcade.Sdk/toolset/PublishBuildAssets.proj
rename to src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishBuildAssets.proj
index 67f34a5607a..851fbaaae10 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/PublishBuildAssets.proj
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishBuildAssets.proj
@@ -13,11 +13,18 @@
true
+
+
+
+
+
+
+ $(BundledNETCoreAppTargetFramework)
Publish
-
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/PublishSignedAssets.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishSignedAssets.proj
similarity index 96%
rename from src/Microsoft.DotNet.Arcade.Sdk/toolset/PublishSignedAssets.proj
rename to src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishSignedAssets.proj
index 668da283373..64464f4785c 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/PublishSignedAssets.proj
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishSignedAssets.proj
@@ -1,5 +1,10 @@
+
+
+ Publish
+ $(BundledNETCoreAppTargetFramework)
+
-
- Publish
-
-
-
-
-
-
+
+
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/PublishToSymbolServers.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishToSymbolServers.proj
similarity index 95%
rename from src/Microsoft.DotNet.Arcade.Sdk/toolset/PublishToSymbolServers.proj
rename to src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishToSymbolServers.proj
index ae826422510..a3e199b3ae5 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/PublishToSymbolServers.proj
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/PublishToSymbolServers.proj
@@ -18,13 +18,10 @@
-->
+ $(BundledNETCoreAppTargetFramework)
Publish
-
-
-
-
@@ -42,7 +39,7 @@
3650
@@ -114,4 +111,8 @@
TreatPdbConversionIssuesAsInfo="$(TreatPdbConversionIssuesAsInfo)"/>
+
+
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/SigningValidation.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/SigningValidation.proj
similarity index 94%
rename from src/Microsoft.DotNet.Arcade.Sdk/toolset/SigningValidation.proj
rename to src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/SigningValidation.proj
index fc23673f135..e1d00e97224 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/SigningValidation.proj
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/SigningValidation.proj
@@ -19,11 +19,12 @@
+ $(BundledNETCoreAppTargetFramework)
Build
-
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/Versions.props b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/Versions.props
new file mode 100644
index 00000000000..d99f8045360
--- /dev/null
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/Versions.props
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+ $(ArcadeSdkVersion)
+ $(ArcadeSdkVersion)
+ $(ArcadeSdkVersion)
+ $(ArcadeSdkVersion)
+ $(MicrosoftSymbolUploaderBuildTaskVersion)
+
+
+
+
+ $(RestoreAdditionalProjectSources);
+ https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-public/nuget/v3/index.json;
+ https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-tools/nuget/v3/index.json;
+ https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json;
+
+
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/VisualStudio.BuildIbcTrainingSettings.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/VisualStudio.BuildIbcTrainingSettings.proj
similarity index 81%
rename from src/Microsoft.DotNet.Arcade.Sdk/toolset/VisualStudio.BuildIbcTrainingSettings.proj
rename to src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/VisualStudio.BuildIbcTrainingSettings.proj
index 9cc1f5e337c..cec7c2c0a5c 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/VisualStudio.BuildIbcTrainingSettings.proj
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/VisualStudio.BuildIbcTrainingSettings.proj
@@ -1,5 +1,5 @@
-
+
-
-
-
+
+
+
+ <_VisualStudioBuildTasksAssembly>$(NuGetPackageRoot)microsoft.dotnet.build.tasks.visualstudio\$(MicrosoftDotNetBuildTasksVisualStudioVersion)\tools\net\Microsoft.DotNet.Build.Tasks.VisualStudio.dll
+
+
+
<_OutputFilePath>$(VisualStudioSetupInsertionPath)OptProf\Training.runsettings
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/VisualStudio.IbcTraining.runsettings b/src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/VisualStudio.IbcTraining.runsettings
similarity index 100%
rename from src/Microsoft.DotNet.Arcade.Sdk/toolset/VisualStudio.IbcTraining.runsettings
rename to src/Microsoft.DotNet.Arcade.Sdk/tools/SdkTasks/VisualStudio.IbcTraining.runsettings
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/Sign.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/Sign.proj
similarity index 79%
rename from src/Microsoft.DotNet.Arcade.Sdk/toolset/Sign.proj
rename to src/Microsoft.DotNet.Arcade.Sdk/tools/Sign.proj
index d20dbd7f502..8049677420e 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/Sign.proj
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/Sign.proj
@@ -1,5 +1,5 @@
-
+
-
-
-
+
+
+ true
+
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ $(NuGetPackageRoot)sn\$(SNVersion)\sn.exe
@@ -88,7 +91,7 @@
SNBinaryPath="$(SNBinaryPath)"
MicroBuildCorePath="$(NuGetPackageRoot)microsoft.visualstudioeng.microbuild.core\$(MicrosoftVisualStudioEngMicroBuildCoreVersion)"
Wix3ToolsPath="$(WixInstallPath)"
- WixToolsPath="$(WixToolsPath)"
+ WixToolsPath="$(NuGetPackageRoot)microsoft.wixtoolset.sdk\$(MicrosoftWixToolsetSdkVersion)\tools\net472\x64"
PkgToolPath="@(MacOSPkgCliItem)"
RepackParallelism="$(SignToolRepackParallelism)"
MaximumParallelFileSize="$(SignToolRepackMaximumParallelFileSize)"
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/Sign.props b/src/Microsoft.DotNet.Arcade.Sdk/tools/Sign.props
similarity index 96%
rename from src/Microsoft.DotNet.Arcade.Sdk/toolset/Sign.props
rename to src/Microsoft.DotNet.Arcade.Sdk/tools/Sign.props
index 73388d13fdf..7b7439e02b8 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/Sign.props
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/Sign.props
@@ -71,8 +71,8 @@
-
-
+
+
+
false
-
-
- $(MSBuildThisFileDirectory)snk\
-
-
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/StrongName.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/StrongName.targets
index 94ea2d76039..91c801d48ba 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/StrongName.targets
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/StrongName.targets
@@ -31,21 +31,21 @@
- $(ArcadeSdkSnkDir)MSFT.snk
+ $(MSBuildThisFileDirectory)snk/MSFT.snk
$(MicrosoftPublicKey)
b03f5f7f11d50a3a
- $(ArcadeSdkSnkDir)35MSSharedLib1024.snk
+ $(MSBuildThisFileDirectory)snk/35MSSharedLib1024.snk
$(MicrosoftSharedPublicKey)
31BF3856AD364E35
- $(ArcadeSdkSnkDir)AspNetCore.snk
+ $(MSBuildThisFileDirectory)snk/AspNetCore.snk
$(MicrosoftAspNetCorePublicKey)
adb9793829ddae60
false
@@ -53,7 +53,7 @@
- $(ArcadeSdkSnkDir)ECMA.snk
+ $(MSBuildThisFileDirectory)snk/ECMA.snk
$(ECMAPublicKey)
b77a5c561934e089
@@ -65,7 +65,7 @@
-->
- $(ArcadeSdkSnkDir)Open.snk
+ $(MSBuildThisFileDirectory)snk/Open.snk
$(OpenPublicKey)
cc7b13ffcd2ddd51
false
@@ -74,7 +74,7 @@
- $(ArcadeSdkSnkDir)SilverlightPlatformPublicKey.snk
+ $(MSBuildThisFileDirectory)snk/SilverlightPlatformPublicKey.snk
$(SilverlightPlatformPublicKey)
7cec85d7bea7798e
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/Tools.proj b/src/Microsoft.DotNet.Arcade.Sdk/tools/Tools.proj
new file mode 100644
index 00000000000..c5ba4421054
--- /dev/null
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/Tools.proj
@@ -0,0 +1,115 @@
+
+
+
+
+
+
+
+ net472
+
+ 5
+ .NETFramework
+ .NETFramework,Version=v4.7.2
+ $(BaseIntermediateOutputPath)
+
+ PackageReference
+ true
+
+
+
+ true
+ Restore
+
+
+
+
+ $(RepoRoot)NuGet.config
+ $(RepoRoot)NuGet.Config
+ $(RepoRoot)nuget.config
+
+
+
+
+
+
+
+
+
+
+ <_ImportOrUseTooling Condition="'$(_ImportOrUseTooling)' == '' and '$(DotNetBuildSourceOnly)' != 'true'">true
+ $(Publish)
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <_RepoToolManifest>$([MSBuild]::NormalizePath('$(RepoRoot)', '.config', 'dotnet-tools.json'))
+
+
+
+
+
+
+
+
+ --configfile "$(RestoreConfigFile)"
+
+
+
+
+
+
+
+
+ $(RepoRoot)eng/common/internal/Tools.csproj
+ $(RepoRoot)eng/common/internal/NuGet.config
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/TrackPrebuiltUsage.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/TrackPrebuiltUsage.targets
similarity index 87%
rename from src/Microsoft.DotNet.Arcade.Sdk/toolset/TrackPrebuiltUsage.targets
rename to src/Microsoft.DotNet.Arcade.Sdk/tools/TrackPrebuiltUsage.targets
index cd835109501..fc4578574cd 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/TrackPrebuiltUsage.targets
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/TrackPrebuiltUsage.targets
@@ -1,9 +1,10 @@
-
-
-
+
+ $(NuGetPackageRoot)microsoft.dotnet.sourcebuild.tasks\$(MicrosoftDotNetSourceBuildTasksVersion)\build\
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/tools/Version.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/Version.targets
index 4b6b9e42679..fab5620c279 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/tools/Version.targets
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/Version.targets
@@ -8,6 +8,8 @@
SemanticVersioningV1 "true" if the Version needs to respect SemVer 1.0. Default is false, which means format following SemVer 2.0.
-->
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/VisualStudio.AcquireOptimizationData.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/VisualStudio.AcquireOptimizationData.targets
similarity index 93%
rename from src/Microsoft.DotNet.Arcade.Sdk/toolset/VisualStudio.AcquireOptimizationData.targets
rename to src/Microsoft.DotNet.Arcade.Sdk/tools/VisualStudio.AcquireOptimizationData.targets
index 4159bf8f19f..33704816096 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/VisualStudio.AcquireOptimizationData.targets
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/VisualStudio.AcquireOptimizationData.targets
@@ -9,10 +9,12 @@
Otherwise, the most recent drop of name that matches 'OptimizationData/$(VisualStudioIbcRepositoryName)/$(VisualStudioIbcSourceBranchName)/*' is used.
VisualStudioIbcDrop The explicit drop to use. Overrides VisualStudioIbcSourceBranchName and VisualStudioIbcDropId
-->
-
-
-
-
+
+
+ <_VisualStudioBuildTasksAssembly>$(NuGetPackageRoot)microsoft.dotnet.build.tasks.visualstudio\$(MicrosoftDotNetBuildTasksVisualStudioVersion)\tools\net\Microsoft.DotNet.Build.Tasks.VisualStudio.dll
+
+
+
true
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/VisualStudio.BuildIbcTrainingInputs.targets b/src/Microsoft.DotNet.Arcade.Sdk/tools/VisualStudio.BuildIbcTrainingInputs.targets
similarity index 68%
rename from src/Microsoft.DotNet.Arcade.Sdk/toolset/VisualStudio.BuildIbcTrainingInputs.targets
rename to src/Microsoft.DotNet.Arcade.Sdk/tools/VisualStudio.BuildIbcTrainingInputs.targets
index cbdfb7189e0..39949cff687 100644
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/VisualStudio.BuildIbcTrainingInputs.targets
+++ b/src/Microsoft.DotNet.Arcade.Sdk/tools/VisualStudio.BuildIbcTrainingInputs.targets
@@ -6,10 +6,13 @@
RepositoryName Current repository name (e.g. 'dotnet/roslyn').
VisualStudioDropName Product drop name, e.g. 'Products/$(System.TeamProject)/$(Build.Repository.Name)/$(Build.SourceBranchName)/$(Build.BuildNumber)'
-->
+
+
+ <_VisualStudioBuildTasksAssembly>$(NuGetPackageRoot)microsoft.dotnet.build.tasks.visualstudio\$(MicrosoftDotNetBuildTasksVisualStudioVersion)\tools\net\Microsoft.DotNet.Build.Tasks.VisualStudio.dll
+
-
-
-
+
+
-
- false
-
-
<_StubFiles Include="$(VisualStudioSetupIntermediateOutputPath)**\*.stub"/>
<_StubDirs Include="@(_StubFiles->'%(RecursiveDir)')"/>
+
+ false
+
+
+
+
+ $(NuGetPackageRoot)microsoft.dotnet.build.tasks.visualstudio\$(MicrosoftDotNetBuildTasksVisualStudioVersion)\tools\net\Microsoft.DotNet.Build.Tasks.VisualStudio.dll
+
+
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/Directory.Build.props b/src/Microsoft.DotNet.Arcade.Sdk/toolset/Directory.Build.props
deleted file mode 100644
index 1849d9c37b6..00000000000
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/Directory.Build.props
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
- toolset\$(MSBuildProjectName)
-
-
-
-
-
- $(BundledNETCoreAppTargetFramework)
-
-
- true
-
- <_SuppressAllTargets>true
- <_SuppressSdkImports>false
- <_NoSuppressRestoreTarget>false
-
-
- false
- false
-
-
-
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/Directory.Build.targets b/src/Microsoft.DotNet.Arcade.Sdk/toolset/Directory.Build.targets
deleted file mode 100644
index 1b623e82d8f..00000000000
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/Directory.Build.targets
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/Directory.Packages.props b/src/Microsoft.DotNet.Arcade.Sdk/toolset/Directory.Packages.props
deleted file mode 100644
index c86d56ee87e..00000000000
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/Directory.Packages.props
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
- true
-
- $(NoWarn);NU1507
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Microsoft.DotNet.Arcade.Sdk/toolset/Tools.proj b/src/Microsoft.DotNet.Arcade.Sdk/toolset/Tools.proj
deleted file mode 100644
index 6b980d15495..00000000000
--- a/src/Microsoft.DotNet.Arcade.Sdk/toolset/Tools.proj
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-
- <_RepoToolManifest>$([MSBuild]::NormalizePath('$(RepoRoot)', '.config', 'dotnet-tools.json'))
-
-
- true
- Restore
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- --configfile "$(RestoreConfigFile)"
-
-
-
-
-
-
-
-
- $(RepoRoot)eng/common/internal/Tools.csproj
- $(RepoRoot)eng/common/internal/NuGet.config
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Microsoft.DotNet.Build.Tasks.Feed.Tests/Microsoft.DotNet.Build.Tasks.Feed.Tests.csproj b/src/Microsoft.DotNet.Build.Tasks.Feed.Tests/Microsoft.DotNet.Build.Tasks.Feed.Tests.csproj
index 691d948d533..37b966d0379 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Feed.Tests/Microsoft.DotNet.Build.Tasks.Feed.Tests.csproj
+++ b/src/Microsoft.DotNet.Build.Tasks.Feed.Tests/Microsoft.DotNet.Build.Tasks.Feed.Tests.csproj
@@ -9,6 +9,7 @@
+
diff --git a/src/Microsoft.DotNet.Build.Tasks.Feed/Microsoft.DotNet.Build.Tasks.Feed.csproj b/src/Microsoft.DotNet.Build.Tasks.Feed/Microsoft.DotNet.Build.Tasks.Feed.csproj
index aea175b78d8..adb882fef1f 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Feed/Microsoft.DotNet.Build.Tasks.Feed.csproj
+++ b/src/Microsoft.DotNet.Build.Tasks.Feed/Microsoft.DotNet.Build.Tasks.Feed.csproj
@@ -20,6 +20,7 @@
+
diff --git a/src/Microsoft.DotNet.Build.Tasks.Installers/build/acquisition/acquire-wix/acquire-wix.proj b/src/Microsoft.DotNet.Build.Tasks.Installers/build/acquisition/acquire-wix/acquire-wix.proj
index 8093ccdf27e..830cf565e72 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Installers/build/acquisition/acquire-wix/acquire-wix.proj
+++ b/src/Microsoft.DotNet.Build.Tasks.Installers/build/acquisition/acquire-wix/acquire-wix.proj
@@ -1,6 +1,8 @@
+
+
-
+
diff --git a/src/Microsoft.DotNet.Build.Tasks.Installers/build/wix5/wix.targets b/src/Microsoft.DotNet.Build.Tasks.Installers/build/wix5/wix.targets
index fd2b8e14b25..b1068fc86d1 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Installers/build/wix5/wix.targets
+++ b/src/Microsoft.DotNet.Build.Tasks.Installers/build/wix5/wix.targets
@@ -53,7 +53,7 @@
$(PkgMicrosoft_Wix)\tools\net6.0\any\
- wixext6
+ wixext5
$(PkgMicrosoft_WixToolset_UI_wixext)\$(WixExtensionsDir)\
$(PkgMicrosoft_WixToolset_Dependency_wixext)\$(WixExtensionsDir)\
$(PkgMicrosoft_WixToolset_Util_wixext)\$(WixExtensionsDir)\
@@ -298,7 +298,7 @@
SuppressRootDirectory="true"
DirectoryRefId="%(DirectoryToHarvest.DirectoryRef)"
OutputFile="%(DirectoryToHarvest.WixSourceFile)"
- AdditionalOptions="$(AdditionalHeatArgs) -sw5149" />
+ AdditionalOptions="$(AdditionalHeatArgs)" />
-
-
-
- $(MSBuildThisFileDirectory)..\tools\net\Microsoft.DotNet.Build.Tasks.VisualStudio.dll
-
-
-
-
-
-
-
-
-
-
-
diff --git a/src/Microsoft.DotNet.Build.Tasks.Workloads/src/Msi/MsiMetadata.wix.cs b/src/Microsoft.DotNet.Build.Tasks.Workloads/src/Msi/MsiMetadata.wix.cs
index e34a31ef85c..b43bcefab05 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Workloads/src/Msi/MsiMetadata.wix.cs
+++ b/src/Microsoft.DotNet.Build.Tasks.Workloads/src/Msi/MsiMetadata.wix.cs
@@ -45,7 +45,7 @@ public string Title
get;
}
- public string? LicenseUrl
+ public string LicenseUrl
{
get;
}
@@ -59,7 +59,7 @@ public string SwixPackageId
get;
}
- public MsiMetadata(string id, NuGetVersion packageVersion, Version msiVersion, string authors, string copyright, string description, string title, string? licenseUrl, string projectUrl, string swixPackageId)
+ public MsiMetadata(string id, NuGetVersion packageVersion, Version msiVersion, string authors, string copyright, string description, string title, string licenseUrl, string projectUrl, string swixPackageId)
{
Id = id;
PackageVersion = packageVersion;
diff --git a/src/Microsoft.DotNet.Build.Tasks.Workloads/src/WorkloadPackageBase.cs b/src/Microsoft.DotNet.Build.Tasks.Workloads/src/WorkloadPackageBase.cs
index eafcd60ffa2..08213015640 100644
--- a/src/Microsoft.DotNet.Build.Tasks.Workloads/src/WorkloadPackageBase.cs
+++ b/src/Microsoft.DotNet.Build.Tasks.Workloads/src/WorkloadPackageBase.cs
@@ -78,12 +78,12 @@ public bool HasBeenExtracted
private set;
}
- public LicenseMetadata? LicenseData
+ public LicenseMetadata LicenseData
{
get;
}
- public string? LicenseUrl
+ public string LicenseUrl
{
get;
}
@@ -200,7 +200,7 @@ public WorkloadPackageBase(string packagePath, string destinationBaseDirectory,
Title = nuspec.GetTitle();
PackagePath = packagePath;
- DestinationDirectory = Path.Combine(destinationBaseDirectory, Path.GetRandomFileName());
+ DestinationDirectory = Path.Combine(destinationBaseDirectory, $"{Identity}");
ShortNames = shortNames;
PackageFileName = Path.GetFileNameWithoutExtension(packagePath);
diff --git a/src/Microsoft.DotNet.CMake.Sdk/build/Microsoft.DotNet.CMake.Sdk.targets b/src/Microsoft.DotNet.CMake.Sdk/build/Microsoft.DotNet.CMake.Sdk.targets
index 2757846e674..7680c206ab1 100644
--- a/src/Microsoft.DotNet.CMake.Sdk/build/Microsoft.DotNet.CMake.Sdk.targets
+++ b/src/Microsoft.DotNet.CMake.Sdk/build/Microsoft.DotNet.CMake.Sdk.targets
@@ -3,7 +3,6 @@
$(MSBuildThisFileDirectory)..\tools\net\Microsoft.DotNet.CMake.Sdk.dll
- 3.1.7
@@ -12,7 +11,7 @@
-
+
diff --git a/src/Microsoft.DotNet.Internal.DependencyInjection.Testing/Microsoft.DotNet.Internal.DependencyInjection.Testing.csproj b/src/Microsoft.DotNet.Internal.DependencyInjection.Testing/Microsoft.DotNet.Internal.DependencyInjection.Testing.csproj
index 18110436d51..00ee17d4f1b 100644
--- a/src/Microsoft.DotNet.Internal.DependencyInjection.Testing/Microsoft.DotNet.Internal.DependencyInjection.Testing.csproj
+++ b/src/Microsoft.DotNet.Internal.DependencyInjection.Testing/Microsoft.DotNet.Internal.DependencyInjection.Testing.csproj
@@ -4,4 +4,8 @@
$(BundledNETCoreAppTargetFramework)
+
+
+
+
diff --git a/src/Microsoft.DotNet.NuGetRepack/tasks/build/Microsoft.DotNet.NuGetRepack.Tasks.props b/src/Microsoft.DotNet.NuGetRepack/tasks/build/Microsoft.DotNet.NuGetRepack.Tasks.props
deleted file mode 100644
index 45e612f79d3..00000000000
--- a/src/Microsoft.DotNet.NuGetRepack/tasks/build/Microsoft.DotNet.NuGetRepack.Tasks.props
+++ /dev/null
@@ -1,11 +0,0 @@
-
-
-
-
- $(MSBuildThisFileDirectory)..\tools\net\Microsoft.DotNet.NuGetRepack.Tasks.dll
-
-
-
-
-
-
diff --git a/src/Microsoft.DotNet.SignTool.Tests/Resources/MsiBootstrapper5.exe.wixpack.zip b/src/Microsoft.DotNet.SignTool.Tests/Resources/MsiBootstrapper5.exe.wixpack.zip
index 2cc3cefebd4..afa7c982ff9 100644
Binary files a/src/Microsoft.DotNet.SignTool.Tests/Resources/MsiBootstrapper5.exe.wixpack.zip and b/src/Microsoft.DotNet.SignTool.Tests/Resources/MsiBootstrapper5.exe.wixpack.zip differ
diff --git a/src/Microsoft.DotNet.SignTool.Tests/Resources/MsiSetup5.msi.wixpack.zip b/src/Microsoft.DotNet.SignTool.Tests/Resources/MsiSetup5.msi.wixpack.zip
index aac11b98969..af2709f2d63 100644
Binary files a/src/Microsoft.DotNet.SignTool.Tests/Resources/MsiSetup5.msi.wixpack.zip and b/src/Microsoft.DotNet.SignTool.Tests/Resources/MsiSetup5.msi.wixpack.zip differ
diff --git a/src/Microsoft.DotNet.SignTool/src/BatchSignUtil.cs b/src/Microsoft.DotNet.SignTool/src/BatchSignUtil.cs
index 530db021ac2..7f4fcfba4d1 100644
--- a/src/Microsoft.DotNet.SignTool/src/BatchSignUtil.cs
+++ b/src/Microsoft.DotNet.SignTool/src/BatchSignUtil.cs
@@ -444,20 +444,7 @@ internal static bool RunWixTool(string toolName, string arguments, string workin
processStartInfo.EnvironmentVariables.Add("PATH", path);
var process = Process.Start(processStartInfo);
- // Read stdout/stderr to avoid deadlock when the pipe buffer fills up.
- string standardOutput = process.StandardOutput.ReadToEnd();
- string standardError = process.StandardError.ReadToEnd();
process.WaitForExit();
-
- if (!string.IsNullOrWhiteSpace(standardOutput))
- {
- log.LogMessage(MessageImportance.Low, standardOutput);
- }
- if (!string.IsNullOrWhiteSpace(standardError))
- {
- log.LogMessage(MessageImportance.Low, standardError);
- }
-
return process.ExitCode == 0;
}
diff --git a/src/Microsoft.DotNet.SignTool/src/SignToolTask.cs b/src/Microsoft.DotNet.SignTool/src/SignToolTask.cs
index 7669d9f4245..7767fcbd5b7 100644
--- a/src/Microsoft.DotNet.SignTool/src/SignToolTask.cs
+++ b/src/Microsoft.DotNet.SignTool/src/SignToolTask.cs
@@ -209,11 +209,11 @@ public void ExecuteImpl()
Log.LogError($"PkgToolPath ('{PkgToolPath}') does not exist & is required for unpacking, repacking, and notarizing .pkg files and .app bundles on MacOS.");
}
}
- if(!string.IsNullOrEmpty(Wix3ToolsPath) && !Directory.Exists(Wix3ToolsPath))
+ if(Wix3ToolsPath != null && !Directory.Exists(Wix3ToolsPath))
{
Log.LogError($"Wix3ToolsPath ('{Wix3ToolsPath}') does not exist.");
}
- if(!string.IsNullOrEmpty(WixToolsPath) && !Directory.Exists(WixToolsPath))
+ if(WixToolsPath != null && !Directory.Exists(WixToolsPath))
{
Log.LogError($"WixToolsPath ('{WixToolsPath}') does not exist.");
}