Skip to content
Draft
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 eng/TargetFrameworks.props
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

<PropertyGroup>
<!-- Default target framework for F# products - only set if not already provided -->
<FSharpNetCoreProductTargetFramework Condition="'$(FSharpNetCoreProductTargetFramework)' == ''">net10.0</FSharpNetCoreProductTargetFramework>
<FSharpNetCoreProductTargetFramework Condition="'$(FSharpNetCoreProductTargetFramework)' == ''">net11.0</FSharpNetCoreProductTargetFramework>

<!-- Derive major version by stripping 'net' prefix and '.0' suffix (e.g., net10.0 -> 10) -->
<FSharpNetCoreProductMajorVersion>$([System.Text.RegularExpressions.Regex]::Replace('$(FSharpNetCoreProductTargetFramework)', '^net(\d+)\.0$', '$1'))</FSharpNetCoreProductMajorVersion>
Expand Down
2 changes: 1 addition & 1 deletion eng/Version.Details.props
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ This file should be imported by eng/Versions.props
<MicrosoftCodeAnalysisFeaturesPackageVersion>5.0.0-2.25480.7</MicrosoftCodeAnalysisFeaturesPackageVersion>
<MicrosoftVisualStudioLanguageServicesPackageVersion>5.0.0-2.25480.7</MicrosoftVisualStudioLanguageServicesPackageVersion>
<!-- dotnet/arcade dependencies -->
<MicrosoftDotNetArcadeSdkPackageVersion>10.0.0-beta.26117.6</MicrosoftDotNetArcadeSdkPackageVersion>
<MicrosoftDotNetArcadeSdkPackageVersion>11.0.0-beta.26127.1</MicrosoftDotNetArcadeSdkPackageVersion>
<!-- _git/dotnet-optimization dependencies -->
<optimizationlinuxarm64MIBCRuntimePackageVersion>1.0.0-prerelease.26117.2</optimizationlinuxarm64MIBCRuntimePackageVersion>
<optimizationlinuxx64MIBCRuntimePackageVersion>1.0.0-prerelease.26117.2</optimizationlinuxx64MIBCRuntimePackageVersion>
Expand Down
4 changes: 2 additions & 2 deletions eng/Version.Details.xml
Original file line number Diff line number Diff line change
Expand Up @@ -76,9 +76,9 @@
</Dependency>
</ProductDependencies>
<ToolsetDependencies>
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="10.0.0-beta.26117.6">
<Dependency Name="Microsoft.DotNet.Arcade.Sdk" Version="11.0.0-beta.26127.1">
<Uri>https://github.com/dotnet/arcade</Uri>
<Sha>eae2786f0de623ee284aea80713ec2c61531e9bd</Sha>
<Sha>55c97a45af8fd75bc87e9e4b4f61aef3fead254d</Sha>
</Dependency>
<Dependency Name="optimization.windows_nt-x64.MIBC.Runtime" Version="1.0.0-prerelease.26117.2">
<Uri>https://dev.azure.com/dnceng/internal/_git/dotnet-optimization</Uri>
Expand Down
17 changes: 2 additions & 15 deletions eng/common/SetupNugetSources.ps1
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# This script adds internal feeds required to build commits that depend on internal package sources. For instance,
# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. Similarly,
# dotnet-eng-internal and dotnet-tools-internal are added if dotnet-eng and dotnet-tools are present.
# In addition, this script also enables disabled internal Maestro (darc-int*) feeds.
# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables
# disabled internal Maestro (darc-int*) feeds.
#
# Optionally, this script also adds a credential entry for each of the internal feeds if supplied.
#
Expand Down Expand Up @@ -174,16 +173,4 @@ foreach ($dotnetVersion in $dotnetVersions) {
}
}

# Check for dotnet-eng and add dotnet-eng-internal if present
$dotnetEngSource = $sources.SelectSingleNode("add[@key='dotnet-eng']")
if ($dotnetEngSource -ne $null) {
AddOrEnablePackageSource -Sources $sources -DisabledPackageSources $disabledSources -SourceName "dotnet-eng-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-eng-internal/nuget/$feedSuffix" -Creds $creds -Username $userName -pwd $Password
}

