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
5 changes: 5 additions & 0 deletions common/config/azure-pipelines/esrp-publish-rush.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ parameters:
displayName: 'Commit SHA Override (for testing)'
type: string
default: $(Build.SourceVersion)
- name: BumpPipelineRunIdOverride
displayName: 'Bump pipeline run ID override (for recovery)'
type: number
default: 0

variables:
- name: FORCE_COLOR
Expand Down Expand Up @@ -68,3 +72,4 @@ extends:
NpmTag: ${{ parameters.NpmTag }}
DryRun: ${{ parameters.DryRun }}
CommitShaOverride: ${{ parameters.CommitShaOverride }}
BumpPipelineRunIdOverride: ${{ parameters.BumpPipelineRunIdOverride }}
5 changes: 5 additions & 0 deletions common/config/azure-pipelines/esrp-publish-rushstack.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ parameters:
displayName: 'Commit SHA Override (for testing)'
type: string
default: $(Build.SourceVersion)
- name: BumpPipelineRunIdOverride
displayName: 'Bump pipeline run ID override (for recovery)'
type: number
default: 0

variables:
- name: FORCE_COLOR
Expand Down Expand Up @@ -68,3 +72,4 @@ extends:
NpmTag: ${{ parameters.NpmTag }}
DryRun: ${{ parameters.DryRun }}
CommitShaOverride: ${{ parameters.CommitShaOverride }}
BumpPipelineRunIdOverride: ${{ parameters.BumpPipelineRunIdOverride }}
18 changes: 6 additions & 12 deletions common/config/azure-pipelines/npm-publish-rush.yaml
Original file line number Diff line number Diff line change
@@ -1,19 +1,11 @@
# Pipeline: Bump Versions (Rush) -- AzDO definition 12 in the GitHubProjects project
# Trigger: Automatically when changes merge to main that include change files or pipeline YAML.
# Purpose: Bump versions for the "rush" version policy, build, pack, create/update GitHub PR.
# Trigger: Manually when a Rush release is required.
# Purpose: Bump non-Rush versions first, then the "rush" version policy, build, pack, and create/update
# a GitHub PR.
# The packed tarballs are published by the "esrp-publish-rush.yaml" pipeline once the
# resulting version bump PR is merged.

trigger:
batch: true
branches:
include:
- main
paths:
include:
- 'common/changes/*'
- 'common/config/rush/version-policies.json'
- 'common/config/azure-pipelines/**'
trigger: none

pr: none

Expand Down Expand Up @@ -51,6 +43,8 @@ extends:
- template: /common/config/azure-pipelines/templates/bump-versions-stages.yaml@self
parameters:
VersionPolicyName: rush
BumpNonRushFirst: true
PackageCohort: all
StageName: BumpRushVersions
StageDisplayName: 'Bump Rush Versions and Create PR'
CheckoutRepository: rushstackGitHubApp
Expand Down
1 change: 1 addition & 0 deletions common/config/azure-pipelines/npm-publish.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ extends:
- template: /common/config/azure-pipelines/templates/bump-versions-stages.yaml@self
parameters:
VersionPolicyName: noRush
PackageCohort: noRush
StageName: BumpRushstackVersions
StageDisplayName: 'Bump Rushstack Versions and Create PR'
CheckoutRepository: rushstackGitHubApp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@
parameters:
- name: VersionPolicyName
type: string
- name: BumpNonRushFirst
type: boolean
default: false
- name: PackageCohort
type: string
- name: StageName
type: string
- name: StageDisplayName
Expand Down Expand Up @@ -71,9 +76,35 @@ stages:

- template: /common/config/azure-pipelines/templates/build.yaml@self

- template: /common/config/azure-pipelines/templates/bump-versions.yaml@self
parameters:
VersionPolicyName: ${{ parameters.VersionPolicyName }}
- ${{ if eq(parameters.BumpNonRushFirst, true) }}:
# The Rush lockstep packages can depend on independently versioned packages. Preserve
# the old release ordering by applying all individual changes before the Rush bump.
- template: /common/config/azure-pipelines/templates/bump-versions.yaml@self
parameters:
VersionPolicyName: noRush

- template: /common/config/azure-pipelines/templates/bump-versions.yaml@self
parameters:
VersionPolicyName: ${{ parameters.VersionPolicyName }}

- ${{ else }}:
# "noRush" is a pipeline cohort, not a Rush version policy. Hide Rush change files so
# the independently scheduled non-Rush flow cannot consume lockstep release changes.
- script: >
node common/scripts/publish-cohort.js partition-changes
--cohort ${{ parameters.VersionPolicyName }}
--backup-path $(Agent.TempDirectory)/excluded-publish-changes
displayName: 'Select ${{ parameters.VersionPolicyName }} change files'

- template: /common/config/azure-pipelines/templates/bump-versions.yaml@self
parameters:
VersionPolicyName: ${{ parameters.VersionPolicyName }}

- script: >
node common/scripts/publish-cohort.js restore-changes
--backup-path $(Agent.TempDirectory)/excluded-publish-changes
displayName: 'Restore other publishing cohort change files'
condition: succeededOrFailed()

- bash: |
git add -u -- common/changes
Expand Down Expand Up @@ -116,6 +147,14 @@ stages:
- template: /common/config/azure-pipelines/templates/pack.yaml@self
parameters:
VersionPolicyName: ${{ parameters.VersionPolicyName }}
PackageCohort: ${{ parameters.PackageCohort }}

