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
6 changes: 3 additions & 3 deletions .github/instructions/ado-pipelines.instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,14 +70,14 @@ When adding a new build stage, respect the dependency graph and pass artifact na
## PR vs CI Pipeline Differences

PR pipelines:
- Trigger on PRs to `dev/*`, `feat/*`, `main`; exclude `eng/pipelines/onebranch/*` paths
- Trigger on PRs targeting `release/7.1`; path filters vary by pipeline
- Use reduced TFM matrix: `[net462, net8.0, net9.0]` (excludes net10.0)
- Timeout: 90 minutes
- Package-ref PR disables Always Encrypted tests in Debug config and also disables legacy SQL Server test legs to keep validation fast

CI pipelines:
- Trigger on push to `main` (GitHub) and `internal/main` (ADO) with `batch: true`
- Scheduled weekday builds (see individual pipeline files for cron times)
- Trigger on push to `release/7.1` (GitHub) and `internal/release/7.1` (ADO) with `batch: true`
- Scheduled daily builds are staggered to avoid main and other release-branch schedules (see individual pipeline files for cron times)
- Full TFM matrix including net10.0 test legs and legacy SQL Server manual-test coverage

## Test Configuration
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Rules and conventions for editing the OneBranch Azure DevOps YAML pipelines that

## Pipeline Variants

- `sqlclient-official.yml` — Official pipeline; uses `OneBranch.Official.CrossPlat.yml`; runs on a daily schedule at 04:30 UTC on `internal/main`, with no activity-based trigger (`pr: none`, `trigger: none`)
- `sqlclient-official.yml` — Official pipeline; uses `OneBranch.Official.CrossPlat.yml`; runs on a daily schedule at 23:00 UTC on `internal/release/7.1`, with no activity-based trigger (`pr: none`, `trigger: none`)
- `sqlclient-non-official.yml` — Non-Official pipeline; uses `OneBranch.NonOfficial.CrossPlat.yml`; manual only (`pr: none`, `trigger: none`)
- Both live under `eng/pipelines/onebranch/` and extend OneBranch governed templates
- Never parameterize the OneBranch template name — hardcode it per pipeline for PRC compliance
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ resources:
trigger:
branches:
include:
- internal/main
- internal/release/7.1-staging

parameters:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ resources:
trigger:
branches:
include:
- internal/main
- internal/release/7.1-staging

# Pipeline parameters, visible in the Azure DevOps UI.
parameters:
Expand Down
30 changes: 19 additions & 11 deletions eng/pipelines/ci/package/sqlclient-ci-package-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,32 +7,40 @@
# This pipeline builds all packages using the build.proj Pack target with ReferenceType=Package,
# then publishes the resulting .nupkg and .snupkg files as a single pipeline artifact.
#
# It runs nightly at 00:20 UTC on GitHub dotnet/SqlClient main and ADO.Net dotnet-sqlclient
# internal/main.
# It runs daily at 13:00 UTC on GitHub dotnet/SqlClient release/7.1 and at 21:00 UTC on ADO.Net
# dotnet-sqlclient internal/release/7.1.
#
# On internal/main the strong-name signing key is downloaded and used to sign assemblies during the
# build.
# On internal/release/7.1 the strong-name signing key is downloaded and used to sign assemblies
# during the build.
Comment on lines +10 to +14
#
# GOTCHA: This pipeline definition is triggered by GitHub _and_ ADO.NET CI. We distinguish the two
# via branch filters:
#
# - Only the GitHub repo has a 'main' branch.
# - Only the ADO repo has an 'internal/main' branch.
# - Only the GitHub repo has a 'release/7.1' branch.
# - Only the ADO repo has an 'internal/release/7.1' branch.

name: $(DayOfYear)$(Rev:rr)

# Do not trigger this pipeline for PRs or pushes.
pr: none
trigger: none

# Nightly schedule at 00:20 UTC.
# Stagger the GitHub and ADO builds so their downstream completion-triggered pipelines do not start
# at the same time.
schedules:
- cron: '20 0 * * *'
displayName: Nightly Build
- cron: '0 13 * * *'
displayName: 7.1 GitHub Daily Package Build (13:00 UTC)
branches:
include:
- main
- internal/main
- release/7.1-staging

always: true

- cron: '0 21 * * *'
displayName: 7.1 ADO Daily Package Build (21:00 UTC)
branches:
include:
- internal/release/7.1-staging
always: true

# Pipeline parameters visible in the Azure DevOps UI.
Expand Down
4 changes: 2 additions & 2 deletions eng/pipelines/ci/stress/sqlclient-ci-stress-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,8 @@ resources:
trigger:
branches:
include:
- main
- internal/main
- release/7.1-staging
- internal/release/7.1-staging