# Check for dotnet-tools and add dotnet-tools-internal if present
$dotnetToolsSource = $sources.SelectSingleNode("add[@key='dotnet-tools']")
if ($dotnetToolsSource -ne $null) {
AddOrEnablePackageSource -Sources $sources -DisabledPackageSources $disabledSources -SourceName "dotnet-tools-internal" -SourceEndPoint "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-tools-internal/nuget/$feedSuffix" -Creds $creds -Username $userName -pwd $Password
}

$doc.Save($filename)
17 changes: 2 additions & 15 deletions eng/common/SetupNugetSources.sh
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
#!/usr/bin/env bash

# This script adds internal feeds required to build commits that depend on internal package sources. For instance,
# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. Similarly,
# dotnet-eng-internal and dotnet-tools-internal are added if dotnet-eng and dotnet-tools are present.
# In addition, this script also enables disabled internal Maestro (darc-int*) feeds.
# dotnet6-internal would be added automatically if dotnet6 was found in the nuget.config file. In addition also enables
# disabled internal Maestro (darc-int*) feeds.
#
# Optionally, this script also adds a credential entry for each of the internal feeds if supplied.
#
Expand Down Expand Up @@ -174,18 +173,6 @@ for DotNetVersion in ${DotNetVersions[@]} ; do
fi
done

# Check for dotnet-eng and add dotnet-eng-internal if present
grep -i "<add key=\"dotnet-eng\"" $ConfigFile > /dev/null
if [ "$?" == "0" ]; then
AddOrEnablePackageSource "dotnet-eng-internal" "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-eng-internal/nuget/$FeedSuffix"
fi

# Check for dotnet-tools and add dotnet-tools-internal if present
grep -i "<add key=\"dotnet-tools\"" $ConfigFile > /dev/null
if [ "$?" == "0" ]; then
AddOrEnablePackageSource "dotnet-tools-internal" "https://pkgs.dev.azure.com/dnceng/internal/_packaging/dotnet-tools-internal/nuget/$FeedSuffix"
fi

# I want things split line by line
PrevIFS=$IFS
IFS=$'\n'
Expand Down
2 changes: 1 addition & 1 deletion eng/common/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ runtime_source_feed=''
runtime_source_feed_key=''