- bash: |
if [ "$(HasChanges)" = "true" ] && [ "$(HasPackages)" != "true" ]; then
echo "##[error]Version bump produced no unpublished package tarballs."
exit 1
fi
displayName: 'Verify package artifact'

- template: /common/config/azure-pipelines/templates/post-publish.yaml@self

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ parameters:
type: boolean
- name: CommitShaOverride
type: string
# Allows a packaging run to be replayed when a previous release artifact was incomplete.
- name: BumpPipelineRunIdOverride
type: number
default: 0

stages:
- stage: Prepare${{ parameters.StageNameSuffix }}
Expand Down Expand Up @@ -60,13 +64,23 @@ stages:
displayName: 'Initialize artifact staging directories'
condition: always()

- template: /common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml@self
parameters:
PipelineId: ${{ parameters.BumpPipelineId }}
CommitSha: ${{ coalesce(parameters.CommitShaOverride, '$(Build.SourceVersion)') }}
TeamProject: ${{ parameters.BumpPipelineProject }}
Name: FindBumpRun
WorkingDirectory: $(Build.SourcesDirectory)
- ${{ if gt(parameters.BumpPipelineRunIdOverride, 0) }}:
- bash: |
echo "Using bump pipeline run override ${{ parameters.BumpPipelineRunIdOverride }}"
echo "##vso[task.setvariable variable=IsVersionBumpMerge;isOutput=true]true"
echo "##vso[task.setvariable variable=BumpPipelineDefinitionId;isOutput=true]${{ parameters.BumpPipelineId }}"
echo "##vso[task.setvariable variable=BumpPipelineRunId;isOutput=true]${{ parameters.BumpPipelineRunIdOverride }}"
name: FindBumpRun
displayName: 'Use Bump Pipeline Run Override'

- ${{ else }}:
- template: /common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml@self
parameters:
PipelineId: ${{ parameters.BumpPipelineId }}
CommitSha: ${{ coalesce(parameters.CommitShaOverride, '$(Build.SourceVersion)') }}
TeamProject: ${{ parameters.BumpPipelineProject }}
Name: FindBumpRun
WorkingDirectory: $(Build.SourcesDirectory)

- task: DownloadPipelineArtifact@2
condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true')
Expand Down Expand Up @@ -114,7 +128,7 @@ stages:
displayName: 'Publish ${{ parameters.DisplayNameSuffix }} NPM Packages'
dependsOn:
- Prepare${{ parameters.StageNameSuffix }}
condition: and(succeeded('Prepare${{ parameters.StageNameSuffix }}'), eq(stageDependencies.Prepare${{ parameters.StageNameSuffix }}.PrepareNpmPublish.outputs['FindBumpRun.IsVersionBumpMerge'], 'true'))
condition: and(succeeded('Prepare${{ parameters.StageNameSuffix }}'), eq(dependencies.Prepare${{ parameters.StageNameSuffix }}.outputs['PrepareNpmPublish.FindBumpRun.IsVersionBumpMerge'], 'true'))
jobs:
- job: PublishNpmPackages
displayName: 'Publish ${{ parameters.DisplayNameSuffix }} NPM Packages'
Expand Down
41 changes: 30 additions & 11 deletions common/config/azure-pipelines/templates/pack.yaml
Original file line number Diff line number Diff line change
@@ -1,21 +1,40 @@
parameters:
# Only the packages belonging to this version policy are packed.
- name: VersionPolicyName
type: string
- name: PackageCohort
type: string

steps:
- template: /common/config/azure-pipelines/templates/install-run-rush.yaml@self
parameters:
Arguments: '--help'
DisplayName: 'Install Rush'

- template: /common/config/azure-pipelines/templates/install-run-rush.yaml@self
parameters:
Arguments: >
publish
--publish
--pack
--include-all
--version-policy ${{ parameters.VersionPolicyName }}
--release-folder $(Build.ArtifactStagingDirectory)/packages
DisplayName: 'Rush Pack (Policy: ${{ parameters.VersionPolicyName }})'
- ${{ if ne(parameters.PackageCohort, 'rush') }}:
- template: /common/config/azure-pipelines/templates/install-run-rush.yaml@self
parameters:
Arguments: >
publish
--publish
--pack
--include-all
--release-folder $(Build.ArtifactStagingDirectory)/packages
DisplayName: 'Rush Pack (Policy: ${{ parameters.VersionPolicyName }})'

- ${{ else }}:
- template: /common/config/azure-pipelines/templates/install-run-rush.yaml@self
parameters:
Arguments: >
publish
--publish
--pack
--include-all
--version-policy ${{ parameters.VersionPolicyName }}
--release-folder $(Build.ArtifactStagingDirectory)/packages
DisplayName: 'Rush Pack (Policy: ${{ parameters.VersionPolicyName }})'

- script: >
node common/scripts/publish-cohort.js filter-packages
--cohort ${{ parameters.PackageCohort }}
--packages-path $(Build.ArtifactStagingDirectory)/packages
displayName: 'Filter unpublished ${{ parameters.PackageCohort }} packages'
1 change: 1 addition & 0 deletions common/config/rush/.npmrc
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
omit-lockfile-registry-resolved=true
registry=https://packagefeedproxy.microsoft.io/npm/
Loading