# Pipeline parameters, visible in the Azure DevOps UI.
parameters:
Expand Down
41 changes: 20 additions & 21 deletions eng/pipelines/dotnet-sqlclient-ci-package-reference-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,17 @@
# It runs via CI push triggers and schedules and uses the Release build
# configuration:
#
# - Commits to GitHub main and release/* branches
# - Commits to ADO internal/main and internal/release/* branches
# - Daily at 03:00 UTC on GitHub main
# - Daily at 07:00 UTC on ADO internal/main
# - GitHub CI push trigger disabled due to limited resources
# - Commits to the ADO internal/release/7.1 branch
# - Daily at 11:00 UTC on GitHub release/7.1
# - Daily at 19:00 UTC on ADO internal/release/7.1
Comment on lines +17 to +20
#
# GOTCHA: This pipeline definition is triggered by GitHub _and_ ADO CI. We are
# able to define different triggers and schedules using branch filters:
#
# - Only the GitHub repo has a 'main' branch, so its presence indicates that
# the pipeline run was triggered via GitHub.
# - The GitHub registration uses the release/7.1 branch filters.
#
# - Only the ADO repo has an 'internal/main' branch.
# - The ADO registration uses the internal/release/7.1 branch filters.
#
# Changes are batched together to ensure that the pipline never runs
# concurrently.
Expand Down Expand Up @@ -58,31 +57,31 @@ trigger:

branches:
include:
# GitHub main and release branches.
- main
- release/*
# GitHub release branch.
#
# GOTCHA: Currently disabled due to limited resources.
#- release/7.1-staging

# ADO main and release branches.
- internal/main
- internal/release/*
# ADO release branch.
- internal/release/7.1-staging

# Trigger this pipeline on a schedule.
schedules:

# GitHub main daily.
- cron: '0 3 * * *'
displayName: Daily Run (Release Config)
# GitHub release/7.1 daily.
- cron: '0 11 * * *'
displayName: 7.1 GitHub Package-Reference Daily Run (11:00 UTC)
branches:
include:
- main
- release/7.1-staging
always: true

# ADO internal/main daily.
- cron: '0 7 * * *'
displayName: Daily Run (Release Config)
# ADO internal/release/7.1 daily.
- cron: '0 19 * * *'
displayName: 7.1 ADO Package-Reference Daily Run (19:00 UTC)
branches:
include:
- internal/main
- internal/release/7.1-staging
always: true

# Pipeline parameters, visible in the Azure DevOps UI.
Expand Down
39 changes: 18 additions & 21 deletions eng/pipelines/dotnet-sqlclient-ci-project-reference-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,17 @@
# It runs via CI push triggers and schedules and uses the Release build
# configuration:
#
# - Commits to GitHub main and release/* branches
# - Commits to ADO internal/main and internal/release/* branches
# - Daily at 01:00 UTC on GitHub main
# - Daily at 05:00 UTC on ADO internal/main
# - Commits to the GitHub release/7.1 branch
# - Commits to the ADO internal/release/7.1 branch
# - Daily at 09:00 UTC on GitHub release/7.1
# - Daily at 17:00 UTC on ADO internal/release/7.1
Comment on lines +17 to +20
#
# GOTCHA: This pipeline definition is triggered by GitHub _and_ ADO CI. We are
# able to define different triggers and schedules using branch filters:
#
# - Only the GitHub repo has a 'main' branch, so its presence indicates that
# the pipeline run was triggered via GitHub.
# - The GitHub registration uses the release/7.1 branch filters.
#
# - Only the ADO repo has an 'internal/main' branch.
# - The ADO registration uses the internal/release/7.1 branch filters.
#
# Changes are batched together to ensure that the pipline never runs
# concurrently.
Expand Down Expand Up @@ -58,31 +57,29 @@ trigger:

branches:
include:
# GitHub main and release branches.
- main
- release/*
# GitHub release branch.
- release/7.1-staging

# ADO main and release branches.
- internal/main
- internal/release/*
# ADO release branch.
- internal/release/7.1-staging

# Trigger this pipeline on a schedule.
schedules:

# GitHub main daily.
- cron: '0 1 * * *'
displayName: Daily Run (Release Config)
# GitHub release/7.1 daily.
- cron: '0 9 * * *'
displayName: 7.1 GitHub Project-Reference Daily Run (09:00 UTC)
branches:
include:
- main
- release/7.1-staging
always: true

# ADO internal/main daily.
- cron: '0 5 * * *'
displayName: Daily Run (Release Config)
# ADO internal/release/7.1 daily.
- cron: '0 17 * * *'
displayName: 7.1 ADO Project-Reference Daily Run (17:00 UTC)
branches:
include:
- internal/main
- internal/release/7.1-staging
always: true

# Pipeline parameters, visible in the Azure DevOps UI.
Expand Down
26 changes: 13 additions & 13 deletions eng/pipelines/github-sync-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@
# See the LICENSE file in the project root for more information. #
#################################################################################

# This pipeline synchronizes the GitHub dotnet/SqlClient repository's main
# This pipeline synchronizes the GitHub dotnet/SqlClient repository's release/7.1
# branch into the internal ADO repository by:
#
# 1. Fetching the latest commits from GitHub main.
# 2. Pushing them to a dev/autosync/github-main branch in ADO.
# 3. Creating (or updating) a pull request targeting internal/main.
# 1. Fetching the latest commits from GitHub release/7.1.
# 2. Pushing them to a dev/autosync/github-release-7.1 branch in ADO.
Comment on lines +7 to +11
# 3. Creating (or updating) a pull request targeting internal/release/7.1.
#
# It runs on a daily schedule at 02:00 UTC and can also be triggered manually.
# It runs on a daily schedule at 15:00 UTC and can also be triggered manually.
# The pipeline does not auto-complete the PR — changes must be reviewed and
# merged manually.
#
Expand All @@ -35,11 +35,11 @@ pr: none

# Trigger this pipeline on a daily schedule.
schedules:
- cron: '0 2 * * *'
displayName: Daily GitHub Sync (02:00 UTC)
- cron: '0 15 * * *'
displayName: 7.1 Daily GitHub Sync (15:00 UTC)
branches:
include:
- internal/main
- internal/release/7.1-staging
always: true

# Pipeline parameters, visible in the Azure DevOps UI.
Expand All @@ -49,17 +49,17 @@ parameters:
- name: githubBranch
displayName: GitHub Branch
type: string
default: main
default: release/7.1-staging

# The ADO target branch to create the PR against.
- name: targetBranch
displayName: ADO Target Branch
type: string
default: internal/main
default: internal/release/7.1-staging

jobs:
- job: SyncGitHub
displayName: Sync GitHub to ADO
displayName: Sync GitHub release/7.1 to ADO internal/release/7.1
pool:
vmImage: 'ubuntu-latest'

Expand All @@ -71,14 +71,14 @@ jobs:

# Run the sync script.
- task: PowerShell@2
displayName: Sync GitHub main to ADO
displayName: Sync GitHub release/7.1 to ADO
inputs:
filePath: $(Build.SourcesDirectory)/eng/pipelines/scripts/Sync-GitHubToAdo.ps1
arguments: >-
-GitHubRepoUrl "https://github.com/dotnet/SqlClient.git"
-GitHubBranch "${{ parameters.githubBranch }}"
-TargetBranch "${{ parameters.targetBranch }}"
-SyncBranchName "dev/autosync/github-${{ parameters.githubBranch }}"
-SyncBranchName "dev/autosync/github-${{ replace(parameters.githubBranch, '/', '-') }}"
-AdoOrgUrl "$(System.CollectionUri)"
-AdoProject "$(System.TeamProject)"
-AdoRepoName "$(Build.Repository.Name)"
Expand Down
6 changes: 3 additions & 3 deletions eng/pipelines/onebranch/sqlclient-official.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,11 @@ trigger: none

# We run this pipeline on a daily schedule.
schedules:
- cron: "30 4 * * *"
displayName: Daily 04:30 UTC Build
- cron: "0 23 * * *"
displayName: 7.1 Daily Official Build (23:00 UTC)
branches:
include:
- internal/main
- internal/release/7.1-staging
always: true

# These parameters are visible in the Azure DevOps pipeline UI when a new run is queued.
Expand Down
2 changes: 1 addition & 1 deletion eng/pipelines/perf/sqlclient-perf-pr-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ parameters:
- name: baselineSourceRef
displayName: Baseline Source Ref (branch)
type: string
default: main
default: release/7.1-staging

# Remote used to obtain the baseline ref when it cannot be fetched from the VM copy of the
# checkout's own 'origin' (e.g. the source tree reached the VM without its .git directory, or
Expand Down
9 changes: 2 additions & 7 deletions eng/pipelines/pr/sqlclient-pr-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@
# environments to provide complete coverage. Instead, this PR strikes a balance between complete
# confidence and speed of PR validation.
#
# It is triggered by pushes to PRs that target the main, dev/*, feat/*, and release/* branches in
# GitHub. The dev/* pattern includes dev/automation/* branches created by AI agents.
# It is triggered by pushes to PRs that target the release/7.1 branch in GitHub.
#
# It maps to the "sqlclient-pr" pipeline in the Public ADO project:
# https://sqlclientdrivers.visualstudio.com/public/_build?definitionId=2281
Expand All @@ -25,11 +24,7 @@ name: $(DayOfYear)$(Rev:rr)
pr:
branches:
include:
# GitHub repo branch targets that will trigger PR validation builds.
- dev/*
- feat/*
- main
- release/*
- release/7.1-staging

paths:
include:
Expand Down
14 changes: 6 additions & 8 deletions eng/pipelines/sqlclient-pr-package-ref-pipeline.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@
# - Microsoft.Data.SqlClient
# - Microsoft.Data.SqlClient.AlwaysEncrypted.AzureKeyVaultProvider
#
# It is triggered by pushes to PRs that target the main, dev/*, feat/*, and
# release/* branches in GitHub. The dev/* pattern includes dev/automation/*
# branches created by AI agents.
# PR validation is disabled on the release/7.1 branch due to limited resources.
#
# It maps to the "PR-SqlClient-Package" pipeline in the Public project:
#
Expand All @@ -32,12 +30,12 @@ name: $(DayOfYear)$(Rev:rr)
#
pr:
branches:
include:
include: [
# GitHub repo branch targets that will trigger PR validation builds.
- dev/*
- feat/*
- main
- release/*
#
# GOTCHA: Currently disabled due to limited resources.
# release/7.1-staging
]

paths:
include:
Expand Down
Loading
Loading