properties=()
while [[ $# > 0 ]]; do
while [[ $# -gt 0 ]]; do
opt="$(echo "${1/#--/-}" | tr "[:upper:]" "[:lower:]")"
case "$opt" in
-help|-h)
Expand Down
8 changes: 8 additions & 0 deletions eng/common/core-templates/job/job.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ parameters:
# publishing defaults
artifacts: ''
enableMicrobuild: false
enablePreviewMicrobuild: false
microbuildPluginVersion: 'latest'
enableMicrobuildForMacAndLinux: false
microbuildUseESRP: true
enablePublishBuildArtifacts: false
Expand Down Expand Up @@ -71,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 Expand Up @@ -128,6 +132,8 @@ jobs:
- template: /eng/common/core-templates/steps/install-microbuild.yml
parameters:
enableMicrobuild: ${{ parameters.enableMicrobuild }}
enablePreviewMicrobuild: ${{ parameters.enablePreviewMicrobuild }}
microbuildPluginVersion: ${{ parameters.microbuildPluginVersion }}
enableMicrobuildForMacAndLinux: ${{ parameters.enableMicrobuildForMacAndLinux }}
microbuildUseESRP: ${{ parameters.microbuildUseESRP }}
continueOnError: ${{ parameters.continueOnError }}
Expand All @@ -153,6 +159,8 @@ jobs:
- template: /eng/common/core-templates/steps/cleanup-microbuild.yml
parameters:
enableMicrobuild: ${{ parameters.enableMicrobuild }}
enablePreviewMicrobuild: ${{ parameters.enablePreviewMicrobuild }}
microbuildPluginVersion: ${{ parameters.microbuildPluginVersion }}
enableMicrobuildForMacAndLinux: ${{ parameters.enableMicrobuildForMacAndLinux }}
continueOnError: ${{ parameters.continueOnError }}

Expand Down
16 changes: 8 additions & 8 deletions eng/common/core-templates/job/publish-build-assets.yml
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,8 @@ jobs:
fetchDepth: 3
clean: true

- ${{ if eq(parameters.isAssetlessBuild, 'false') }}:
- ${{ if eq(parameters.publishingVersion, 3) }}:
- ${{ if eq(parameters.isAssetlessBuild, 'false') }}:
- ${{ if eq(parameters.publishingVersion, 3) }}:
- task: DownloadPipelineArtifact@2
displayName: Download Asset Manifests
inputs:
Expand All @@ -117,15 +117,15 @@ jobs:
flattenFolders: true
condition: ${{ parameters.condition }}
continueOnError: ${{ parameters.continueOnError }}

- task: NuGetAuthenticate@1

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

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

- task: AzureCLI@2
Expand All @@ -145,7 +145,7 @@ jobs:

condition: ${{ parameters.condition }}
continueOnError: ${{ parameters.continueOnError }}

- task: powershell@2
displayName: Create ReleaseConfigs Artifact
inputs:
Expand Down Expand Up @@ -173,7 +173,7 @@ jobs:
artifactName: AssetManifests
displayName: 'Publish Merged Manifest'
retryCountOnTaskFailure: 10 # for any logs being locked
sbomEnabled: false # we don't need SBOM for logs
sbomEnabled: false # we don't need SBOM for logs

- template: /eng/common/core-templates/steps/publish-build-artifacts.yml
parameters:
Expand All @@ -190,7 +190,7 @@ jobs:
BARBuildId: ${{ parameters.BARBuildId }}
PromoteToChannelIds: ${{ parameters.PromoteToChannelIds }}
is1ESPipeline: ${{ parameters.is1ESPipeline }}

# Darc is targeting 8.0, so make sure it's installed
- task: UseDotNet@2
inputs:
Expand Down Expand Up @@ -218,4 +218,4 @@ jobs:
- template: /eng/common/core-templates/steps/publish-logs.yml
parameters:
is1ESPipeline: ${{ parameters.is1ESPipeline }}
JobLabel: 'Publish_Artifacts_Logs'
JobLabel: 'Publish_Artifacts_Logs'
135 changes: 135 additions & 0 deletions eng/common/core-templates/job/renovate.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
# --------------------------------------------------------------------------------------
# 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

# 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'
- name: dryRunArg
${{ if eq(parameters.dryRun, true) }}:
value: 'full'
${{ else }}:
value: ''
- name: recreateWhenArg
${{ if eq(parameters.forceRecreatePR, true) }}:
value: 'always'
${{ else }}:
value: ''
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

- script: renovate-config-validator $(Build.SourcesDirectory)/${{parameters.renovateConfigPath}}
displayName: Validate Renovate config
env:
LOG_LEVEL: info
LOG_FILE_LEVEL: debug
LOG_FILE: $(Build.ArtifactStagingDirectory)/renovate-config-validator.json

- script: |
. $(Build.SourcesDirectory)/eng/common/renovate.env
renovate
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: $(Build.ArtifactStagingDirectory)/renovate.json
RENOVATE_CONFIG_FILE: $(Build.SourcesDirectory)/${{parameters.renovateConfigPath}}
- script: |
echo "PRs created by Renovate:"
if [ -s "$(Build.ArtifactStagingDirectory)/renovate-log.json" ]; then
if ! jq -r 'select(.msg == "PR created" and .pr != null) | "https://github.com/\(.repository)/pull/\(.pr)"' "$(Build.ArtifactStagingDirectory)/renovate-log.json" | 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))
4 changes: 2 additions & 2 deletions eng/common/core-templates/job/source-index-stage1.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,10 +25,10 @@ jobs:
pool:
${{ if eq(variables['System.TeamProject'], 'public') }}:
name: $(DncEngPublicBuildPool)
image: windows.vs2026preview.scout.amd64.open
image: windows.vs2026.amd64.open
${{ if eq(variables['System.TeamProject'], 'internal') }}:
name: $(DncEngInternalBuildPool)
image: windows.vs2026preview.scout.amd64
image: windows.vs2026.amd64

steps:
- ${{ if eq(parameters.is1ESPipeline, '') }}:
Expand Down
Loading
Loading