pool-providers.yml 2.5 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# Select a pool provider based off branch name. Anything with branch name containing 'release' must go into an -Svc pool, 
# otherwise it should go into the "normal" pools. This separates out the queueing and billing of released branches.

# Motivation: 
#   Once a given branch of a repository's output has been officially "shipped" once, it is then considered to be COGS
#   (Cost of goods sold) and should be moved to a servicing pool provider. This allows both separation of queueing
#   (allowing release builds and main PR builds to not intefere with each other) and billing (required for COGS.
#   Additionally, the pool provider name itself may be subject to change when the .NET Core Engineering Services 
#   team needs to move resources around and create new and potentially differently-named pools. Using this template 
#   file from an Arcade-ified repo helps guard against both having to update one's release/* branches and renaming.

# How to use: 
#  This yaml assumes your shipped product branches use the naming convention "release/..." (which many do).
#  If we find alternate naming conventions in broad usage it can be added to the condition below.
#
#  First, import the template in an arcade-ified repo to pick up the variables, e.g.:
#
#  variables:
19
#  - template: /eng/common/templates/variables/pool-providers.yml
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
#
#  ... then anywhere specifying the pool provider use the runtime variables,
#      $(DncEngInternalBuildPool) and $  (DncEngPublicBuildPool), e.g.:
#
#        pool:
#           name: $(DncEngInternalBuildPool)
#           demands: ImageOverride -equals windows.vs2019.amd64

variables:
# Coalesce the target and source branches so we know when a PR targets a release branch
# If these variables are somehow missing, fall back to main (tends to have more capacity)
- name: BranchNameForPoolSelection
  value: ${{ coalesce(variables['System.PullRequest.TargetBranch'], variables['Build.SourceBranch'], 'refs/heads/main') }}

# Any new -Svc alternative pools should have variables added here to allow for splitting work

# Main branch pools
- ${{ if ne(contains(variables['BranchNameForPoolSelection'], 'release'), true) }}:
  - name: DncEngPublicBuildPool
    value: NetCore-Public
  - name: DncEngInternalBuildPool
    value: NetCore1ESPool-Internal

# Release branch pools
- ${{ if contains(variables['BranchNameForPoolSelection'], 'release') }}:
  - name: DncEngPublicBuildPool
    value: NetCore-Svc-Public
  - name: DncEngInternalBuildPool
48
    value: NetCore1ESPool-Svc-Internal