Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion NuGet.config
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@
<clear />
<!--Begin: Package sources managed by Dependency Flow automation. Do not edit the sources below.-->
<!-- Begin: Package sources from dotnet-android -->
<add key="darc-pub-dotnet-android-5649411-1" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-android-56494117-1/nuget/v3/index.json" />
<add key="darc-pub-dotnet-android-1361e50" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-android-1361e505/nuget/v3/index.json" />
<!-- End: Package sources from dotnet-android -->
<!-- Begin: Package sources from dotnet-macios -->
<add key="darc-pub-dotnet-macios-8d30875" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-macios-8d308759/nuget/v3/index.json" />
<add key="darc-pub-dotnet-macios-5797627" value="https://pkgs.dev.azure.com/dnceng/public/_packaging/darc-pub-dotnet-macios-57976277/nuget/v3/index.json" />
<!-- End: Package sources from dotnet-macios -->
<!-- Begin: Package sources from dotnet-maui -->
Expand Down
40 changes: 20 additions & 20 deletions eng/Version.Details.xml
Original file line number Diff line number Diff line change
@@ -1,39 +1,39 @@
<?xml version="1.0" encoding="utf-8"?>
<Dependencies>
<ProductDependencies>
<Dependency Name="Microsoft.NET.ILLink.Tasks" Version="10.0.0-rc.1.25555.107">
<Dependency Name="Microsoft.NET.ILLink.Tasks" Version="11.0.0-preview.3.26174.112">
<Uri>https://github.com/dotnet/dotnet</Uri>
<Sha>994d9ebe9f3f4216d7b125738cf5c19adaf674d3</Sha>
<Sha>2615092a05c1f505f603fb4b389f7e38a1ad66fa</Sha>
</Dependency>
<Dependency Name="Microsoft.NET.ILLink" Version="10.0.0-rc.1.25555.107">
<Dependency Name="Microsoft.NET.ILLink" Version="11.0.0-preview.3.26174.112">
<Uri>https://github.com/dotnet/dotnet</Uri>
<Sha>994d9ebe9f3f4216d7b125738cf5c19adaf674d3</Sha>
<Sha>2615092a05c1f505f603fb4b389f7e38a1ad66fa</Sha>
</Dependency>
<Dependency Name="System.Threading.Channels" Version="10.0.0-rc.1.25555.107">
<Dependency Name="System.Threading.Channels" Version="11.0.0-preview.3.26174.112">
<Uri>https://github.com/dotnet/dotnet</Uri>
<Sha>994d9ebe9f3f4216d7b125738cf5c19adaf674d3</Sha>
<Sha>2615092a05c1f505f603fb4b389f7e38a1ad66fa</Sha>
</Dependency>
<Dependency Name="Microsoft.Extensions.Logging" Version="10.0.0-rc.1.25555.107">
<Dependency Name="Microsoft.Extensions.Logging" Version="11.0.0-preview.3.26174.112">
<Uri>https://github.com/dotnet/dotnet</Uri>
<Sha>994d9ebe9f3f4216d7b125738cf5c19adaf674d3</Sha>
<Sha>2615092a05c1f505f603fb4b389f7e38a1ad66fa</Sha>
</Dependency>
<Dependency Name="Microsoft.WindowsDesktop.App.Ref" Version="10.0.0-rc.1.25555.107">
<Dependency Name="Microsoft.WindowsDesktop.App.Ref" Version="11.0.0-preview.3.26174.112">
<Uri>https://github.com/dotnet/dotnet</Uri>
<Sha>994d9ebe9f3f4216d7b125738cf5c19adaf674d3</Sha>
<Sha>2615092a05c1f505f603fb4b389f7e38a1ad66fa</Sha>
</Dependency>
<Dependency Name="Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64" Version="10.0.0-rc.1.25555.107">
<Dependency Name="Microsoft.NET.Runtime.Emscripten.3.1.56.Node.win-x64" Version="11.0.0-preview.3.26174.112">
<Uri>https://github.com/dotnet/dotnet</Uri>
<Sha>994d9ebe9f3f4216d7b125738cf5c19adaf674d3</Sha>
<Sha>2615092a05c1f505f603fb4b389f7e38a1ad66fa</Sha>
</Dependency>
</ProductDependencies>
<ToolsetDependencies>
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="11.0.0-beta.25555.107">
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="11.0.0-beta.26174.112">
<Uri>https://github.com/dotnet/dotnet</Uri>
<Sha>994d9ebe9f3f4216d7b125738cf5c19adaf674d3</Sha>
<Sha>2615092a05c1f505f603fb4b389f7e38a1ad66fa</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.Helix.Sdk" Version="11.0.0-beta.25555.107">
<Dependency Name="Microsoft.DotNet.Helix.Sdk" Version="11.0.0-beta.26174.112">
<Uri>https://github.com/dotnet/dotnet</Uri>
<Sha>994d9ebe9f3f4216d7b125738cf5c19adaf674d3</Sha>
<Sha>2615092a05c1f505f603fb4b389f7e38a1ad66fa</Sha>
</Dependency>
<Dependency Name="Microsoft.DotNet.XHarness.CLI" Version="11.0.0-prerelease.26169.1">
<Uri>https://github.com/dotnet/xharness</Uri>
Expand All @@ -55,12 +55,12 @@
<Sha>32655b54fa9f3cb050c5c0d335b49ec01f031849</Sha>
<Uri>https://github.com/dotnet/maui</Uri>
</Dependency>
<Dependency Name="Microsoft.NET.Sdk" Version="10.0.100-rc.2.25555.107">
<Sha>994d9ebe9f3f4216d7b125738cf5c19adaf674d3</Sha>
<Dependency Name="Microsoft.NET.Sdk" Version="11.0.100-preview.3.26174.112">
<Sha>2615092a05c1f505f603fb4b389f7e38a1ad66fa</Sha>
<Uri>https://github.com/dotnet/dotnet</Uri>
</Dependency>
<Dependency Name="Microsoft.NETCore.App.Ref" Version="10.0.0-rc.1.25555.107">
<Sha>994d9ebe9f3f4216d7b125738cf5c19adaf674d3</Sha>
<Dependency Name="Microsoft.NETCore.App.Ref" Version="11.0.0-preview.3.26174.112">
<Sha>2615092a05c1f505f603fb4b389f7e38a1ad66fa</Sha>
<Uri>https://github.com/dotnet/dotnet</Uri>
</Dependency>
<Dependency Name="Microsoft.Android.Sdk.Windows" Version="36.1.51">
Expand Down
10 changes: 5 additions & 5 deletions eng/Versions.props
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@
</PropertyGroup>
<!--Package versions-->
<PropertyGroup>
<MicrosoftNETILLinkTasksVersion>10.0.0-rc.1.25555.107</MicrosoftNETILLinkTasksVersion>
<MicrosoftNETILLinkPackageVersion>10.0.0-rc.1.25555.107</MicrosoftNETILLinkPackageVersion>
<SystemThreadingChannelsPackageVersion>10.0.0-rc.1.25555.107</SystemThreadingChannelsPackageVersion>
<MicrosoftExtensionsLoggingPackageVersion>10.0.0-rc.1.25555.107</MicrosoftExtensionsLoggingPackageVersion>
<MicrosoftNETILLinkTasksVersion>11.0.0-preview.3.26174.112</MicrosoftNETILLinkTasksVersion>
<MicrosoftNETILLinkPackageVersion>11.0.0-preview.3.26174.112</MicrosoftNETILLinkPackageVersion>
<SystemThreadingChannelsPackageVersion>11.0.0-preview.3.26174.112</SystemThreadingChannelsPackageVersion>
<MicrosoftExtensionsLoggingPackageVersion>11.0.0-preview.3.26174.112</MicrosoftExtensionsLoggingPackageVersion>
<BenchmarkDotNetVersion>0.16.0-nightly.20260302.459</BenchmarkDotNetVersion>
<MicrosoftNETRuntimeEmscripten3156Nodewinx64Version>10.0.0-rc.1.25555.107</MicrosoftNETRuntimeEmscripten3156Nodewinx64Version>
<MicrosoftNETRuntimeEmscripten3156Nodewinx64Version>11.0.0-preview.3.26174.112</MicrosoftNETRuntimeEmscripten3156Nodewinx64Version>
<MicrosoftDotNetXHarnessCLIVersion>11.0.0-prerelease.26169.1</MicrosoftDotNetXHarnessCLIVersion>
</PropertyGroup>
<!--Package names-->
Expand Down
3 changes: 3 additions & 0 deletions eng/common/build.cmd
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
@echo off
powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0build.ps1""" %*"
exit /b %ErrorLevel%
2 changes: 2 additions & 0 deletions eng/common/build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Param(
[string][Alias('v')]$verbosity = "minimal",
[string] $msbuildEngine = $null,
[bool] $warnAsError = $true,
[string] $warnNotAsError = '',
[bool] $nodeReuse = $true,
[switch] $buildCheck = $false,
[switch][Alias('r')]$restore,
Expand Down Expand Up @@ -70,6 +71,7 @@ function Print-Usage() {
Write-Host " -excludeCIBinarylog Don't output binary log (short: -nobl)"
Write-Host " -prepareMachine Prepare machine for CI run, clean up processes after build"
Write-Host " -warnAsError <value> Sets warnaserror msbuild parameter ('true' or 'false')"
Write-Host " -warnNotAsError <value> Sets a semi-colon delimited list of warning codes that should not be treated as errors"
Write-Host " -msbuildEngine <value> Msbuild engine to use to run build ('dotnet', 'vs', or unspecified)."
Write-Host " -excludePrereleaseVS Set to exclude build engines in prerelease versions of Visual Studio"
Write-Host " -nativeToolsOnMachine Sets the native tools on machine environment variable (indicating that the script should use native tools on machine)"
Expand Down
6 changes: 6 additions & 0 deletions eng/common/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ usage()
echo " --prepareMachine Prepare machine for CI run, clean up processes after build"
echo " --nodeReuse <value> Sets nodereuse msbuild parameter ('true' or 'false')"
echo " --warnAsError <value> Sets warnaserror msbuild parameter ('true' or 'false')"
echo " --warnNotAsError <value> Sets a semi-colon delimited list of warning codes that should not be treated as errors"
echo " --buildCheck <value> Sets /check msbuild parameter"
echo " --fromVMR Set when building from within the VMR"
echo ""
Expand Down Expand Up @@ -78,6 +79,7 @@ ci=false
clean=false

warn_as_error=true
warn_not_as_error=''
node_reuse=true
build_check=false
binary_log=false
Expand Down Expand Up @@ -176,6 +178,10 @@ while [[ $# -gt 0 ]]; do
warn_as_error=$2
shift
;;
-warnnotaserror)
warn_not_as_error=$2
shift
;;
-nodereuse)
node_reuse=$2
shift
Expand Down
2 changes: 2 additions & 0 deletions eng/common/core-templates/job/job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ jobs:
templateContext: ${{ parameters.templateContext }}

variables:
- name: AllowPtrToDetectTestRunRetryFiles
value: true
- ${{ if ne(parameters.enableTelemetry, 'false') }}:
- name: DOTNET_CLI_TELEMETRY_PROFILE
value: '$(Build.Repository.Uri)'
Expand Down
13 changes: 7 additions & 6 deletions eng/common/core-templates/job/publish-build-assets.yml
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ jobs:
# If it's not devdiv, it's dnceng
${{ if ne(variables['System.TeamProject'], 'DevDiv') }}:
name: NetCore1ESPool-Publishing-Internal
image: windows.vs2019.amd64
image: windows.vs2022.amd64
os: windows
steps:
- ${{ if eq(parameters.is1ESPipeline, '') }}:
Expand Down Expand Up @@ -122,8 +122,9 @@ jobs:

# Populate internal runtime variables.
- template: /eng/common/templates/steps/enable-internal-sources.yml
parameters:
legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw)
${{ if eq(variables['System.TeamProject'], 'DevDiv') }}:
parameters:
legacyCredential: $(dn-bot-dnceng-artifact-feeds-rw)

- template: /eng/common/templates/steps/enable-internal-runtimes.yml

Expand All @@ -140,7 +141,7 @@ jobs:
/p:MaestroApiEndpoint=https://maestro.dot.net
/p:OfficialBuildId=$(OfficialBuildId)
-runtimeSourceFeed https://ci.dot.net/internal
-runtimeSourceFeedKey $(dotnetbuilds-internal-container-read-token-base64)
-runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)'

condition: ${{ parameters.condition }}
continueOnError: ${{ parameters.continueOnError }}
Expand Down Expand Up @@ -210,8 +211,8 @@ jobs:
-ArtifactsPublishingAdditionalParameters '${{ parameters.artifactsPublishingAdditionalParameters }}'
-SymbolPublishingAdditionalParameters '${{ parameters.symbolPublishingAdditionalParameters }}'
-SkipAssetsPublishing '${{ parameters.isAssetlessBuild }}'
-runtimeSourceFeed https://ci.dot.net/internal
-runtimeSourceFeedKey $(dotnetbuilds-internal-container-read-token-base64)
-runtimeSourceFeed https://ci.dot.net/internal
-runtimeSourceFeedKey '$(dotnetbuilds-internal-container-read-token-base64)'

- ${{ if eq(parameters.enablePublishBuildArtifacts, 'true') }}:
- template: /eng/common/core-templates/steps/publish-logs.yml
Expand Down
196 changes: 196 additions & 0 deletions eng/common/core-templates/job/renovate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
# --------------------------------------------------------------------------------------
# Renovate Bot Job Template
# --------------------------------------------------------------------------------------
# This Azure DevOps pipeline job template runs Renovate (https://docs.renovatebot.com/)
# to automatically update dependencies in a GitHub repository.
#
# Renovate scans the repository for dependency files and creates pull requests to update
# outdated dependencies based on the configuration specified in the renovateConfigPath
# parameter.
#
# Usage:
# For each product repo wanting to make use of Renovate, this template is called from
# an internal Azure DevOps pipeline, typically with a schedule trigger, to check for
# and propose dependency updates.
#
# For more info, see https://github.com/dotnet/arcade/blob/main/Documentation/Renovate.md
# --------------------------------------------------------------------------------------

parameters:

# Path to the Renovate configuration file within the repository.
- name: renovateConfigPath
type: string
default: 'eng/renovate.json'

# GitHub repository to run Renovate against, in the format 'owner/repo'.
# This could technically be any repo but convention is to target the same
# repo that contains the calling pipeline. The Renovate config file would
# be co-located with the pipeline's repo and, in most cases, the config
# file is specific to the repo being targeted.
- name: gitHubRepo
type: string

# List of base branches to target for Renovate PRs.
# NOTE: The Renovate configuration file is always read from the branch where the
# pipeline is run, NOT from the target branches specified here. If you need different
# configurations for different branches, run the pipeline from each branch separately.
- name: baseBranches
type: object
default:
- main

# When true, Renovate will run in dry run mode, which previews changes without creating PRs.
# See the 'Run Renovate' step log output for details of what would have been changed.
- name: dryRun
type: boolean
default: false

# By default, Renovate will not recreate a PR for a given dependency/version pair that was
# previously closed. This allows opting in to always recreating PRs even if they were
# previously closed.
- name: forceRecreatePR
type: boolean
default: false

# Name of the arcade repository resource in the pipeline.
# This allows repos which haven't been onboarded to Arcade to still use this
# template by checking out the repo as a resource with a custom name and pointing
# this parameter to it.
- name: arcadeRepoResource
type: string
default: self

# Directory name for the self repo under $(Build.SourcesDirectory) in multi-checkout.
# In multi-checkout (when arcadeRepoResource != 'self'), Azure DevOps checks out the
# self repo to $(Build.SourcesDirectory)/<repoName>. Set this to match the auto-generated
# directory name. Using the auto-generated name is necessary rather than explicitly
# defining a checkout path because container jobs expect repos to live under the agent's
# workspace ($(Pipeline.Workspace)). On some self-hosted setups the host path
# (e.g., /mnt/vss/_work) differs from the container path (e.g., /__w), and a custom checkout
# path can fail validation. Using the default checkout location keeps the paths consistent
# and avoids this issue.
- name: selfRepoName
type: string
default: ''
- name: arcadeRepoName
type: string
default: ''

# Pool configuration for the job.
- name: pool
type: object
default:
name: NetCore1ESPool-Internal
image: build.azurelinux.3.amd64
os: linux

jobs:
- job: Renovate
displayName: Run Renovate
container: RenovateContainer
variables:
- group: dotnet-renovate-bot
# The Renovate version is automatically updated by https://github.com/dotnet/arcade/blob/main/azure-pipelines-renovate.yml.
# Changing the variable name here would require updating the name in https://github.com/dotnet/arcade/blob/main/eng/renovate.json as well.
- name: renovateVersion
value: '42'
readonly: true
- name: renovateLogFilePath
value: '$(Build.ArtifactStagingDirectory)/renovate.json'
readonly: true
- name: dryRunArg
readonly: true
${{ if eq(parameters.dryRun, true) }}:
value: 'full'
${{ else }}:
value: ''
- name: recreateWhenArg
readonly: true
${{ if eq(parameters.forceRecreatePR, true) }}:
value: 'always'
${{ else }}:
value: ''
# In multi-checkout (without custom paths), Azure DevOps places each repo under
# $(Build.SourcesDirectory)/<repoName>. selfRepoName must be provided in that case.
- name: selfRepoPath
readonly: true
${{ if eq(parameters.arcadeRepoResource, 'self') }}:
value: '$(Build.SourcesDirectory)'
${{ else }}:
value: '$(Build.SourcesDirectory)/${{ parameters.selfRepoName }}'
- name: arcadeRepoPath
readonly: true
${{ if eq(parameters.arcadeRepoResource, 'self') }}:
value: '$(Build.SourcesDirectory)'
${{ else }}:
value: '$(Build.SourcesDirectory)/${{ parameters.arcadeRepoName }}'
pool: ${{ parameters.pool }}

templateContext:
outputParentDirectory: $(Build.ArtifactStagingDirectory)
outputs:
- output: pipelineArtifact
displayName: Publish Renovate Log
condition: succeededOrFailed()
targetPath: $(Build.ArtifactStagingDirectory)
artifactName: $(Agent.JobName)_Logs_Attempt$(System.JobAttempt)
sbomEnabled: false

steps:
- checkout: self
fetchDepth: 1

- ${{ if ne(parameters.arcadeRepoResource, 'self') }}:
- checkout: ${{ parameters.arcadeRepoResource }}
fetchDepth: 1

- script: |
renovate-config-validator $(selfRepoPath)/${{parameters.renovateConfigPath}} 2>&1 | tee /tmp/renovate-config-validator.out
validatorExit=${PIPESTATUS[0]}
if grep -q '^ WARN:' /tmp/renovate-config-validator.out; then
echo "##vso[task.logissue type=warning]Renovate config validator produced warnings."
echo "##vso[task.complete result=SucceededWithIssues]"
fi
exit $validatorExit
displayName: Validate Renovate config
env:
LOG_LEVEL: info
LOG_FILE_LEVEL: debug
LOG_FILE: $(Build.ArtifactStagingDirectory)/renovate-config-validator.json

- script: |
. $(arcadeRepoPath)/eng/common/renovate.env
renovate 2>&1 | tee /tmp/renovate.out
renovateExit=${PIPESTATUS[0]}
if grep -q '^ WARN:' /tmp/renovate.out; then
echo "##vso[task.logissue type=warning]Renovate produced warnings."
echo "##vso[task.complete result=SucceededWithIssues]"
fi
exit $renovateExit
displayName: Run Renovate
env:
RENOVATE_FORK_TOKEN: $(BotAccount-dotnet-renovate-bot-PAT)
RENOVATE_TOKEN: $(BotAccount-dotnet-renovate-bot-PAT)
RENOVATE_REPOSITORIES: ${{parameters.gitHubRepo}}
RENOVATE_BASE_BRANCHES: ${{ convertToJson(parameters.baseBranches) }}
RENOVATE_DRY_RUN: $(dryRunArg)
RENOVATE_RECREATE_WHEN: $(recreateWhenArg)
LOG_LEVEL: info
LOG_FILE_LEVEL: debug
LOG_FILE: $(renovateLogFilePath)
RENOVATE_CONFIG_FILE: $(selfRepoPath)/${{parameters.renovateConfigPath}}

- script: |
echo "PRs created by Renovate:"
if [ -s "$(renovateLogFilePath)" ]; then
if ! jq -r 'select(.msg == "PR created" and .pr != null) | "https://github.com/\(.repository)/pull/\(.pr)"' "$(renovateLogFilePath)" | sort -u; then
echo "##vso[task.logissue type=warning]Failed to parse Renovate log file with jq."
echo "##vso[task.complete result=SucceededWithIssues]"
fi
else
echo "##vso[task.logissue type=warning]No Renovate log file found or file is empty."
echo "##vso[task.complete result=SucceededWithIssues]"
fi
displayName: List created PRs
condition: and(succeededOrFailed(), eq('${{ parameters.dryRun }}', false))
Loading
Loading