From 11368837dc412e3a2fb4cbc8680d5d77a2676505 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 21 Aug 2026 20:36:23 +0000 Subject: [PATCH 01/16] chore: move npm publishing to release stage Co-authored-by: dmichon-msft <26827560+dmichon-msft@users.noreply.github.com> --- .../azure-pipelines/npm-publish-rush.yaml | 68 +++++++++++++++---- .../config/azure-pipelines/npm-publish.yaml | 65 +++++++++++++++--- .../azure-pipelines/templates/publish.yaml | 27 -------- 3 files changed, 113 insertions(+), 47 deletions(-) delete mode 100644 common/config/azure-pipelines/templates/publish.yaml diff --git a/common/config/azure-pipelines/npm-publish-rush.yaml b/common/config/azure-pipelines/npm-publish-rush.yaml index 70727beb73d..9f30fc34a7a 100644 --- a/common/config/azure-pipelines/npm-publish-rush.yaml +++ b/common/config/azure-pipelines/npm-publish-rush.yaml @@ -3,12 +3,22 @@ parameters: displayName: 'Publish to npm feed' type: boolean default: true + - name: NpmTag + displayName: 'NPM dist-tag' + type: string + default: latest + - name: DryRun + displayName: 'Dry run' + type: boolean + default: false variables: - name: FORCE_COLOR value: 1 - name: SourceBranch value: $[ replace(replace(resources.repositories.self.ref, 'refs/heads/', ''), 'refs/pull/', 'refs/remotes/pull/') ] + - name: PackagesPath + value: $(Pipeline.Workspace)/packages resources: repositories: @@ -16,6 +26,10 @@ resources: type: git name: 1ESPipelineTemplates/1ESPipelineTemplates ref: refs/tags/release + - repository: publishConfig + type: git + name: GitHubProjectsPublish/GitHubProjectsPublish + ref: refs/heads/main extends: template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines @@ -24,9 +38,11 @@ extends: name: Azure-Pipelines-1ESPT-ExDShared os: windows stages: - - stage: + - stage: Prepare + displayName: 'Prepare NPM Packages' jobs: - - job: + - job: PrepareNpmPublish + displayName: 'Prepare NPM Packages' pool: name: publish-rushstack os: linux @@ -68,15 +84,43 @@ extends: - template: /common/config/azure-pipelines/templates/pack.yaml@self - - ${{ if eq(parameters.publishToNpmFeed, true) }}: - - template: /common/config/azure-pipelines/templates/publish.yaml@self - parameters: - VersionPolicyName: noRush - BranchName: $(SourceBranch) + - template: /common/config/azure-pipelines/templates/post-publish.yaml@self - - template: /common/config/azure-pipelines/templates/publish.yaml@self - parameters: - VersionPolicyName: rush - BranchName: $(SourceBranch) + - ${{ if eq(parameters.publishToNpmFeed, true) }}: + - stage: Publish + displayName: 'Publish NPM Packages' + dependsOn: + - Prepare + condition: succeeded('Prepare') + jobs: + - job: PublishNpmPackages + displayName: 'Publish NPM Packages' + pool: + name: publish-rushstack + os: linux + templateContext: + type: releaseJob + isProduction: true + steps: + - checkout: none - - template: /common/config/azure-pipelines/templates/post-publish.yaml@self + - template: /common/config/azure-pipelines/templates/install-node.yaml@self + + - task: 1ES.DownloadPipelineArtifact@1 + inputs: + buildType: current + project: $(System.TeamProject) + definition: $(System.DefinitionId) + artifactName: packages + targetPath: $(PackagesPath) + displayName: 'Download packed npm packages' + + - bash: | + ls -la "$(PackagesPath)" + displayName: 'List downloaded packages' + + - template: /common/config/azure-pipelines/templates/esrp-release.yaml@publishConfig + parameters: + packagesPath: $(PackagesPath) + npmTag: ${{ parameters.NpmTag }} + dryRun: ${{ parameters.DryRun }} diff --git a/common/config/azure-pipelines/npm-publish.yaml b/common/config/azure-pipelines/npm-publish.yaml index 2b589c4a732..61ea336866f 100644 --- a/common/config/azure-pipelines/npm-publish.yaml +++ b/common/config/azure-pipelines/npm-publish.yaml @@ -3,12 +3,22 @@ parameters: displayName: 'Publish to npm feed' type: boolean default: true + - name: NpmTag + displayName: 'NPM dist-tag' + type: string + default: latest + - name: DryRun + displayName: 'Dry run' + type: boolean + default: false variables: - name: FORCE_COLOR value: 1 - name: SourceBranch value: $[ replace(replace(resources.repositories.self.ref, 'refs/heads/', ''), 'refs/pull/', 'refs/remotes/pull/') ] + - name: PackagesPath + value: $(Pipeline.Workspace)/packages resources: repositories: @@ -16,6 +26,10 @@ resources: type: git name: 1ESPipelineTemplates/1ESPipelineTemplates ref: refs/tags/release + - repository: publishConfig + type: git + name: GitHubProjectsPublish/GitHubProjectsPublish + ref: refs/heads/main extends: template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines @@ -24,9 +38,11 @@ extends: name: Azure-Pipelines-1ESPT-ExDShared os: windows stages: - - stage: + - stage: Prepare + displayName: 'Prepare NPM Packages' jobs: - - job: + - job: PrepareNpmPublish + displayName: 'Prepare NPM Packages' pool: name: publish-rushstack os: linux @@ -63,10 +79,43 @@ extends: - template: /common/config/azure-pipelines/templates/pack.yaml@self - - ${{ if eq(parameters.publishToNpmFeed, true) }}: - - template: /common/config/azure-pipelines/templates/publish.yaml@self - parameters: - VersionPolicyName: noRush - BranchName: $(SourceBranch) - - template: /common/config/azure-pipelines/templates/post-publish.yaml@self + + - ${{ if eq(parameters.publishToNpmFeed, true) }}: + - stage: Publish + displayName: 'Publish NPM Packages' + dependsOn: + - Prepare + condition: succeeded('Prepare') + jobs: + - job: PublishNpmPackages + displayName: 'Publish NPM Packages' + pool: + name: publish-rushstack + os: linux + templateContext: + type: releaseJob + isProduction: true + steps: + - checkout: none + + - template: /common/config/azure-pipelines/templates/install-node.yaml@self + + - task: 1ES.DownloadPipelineArtifact@1 + inputs: + buildType: current + project: $(System.TeamProject) + definition: $(System.DefinitionId) + artifactName: packages + targetPath: $(PackagesPath) + displayName: 'Download packed npm packages' + + - bash: | + ls -la "$(PackagesPath)" + displayName: 'List downloaded packages' + + - template: /common/config/azure-pipelines/templates/esrp-release.yaml@publishConfig + parameters: + packagesPath: $(PackagesPath) + npmTag: ${{ parameters.NpmTag }} + dryRun: ${{ parameters.DryRun }} diff --git a/common/config/azure-pipelines/templates/publish.yaml b/common/config/azure-pipelines/templates/publish.yaml deleted file mode 100644 index 578cac0f310..00000000000 --- a/common/config/azure-pipelines/templates/publish.yaml +++ /dev/null @@ -1,27 +0,0 @@ -parameters: - - name: VersionPolicyName - type: string - - name: BranchName - type: string - default: $(Build.SourceBranchName) - -steps: - - template: /common/config/azure-pipelines/templates/install-run-rush.yaml@self - parameters: - Arguments: '--help' - DisplayName: 'Install Rush' - - - bash: 'rm -f "$HOME/.npmrc"' - displayName: 'Clear user npmrc for publish' - - - template: /common/config/azure-pipelines/templates/install-run-rush.yaml@self - parameters: - Arguments: > - publish - --apply - --publish - --include-all - --target-branch ${{ parameters.BranchName }} - --add-commit-details --set-access-level public - DisplayName: 'Rush Publish (Policy: ${{ parameters.VersionPolicyName }})' - NpmAuthToken: $(npmToken) From 51e2dfaaeae8d7f48e2dbe731d12918f3a5250be Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 21 Aug 2026 20:44:20 +0000 Subject: [PATCH 02/16] chore: prune npmjs registry from npmrc files Co-authored-by: dmichon-msft <26827560+dmichon-msft@users.noreply.github.com> --- common/config/rush/.npmrc-publish | 8 +------- common/config/subspaces/build-tests-subspace/.npmrc | 5 +---- common/config/subspaces/default/.npmrc | 5 +---- .../assets/rush-init/common/config/rush/[dot]npmrc | 11 +---------- .../rush-init/common/config/rush/[dot]npmrc-publish | 11 +---------- 5 files changed, 5 insertions(+), 35 deletions(-) diff --git a/common/config/rush/.npmrc-publish b/common/config/rush/.npmrc-publish index a0ffdc9d322..7263f1066f7 100644 --- a/common/config/rush/.npmrc-publish +++ b/common/config/rush/.npmrc-publish @@ -14,12 +14,6 @@ # It is NOT recommended to store authentication tokens in a text file on a lab machine, because # other unrelated processes may be able to read the file. Also, the file may persist indefinitely, # for example if the machine loses power. A safer practice is to pass the token via an -# environment variable, which can be referenced from .npmrc using ${} expansion. For example: -# -# //registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN} -# +# environment variable, which can be referenced from .npmrc using ${} expansion. -registry=https://registry.npmjs.org/ always-auth=true -//registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN} - diff --git a/common/config/subspaces/build-tests-subspace/.npmrc b/common/config/subspaces/build-tests-subspace/.npmrc index 9ce3b02e82e..340385524b1 100644 --- a/common/config/subspaces/build-tests-subspace/.npmrc +++ b/common/config/subspaces/build-tests-subspace/.npmrc @@ -18,10 +18,7 @@ # It is NOT recommended to store authentication tokens in a text file on a lab machine, because # other unrelated processes may be able to read that file. Also, the file may persist indefinitely, # for example if the machine loses power. A safer practice is to pass the token via an -# environment variable, which can be referenced from .npmrc using ${} expansion. For example: -# -# //registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN} -# +# environment variable, which can be referenced from .npmrc using ${} expansion. registry=https://packagefeedproxy.microsoft.io/npm/ always-auth=false # No phantom dependencies allowed in this repository diff --git a/common/config/subspaces/default/.npmrc b/common/config/subspaces/default/.npmrc index 9ce3b02e82e..340385524b1 100644 --- a/common/config/subspaces/default/.npmrc +++ b/common/config/subspaces/default/.npmrc @@ -18,10 +18,7 @@ # It is NOT recommended to store authentication tokens in a text file on a lab machine, because # other unrelated processes may be able to read that file. Also, the file may persist indefinitely, # for example if the machine loses power. A safer practice is to pass the token via an -# environment variable, which can be referenced from .npmrc using ${} expansion. For example: -# -# //registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN} -# +# environment variable, which can be referenced from .npmrc using ${} expansion. registry=https://packagefeedproxy.microsoft.io/npm/ always-auth=false # No phantom dependencies allowed in this repository diff --git a/libraries/rush-lib/assets/rush-init/common/config/rush/[dot]npmrc b/libraries/rush-lib/assets/rush-init/common/config/rush/[dot]npmrc index 43f783886e9..c43a4f44461 100644 --- a/libraries/rush-lib/assets/rush-init/common/config/rush/[dot]npmrc +++ b/libraries/rush-lib/assets/rush-init/common/config/rush/[dot]npmrc @@ -18,16 +18,7 @@ # It is NOT recommended to store authentication tokens in a text file on a lab machine, because # other unrelated processes may be able to read that file. Also, the file may persist indefinitely, # for example if the machine loses power. A safer practice is to pass the token via an -# environment variable, which can be referenced from .npmrc using ${} expansion. For example: -# -# //registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN} -# - -# Explicitly specify the NPM registry that "rush install" and "rush update" will use by default: -registry=https://registry.npmjs.org/ - -# Optionally provide an authentication token for the above registry URL (if it is a private registry): -# //registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN} +# environment variable, which can be referenced from .npmrc using ${} expansion. # Change this to "true" if your registry requires authentication for read-only operations: always-auth=false diff --git a/libraries/rush-lib/assets/rush-init/common/config/rush/[dot]npmrc-publish b/libraries/rush-lib/assets/rush-init/common/config/rush/[dot]npmrc-publish index 51acb920edc..6be6f1746f6 100644 --- a/libraries/rush-lib/assets/rush-init/common/config/rush/[dot]npmrc-publish +++ b/libraries/rush-lib/assets/rush-init/common/config/rush/[dot]npmrc-publish @@ -14,13 +14,4 @@ # It is NOT recommended to store authentication tokens in a text file on a lab machine, because # other unrelated processes may be able to read the file. Also, the file may persist indefinitely, # for example if the machine loses power. A safer practice is to pass the token via an -# environment variable, which can be referenced from .npmrc using ${} expansion. For example: -# -# //registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN} -# - -# Explicitly specify the NPM registry that "rush publish" will use by default: -registry=https://registry.npmjs.org/ - -# Provide an authentication token for the above registry URL: -# //registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN} +# environment variable, which can be referenced from .npmrc using ${} expansion. From eaa13374c69701b735d222144edeeede87f60ce5 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 21 Aug 2026 20:50:43 +0000 Subject: [PATCH 03/16] ci: add version bump pipeline Co-authored-by: dmichon-msft <26827560+dmichon-msft@users.noreply.github.com> --- .../config/azure-pipelines/bump-versions.yaml | 147 ++++++++++++++++++ .../templates/configure-git-user.yaml | 11 ++ .../templates/find-bump-pipeline-run.yaml | 87 +++++++++++ .../templates/prepare-publish-artifacts.yaml | 18 +++ .../templates/record-versions.yaml | 13 ++ 5 files changed, 276 insertions(+) create mode 100644 common/config/azure-pipelines/bump-versions.yaml create mode 100644 common/config/azure-pipelines/templates/configure-git-user.yaml create mode 100644 common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml create mode 100644 common/config/azure-pipelines/templates/prepare-publish-artifacts.yaml create mode 100644 common/config/azure-pipelines/templates/record-versions.yaml diff --git a/common/config/azure-pipelines/bump-versions.yaml b/common/config/azure-pipelines/bump-versions.yaml new file mode 100644 index 00000000000..c4040000fd0 --- /dev/null +++ b/common/config/azure-pipelines/bump-versions.yaml @@ -0,0 +1,147 @@ +# Pipeline: Bump Versions +# Trigger: Automatically when changes merge to main that include change files or pipeline YAML. +# Purpose: Bump versions, build, pack, create/update GitHub PR. + +trigger: + batch: true + branches: + include: + - main + paths: + include: + - 'common/changes/*' + - 'common/config/rush/version-policies.json' + - 'common/config/azure-pipelines/**' + +pr: none + +variables: + - name: FORCE_COLOR + value: 1 + - name: FeatureBranch + value: 'automated/bump-versions' + - name: BaseBranch + value: $[ replace(variables['Build.SourceBranch'], 'refs/heads/', '') ] + +resources: + repositories: + - repository: 1esPipelines + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release + +extends: + template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines + parameters: + pool: + name: Azure-Pipelines-1ESPT-ExDShared + os: windows + stages: + - stage: BumpVersions + displayName: 'Bump Versions and Create PR' + jobs: + - job: BumpVersions + displayName: 'Bump Versions' + pool: + name: publish-rushstack + os: linux + templateContext: + outputParentDirectory: $(Build.ArtifactStagingDirectory) + outputs: + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/published-versions + artifactName: published-versions + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/json-schemas + artifactName: json-schemas + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/packages + artifactName: packages + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/api + artifactName: api + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/artifact-metadata.json + artifactName: metadata + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/package-versions + artifactName: package-versions + steps: + - checkout: self + persistCredentials: true + + - template: /common/config/azure-pipelines/templates/configure-git-user.yaml@self + + - bash: | + git checkout -b $(FeatureBranch) + echo "Created feature branch: $(FeatureBranch)" + displayName: 'Create Feature Branch' + + - template: /common/config/azure-pipelines/templates/install-node.yaml@self + + - template: /common/config/azure-pipelines/templates/build.yaml@self + + - template: /common/config/azure-pipelines/templates/bump-versions.yaml@self + parameters: + VersionPolicyName: noRush + BranchName: $(BaseBranch) + + - template: /common/config/azure-pipelines/templates/bump-versions.yaml@self + parameters: + VersionPolicyName: rush + BranchName: $(BaseBranch) + + - script: 'node libraries/rush-lib/scripts/plugins-prepublish.js' + displayName: 'Prepublish workaround for rush-lib' + + - template: /common/config/azure-pipelines/templates/pack.yaml@self + + - template: /common/config/azure-pipelines/templates/post-publish.yaml@self + + - bash: | + git add -u + git add -- '**/CHANGELOG.md' '**/CHANGELOG.json' + + if [ -n "$(git diff --cached --numstat)" ]; then + git commit -m "Applying package version bumps + + Pipeline Run: $(System.CollectionUri)$(System.TeamProject)/_build/results?buildId=$(Build.BuildId) + Run ID: $(Build.BuildId)" + echo "Changes committed" + echo "##vso[task.setvariable variable=HasChanges]true" + else + echo "No changes to commit" + echo "##vso[task.setvariable variable=HasChanges]false" + fi + displayName: 'Commit Version Bumps' + + - template: /common/config/azure-pipelines/templates/push-and-create-github-pr.yaml@self + parameters: + BranchName: $(FeatureBranch) + PrTitle: 'Bump package versions' + PrDescription: | + Automated version bump generated by Azure DevOps Pipeline. + + This PR contains version bumps for the Rushstack package version policies. + + **Pipeline Run:** $(System.CollectionUri)$(System.TeamProject)/_build/results?buildId=$(Build.BuildId) + + - bash: | + set -e + BUMP_SHA=$(git rev-parse HEAD) + echo "##vso[task.setvariable variable=BumpSha;isOutput=true]${BUMP_SHA}" + echo "##vso[build.addbuildtag]bump-versions:${BUMP_SHA}" + echo "Tagged build with bump SHA: ${BUMP_SHA}" + name: TagBuild + displayName: 'Tag build with bump commit SHA' + condition: and(succeeded(), eq(variables['HasChanges'], 'true')) + + - bash: | + mkdir -p "$(Build.ArtifactStagingDirectory)/packages" + mkdir -p "$(Build.ArtifactStagingDirectory)/package-versions" + displayName: 'Create artifact staging directories' + condition: always() + + - template: /common/config/azure-pipelines/templates/prepare-publish-artifacts.yaml@self + + - template: /common/config/azure-pipelines/templates/record-versions.yaml@self diff --git a/common/config/azure-pipelines/templates/configure-git-user.yaml b/common/config/azure-pipelines/templates/configure-git-user.yaml new file mode 100644 index 00000000000..f894ee6c00a --- /dev/null +++ b/common/config/azure-pipelines/templates/configure-git-user.yaml @@ -0,0 +1,11 @@ +parameters: + - name: RepoPath + type: string + default: '$(Build.SourcesDirectory)' + +steps: + - script: | + git config --local user.email "rushbot@users.noreply.github.com" + git config --local user.name "Rushbot" + displayName: 'Configure Git User' + workingDirectory: ${{ parameters.RepoPath }} diff --git a/common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml b/common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml new file mode 100644 index 00000000000..5d5ff9778e1 --- /dev/null +++ b/common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml @@ -0,0 +1,87 @@ +parameters: + - name: PipelineId + type: object + - name: CommitSha + type: string + - name: TeamProject + type: string + - name: Name + type: string + - name: WorkingDirectory + type: string + +steps: + - bash: | + set -euo pipefail + + set_output_variable() { + local name="$1" + local value="$2" + echo "##vso[task.setvariable variable=${name};isOutput=true]${value}" + } + + set_output_variable IsVersionBumpMerge false + + REPO_SLUG=$(git remote get-url origin | sed -E 's#.*github\.com[:/](.+/[^.]+)(\.git)?$#\1#') + echo "Repository: ${REPO_SLUG}" + + AUTH_HEADER=$(git config --get-regexp 'http\..*\.extraheader' | head -1 | sed 's/^[^ ]* //') + if [ -z "$AUTH_HEADER" ]; then + echo "##[error]Could not extract authorization header from git config. Ensure persistCredentials is enabled on the checkout step." + exit 1 + fi + + CURL_CONFIG=$(mktemp) + trap 'rm -f "$CURL_CONFIG"' EXIT + echo "-H \"${AUTH_HEADER}\"" > "$CURL_CONFIG" + echo '-H "Accept: application/vnd.github+json"' >> "$CURL_CONFIG" + + github_api() { + local response http_code body + response=$(curl -s -w "\n%{http_code}" -K "$CURL_CONFIG" "$@") + http_code=$(echo "$response" | tail -n1) + body=$(echo "$response" | sed '$d') + + if [[ "$http_code" -ge 200 && "$http_code" -lt 300 ]]; then + echo "$body" + else + echo "##[error]GitHub API returned HTTP ${http_code}:" >&2 + echo "$body" >&2 + return 1 + fi + } + + echo "Looking up merged PR for commit ${{ parameters.CommitSha }}" + PR_JSON=$(github_api "https://api.github.com/repos/${REPO_SLUG}/commits/${{ parameters.CommitSha }}/pulls") + PR_NUMBER=$(echo "$PR_JSON" | jq 'map(select(.merged_at != null))[0].number // empty') + HEAD_SHA=$(echo "$PR_JSON" | jq -r 'map(select(.merged_at != null))[0].head.sha // empty') + + if [ -z "$PR_NUMBER" ] || [ -z "$HEAD_SHA" ]; then + echo "No merged PR with a head SHA was found for this commit. Skipping publish." + exit 0 + fi + + echo "Found merged PR #${PR_NUMBER}; head SHA: ${HEAD_SHA}" + + BUMP_TAG="bump-versions:${HEAD_SHA}" + ENCODED_TAG=$(node -e 'process.stdout.write(encodeURIComponent(process.argv[1]))' "$BUMP_TAG") + BUILDS_URL="${SYSTEM_COLLECTIONURI}${{ parameters.TeamProject }}/_apis/build/builds?definitions=${{ parameters.PipelineId }}&tagFilters=${ENCODED_TAG}&queryOrder=finishTimeDescending&\$top=1&api-version=7.1" + + echo "Searching for bump pipeline build tagged ${BUMP_TAG}" + BUILD_RESPONSE=$(curl -sS -u ":${SYSTEM_ACCESSTOKEN}" "$BUILDS_URL") + BUILD_ID=$(echo "$BUILD_RESPONSE" | jq -r '.value[0].id // empty') + + if [ -z "$BUILD_ID" ]; then + echo "No bump pipeline build found for tag ${BUMP_TAG}. Skipping publish." + exit 0 + fi + + echo "Found bump pipeline run: ${BUILD_ID}" + set_output_variable IsVersionBumpMerge true + set_output_variable BumpPipelineRunId "$BUILD_ID" + set_output_variable BumpCommitSha "$HEAD_SHA" + name: ${{ parameters.Name }} + displayName: 'Find Bump Pipeline Run' + workingDirectory: ${{ parameters.WorkingDirectory }} + env: + SYSTEM_ACCESSTOKEN: $(System.AccessToken) diff --git a/common/config/azure-pipelines/templates/prepare-publish-artifacts.yaml b/common/config/azure-pipelines/templates/prepare-publish-artifacts.yaml new file mode 100644 index 00000000000..85815e9b903 --- /dev/null +++ b/common/config/azure-pipelines/templates/prepare-publish-artifacts.yaml @@ -0,0 +1,18 @@ +steps: + - pwsh: | + $metadataFile = "$(Build.ArtifactStagingDirectory)/artifact-metadata.json" + + $metadata = @{ + pipelineRunId = "$(Build.BuildId)" + pipelineRunNumber = "$(Build.BuildNumber)" + commitHash = "$(Build.SourceVersion)" + commitBranch = "$(Build.SourceBranch)" + timestamp = (Get-Date -AsUTC -Format "yyyy-MM-ddTHH:mm:ssZ") + pipelineUrl = "$(System.CollectionUri)$(System.TeamProject)/_build/results?buildId=$(Build.BuildId)" + } + + $metadata | ConvertTo-Json | Set-Content -Path $metadataFile + + Write-Host "Created artifact metadata file:" + Get-Content $metadataFile + displayName: 'Generate Artifact Metadata' diff --git a/common/config/azure-pipelines/templates/record-versions.yaml b/common/config/azure-pipelines/templates/record-versions.yaml new file mode 100644 index 00000000000..894cdb1b9ab --- /dev/null +++ b/common/config/azure-pipelines/templates/record-versions.yaml @@ -0,0 +1,13 @@ +parameters: + - name: RepoPath + type: string + default: '$(Build.SourcesDirectory)' + +steps: + - template: /common/config/azure-pipelines/templates/install-run-rush.yaml@self + parameters: + Arguments: > + record-published-versions + --output-path $(Build.ArtifactStagingDirectory)/package-versions/published-versions.json + DisplayName: 'Record Published Versions' + RepoPath: '${{ parameters.RepoPath }}' From 41dc6c16806888bf0cd0903c589d2e760802e7cc Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 21 Aug 2026 20:51:41 +0000 Subject: [PATCH 04/16] ci: split npm publish from version bump Co-authored-by: dmichon-msft <26827560+dmichon-msft@users.noreply.github.com> --- .../azure-pipelines/npm-publish-rush.yaml | 310 +++++++++++------- .../config/azure-pipelines/npm-publish.yaml | 305 ++++++++++------- 2 files changed, 368 insertions(+), 247 deletions(-) diff --git a/common/config/azure-pipelines/npm-publish-rush.yaml b/common/config/azure-pipelines/npm-publish-rush.yaml index 9f30fc34a7a..d36b99b9e8c 100644 --- a/common/config/azure-pipelines/npm-publish-rush.yaml +++ b/common/config/azure-pipelines/npm-publish-rush.yaml @@ -1,126 +1,184 @@ -parameters: - - name: publishToNpmFeed - displayName: 'Publish to npm feed' - type: boolean - default: true - - name: NpmTag - displayName: 'NPM dist-tag' - type: string - default: latest - - name: DryRun - displayName: 'Dry run' - type: boolean - default: false - -variables: - - name: FORCE_COLOR - value: 1 - - name: SourceBranch - value: $[ replace(replace(resources.repositories.self.ref, 'refs/heads/', ''), 'refs/pull/', 'refs/remotes/pull/') ] - - name: PackagesPath - value: $(Pipeline.Workspace)/packages - -resources: - repositories: - - repository: 1esPipelines - type: git - name: 1ESPipelineTemplates/1ESPipelineTemplates - ref: refs/tags/release - - repository: publishConfig - type: git - name: GitHubProjectsPublish/GitHubProjectsPublish - ref: refs/heads/main - -extends: - template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines - parameters: - pool: - name: Azure-Pipelines-1ESPT-ExDShared - os: windows - stages: - - stage: Prepare - displayName: 'Prepare NPM Packages' - jobs: - - job: PrepareNpmPublish - displayName: 'Prepare NPM Packages' - pool: - name: publish-rushstack - os: linux - templateContext: - outputParentDirectory: $(Build.ArtifactStagingDirectory) - outputs: - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/published-versions - artifactName: published-versions - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/json-schemas - artifactName: json-schemas - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/packages - artifactName: packages - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/api - artifactName: api - steps: - - checkout: self - persistCredentials: true - - - template: /common/config/azure-pipelines/templates/install-node.yaml@self - - - template: /common/config/azure-pipelines/templates/build.yaml@self - - - template: /common/config/azure-pipelines/templates/bump-versions.yaml@self - parameters: - VersionPolicyName: noRush - BranchName: $(SourceBranch) - - - template: /common/config/azure-pipelines/templates/bump-versions.yaml@self - parameters: - VersionPolicyName: rush - BranchName: $(SourceBranch) - - - script: 'node libraries/rush-lib/scripts/plugins-prepublish.js' - displayName: 'Prepublish workaround for rush-lib' - - - template: /common/config/azure-pipelines/templates/pack.yaml@self - - - template: /common/config/azure-pipelines/templates/post-publish.yaml@self - - - ${{ if eq(parameters.publishToNpmFeed, true) }}: - - stage: Publish - displayName: 'Publish NPM Packages' - dependsOn: - - Prepare - condition: succeeded('Prepare') - jobs: - - job: PublishNpmPackages - displayName: 'Publish NPM Packages' - pool: - name: publish-rushstack - os: linux - templateContext: - type: releaseJob - isProduction: true - steps: - - checkout: none - - - template: /common/config/azure-pipelines/templates/install-node.yaml@self - - - task: 1ES.DownloadPipelineArtifact@1 - inputs: - buildType: current - project: $(System.TeamProject) - definition: $(System.DefinitionId) - artifactName: packages - targetPath: $(PackagesPath) - displayName: 'Download packed npm packages' - - - bash: | - ls -la "$(PackagesPath)" - displayName: 'List downloaded packages' - - - template: /common/config/azure-pipelines/templates/esrp-release.yaml@publishConfig - parameters: - packagesPath: $(PackagesPath) - npmTag: ${{ parameters.NpmTag }} - dryRun: ${{ parameters.DryRun }} +trigger: + branches: + include: + - main + paths: + include: + - '**/CHANGELOG.md' + - 'common/config/rush/version-policies.json' + +pr: none + +parameters: + - name: publishToNpmFeed + displayName: 'Publish to npm feed' + type: boolean + default: true + - name: NpmTag + displayName: 'NPM dist-tag' + type: string + default: latest + - name: DryRun + displayName: 'Dry run' + type: boolean + default: false + - name: CommitShaOverride + displayName: 'Commit SHA Override (for testing)' + type: string + default: '' + +variables: + - name: FORCE_COLOR + value: 1 + - name: RushstackVersioningProject + value: GitHubProjects + # Pipeline definition ID of the Rushstack bump-versions pipeline. + - name: RushstackVersioningPipelineId + value: 0 + - name: PackagesPath + value: $(Pipeline.Workspace)/packages + +resources: + repositories: + - repository: 1esPipelines + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release + - repository: publishConfig + type: git + name: GitHubProjectsPublish/GitHubProjectsPublish + ref: refs/heads/main + +extends: + template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines + parameters: + pool: + name: Azure-Pipelines-1ESPT-ExDShared + os: windows + stages: + - stage: Prepare + dependsOn: [] + displayName: 'Prepare Rush NPM Publish' + jobs: + - job: PrepareNpmPublish + displayName: 'Prepare Rush NPM Publish' + pool: + name: publish-rushstack + os: linux + templateContext: + outputParentDirectory: $(Build.ArtifactStagingDirectory) + outputs: + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/published-versions + artifactName: published-versions + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/json-schemas + artifactName: json-schemas + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/api + artifactName: api + steps: + - checkout: self + persistCredentials: true + + - template: /common/config/azure-pipelines/templates/install-node.yaml@self + + - bash: | + mkdir -p "$(Build.ArtifactStagingDirectory)/published-versions" + mkdir -p "$(Build.ArtifactStagingDirectory)/json-schemas" + mkdir -p "$(Build.ArtifactStagingDirectory)/api" + displayName: 'Initialize artifact staging directories' + condition: always() + + - template: /common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml@self + parameters: + PipelineId: $(RushstackVersioningPipelineId) + CommitSha: ${{ coalesce(parameters.CommitShaOverride, '$(Build.SourceVersion)') }} + TeamProject: $(RushstackVersioningProject) + Name: FindBumpRun + WorkingDirectory: $(Build.SourcesDirectory) + + - task: DownloadPipelineArtifact@2 + condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') + inputs: + artifactName: package-versions + targetPath: $(Agent.TempDirectory)/package-versions + project: $(RushstackVersioningProject) + definition: $(RushstackVersioningPipelineId) + pipelineId: $(FindBumpRun.BumpPipelineRunId) + buildType: specific + buildVersionToDownload: specific + displayName: 'Download package versions' + + - bash: | + cp "$(Agent.TempDirectory)/package-versions"/*.json "$(Build.ArtifactStagingDirectory)/published-versions/" + condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') + displayName: 'Stage published versions artifact' + + - task: DownloadPipelineArtifact@2 + condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') + inputs: + artifactName: json-schemas + targetPath: $(Build.ArtifactStagingDirectory)/json-schemas + project: $(RushstackVersioningProject) + definition: $(RushstackVersioningPipelineId) + pipelineId: $(FindBumpRun.BumpPipelineRunId) + buildType: specific + buildVersionToDownload: specific + displayName: 'Download JSON schema artifact' + + - task: DownloadPipelineArtifact@2 + condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') + inputs: + artifactName: api + targetPath: $(Build.ArtifactStagingDirectory)/api + project: $(RushstackVersioningProject) + definition: $(RushstackVersioningPipelineId) + pipelineId: $(FindBumpRun.BumpPipelineRunId) + buildType: specific + buildVersionToDownload: specific + displayName: 'Download API review artifact' + + - ${{ if eq(parameters.publishToNpmFeed, true) }}: + - stage: Publish + displayName: 'Publish Rush NPM Packages' + dependsOn: + - Prepare + condition: and(succeeded('Prepare'), eq(dependencies.Prepare.outputs['PrepareNpmPublish.FindBumpRun.IsVersionBumpMerge'], 'true')) + jobs: + - job: PublishNpmPackages + displayName: 'Publish Rush NPM Packages' + pool: + name: publish-rushstack + os: linux + variables: + - name: BumpPipelineRunId + value: $[ stageDependencies.Prepare.PrepareNpmPublish.outputs['FindBumpRun.BumpPipelineRunId'] ] + templateContext: + type: releaseJob + isProduction: true + steps: + - checkout: none + + - template: /common/config/azure-pipelines/templates/install-node.yaml@self + + - task: 1ES.DownloadPipelineArtifact@1 + inputs: + artifactName: packages + targetPath: $(PackagesPath) + project: $(RushstackVersioningProject) + definition: $(RushstackVersioningPipelineId) + pipelineId: $(BumpPipelineRunId) + buildType: specific + buildVersionToDownload: specific + displayName: 'Download packed npm packages' + + - bash: | + ls -la "$(PackagesPath)" + displayName: 'List downloaded packages' + + - template: /common/config/azure-pipelines/templates/esrp-release.yaml@publishConfig + parameters: + packagesPath: $(PackagesPath) + npmTag: ${{ parameters.NpmTag }} + dryRun: ${{ parameters.DryRun }} diff --git a/common/config/azure-pipelines/npm-publish.yaml b/common/config/azure-pipelines/npm-publish.yaml index 61ea336866f..27bcbb6f99d 100644 --- a/common/config/azure-pipelines/npm-publish.yaml +++ b/common/config/azure-pipelines/npm-publish.yaml @@ -1,121 +1,184 @@ -parameters: - - name: publishToNpmFeed - displayName: 'Publish to npm feed' - type: boolean - default: true - - name: NpmTag - displayName: 'NPM dist-tag' - type: string - default: latest - - name: DryRun - displayName: 'Dry run' - type: boolean - default: false - -variables: - - name: FORCE_COLOR - value: 1 - - name: SourceBranch - value: $[ replace(replace(resources.repositories.self.ref, 'refs/heads/', ''), 'refs/pull/', 'refs/remotes/pull/') ] - - name: PackagesPath - value: $(Pipeline.Workspace)/packages - -resources: - repositories: - - repository: 1esPipelines - type: git - name: 1ESPipelineTemplates/1ESPipelineTemplates - ref: refs/tags/release - - repository: publishConfig - type: git - name: GitHubProjectsPublish/GitHubProjectsPublish - ref: refs/heads/main - -extends: - template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines - parameters: - pool: - name: Azure-Pipelines-1ESPT-ExDShared - os: windows - stages: - - stage: Prepare - displayName: 'Prepare NPM Packages' - jobs: - - job: PrepareNpmPublish - displayName: 'Prepare NPM Packages' - pool: - name: publish-rushstack - os: linux - templateContext: - outputParentDirectory: $(Build.ArtifactStagingDirectory) - outputs: - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/published-versions - artifactName: published-versions - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/json-schemas - artifactName: json-schemas - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/packages - artifactName: packages - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/api - artifactName: api - steps: - - checkout: self - persistCredentials: true - - - template: /common/config/azure-pipelines/templates/install-node.yaml@self - - - template: /common/config/azure-pipelines/templates/build.yaml@self - - - template: /common/config/azure-pipelines/templates/bump-versions.yaml@self - parameters: - VersionPolicyName: noRush - BranchName: $(SourceBranch) - - - script: 'node libraries/rush-lib/scripts/plugins-prepublish.js' - displayName: 'Prepublish workaround for rush-lib' - - - template: /common/config/azure-pipelines/templates/pack.yaml@self - - - template: /common/config/azure-pipelines/templates/post-publish.yaml@self - - - ${{ if eq(parameters.publishToNpmFeed, true) }}: - - stage: Publish - displayName: 'Publish NPM Packages' - dependsOn: - - Prepare - condition: succeeded('Prepare') - jobs: - - job: PublishNpmPackages - displayName: 'Publish NPM Packages' - pool: - name: publish-rushstack - os: linux - templateContext: - type: releaseJob - isProduction: true - steps: - - checkout: none - - - template: /common/config/azure-pipelines/templates/install-node.yaml@self - - - task: 1ES.DownloadPipelineArtifact@1 - inputs: - buildType: current - project: $(System.TeamProject) - definition: $(System.DefinitionId) - artifactName: packages - targetPath: $(PackagesPath) - displayName: 'Download packed npm packages' - - - bash: | - ls -la "$(PackagesPath)" - displayName: 'List downloaded packages' - - - template: /common/config/azure-pipelines/templates/esrp-release.yaml@publishConfig - parameters: - packagesPath: $(PackagesPath) - npmTag: ${{ parameters.NpmTag }} - dryRun: ${{ parameters.DryRun }} +trigger: + branches: + include: + - main + paths: + include: + - '**/CHANGELOG.md' + - 'common/config/rush/version-policies.json' + +pr: none + +parameters: + - name: publishToNpmFeed + displayName: 'Publish to npm feed' + type: boolean + default: true + - name: NpmTag + displayName: 'NPM dist-tag' + type: string + default: latest + - name: DryRun + displayName: 'Dry run' + type: boolean + default: false + - name: CommitShaOverride + displayName: 'Commit SHA Override (for testing)' + type: string + default: '' + +variables: + - name: FORCE_COLOR + value: 1 + - name: RushstackVersioningProject + value: GitHubProjects + # Pipeline definition ID of the Rushstack bump-versions pipeline. + - name: RushstackVersioningPipelineId + value: 0 + - name: PackagesPath + value: $(Pipeline.Workspace)/packages + +resources: + repositories: + - repository: 1esPipelines + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release + - repository: publishConfig + type: git + name: GitHubProjectsPublish/GitHubProjectsPublish + ref: refs/heads/main + +extends: + template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines + parameters: + pool: + name: Azure-Pipelines-1ESPT-ExDShared + os: windows + stages: + - stage: Prepare + dependsOn: [] + displayName: 'Prepare NPM Publish' + jobs: + - job: PrepareNpmPublish + displayName: 'Prepare NPM Publish' + pool: + name: publish-rushstack + os: linux + templateContext: + outputParentDirectory: $(Build.ArtifactStagingDirectory) + outputs: + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/published-versions + artifactName: published-versions + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/json-schemas + artifactName: json-schemas + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/api + artifactName: api + steps: + - checkout: self + persistCredentials: true + + - template: /common/config/azure-pipelines/templates/install-node.yaml@self + + - bash: | + mkdir -p "$(Build.ArtifactStagingDirectory)/published-versions" + mkdir -p "$(Build.ArtifactStagingDirectory)/json-schemas" + mkdir -p "$(Build.ArtifactStagingDirectory)/api" + displayName: 'Initialize artifact staging directories' + condition: always() + + - template: /common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml@self + parameters: + PipelineId: $(RushstackVersioningPipelineId) + CommitSha: ${{ coalesce(parameters.CommitShaOverride, '$(Build.SourceVersion)') }} + TeamProject: $(RushstackVersioningProject) + Name: FindBumpRun + WorkingDirectory: $(Build.SourcesDirectory) + + - task: DownloadPipelineArtifact@2 + condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') + inputs: + artifactName: package-versions + targetPath: $(Agent.TempDirectory)/package-versions + project: $(RushstackVersioningProject) + definition: $(RushstackVersioningPipelineId) + pipelineId: $(FindBumpRun.BumpPipelineRunId) + buildType: specific + buildVersionToDownload: specific + displayName: 'Download package versions' + + - bash: | + cp "$(Agent.TempDirectory)/package-versions"/*.json "$(Build.ArtifactStagingDirectory)/published-versions/" + condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') + displayName: 'Stage published versions artifact' + + - task: DownloadPipelineArtifact@2 + condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') + inputs: + artifactName: json-schemas + targetPath: $(Build.ArtifactStagingDirectory)/json-schemas + project: $(RushstackVersioningProject) + definition: $(RushstackVersioningPipelineId) + pipelineId: $(FindBumpRun.BumpPipelineRunId) + buildType: specific + buildVersionToDownload: specific + displayName: 'Download JSON schema artifact' + + - task: DownloadPipelineArtifact@2 + condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') + inputs: + artifactName: api + targetPath: $(Build.ArtifactStagingDirectory)/api + project: $(RushstackVersioningProject) + definition: $(RushstackVersioningPipelineId) + pipelineId: $(FindBumpRun.BumpPipelineRunId) + buildType: specific + buildVersionToDownload: specific + displayName: 'Download API review artifact' + + - ${{ if eq(parameters.publishToNpmFeed, true) }}: + - stage: Publish + displayName: 'Publish NPM Packages' + dependsOn: + - Prepare + condition: and(succeeded('Prepare'), eq(dependencies.Prepare.outputs['PrepareNpmPublish.FindBumpRun.IsVersionBumpMerge'], 'true')) + jobs: + - job: PublishNpmPackages + displayName: 'Publish NPM Packages' + pool: + name: publish-rushstack + os: linux + variables: + - name: BumpPipelineRunId + value: $[ stageDependencies.Prepare.PrepareNpmPublish.outputs['FindBumpRun.BumpPipelineRunId'] ] + templateContext: + type: releaseJob + isProduction: true + steps: + - checkout: none + + - template: /common/config/azure-pipelines/templates/install-node.yaml@self + + - task: 1ES.DownloadPipelineArtifact@1 + inputs: + artifactName: packages + targetPath: $(PackagesPath) + project: $(RushstackVersioningProject) + definition: $(RushstackVersioningPipelineId) + pipelineId: $(BumpPipelineRunId) + buildType: specific + buildVersionToDownload: specific + displayName: 'Download packed npm packages' + + - bash: | + ls -la "$(PackagesPath)" + displayName: 'List downloaded packages' + + - template: /common/config/azure-pipelines/templates/esrp-release.yaml@publishConfig + parameters: + packagesPath: $(PackagesPath) + npmTag: ${{ parameters.NpmTag }} + dryRun: ${{ parameters.DryRun }} From cb5caad33b4f37a7e12ea2834e860e75f956fec0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 21 Aug 2026 20:52:22 +0000 Subject: [PATCH 05/16] ci: resolve bump pipeline by name Co-authored-by: dmichon-msft <26827560+dmichon-msft@users.noreply.github.com> --- .../azure-pipelines/npm-publish-rush.yaml | 17 +++++----- .../config/azure-pipelines/npm-publish.yaml | 17 +++++----- .../templates/find-bump-pipeline-run.yaml | 33 +++++++++++++++++-- 3 files changed, 49 insertions(+), 18 deletions(-) diff --git a/common/config/azure-pipelines/npm-publish-rush.yaml b/common/config/azure-pipelines/npm-publish-rush.yaml index d36b99b9e8c..234d0452851 100644 --- a/common/config/azure-pipelines/npm-publish-rush.yaml +++ b/common/config/azure-pipelines/npm-publish-rush.yaml @@ -32,9 +32,8 @@ variables: value: 1 - name: RushstackVersioningProject value: GitHubProjects - # Pipeline definition ID of the Rushstack bump-versions pipeline. - - name: RushstackVersioningPipelineId - value: 0 + - name: RushstackVersioningPipelineName + value: 'rushstack Bump Versions' - name: PackagesPath value: $(Pipeline.Workspace)/packages @@ -92,7 +91,7 @@ extends: - template: /common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml@self parameters: - PipelineId: $(RushstackVersioningPipelineId) + PipelineName: $(RushstackVersioningPipelineName) CommitSha: ${{ coalesce(parameters.CommitShaOverride, '$(Build.SourceVersion)') }} TeamProject: $(RushstackVersioningProject) Name: FindBumpRun @@ -104,7 +103,7 @@ extends: artifactName: package-versions targetPath: $(Agent.TempDirectory)/package-versions project: $(RushstackVersioningProject) - definition: $(RushstackVersioningPipelineId) + definition: $(FindBumpRun.BumpPipelineDefinitionId) pipelineId: $(FindBumpRun.BumpPipelineRunId) buildType: specific buildVersionToDownload: specific @@ -121,7 +120,7 @@ extends: artifactName: json-schemas targetPath: $(Build.ArtifactStagingDirectory)/json-schemas project: $(RushstackVersioningProject) - definition: $(RushstackVersioningPipelineId) + definition: $(FindBumpRun.BumpPipelineDefinitionId) pipelineId: $(FindBumpRun.BumpPipelineRunId) buildType: specific buildVersionToDownload: specific @@ -133,7 +132,7 @@ extends: artifactName: api targetPath: $(Build.ArtifactStagingDirectory)/api project: $(RushstackVersioningProject) - definition: $(RushstackVersioningPipelineId) + definition: $(FindBumpRun.BumpPipelineDefinitionId) pipelineId: $(FindBumpRun.BumpPipelineRunId) buildType: specific buildVersionToDownload: specific @@ -154,6 +153,8 @@ extends: variables: - name: BumpPipelineRunId value: $[ stageDependencies.Prepare.PrepareNpmPublish.outputs['FindBumpRun.BumpPipelineRunId'] ] + - name: BumpPipelineDefinitionId + value: $[ stageDependencies.Prepare.PrepareNpmPublish.outputs['FindBumpRun.BumpPipelineDefinitionId'] ] templateContext: type: releaseJob isProduction: true @@ -167,7 +168,7 @@ extends: artifactName: packages targetPath: $(PackagesPath) project: $(RushstackVersioningProject) - definition: $(RushstackVersioningPipelineId) + definition: $(BumpPipelineDefinitionId) pipelineId: $(BumpPipelineRunId) buildType: specific buildVersionToDownload: specific diff --git a/common/config/azure-pipelines/npm-publish.yaml b/common/config/azure-pipelines/npm-publish.yaml index 27bcbb6f99d..9dec1081aea 100644 --- a/common/config/azure-pipelines/npm-publish.yaml +++ b/common/config/azure-pipelines/npm-publish.yaml @@ -32,9 +32,8 @@ variables: value: 1 - name: RushstackVersioningProject value: GitHubProjects - # Pipeline definition ID of the Rushstack bump-versions pipeline. - - name: RushstackVersioningPipelineId - value: 0 + - name: RushstackVersioningPipelineName + value: 'rushstack Bump Versions' - name: PackagesPath value: $(Pipeline.Workspace)/packages @@ -92,7 +91,7 @@ extends: - template: /common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml@self parameters: - PipelineId: $(RushstackVersioningPipelineId) + PipelineName: $(RushstackVersioningPipelineName) CommitSha: ${{ coalesce(parameters.CommitShaOverride, '$(Build.SourceVersion)') }} TeamProject: $(RushstackVersioningProject) Name: FindBumpRun @@ -104,7 +103,7 @@ extends: artifactName: package-versions targetPath: $(Agent.TempDirectory)/package-versions project: $(RushstackVersioningProject) - definition: $(RushstackVersioningPipelineId) + definition: $(FindBumpRun.BumpPipelineDefinitionId) pipelineId: $(FindBumpRun.BumpPipelineRunId) buildType: specific buildVersionToDownload: specific @@ -121,7 +120,7 @@ extends: artifactName: json-schemas targetPath: $(Build.ArtifactStagingDirectory)/json-schemas project: $(RushstackVersioningProject) - definition: $(RushstackVersioningPipelineId) + definition: $(FindBumpRun.BumpPipelineDefinitionId) pipelineId: $(FindBumpRun.BumpPipelineRunId) buildType: specific buildVersionToDownload: specific @@ -133,7 +132,7 @@ extends: artifactName: api targetPath: $(Build.ArtifactStagingDirectory)/api project: $(RushstackVersioningProject) - definition: $(RushstackVersioningPipelineId) + definition: $(FindBumpRun.BumpPipelineDefinitionId) pipelineId: $(FindBumpRun.BumpPipelineRunId) buildType: specific buildVersionToDownload: specific @@ -154,6 +153,8 @@ extends: variables: - name: BumpPipelineRunId value: $[ stageDependencies.Prepare.PrepareNpmPublish.outputs['FindBumpRun.BumpPipelineRunId'] ] + - name: BumpPipelineDefinitionId + value: $[ stageDependencies.Prepare.PrepareNpmPublish.outputs['FindBumpRun.BumpPipelineDefinitionId'] ] templateContext: type: releaseJob isProduction: true @@ -167,7 +168,7 @@ extends: artifactName: packages targetPath: $(PackagesPath) project: $(RushstackVersioningProject) - definition: $(RushstackVersioningPipelineId) + definition: $(BumpPipelineDefinitionId) pipelineId: $(BumpPipelineRunId) buildType: specific buildVersionToDownload: specific diff --git a/common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml b/common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml index 5d5ff9778e1..60052a489ac 100644 --- a/common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml +++ b/common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml @@ -1,6 +1,10 @@ parameters: - name: PipelineId type: object + default: 0 + - name: PipelineName + type: string + default: '' - name: CommitSha type: string - name: TeamProject @@ -51,6 +55,31 @@ steps: fi } + url_encode() { + node -e 'process.stdout.write(encodeURIComponent(process.argv[1]))' "$1" + } + + PIPELINE_ID="${{ parameters.PipelineId }}" + if [ "$PIPELINE_ID" = "0" ]; then + if [ -z "${{ parameters.PipelineName }}" ]; then + echo "##[error]Either PipelineId or PipelineName must be provided." + exit 1 + fi + + ENCODED_PIPELINE_NAME=$(url_encode "${{ parameters.PipelineName }}") + DEFINITIONS_URL="${SYSTEM_COLLECTIONURI}${{ parameters.TeamProject }}/_apis/build/definitions?name=${ENCODED_PIPELINE_NAME}&api-version=7.1" + echo "Resolving bump pipeline definition named ${{ parameters.PipelineName }}" + DEFINITIONS_RESPONSE=$(curl -sS -u ":${SYSTEM_ACCESSTOKEN}" "$DEFINITIONS_URL") + PIPELINE_ID=$(echo "$DEFINITIONS_RESPONSE" | jq -r '.value[0].id // empty') + + if [ -z "$PIPELINE_ID" ]; then + echo "##[error]Could not find a bump pipeline definition named ${{ parameters.PipelineName }}." + exit 1 + fi + fi + + set_output_variable BumpPipelineDefinitionId "$PIPELINE_ID" + echo "Looking up merged PR for commit ${{ parameters.CommitSha }}" PR_JSON=$(github_api "https://api.github.com/repos/${REPO_SLUG}/commits/${{ parameters.CommitSha }}/pulls") PR_NUMBER=$(echo "$PR_JSON" | jq 'map(select(.merged_at != null))[0].number // empty') @@ -64,8 +93,8 @@ steps: echo "Found merged PR #${PR_NUMBER}; head SHA: ${HEAD_SHA}" BUMP_TAG="bump-versions:${HEAD_SHA}" - ENCODED_TAG=$(node -e 'process.stdout.write(encodeURIComponent(process.argv[1]))' "$BUMP_TAG") - BUILDS_URL="${SYSTEM_COLLECTIONURI}${{ parameters.TeamProject }}/_apis/build/builds?definitions=${{ parameters.PipelineId }}&tagFilters=${ENCODED_TAG}&queryOrder=finishTimeDescending&\$top=1&api-version=7.1" + ENCODED_TAG=$(url_encode "$BUMP_TAG") + BUILDS_URL="${SYSTEM_COLLECTIONURI}${{ parameters.TeamProject }}/_apis/build/builds?definitions=${PIPELINE_ID}&tagFilters=${ENCODED_TAG}&queryOrder=finishTimeDescending&\$top=1&api-version=7.1" echo "Searching for bump pipeline build tagged ${BUMP_TAG}" BUILD_RESPONSE=$(curl -sS -u ":${SYSTEM_ACCESSTOKEN}" "$BUILDS_URL") From 7fcb198ead38f43a9b8c494c1b59a824e06db7d3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 21 Aug 2026 21:07:04 +0000 Subject: [PATCH 06/16] ci: two bump pipelines and shared esrp publish pipelines Co-authored-by: dmichon-msft <26827560+dmichon-msft@users.noreply.github.com> --- .../config/azure-pipelines/bump-versions.yaml | 147 -------------- .../azure-pipelines/esrp-publish-rush.yaml | 67 +++++++ .../esrp-publish-rushstack.yaml | 67 +++++++ .../azure-pipelines/npm-post-publish.yaml | 12 +- .../azure-pipelines/npm-publish-rush.yaml | 181 +++--------------- .../config/azure-pipelines/npm-publish.yaml | 181 +++--------------- .../templates/bump-versions-stages.yaml | 122 ++++++++++++ .../templates/esrp-publish-stages.yaml | 156 +++++++++++++++ .../azure-pipelines/templates/pack.yaml | 8 +- 9 files changed, 473 insertions(+), 468 deletions(-) delete mode 100644 common/config/azure-pipelines/bump-versions.yaml create mode 100644 common/config/azure-pipelines/esrp-publish-rush.yaml create mode 100644 common/config/azure-pipelines/esrp-publish-rushstack.yaml create mode 100644 common/config/azure-pipelines/templates/bump-versions-stages.yaml create mode 100644 common/config/azure-pipelines/templates/esrp-publish-stages.yaml diff --git a/common/config/azure-pipelines/bump-versions.yaml b/common/config/azure-pipelines/bump-versions.yaml deleted file mode 100644 index c4040000fd0..00000000000 --- a/common/config/azure-pipelines/bump-versions.yaml +++ /dev/null @@ -1,147 +0,0 @@ -# Pipeline: Bump Versions -# Trigger: Automatically when changes merge to main that include change files or pipeline YAML. -# Purpose: Bump versions, build, pack, create/update GitHub PR. - -trigger: - batch: true - branches: - include: - - main - paths: - include: - - 'common/changes/*' - - 'common/config/rush/version-policies.json' - - 'common/config/azure-pipelines/**' - -pr: none - -variables: - - name: FORCE_COLOR - value: 1 - - name: FeatureBranch - value: 'automated/bump-versions' - - name: BaseBranch - value: $[ replace(variables['Build.SourceBranch'], 'refs/heads/', '') ] - -resources: - repositories: - - repository: 1esPipelines - type: git - name: 1ESPipelineTemplates/1ESPipelineTemplates - ref: refs/tags/release - -extends: - template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines - parameters: - pool: - name: Azure-Pipelines-1ESPT-ExDShared - os: windows - stages: - - stage: BumpVersions - displayName: 'Bump Versions and Create PR' - jobs: - - job: BumpVersions - displayName: 'Bump Versions' - pool: - name: publish-rushstack - os: linux - templateContext: - outputParentDirectory: $(Build.ArtifactStagingDirectory) - outputs: - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/published-versions - artifactName: published-versions - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/json-schemas - artifactName: json-schemas - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/packages - artifactName: packages - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/api - artifactName: api - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/artifact-metadata.json - artifactName: metadata - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/package-versions - artifactName: package-versions - steps: - - checkout: self - persistCredentials: true - - - template: /common/config/azure-pipelines/templates/configure-git-user.yaml@self - - - bash: | - git checkout -b $(FeatureBranch) - echo "Created feature branch: $(FeatureBranch)" - displayName: 'Create Feature Branch' - - - template: /common/config/azure-pipelines/templates/install-node.yaml@self - - - template: /common/config/azure-pipelines/templates/build.yaml@self - - - template: /common/config/azure-pipelines/templates/bump-versions.yaml@self - parameters: - VersionPolicyName: noRush - BranchName: $(BaseBranch) - - - template: /common/config/azure-pipelines/templates/bump-versions.yaml@self - parameters: - VersionPolicyName: rush - BranchName: $(BaseBranch) - - - script: 'node libraries/rush-lib/scripts/plugins-prepublish.js' - displayName: 'Prepublish workaround for rush-lib' - - - template: /common/config/azure-pipelines/templates/pack.yaml@self - - - template: /common/config/azure-pipelines/templates/post-publish.yaml@self - - - bash: | - git add -u - git add -- '**/CHANGELOG.md' '**/CHANGELOG.json' - - if [ -n "$(git diff --cached --numstat)" ]; then - git commit -m "Applying package version bumps - - Pipeline Run: $(System.CollectionUri)$(System.TeamProject)/_build/results?buildId=$(Build.BuildId) - Run ID: $(Build.BuildId)" - echo "Changes committed" - echo "##vso[task.setvariable variable=HasChanges]true" - else - echo "No changes to commit" - echo "##vso[task.setvariable variable=HasChanges]false" - fi - displayName: 'Commit Version Bumps' - - - template: /common/config/azure-pipelines/templates/push-and-create-github-pr.yaml@self - parameters: - BranchName: $(FeatureBranch) - PrTitle: 'Bump package versions' - PrDescription: | - Automated version bump generated by Azure DevOps Pipeline. - - This PR contains version bumps for the Rushstack package version policies. - - **Pipeline Run:** $(System.CollectionUri)$(System.TeamProject)/_build/results?buildId=$(Build.BuildId) - - - bash: | - set -e - BUMP_SHA=$(git rev-parse HEAD) - echo "##vso[task.setvariable variable=BumpSha;isOutput=true]${BUMP_SHA}" - echo "##vso[build.addbuildtag]bump-versions:${BUMP_SHA}" - echo "Tagged build with bump SHA: ${BUMP_SHA}" - name: TagBuild - displayName: 'Tag build with bump commit SHA' - condition: and(succeeded(), eq(variables['HasChanges'], 'true')) - - - bash: | - mkdir -p "$(Build.ArtifactStagingDirectory)/packages" - mkdir -p "$(Build.ArtifactStagingDirectory)/package-versions" - displayName: 'Create artifact staging directories' - condition: always() - - - template: /common/config/azure-pipelines/templates/prepare-publish-artifacts.yaml@self - - - template: /common/config/azure-pipelines/templates/record-versions.yaml@self diff --git a/common/config/azure-pipelines/esrp-publish-rush.yaml b/common/config/azure-pipelines/esrp-publish-rush.yaml new file mode 100644 index 00000000000..bb61b21e757 --- /dev/null +++ b/common/config/azure-pipelines/esrp-publish-rush.yaml @@ -0,0 +1,67 @@ +# Pipeline: rushstack ESRP Publish (rush) +# Trigger: Automatically when a "rushstack Bump Versions (rush)" version bump PR merges to main. +# Purpose: Publish the tarballs packed by the "rushstack Bump Versions (rush)" pipeline to the npm feed via ESRP. + +trigger: + branches: + include: + - main + paths: + include: + - '**/CHANGELOG.md' + - 'common/config/rush/version-policies.json' + +pr: none + +parameters: + - name: publishToNpmFeed + displayName: 'Publish to npm feed' + type: boolean + default: true + - name: NpmTag + displayName: 'NPM dist-tag' + type: string + default: latest + - name: DryRun + displayName: 'Dry run' + type: boolean + default: false + - name: CommitShaOverride + displayName: 'Commit SHA Override (for testing)' + type: string + default: '' + +variables: + - name: FORCE_COLOR + value: 1 + - name: PackagesPath + value: $(Pipeline.Workspace)/packages + +resources: + repositories: + - repository: 1esPipelines + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release + - repository: publishConfig + type: git + name: GitHubProjectsPublish/GitHubProjectsPublish + ref: refs/heads/main + +extends: + template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines + parameters: + pool: + name: Azure-Pipelines-1ESPT-ExDShared + os: windows + stages: + - template: /common/config/azure-pipelines/templates/esrp-publish-stages.yaml@self + parameters: + BumpPipelineName: 'rushstack Bump Versions (rush)' + BumpPipelineProject: GitHubProjects + StageNameSuffix: Rush + DisplayNameSuffix: Rush + PublishToNpmFeed: ${{ parameters.publishToNpmFeed }} + NpmTag: ${{ parameters.NpmTag }} + DryRun: ${{ parameters.DryRun }} + CommitShaOverride: ${{ parameters.CommitShaOverride }} diff --git a/common/config/azure-pipelines/esrp-publish-rushstack.yaml b/common/config/azure-pipelines/esrp-publish-rushstack.yaml new file mode 100644 index 00000000000..be5a3533468 --- /dev/null +++ b/common/config/azure-pipelines/esrp-publish-rushstack.yaml @@ -0,0 +1,67 @@ +# Pipeline: rushstack ESRP Publish (rushstack) +# Trigger: Automatically when a "rushstack Bump Versions (rushstack)" version bump PR merges to main. +# Purpose: Publish the tarballs packed by the "rushstack Bump Versions (rushstack)" pipeline to the npm feed via ESRP. + +trigger: + branches: + include: + - main + paths: + include: + - '**/CHANGELOG.md' + - 'common/config/rush/version-policies.json' + +pr: none + +parameters: + - name: publishToNpmFeed + displayName: 'Publish to npm feed' + type: boolean + default: true + - name: NpmTag + displayName: 'NPM dist-tag' + type: string + default: latest + - name: DryRun + displayName: 'Dry run' + type: boolean + default: false + - name: CommitShaOverride + displayName: 'Commit SHA Override (for testing)' + type: string + default: '' + +variables: + - name: FORCE_COLOR + value: 1 + - name: PackagesPath + value: $(Pipeline.Workspace)/packages + +resources: + repositories: + - repository: 1esPipelines + type: git + name: 1ESPipelineTemplates/1ESPipelineTemplates + ref: refs/tags/release + - repository: publishConfig + type: git + name: GitHubProjectsPublish/GitHubProjectsPublish + ref: refs/heads/main + +extends: + template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines + parameters: + pool: + name: Azure-Pipelines-1ESPT-ExDShared + os: windows + stages: + - template: /common/config/azure-pipelines/templates/esrp-publish-stages.yaml@self + parameters: + BumpPipelineName: 'rushstack Bump Versions (rushstack)' + BumpPipelineProject: GitHubProjects + StageNameSuffix: Rushstack + DisplayNameSuffix: Rushstack + PublishToNpmFeed: ${{ parameters.publishToNpmFeed }} + NpmTag: ${{ parameters.NpmTag }} + DryRun: ${{ parameters.DryRun }} + CommitShaOverride: ${{ parameters.CommitShaOverride }} diff --git a/common/config/azure-pipelines/npm-post-publish.yaml b/common/config/azure-pipelines/npm-post-publish.yaml index 04549b71076..2120f6414dc 100644 --- a/common/config/azure-pipelines/npm-post-publish.yaml +++ b/common/config/azure-pipelines/npm-post-publish.yaml @@ -10,22 +10,22 @@ variables: - name: FORCE_COLOR value: 1 -# This pipeline is triggered only by pipeline resources (npm publish pipelines), +# This pipeline is triggered only by pipeline resources (esrp publish pipelines), # not by CI pushes or PR builds. trigger: none pr: none resources: pipelines: - - pipeline: npmPublish - source: 'rushstack NPM Publish' + - pipeline: esrpPublishRushstack + source: 'rushstack ESRP Publish (rushstack)' trigger: enabled: true branches: include: - refs/heads/main - - pipeline: npmPublishRush - source: 'rushstack NPM Publish (rush)' + - pipeline: esrpPublishRush + source: 'rushstack ESRP Publish (rush)' trigger: enabled: true branches: @@ -223,7 +223,7 @@ extends: inputs: source: specific project: GitHubProjects - pipeline: 'rushstack NPM Publish' + pipeline: 'rushstack ESRP Publish (rushstack)' preferTriggeringPipeline: true runVersion: latest artifact: api diff --git a/common/config/azure-pipelines/npm-publish-rush.yaml b/common/config/azure-pipelines/npm-publish-rush.yaml index 234d0452851..99157fd1acd 100644 --- a/common/config/azure-pipelines/npm-publish-rush.yaml +++ b/common/config/azure-pipelines/npm-publish-rush.yaml @@ -1,41 +1,27 @@ +# Pipeline: rushstack Bump Versions (rush) +# 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. +# 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: - - '**/CHANGELOG.md' + - 'common/changes/*' - 'common/config/rush/version-policies.json' + - 'common/config/azure-pipelines/**' pr: none -parameters: - - name: publishToNpmFeed - displayName: 'Publish to npm feed' - type: boolean - default: true - - name: NpmTag - displayName: 'NPM dist-tag' - type: string - default: latest - - name: DryRun - displayName: 'Dry run' - type: boolean - default: false - - name: CommitShaOverride - displayName: 'Commit SHA Override (for testing)' - type: string - default: '' - variables: - name: FORCE_COLOR value: 1 - - name: RushstackVersioningProject - value: GitHubProjects - - name: RushstackVersioningPipelineName - value: 'rushstack Bump Versions' - - name: PackagesPath - value: $(Pipeline.Workspace)/packages + - name: BaseBranch + value: $[ replace(variables['Build.SourceBranch'], 'refs/heads/', '') ] resources: repositories: @@ -43,10 +29,6 @@ resources: type: git name: 1ESPipelineTemplates/1ESPipelineTemplates ref: refs/tags/release - - repository: publishConfig - type: git - name: GitHubProjectsPublish/GitHubProjectsPublish - ref: refs/heads/main extends: template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines @@ -55,131 +37,16 @@ extends: name: Azure-Pipelines-1ESPT-ExDShared os: windows stages: - - stage: Prepare - dependsOn: [] - displayName: 'Prepare Rush NPM Publish' - jobs: - - job: PrepareNpmPublish - displayName: 'Prepare Rush NPM Publish' - pool: - name: publish-rushstack - os: linux - templateContext: - outputParentDirectory: $(Build.ArtifactStagingDirectory) - outputs: - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/published-versions - artifactName: published-versions - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/json-schemas - artifactName: json-schemas - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/api - artifactName: api - steps: - - checkout: self - persistCredentials: true - - - template: /common/config/azure-pipelines/templates/install-node.yaml@self - - - bash: | - mkdir -p "$(Build.ArtifactStagingDirectory)/published-versions" - mkdir -p "$(Build.ArtifactStagingDirectory)/json-schemas" - mkdir -p "$(Build.ArtifactStagingDirectory)/api" - displayName: 'Initialize artifact staging directories' - condition: always() - - - template: /common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml@self - parameters: - PipelineName: $(RushstackVersioningPipelineName) - CommitSha: ${{ coalesce(parameters.CommitShaOverride, '$(Build.SourceVersion)') }} - TeamProject: $(RushstackVersioningProject) - Name: FindBumpRun - WorkingDirectory: $(Build.SourcesDirectory) - - - task: DownloadPipelineArtifact@2 - condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') - inputs: - artifactName: package-versions - targetPath: $(Agent.TempDirectory)/package-versions - project: $(RushstackVersioningProject) - definition: $(FindBumpRun.BumpPipelineDefinitionId) - pipelineId: $(FindBumpRun.BumpPipelineRunId) - buildType: specific - buildVersionToDownload: specific - displayName: 'Download package versions' - - - bash: | - cp "$(Agent.TempDirectory)/package-versions"/*.json "$(Build.ArtifactStagingDirectory)/published-versions/" - condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') - displayName: 'Stage published versions artifact' - - - task: DownloadPipelineArtifact@2 - condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') - inputs: - artifactName: json-schemas - targetPath: $(Build.ArtifactStagingDirectory)/json-schemas - project: $(RushstackVersioningProject) - definition: $(FindBumpRun.BumpPipelineDefinitionId) - pipelineId: $(FindBumpRun.BumpPipelineRunId) - buildType: specific - buildVersionToDownload: specific - displayName: 'Download JSON schema artifact' - - - task: DownloadPipelineArtifact@2 - condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') - inputs: - artifactName: api - targetPath: $(Build.ArtifactStagingDirectory)/api - project: $(RushstackVersioningProject) - definition: $(FindBumpRun.BumpPipelineDefinitionId) - pipelineId: $(FindBumpRun.BumpPipelineRunId) - buildType: specific - buildVersionToDownload: specific - displayName: 'Download API review artifact' - - - ${{ if eq(parameters.publishToNpmFeed, true) }}: - - stage: Publish - displayName: 'Publish Rush NPM Packages' - dependsOn: - - Prepare - condition: and(succeeded('Prepare'), eq(dependencies.Prepare.outputs['PrepareNpmPublish.FindBumpRun.IsVersionBumpMerge'], 'true')) - jobs: - - job: PublishNpmPackages - displayName: 'Publish Rush NPM Packages' - pool: - name: publish-rushstack - os: linux - variables: - - name: BumpPipelineRunId - value: $[ stageDependencies.Prepare.PrepareNpmPublish.outputs['FindBumpRun.BumpPipelineRunId'] ] - - name: BumpPipelineDefinitionId - value: $[ stageDependencies.Prepare.PrepareNpmPublish.outputs['FindBumpRun.BumpPipelineDefinitionId'] ] - templateContext: - type: releaseJob - isProduction: true - steps: - - checkout: none - - - template: /common/config/azure-pipelines/templates/install-node.yaml@self - - - task: 1ES.DownloadPipelineArtifact@1 - inputs: - artifactName: packages - targetPath: $(PackagesPath) - project: $(RushstackVersioningProject) - definition: $(BumpPipelineDefinitionId) - pipelineId: $(BumpPipelineRunId) - buildType: specific - buildVersionToDownload: specific - displayName: 'Download packed npm packages' - - - bash: | - ls -la "$(PackagesPath)" - displayName: 'List downloaded packages' - - - template: /common/config/azure-pipelines/templates/esrp-release.yaml@publishConfig - parameters: - packagesPath: $(PackagesPath) - npmTag: ${{ parameters.NpmTag }} - dryRun: ${{ parameters.DryRun }} + - template: /common/config/azure-pipelines/templates/bump-versions-stages.yaml@self + parameters: + VersionPolicyName: rush + StageName: BumpRushVersions + StageDisplayName: 'Bump Rush Versions and Create PR' + FeatureBranch: 'automated/bump-versions-rush' + PrTitle: 'Bump Rush package versions' + PrDescription: | + Automated version bump generated by Azure DevOps Pipeline. + + This PR contains version bumps for the "rush" version policy. + + **Pipeline Run:** $(System.CollectionUri)$(System.TeamProject)/_build/results?buildId=$(Build.BuildId) diff --git a/common/config/azure-pipelines/npm-publish.yaml b/common/config/azure-pipelines/npm-publish.yaml index 9dec1081aea..b300119d505 100644 --- a/common/config/azure-pipelines/npm-publish.yaml +++ b/common/config/azure-pipelines/npm-publish.yaml @@ -1,41 +1,27 @@ +# Pipeline: rushstack Bump Versions (rushstack) +# Trigger: Automatically when changes merge to main that include change files or pipeline YAML. +# Purpose: Bump versions for the "noRush" version policy, build, pack, create/update GitHub PR. +# The packed tarballs are published by the "esrp-publish-rushstack.yaml" pipeline once the +# resulting version bump PR is merged. + trigger: + batch: true branches: include: - main paths: include: - - '**/CHANGELOG.md' + - 'common/changes/*' - 'common/config/rush/version-policies.json' + - 'common/config/azure-pipelines/**' pr: none -parameters: - - name: publishToNpmFeed - displayName: 'Publish to npm feed' - type: boolean - default: true - - name: NpmTag - displayName: 'NPM dist-tag' - type: string - default: latest - - name: DryRun - displayName: 'Dry run' - type: boolean - default: false - - name: CommitShaOverride - displayName: 'Commit SHA Override (for testing)' - type: string - default: '' - variables: - name: FORCE_COLOR value: 1 - - name: RushstackVersioningProject - value: GitHubProjects - - name: RushstackVersioningPipelineName - value: 'rushstack Bump Versions' - - name: PackagesPath - value: $(Pipeline.Workspace)/packages + - name: BaseBranch + value: $[ replace(variables['Build.SourceBranch'], 'refs/heads/', '') ] resources: repositories: @@ -43,10 +29,6 @@ resources: type: git name: 1ESPipelineTemplates/1ESPipelineTemplates ref: refs/tags/release - - repository: publishConfig - type: git - name: GitHubProjectsPublish/GitHubProjectsPublish - ref: refs/heads/main extends: template: v1/1ES.Official.PipelineTemplate.yml@1esPipelines @@ -55,131 +37,16 @@ extends: name: Azure-Pipelines-1ESPT-ExDShared os: windows stages: - - stage: Prepare - dependsOn: [] - displayName: 'Prepare NPM Publish' - jobs: - - job: PrepareNpmPublish - displayName: 'Prepare NPM Publish' - pool: - name: publish-rushstack - os: linux - templateContext: - outputParentDirectory: $(Build.ArtifactStagingDirectory) - outputs: - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/published-versions - artifactName: published-versions - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/json-schemas - artifactName: json-schemas - - output: pipelineArtifact - targetPath: $(Build.ArtifactStagingDirectory)/api - artifactName: api - steps: - - checkout: self - persistCredentials: true - - - template: /common/config/azure-pipelines/templates/install-node.yaml@self - - - bash: | - mkdir -p "$(Build.ArtifactStagingDirectory)/published-versions" - mkdir -p "$(Build.ArtifactStagingDirectory)/json-schemas" - mkdir -p "$(Build.ArtifactStagingDirectory)/api" - displayName: 'Initialize artifact staging directories' - condition: always() - - - template: /common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml@self - parameters: - PipelineName: $(RushstackVersioningPipelineName) - CommitSha: ${{ coalesce(parameters.CommitShaOverride, '$(Build.SourceVersion)') }} - TeamProject: $(RushstackVersioningProject) - Name: FindBumpRun - WorkingDirectory: $(Build.SourcesDirectory) - - - task: DownloadPipelineArtifact@2 - condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') - inputs: - artifactName: package-versions - targetPath: $(Agent.TempDirectory)/package-versions - project: $(RushstackVersioningProject) - definition: $(FindBumpRun.BumpPipelineDefinitionId) - pipelineId: $(FindBumpRun.BumpPipelineRunId) - buildType: specific - buildVersionToDownload: specific - displayName: 'Download package versions' - - - bash: | - cp "$(Agent.TempDirectory)/package-versions"/*.json "$(Build.ArtifactStagingDirectory)/published-versions/" - condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') - displayName: 'Stage published versions artifact' - - - task: DownloadPipelineArtifact@2 - condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') - inputs: - artifactName: json-schemas - targetPath: $(Build.ArtifactStagingDirectory)/json-schemas - project: $(RushstackVersioningProject) - definition: $(FindBumpRun.BumpPipelineDefinitionId) - pipelineId: $(FindBumpRun.BumpPipelineRunId) - buildType: specific - buildVersionToDownload: specific - displayName: 'Download JSON schema artifact' - - - task: DownloadPipelineArtifact@2 - condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') - inputs: - artifactName: api - targetPath: $(Build.ArtifactStagingDirectory)/api - project: $(RushstackVersioningProject) - definition: $(FindBumpRun.BumpPipelineDefinitionId) - pipelineId: $(FindBumpRun.BumpPipelineRunId) - buildType: specific - buildVersionToDownload: specific - displayName: 'Download API review artifact' - - - ${{ if eq(parameters.publishToNpmFeed, true) }}: - - stage: Publish - displayName: 'Publish NPM Packages' - dependsOn: - - Prepare - condition: and(succeeded('Prepare'), eq(dependencies.Prepare.outputs['PrepareNpmPublish.FindBumpRun.IsVersionBumpMerge'], 'true')) - jobs: - - job: PublishNpmPackages - displayName: 'Publish NPM Packages' - pool: - name: publish-rushstack - os: linux - variables: - - name: BumpPipelineRunId - value: $[ stageDependencies.Prepare.PrepareNpmPublish.outputs['FindBumpRun.BumpPipelineRunId'] ] - - name: BumpPipelineDefinitionId - value: $[ stageDependencies.Prepare.PrepareNpmPublish.outputs['FindBumpRun.BumpPipelineDefinitionId'] ] - templateContext: - type: releaseJob - isProduction: true - steps: - - checkout: none - - - template: /common/config/azure-pipelines/templates/install-node.yaml@self - - - task: 1ES.DownloadPipelineArtifact@1 - inputs: - artifactName: packages - targetPath: $(PackagesPath) - project: $(RushstackVersioningProject) - definition: $(BumpPipelineDefinitionId) - pipelineId: $(BumpPipelineRunId) - buildType: specific - buildVersionToDownload: specific - displayName: 'Download packed npm packages' - - - bash: | - ls -la "$(PackagesPath)" - displayName: 'List downloaded packages' - - - template: /common/config/azure-pipelines/templates/esrp-release.yaml@publishConfig - parameters: - packagesPath: $(PackagesPath) - npmTag: ${{ parameters.NpmTag }} - dryRun: ${{ parameters.DryRun }} + - template: /common/config/azure-pipelines/templates/bump-versions-stages.yaml@self + parameters: + VersionPolicyName: noRush + StageName: BumpRushstackVersions + StageDisplayName: 'Bump Rushstack Versions and Create PR' + FeatureBranch: 'automated/bump-versions-rushstack' + PrTitle: 'Bump Rushstack package versions' + PrDescription: | + Automated version bump generated by Azure DevOps Pipeline. + + This PR contains version bumps for the "noRush" version policy. + + **Pipeline Run:** $(System.CollectionUri)$(System.TeamProject)/_build/results?buildId=$(Build.BuildId) diff --git a/common/config/azure-pipelines/templates/bump-versions-stages.yaml b/common/config/azure-pipelines/templates/bump-versions-stages.yaml new file mode 100644 index 00000000000..aec8dac38b2 --- /dev/null +++ b/common/config/azure-pipelines/templates/bump-versions-stages.yaml @@ -0,0 +1,122 @@ +# Shared stage definition for the "bump versions" pipelines. +# +# There is one bump pipeline per version policy; each of them builds the repo, bumps the versions +# for its own version policy, packs the resulting tarballs and opens a GitHub PR with the changes. +# The packed tarballs are published to the npm feed later by the matching "esrp publish" pipeline, +# which locates this pipeline run via the "bump-versions:" build tag. + +parameters: + - name: VersionPolicyName + type: string + - name: StageName + type: string + - name: StageDisplayName + type: string + - name: FeatureBranch + type: string + - name: PrTitle + type: string + - name: PrDescription + type: string + +stages: + - stage: ${{ parameters.StageName }} + displayName: ${{ parameters.StageDisplayName }} + jobs: + - job: BumpVersions + displayName: 'Bump Versions' + pool: + name: publish-rushstack + os: linux + templateContext: + outputParentDirectory: $(Build.ArtifactStagingDirectory) + outputs: + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/published-versions + artifactName: published-versions + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/json-schemas + artifactName: json-schemas + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/packages + artifactName: packages + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/api + artifactName: api + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/artifact-metadata.json + artifactName: metadata + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/package-versions + artifactName: package-versions + steps: + - checkout: self + persistCredentials: true + + - template: /common/config/azure-pipelines/templates/configure-git-user.yaml@self + + - bash: | + git checkout -b ${{ parameters.FeatureBranch }} + echo "Created feature branch: ${{ parameters.FeatureBranch }}" + displayName: 'Create Feature Branch' + + - template: /common/config/azure-pipelines/templates/install-node.yaml@self + + - template: /common/config/azure-pipelines/templates/build.yaml@self + + - template: /common/config/azure-pipelines/templates/bump-versions.yaml@self + parameters: + VersionPolicyName: ${{ parameters.VersionPolicyName }} + BranchName: $(BaseBranch) + + - script: 'node libraries/rush-lib/scripts/plugins-prepublish.js' + displayName: 'Prepublish workaround for rush-lib' + + - template: /common/config/azure-pipelines/templates/pack.yaml@self + parameters: + VersionPolicyName: ${{ parameters.VersionPolicyName }} + + - template: /common/config/azure-pipelines/templates/post-publish.yaml@self + + - bash: | + git add -u + git add -- '**/CHANGELOG.md' '**/CHANGELOG.json' + + if [ -n "$(git diff --cached --numstat)" ]; then + git commit -m "Applying package version bumps + + Pipeline Run: $(System.CollectionUri)$(System.TeamProject)/_build/results?buildId=$(Build.BuildId) + Run ID: $(Build.BuildId)" + echo "Changes committed" + echo "##vso[task.setvariable variable=HasChanges]true" + else + echo "No changes to commit" + echo "##vso[task.setvariable variable=HasChanges]false" + fi + displayName: 'Commit Version Bumps' + + - template: /common/config/azure-pipelines/templates/push-and-create-github-pr.yaml@self + parameters: + BranchName: ${{ parameters.FeatureBranch }} + PrTitle: ${{ parameters.PrTitle }} + PrDescription: ${{ parameters.PrDescription }} + + - bash: | + set -e + BUMP_SHA=$(git rev-parse HEAD) + echo "##vso[task.setvariable variable=BumpSha;isOutput=true]${BUMP_SHA}" + echo "##vso[build.addbuildtag]bump-versions:${BUMP_SHA}" + echo "Tagged build with bump SHA: ${BUMP_SHA}" + name: TagBuild + displayName: 'Tag build with bump commit SHA' + condition: and(succeeded(), eq(variables['HasChanges'], 'true')) + + - bash: | + mkdir -p "$(Build.ArtifactStagingDirectory)/packages" + mkdir -p "$(Build.ArtifactStagingDirectory)/package-versions" + displayName: 'Create artifact staging directories' + condition: always() + + - template: /common/config/azure-pipelines/templates/prepare-publish-artifacts.yaml@self + + - template: /common/config/azure-pipelines/templates/record-versions.yaml@self diff --git a/common/config/azure-pipelines/templates/esrp-publish-stages.yaml b/common/config/azure-pipelines/templates/esrp-publish-stages.yaml new file mode 100644 index 00000000000..6e9c9daea44 --- /dev/null +++ b/common/config/azure-pipelines/templates/esrp-publish-stages.yaml @@ -0,0 +1,156 @@ +# Shared stage definition for the "esrp publish" pipelines. +# +# There is one publish pipeline per version policy. Each of them is triggered when the version bump +# PR produced by the matching bump pipeline is merged to main; it locates the originating bump +# pipeline run (via the "bump-versions:" build tag) and publishes the tarballs that were packed +# by that run to the npm feed via ESRP. + +parameters: + # Name of the bump pipeline that packed the tarballs to publish. + - name: BumpPipelineName + type: string + # Azure DevOps team project that hosts the bump pipeline. + - name: BumpPipelineProject + type: string + - name: StageNameSuffix + type: string + - name: DisplayNameSuffix + type: string + - name: PublishToNpmFeed + type: boolean + - name: NpmTag + type: string + - name: DryRun + type: boolean + - name: CommitShaOverride + type: string + +stages: + - stage: Prepare${{ parameters.StageNameSuffix }} + dependsOn: [] + displayName: 'Prepare ${{ parameters.DisplayNameSuffix }} NPM Publish' + jobs: + - job: PrepareNpmPublish + displayName: 'Prepare ${{ parameters.DisplayNameSuffix }} NPM Publish' + pool: + name: publish-rushstack + os: linux + templateContext: + outputParentDirectory: $(Build.ArtifactStagingDirectory) + outputs: + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/published-versions + artifactName: published-versions + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/json-schemas + artifactName: json-schemas + - output: pipelineArtifact + targetPath: $(Build.ArtifactStagingDirectory)/api + artifactName: api + steps: + - checkout: self + persistCredentials: true + + - template: /common/config/azure-pipelines/templates/install-node.yaml@self + + - bash: | + mkdir -p "$(Build.ArtifactStagingDirectory)/published-versions" + mkdir -p "$(Build.ArtifactStagingDirectory)/json-schemas" + mkdir -p "$(Build.ArtifactStagingDirectory)/api" + displayName: 'Initialize artifact staging directories' + condition: always() + + - template: /common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml@self + parameters: + PipelineName: ${{ parameters.BumpPipelineName }} + CommitSha: ${{ coalesce(parameters.CommitShaOverride, '$(Build.SourceVersion)') }} + TeamProject: ${{ parameters.BumpPipelineProject }} + Name: FindBumpRun + WorkingDirectory: $(Build.SourcesDirectory) + + - task: DownloadPipelineArtifact@2 + condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') + inputs: + artifactName: package-versions + targetPath: $(Agent.TempDirectory)/package-versions + project: ${{ parameters.BumpPipelineProject }} + definition: $(FindBumpRun.BumpPipelineDefinitionId) + pipelineId: $(FindBumpRun.BumpPipelineRunId) + buildType: specific + buildVersionToDownload: specific + displayName: 'Download package versions' + + - bash: | + cp "$(Agent.TempDirectory)/package-versions"/*.json "$(Build.ArtifactStagingDirectory)/published-versions/" + condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') + displayName: 'Stage published versions artifact' + + - task: DownloadPipelineArtifact@2 + condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') + inputs: + artifactName: json-schemas + targetPath: $(Build.ArtifactStagingDirectory)/json-schemas + project: ${{ parameters.BumpPipelineProject }} + definition: $(FindBumpRun.BumpPipelineDefinitionId) + pipelineId: $(FindBumpRun.BumpPipelineRunId) + buildType: specific + buildVersionToDownload: specific + displayName: 'Download JSON schema artifact' + + - task: DownloadPipelineArtifact@2 + condition: eq(variables['FindBumpRun.IsVersionBumpMerge'], 'true') + inputs: + artifactName: api + targetPath: $(Build.ArtifactStagingDirectory)/api + project: ${{ parameters.BumpPipelineProject }} + definition: $(FindBumpRun.BumpPipelineDefinitionId) + pipelineId: $(FindBumpRun.BumpPipelineRunId) + buildType: specific + buildVersionToDownload: specific + displayName: 'Download API review artifact' + + - ${{ if eq(parameters.PublishToNpmFeed, true) }}: + - stage: Publish${{ parameters.StageNameSuffix }} + displayName: 'Publish ${{ parameters.DisplayNameSuffix }} NPM Packages' + dependsOn: + - Prepare${{ parameters.StageNameSuffix }} + 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' + pool: + name: publish-rushstack + os: linux + variables: + - name: BumpPipelineRunId + value: $[ stageDependencies.Prepare${{ parameters.StageNameSuffix }}.PrepareNpmPublish.outputs['FindBumpRun.BumpPipelineRunId'] ] + - name: BumpPipelineDefinitionId + value: $[ stageDependencies.Prepare${{ parameters.StageNameSuffix }}.PrepareNpmPublish.outputs['FindBumpRun.BumpPipelineDefinitionId'] ] + templateContext: + type: releaseJob + isProduction: true + steps: + - checkout: none + + - template: /common/config/azure-pipelines/templates/install-node.yaml@self + + - task: 1ES.DownloadPipelineArtifact@1 + inputs: + artifactName: packages + targetPath: $(PackagesPath) + project: ${{ parameters.BumpPipelineProject }} + definition: $(BumpPipelineDefinitionId) + pipelineId: $(BumpPipelineRunId) + buildType: specific + buildVersionToDownload: specific + displayName: 'Download packed npm packages' + + - bash: | + ls -la "$(PackagesPath)" + displayName: 'List downloaded packages' + + - template: /common/config/azure-pipelines/templates/esrp-release.yaml@publishConfig + parameters: + packagesPath: $(PackagesPath) + npmTag: ${{ parameters.NpmTag }} + dryRun: ${{ parameters.DryRun }} diff --git a/common/config/azure-pipelines/templates/pack.yaml b/common/config/azure-pipelines/templates/pack.yaml index 9021c171445..0fe99c813a3 100644 --- a/common/config/azure-pipelines/templates/pack.yaml +++ b/common/config/azure-pipelines/templates/pack.yaml @@ -1,3 +1,8 @@ +parameters: + # Only the packages belonging to this version policy are packed. + - name: VersionPolicyName + type: string + steps: - template: /common/config/azure-pipelines/templates/install-run-rush.yaml@self parameters: @@ -14,5 +19,6 @@ steps: --publish --pack --include-all + --version-policy ${{ parameters.VersionPolicyName }} --release-folder $(Build.ArtifactStagingDirectory)/packages - DisplayName: 'Rush Pack' + DisplayName: 'Rush Pack (Policy: ${{ parameters.VersionPolicyName }})' From 17a706a90c316714fce681394663cbe4cf68eed7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 21 Aug 2026 21:16:34 +0000 Subject: [PATCH 07/16] ci: reference bump pipelines by definition id Co-authored-by: dmichon-msft <26827560+dmichon-msft@users.noreply.github.com> --- common/config/azure-pipelines/esrp-publish-rush.yaml | 6 +++--- common/config/azure-pipelines/esrp-publish-rushstack.yaml | 6 +++--- common/config/azure-pipelines/npm-publish-rush.yaml | 2 +- common/config/azure-pipelines/npm-publish.yaml | 2 +- .../azure-pipelines/templates/esrp-publish-stages.yaml | 8 ++++---- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/common/config/azure-pipelines/esrp-publish-rush.yaml b/common/config/azure-pipelines/esrp-publish-rush.yaml index bb61b21e757..8b6263fefa8 100644 --- a/common/config/azure-pipelines/esrp-publish-rush.yaml +++ b/common/config/azure-pipelines/esrp-publish-rush.yaml @@ -1,6 +1,6 @@ # Pipeline: rushstack ESRP Publish (rush) -# Trigger: Automatically when a "rushstack Bump Versions (rush)" version bump PR merges to main. -# Purpose: Publish the tarballs packed by the "rushstack Bump Versions (rush)" pipeline to the npm feed via ESRP. +# Trigger: Automatically when a version bump PR from the Rush bump pipeline (definition 12) merges to main. +# Purpose: Publish the tarballs packed by that bump pipeline run to the npm feed via ESRP. trigger: branches: @@ -57,7 +57,7 @@ extends: stages: - template: /common/config/azure-pipelines/templates/esrp-publish-stages.yaml@self parameters: - BumpPipelineName: 'rushstack Bump Versions (rush)' + BumpPipelineId: 12 BumpPipelineProject: GitHubProjects StageNameSuffix: Rush DisplayNameSuffix: Rush diff --git a/common/config/azure-pipelines/esrp-publish-rushstack.yaml b/common/config/azure-pipelines/esrp-publish-rushstack.yaml index be5a3533468..ed8c0aa3c25 100644 --- a/common/config/azure-pipelines/esrp-publish-rushstack.yaml +++ b/common/config/azure-pipelines/esrp-publish-rushstack.yaml @@ -1,6 +1,6 @@ # Pipeline: rushstack ESRP Publish (rushstack) -# Trigger: Automatically when a "rushstack Bump Versions (rushstack)" version bump PR merges to main. -# Purpose: Publish the tarballs packed by the "rushstack Bump Versions (rushstack)" pipeline to the npm feed via ESRP. +# Trigger: Automatically when a version bump PR from the non-Rush bump pipeline (definition 10) merges to main. +# Purpose: Publish the tarballs packed by that bump pipeline run to the npm feed via ESRP. trigger: branches: @@ -57,7 +57,7 @@ extends: stages: - template: /common/config/azure-pipelines/templates/esrp-publish-stages.yaml@self parameters: - BumpPipelineName: 'rushstack Bump Versions (rushstack)' + BumpPipelineId: 10 BumpPipelineProject: GitHubProjects StageNameSuffix: Rushstack DisplayNameSuffix: Rushstack diff --git a/common/config/azure-pipelines/npm-publish-rush.yaml b/common/config/azure-pipelines/npm-publish-rush.yaml index 99157fd1acd..fe0169cc919 100644 --- a/common/config/azure-pipelines/npm-publish-rush.yaml +++ b/common/config/azure-pipelines/npm-publish-rush.yaml @@ -1,4 +1,4 @@ -# Pipeline: rushstack Bump Versions (rush) +# 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. # The packed tarballs are published by the "esrp-publish-rush.yaml" pipeline once the diff --git a/common/config/azure-pipelines/npm-publish.yaml b/common/config/azure-pipelines/npm-publish.yaml index b300119d505..db1dccf7eee 100644 --- a/common/config/azure-pipelines/npm-publish.yaml +++ b/common/config/azure-pipelines/npm-publish.yaml @@ -1,4 +1,4 @@ -# Pipeline: rushstack Bump Versions (rushstack) +# Pipeline: Bump Versions (non-Rush) -- AzDO definition 10 in the GitHubProjects project # Trigger: Automatically when changes merge to main that include change files or pipeline YAML. # Purpose: Bump versions for the "noRush" version policy, build, pack, create/update GitHub PR. # The packed tarballs are published by the "esrp-publish-rushstack.yaml" pipeline once the diff --git a/common/config/azure-pipelines/templates/esrp-publish-stages.yaml b/common/config/azure-pipelines/templates/esrp-publish-stages.yaml index 6e9c9daea44..b8657dc9df7 100644 --- a/common/config/azure-pipelines/templates/esrp-publish-stages.yaml +++ b/common/config/azure-pipelines/templates/esrp-publish-stages.yaml @@ -6,9 +6,9 @@ # by that run to the npm feed via ESRP. parameters: - # Name of the bump pipeline that packed the tarballs to publish. - - name: BumpPipelineName - type: string + # Definition ID of the bump pipeline that packed the tarballs to publish. + - name: BumpPipelineId + type: number # Azure DevOps team project that hosts the bump pipeline. - name: BumpPipelineProject type: string @@ -62,7 +62,7 @@ stages: - template: /common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml@self parameters: - PipelineName: ${{ parameters.BumpPipelineName }} + PipelineId: ${{ parameters.BumpPipelineId }} CommitSha: ${{ coalesce(parameters.CommitShaOverride, '$(Build.SourceVersion)') }} TeamProject: ${{ parameters.BumpPipelineProject }} Name: FindBumpRun From 1453ec86bc5957550371869f615cebd4b97051c7 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 21 Aug 2026 21:38:35 +0000 Subject: [PATCH 08/16] ci: point post-publish at esrp publish pipelines in GitHubProjectsPublish Co-authored-by: dmichon-msft <26827560+dmichon-msft@users.noreply.github.com> --- common/config/azure-pipelines/esrp-publish-rush.yaml | 2 +- .../config/azure-pipelines/esrp-publish-rushstack.yaml | 2 +- common/config/azure-pipelines/npm-post-publish.yaml | 10 ++++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/common/config/azure-pipelines/esrp-publish-rush.yaml b/common/config/azure-pipelines/esrp-publish-rush.yaml index 8b6263fefa8..b9dfd9e81f5 100644 --- a/common/config/azure-pipelines/esrp-publish-rush.yaml +++ b/common/config/azure-pipelines/esrp-publish-rush.yaml @@ -1,4 +1,4 @@ -# Pipeline: rushstack ESRP Publish (rush) +# Pipeline: rushstack-esrp-publish-rush (AzDO project GitHubProjectsPublish) # Trigger: Automatically when a version bump PR from the Rush bump pipeline (definition 12) merges to main. # Purpose: Publish the tarballs packed by that bump pipeline run to the npm feed via ESRP. diff --git a/common/config/azure-pipelines/esrp-publish-rushstack.yaml b/common/config/azure-pipelines/esrp-publish-rushstack.yaml index ed8c0aa3c25..8e220717dc4 100644 --- a/common/config/azure-pipelines/esrp-publish-rushstack.yaml +++ b/common/config/azure-pipelines/esrp-publish-rushstack.yaml @@ -1,4 +1,4 @@ -# Pipeline: rushstack ESRP Publish (rushstack) +# Pipeline: rushstack-esrp-publish (AzDO project GitHubProjectsPublish) # Trigger: Automatically when a version bump PR from the non-Rush bump pipeline (definition 10) merges to main. # Purpose: Publish the tarballs packed by that bump pipeline run to the npm feed via ESRP. diff --git a/common/config/azure-pipelines/npm-post-publish.yaml b/common/config/azure-pipelines/npm-post-publish.yaml index 2120f6414dc..50e2699800c 100644 --- a/common/config/azure-pipelines/npm-post-publish.yaml +++ b/common/config/azure-pipelines/npm-post-publish.yaml @@ -18,14 +18,16 @@ pr: none resources: pipelines: - pipeline: esrpPublishRushstack - source: 'rushstack ESRP Publish (rushstack)' + source: 'rushstack-esrp-publish' + project: GitHubProjectsPublish trigger: enabled: true branches: include: - refs/heads/main - pipeline: esrpPublishRush - source: 'rushstack ESRP Publish (rush)' + source: 'rushstack-esrp-publish-rush' + project: GitHubProjectsPublish trigger: enabled: true branches: @@ -222,8 +224,8 @@ extends: displayName: 'Download API review files' inputs: source: specific - project: GitHubProjects - pipeline: 'rushstack ESRP Publish (rushstack)' + project: GitHubProjectsPublish + pipeline: 'rushstack-esrp-publish' preferTriggeringPipeline: true runVersion: latest artifact: api From cbf98d0e784afa00429cf8bad31e1a95eb6ad230 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 21 Aug 2026 21:52:36 +0000 Subject: [PATCH 09/16] Require bump pipeline definition ID Co-authored-by: dmichon-msft <26827560+dmichon-msft@users.noreply.github.com> --- .../templates/find-bump-pipeline-run.yaml | 23 +------------------ 1 file changed, 1 insertion(+), 22 deletions(-) diff --git a/common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml b/common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml index 60052a489ac..f221c726526 100644 --- a/common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml +++ b/common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml @@ -1,10 +1,6 @@ parameters: - name: PipelineId - type: object - default: 0 - - name: PipelineName - type: string - default: '' + type: number - name: CommitSha type: string - name: TeamProject @@ -60,23 +56,6 @@ steps: } PIPELINE_ID="${{ parameters.PipelineId }}" - if [ "$PIPELINE_ID" = "0" ]; then - if [ -z "${{ parameters.PipelineName }}" ]; then - echo "##[error]Either PipelineId or PipelineName must be provided." - exit 1 - fi - - ENCODED_PIPELINE_NAME=$(url_encode "${{ parameters.PipelineName }}") - DEFINITIONS_URL="${SYSTEM_COLLECTIONURI}${{ parameters.TeamProject }}/_apis/build/definitions?name=${ENCODED_PIPELINE_NAME}&api-version=7.1" - echo "Resolving bump pipeline definition named ${{ parameters.PipelineName }}" - DEFINITIONS_RESPONSE=$(curl -sS -u ":${SYSTEM_ACCESSTOKEN}" "$DEFINITIONS_URL") - PIPELINE_ID=$(echo "$DEFINITIONS_RESPONSE" | jq -r '.value[0].id // empty') - - if [ -z "$PIPELINE_ID" ]; then - echo "##[error]Could not find a bump pipeline definition named ${{ parameters.PipelineName }}." - exit 1 - fi - fi set_output_variable BumpPipelineDefinitionId "$PIPELINE_ID" From 88817816157fc0f38f447582dd263fd5908b9429 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 21 Aug 2026 21:56:22 +0000 Subject: [PATCH 10/16] Set publish registry to package feed proxy Co-authored-by: dmichon-msft <26827560+dmichon-msft@users.noreply.github.com> --- common/config/rush/.npmrc-publish | 1 + 1 file changed, 1 insertion(+) diff --git a/common/config/rush/.npmrc-publish b/common/config/rush/.npmrc-publish index 7263f1066f7..b87f054dae5 100644 --- a/common/config/rush/.npmrc-publish +++ b/common/config/rush/.npmrc-publish @@ -17,3 +17,4 @@ # environment variable, which can be referenced from .npmrc using ${} expansion. always-auth=true +registry=https://packagefeedproxy.microsoft.io/npm/ From c8bbaae46eb8c66f3c6a134c0383eea86dee3326 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 21 Aug 2026 22:01:23 +0000 Subject: [PATCH 11/16] Address publish pipeline review feedback Co-authored-by: dmichon-msft <26827560+dmichon-msft@users.noreply.github.com> --- common/config/azure-pipelines/esrp-publish-rush.yaml | 1 + .../azure-pipelines/esrp-publish-rushstack.yaml | 1 + .../assets/rush-init/common/config/rush/[dot]npmrc | 11 ++++++++++- .../rush-init/common/config/rush/[dot]npmrc-publish | 11 ++++++++++- 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/common/config/azure-pipelines/esrp-publish-rush.yaml b/common/config/azure-pipelines/esrp-publish-rush.yaml index b9dfd9e81f5..1884d1276ff 100644 --- a/common/config/azure-pipelines/esrp-publish-rush.yaml +++ b/common/config/azure-pipelines/esrp-publish-rush.yaml @@ -57,6 +57,7 @@ extends: stages: - template: /common/config/azure-pipelines/templates/esrp-publish-stages.yaml@self parameters: + # https://dev.azure.com/RushStack/GitHubProjects/_build?definitionId=12 BumpPipelineId: 12 BumpPipelineProject: GitHubProjects StageNameSuffix: Rush diff --git a/common/config/azure-pipelines/esrp-publish-rushstack.yaml b/common/config/azure-pipelines/esrp-publish-rushstack.yaml index 8e220717dc4..45bce27aa55 100644 --- a/common/config/azure-pipelines/esrp-publish-rushstack.yaml +++ b/common/config/azure-pipelines/esrp-publish-rushstack.yaml @@ -57,6 +57,7 @@ extends: stages: - template: /common/config/azure-pipelines/templates/esrp-publish-stages.yaml@self parameters: + # https://dev.azure.com/RushStack/GitHubProjects/_build?definitionId=10 BumpPipelineId: 10 BumpPipelineProject: GitHubProjects StageNameSuffix: Rushstack diff --git a/libraries/rush-lib/assets/rush-init/common/config/rush/[dot]npmrc b/libraries/rush-lib/assets/rush-init/common/config/rush/[dot]npmrc index c43a4f44461..43f783886e9 100644 --- a/libraries/rush-lib/assets/rush-init/common/config/rush/[dot]npmrc +++ b/libraries/rush-lib/assets/rush-init/common/config/rush/[dot]npmrc @@ -18,7 +18,16 @@ # It is NOT recommended to store authentication tokens in a text file on a lab machine, because # other unrelated processes may be able to read that file. Also, the file may persist indefinitely, # for example if the machine loses power. A safer practice is to pass the token via an -# environment variable, which can be referenced from .npmrc using ${} expansion. +# environment variable, which can be referenced from .npmrc using ${} expansion. For example: +# +# //registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN} +# + +# Explicitly specify the NPM registry that "rush install" and "rush update" will use by default: +registry=https://registry.npmjs.org/ + +# Optionally provide an authentication token for the above registry URL (if it is a private registry): +# //registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN} # Change this to "true" if your registry requires authentication for read-only operations: always-auth=false diff --git a/libraries/rush-lib/assets/rush-init/common/config/rush/[dot]npmrc-publish b/libraries/rush-lib/assets/rush-init/common/config/rush/[dot]npmrc-publish index 6be6f1746f6..51acb920edc 100644 --- a/libraries/rush-lib/assets/rush-init/common/config/rush/[dot]npmrc-publish +++ b/libraries/rush-lib/assets/rush-init/common/config/rush/[dot]npmrc-publish @@ -14,4 +14,13 @@ # It is NOT recommended to store authentication tokens in a text file on a lab machine, because # other unrelated processes may be able to read the file. Also, the file may persist indefinitely, # for example if the machine loses power. A safer practice is to pass the token via an -# environment variable, which can be referenced from .npmrc using ${} expansion. +# environment variable, which can be referenced from .npmrc using ${} expansion. For example: +# +# //registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN} +# + +# Explicitly specify the NPM registry that "rush publish" will use by default: +registry=https://registry.npmjs.org/ + +# Provide an authentication token for the above registry URL: +# //registry.npmjs.org/:_authToken=${NPM_AUTH_TOKEN} From cc6d9b43d817914823fd7de297d11a60ff4ab88c Mon Sep 17 00:00:00 2001 From: Rushbot Date: Fri, 21 Aug 2026 22:28:47 +0000 Subject: [PATCH 12/16] Update changelogs [skip ci] --- ...ated-bump-decoupled-deps_2026-08-21-19-16-39.json | 11 ----------- .../native-private-null_2026-08-19-22-58-08.json | 9 --------- eslint/eslint-config/CHANGELOG.json | 12 ++++++++++++ eslint/eslint-config/CHANGELOG.md | 7 ++++++- eslint/eslint-plugin/CHANGELOG.json | 12 ++++++++++++ eslint/eslint-plugin/CHANGELOG.md | 9 ++++++++- rigs/heft-node-rig/CHANGELOG.json | 12 ++++++++++++ rigs/heft-node-rig/CHANGELOG.md | 7 ++++++- rigs/heft-vscode-extension-rig/CHANGELOG.json | 12 ++++++++++++ rigs/heft-vscode-extension-rig/CHANGELOG.md | 7 ++++++- rigs/heft-web-rig/CHANGELOG.json | 12 ++++++++++++ rigs/heft-web-rig/CHANGELOG.md | 7 ++++++- 12 files changed, 92 insertions(+), 25 deletions(-) delete mode 100644 common/changes/@rushstack/eslint-plugin/automated-bump-decoupled-deps_2026-08-21-19-16-39.json delete mode 100644 common/changes/@rushstack/eslint-plugin/native-private-null_2026-08-19-22-58-08.json diff --git a/common/changes/@rushstack/eslint-plugin/automated-bump-decoupled-deps_2026-08-21-19-16-39.json b/common/changes/@rushstack/eslint-plugin/automated-bump-decoupled-deps_2026-08-21-19-16-39.json deleted file mode 100644 index eb5d63adacf..00000000000 --- a/common/changes/@rushstack/eslint-plugin/automated-bump-decoupled-deps_2026-08-21-19-16-39.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "changes": [ - { - "comment": "", - "type": "none", - "packageName": "@rushstack/eslint-plugin" - } - ], - "packageName": "@rushstack/eslint-plugin", - "email": "rushbot@users.noreply.github.com" -} \ No newline at end of file diff --git a/common/changes/@rushstack/eslint-plugin/native-private-null_2026-08-19-22-58-08.json b/common/changes/@rushstack/eslint-plugin/native-private-null_2026-08-19-22-58-08.json deleted file mode 100644 index f16f9e815e4..00000000000 --- a/common/changes/@rushstack/eslint-plugin/native-private-null_2026-08-19-22-58-08.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "changes": [ - { - "packageName": "@rushstack/eslint-plugin", - "comment": "Fix no-new-null false positives for ECMAScript private class members.", - "type": "patch" - } - ] -} diff --git a/eslint/eslint-config/CHANGELOG.json b/eslint/eslint-config/CHANGELOG.json index ffcd389bee7..7ec75053b04 100644 --- a/eslint/eslint-config/CHANGELOG.json +++ b/eslint/eslint-config/CHANGELOG.json @@ -1,6 +1,18 @@ { "name": "@rushstack/eslint-config", "entries": [ + { + "version": "4.6.6", + "tag": "@rushstack/eslint-config_v4.6.6", + "date": "Fri, 21 Aug 2026 22:28:47 GMT", + "comments": { + "dependency": [ + { + "comment": "Updating dependency \"@rushstack/eslint-plugin\" to `0.23.4`" + } + ] + } + }, { "version": "4.6.5", "tag": "@rushstack/eslint-config_v4.6.5", diff --git a/eslint/eslint-config/CHANGELOG.md b/eslint/eslint-config/CHANGELOG.md index 7acab147289..41d74cf26b2 100644 --- a/eslint/eslint-config/CHANGELOG.md +++ b/eslint/eslint-config/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log - @rushstack/eslint-config -This log was last generated on Thu, 20 Aug 2026 00:16:38 GMT and should not be manually modified. +This log was last generated on Fri, 21 Aug 2026 22:28:47 GMT and should not be manually modified. + +## 4.6.6 +Fri, 21 Aug 2026 22:28:47 GMT + +_Version update only_ ## 4.6.5 Thu, 20 Aug 2026 00:16:38 GMT diff --git a/eslint/eslint-plugin/CHANGELOG.json b/eslint/eslint-plugin/CHANGELOG.json index a8dd855099c..41aff56b806 100644 --- a/eslint/eslint-plugin/CHANGELOG.json +++ b/eslint/eslint-plugin/CHANGELOG.json @@ -1,6 +1,18 @@ { "name": "@rushstack/eslint-plugin", "entries": [ + { + "version": "0.23.4", + "tag": "@rushstack/eslint-plugin_v0.23.4", + "date": "Fri, 21 Aug 2026 22:28:46 GMT", + "comments": { + "patch": [ + { + "comment": "Fix no-new-null false positives for ECMAScript private class members." + } + ] + } + }, { "version": "0.23.3", "tag": "@rushstack/eslint-plugin_v0.23.3", diff --git a/eslint/eslint-plugin/CHANGELOG.md b/eslint/eslint-plugin/CHANGELOG.md index 40aa72a1d8b..92919f58028 100644 --- a/eslint/eslint-plugin/CHANGELOG.md +++ b/eslint/eslint-plugin/CHANGELOG.md @@ -1,6 +1,13 @@ # Change Log - @rushstack/eslint-plugin -This log was last generated on Thu, 20 Aug 2026 00:16:38 GMT and should not be manually modified. +This log was last generated on Fri, 21 Aug 2026 22:28:46 GMT and should not be manually modified. + +## 0.23.4 +Fri, 21 Aug 2026 22:28:46 GMT + +### Patches + +- Fix no-new-null false positives for ECMAScript private class members. ## 0.23.3 Thu, 20 Aug 2026 00:16:38 GMT diff --git a/rigs/heft-node-rig/CHANGELOG.json b/rigs/heft-node-rig/CHANGELOG.json index 48a52b37ff0..b6c3f56fc92 100644 --- a/rigs/heft-node-rig/CHANGELOG.json +++ b/rigs/heft-node-rig/CHANGELOG.json @@ -1,6 +1,18 @@ { "name": "@rushstack/heft-node-rig", "entries": [ + { + "version": "2.11.49", + "tag": "@rushstack/heft-node-rig_v2.11.49", + "date": "Fri, 21 Aug 2026 22:28:47 GMT", + "comments": { + "dependency": [ + { + "comment": "Updating dependency \"@rushstack/eslint-config\" to `4.6.6`" + } + ] + } + }, { "version": "2.11.48", "tag": "@rushstack/heft-node-rig_v2.11.48", diff --git a/rigs/heft-node-rig/CHANGELOG.md b/rigs/heft-node-rig/CHANGELOG.md index 902b5d4e2b5..9eac2e6cba0 100644 --- a/rigs/heft-node-rig/CHANGELOG.md +++ b/rigs/heft-node-rig/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log - @rushstack/heft-node-rig -This log was last generated on Fri, 21 Aug 2026 15:16:34 GMT and should not be manually modified. +This log was last generated on Fri, 21 Aug 2026 22:28:47 GMT and should not be manually modified. + +## 2.11.49 +Fri, 21 Aug 2026 22:28:47 GMT + +_Version update only_ ## 2.11.48 Fri, 21 Aug 2026 15:16:34 GMT diff --git a/rigs/heft-vscode-extension-rig/CHANGELOG.json b/rigs/heft-vscode-extension-rig/CHANGELOG.json index 200cb77a188..89130d665c7 100644 --- a/rigs/heft-vscode-extension-rig/CHANGELOG.json +++ b/rigs/heft-vscode-extension-rig/CHANGELOG.json @@ -1,6 +1,18 @@ { "name": "@rushstack/heft-vscode-extension-rig", "entries": [ + { + "version": "1.1.52", + "tag": "@rushstack/heft-vscode-extension-rig_v1.1.52", + "date": "Fri, 21 Aug 2026 22:28:47 GMT", + "comments": { + "dependency": [ + { + "comment": "Updating dependency \"@rushstack/heft-node-rig\" to `2.11.49`" + } + ] + } + }, { "version": "1.1.51", "tag": "@rushstack/heft-vscode-extension-rig_v1.1.51", diff --git a/rigs/heft-vscode-extension-rig/CHANGELOG.md b/rigs/heft-vscode-extension-rig/CHANGELOG.md index cc275a316ec..fa15b35a8f2 100644 --- a/rigs/heft-vscode-extension-rig/CHANGELOG.md +++ b/rigs/heft-vscode-extension-rig/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log - @rushstack/heft-vscode-extension-rig -This log was last generated on Fri, 21 Aug 2026 15:16:34 GMT and should not be manually modified. +This log was last generated on Fri, 21 Aug 2026 22:28:47 GMT and should not be manually modified. + +## 1.1.52 +Fri, 21 Aug 2026 22:28:47 GMT + +_Version update only_ ## 1.1.51 Fri, 21 Aug 2026 15:16:34 GMT diff --git a/rigs/heft-web-rig/CHANGELOG.json b/rigs/heft-web-rig/CHANGELOG.json index 176f440007c..9f254a7b22d 100644 --- a/rigs/heft-web-rig/CHANGELOG.json +++ b/rigs/heft-web-rig/CHANGELOG.json @@ -1,6 +1,18 @@ { "name": "@rushstack/heft-web-rig", "entries": [ + { + "version": "1.4.33", + "tag": "@rushstack/heft-web-rig_v1.4.33", + "date": "Fri, 21 Aug 2026 22:28:47 GMT", + "comments": { + "dependency": [ + { + "comment": "Updating dependency \"@rushstack/eslint-config\" to `4.6.6`" + } + ] + } + }, { "version": "1.4.32", "tag": "@rushstack/heft-web-rig_v1.4.32", diff --git a/rigs/heft-web-rig/CHANGELOG.md b/rigs/heft-web-rig/CHANGELOG.md index c45a2d8a0ae..95555000b58 100644 --- a/rigs/heft-web-rig/CHANGELOG.md +++ b/rigs/heft-web-rig/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log - @rushstack/heft-web-rig -This log was last generated on Fri, 21 Aug 2026 15:16:34 GMT and should not be manually modified. +This log was last generated on Fri, 21 Aug 2026 22:28:47 GMT and should not be manually modified. + +## 1.4.33 +Fri, 21 Aug 2026 22:28:47 GMT + +_Version update only_ ## 1.4.32 Fri, 21 Aug 2026 15:16:34 GMT From 3d0cb9ed2b3c9848f9a89e39be7cdb35548cd4d9 Mon Sep 17 00:00:00 2001 From: Rushbot Date: Fri, 21 Aug 2026 22:28:50 +0000 Subject: [PATCH 13/16] Bump versions [skip ci] --- eslint/eslint-config/package.json | 2 +- eslint/eslint-plugin/package.json | 2 +- rigs/heft-node-rig/package.json | 2 +- rigs/heft-vscode-extension-rig/package.json | 2 +- rigs/heft-web-rig/package.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/eslint/eslint-config/package.json b/eslint/eslint-config/package.json index e9c6edcc5ce..1c5fcbab7b1 100644 --- a/eslint/eslint-config/package.json +++ b/eslint/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/eslint-config", - "version": "4.6.5", + "version": "4.6.6", "description": "A TypeScript ESLint ruleset designed for large teams and projects", "license": "MIT", "repository": { diff --git a/eslint/eslint-plugin/package.json b/eslint/eslint-plugin/package.json index 5aec181a107..274aaa8f818 100644 --- a/eslint/eslint-plugin/package.json +++ b/eslint/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/eslint-plugin", - "version": "0.23.3", + "version": "0.23.4", "description": "An ESLint plugin providing supplementary rules for use with the @rushstack/eslint-config package", "license": "MIT", "repository": { diff --git a/rigs/heft-node-rig/package.json b/rigs/heft-node-rig/package.json index 99a9f6a117d..ecfd12a8141 100644 --- a/rigs/heft-node-rig/package.json +++ b/rigs/heft-node-rig/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/heft-node-rig", - "version": "2.11.48", + "version": "2.11.49", "description": "A rig package for Node.js projects that build using Heft", "license": "MIT", "scripts": { diff --git a/rigs/heft-vscode-extension-rig/package.json b/rigs/heft-vscode-extension-rig/package.json index 8b75a14db99..5c3bcff5382 100644 --- a/rigs/heft-vscode-extension-rig/package.json +++ b/rigs/heft-vscode-extension-rig/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/heft-vscode-extension-rig", - "version": "1.1.51", + "version": "1.1.52", "description": "A rig package for VSCode Extensions that build using Heft", "license": "MIT", "scripts": { diff --git a/rigs/heft-web-rig/package.json b/rigs/heft-web-rig/package.json index b716247fd90..82b089598d0 100644 --- a/rigs/heft-web-rig/package.json +++ b/rigs/heft-web-rig/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/heft-web-rig", - "version": "1.4.32", + "version": "1.4.33", "description": "A rig package for web browser projects that build using Heft", "license": "MIT", "scripts": { From fc3a7a455f4f07ce62a446cd8b0f6c4a33b3977c Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 21 Aug 2026 22:43:23 +0000 Subject: [PATCH 14/16] Fix manual version bump commit flow Co-authored-by: dmichon-msft <26827560+dmichon-msft@users.noreply.github.com> --- ...mp-decoupled-deps_2026-08-21-19-16-39.json | 11 +++++++++ ...tive-private-null_2026-08-19-22-58-08.json | 9 ++++++++ .../templates/bump-versions-stages.yaml | 23 +++++++++---------- .../templates/bump-versions.yaml | 4 ---- .../azure-pipelines/templates/pack.yaml | 3 --- eslint/eslint-config/CHANGELOG.json | 12 ---------- eslint/eslint-config/CHANGELOG.md | 7 +----- eslint/eslint-config/package.json | 2 +- eslint/eslint-plugin/CHANGELOG.json | 12 ---------- eslint/eslint-plugin/CHANGELOG.md | 9 +------- eslint/eslint-plugin/package.json | 2 +- rigs/heft-node-rig/CHANGELOG.json | 12 ---------- rigs/heft-node-rig/CHANGELOG.md | 7 +----- rigs/heft-node-rig/package.json | 2 +- rigs/heft-vscode-extension-rig/CHANGELOG.json | 12 ---------- rigs/heft-vscode-extension-rig/CHANGELOG.md | 7 +----- rigs/heft-vscode-extension-rig/package.json | 2 +- rigs/heft-web-rig/CHANGELOG.json | 12 ---------- rigs/heft-web-rig/CHANGELOG.md | 7 +----- rigs/heft-web-rig/package.json | 2 +- 20 files changed, 41 insertions(+), 116 deletions(-) create mode 100644 common/changes/@rushstack/eslint-plugin/automated-bump-decoupled-deps_2026-08-21-19-16-39.json create mode 100644 common/changes/@rushstack/eslint-plugin/native-private-null_2026-08-19-22-58-08.json diff --git a/common/changes/@rushstack/eslint-plugin/automated-bump-decoupled-deps_2026-08-21-19-16-39.json b/common/changes/@rushstack/eslint-plugin/automated-bump-decoupled-deps_2026-08-21-19-16-39.json new file mode 100644 index 00000000000..eb5d63adacf --- /dev/null +++ b/common/changes/@rushstack/eslint-plugin/automated-bump-decoupled-deps_2026-08-21-19-16-39.json @@ -0,0 +1,11 @@ +{ + "changes": [ + { + "comment": "", + "type": "none", + "packageName": "@rushstack/eslint-plugin" + } + ], + "packageName": "@rushstack/eslint-plugin", + "email": "rushbot@users.noreply.github.com" +} \ No newline at end of file diff --git a/common/changes/@rushstack/eslint-plugin/native-private-null_2026-08-19-22-58-08.json b/common/changes/@rushstack/eslint-plugin/native-private-null_2026-08-19-22-58-08.json new file mode 100644 index 00000000000..f16f9e815e4 --- /dev/null +++ b/common/changes/@rushstack/eslint-plugin/native-private-null_2026-08-19-22-58-08.json @@ -0,0 +1,9 @@ +{ + "changes": [ + { + "packageName": "@rushstack/eslint-plugin", + "comment": "Fix no-new-null false positives for ECMAScript private class members.", + "type": "patch" + } + ] +} diff --git a/common/config/azure-pipelines/templates/bump-versions-stages.yaml b/common/config/azure-pipelines/templates/bump-versions-stages.yaml index aec8dac38b2..63112e86c8f 100644 --- a/common/config/azure-pipelines/templates/bump-versions-stages.yaml +++ b/common/config/azure-pipelines/templates/bump-versions-stages.yaml @@ -67,20 +67,10 @@ stages: - template: /common/config/azure-pipelines/templates/bump-versions.yaml@self parameters: VersionPolicyName: ${{ parameters.VersionPolicyName }} - BranchName: $(BaseBranch) - - - script: 'node libraries/rush-lib/scripts/plugins-prepublish.js' - displayName: 'Prepublish workaround for rush-lib' - - - template: /common/config/azure-pipelines/templates/pack.yaml@self - parameters: - VersionPolicyName: ${{ parameters.VersionPolicyName }} - - - template: /common/config/azure-pipelines/templates/post-publish.yaml@self - bash: | - git add -u - git add -- '**/CHANGELOG.md' '**/CHANGELOG.json' + git add -u -- common/changes + git add -- '**/CHANGELOG.*' '**/package.json' if [ -n "$(git diff --cached --numstat)" ]; then git commit -m "Applying package version bumps @@ -95,6 +85,15 @@ stages: fi displayName: 'Commit Version Bumps' + - script: 'node libraries/rush-lib/scripts/plugins-prepublish.js' + displayName: 'Prepublish workaround for rush-lib' + + - template: /common/config/azure-pipelines/templates/pack.yaml@self + parameters: + VersionPolicyName: ${{ parameters.VersionPolicyName }} + + - template: /common/config/azure-pipelines/templates/post-publish.yaml@self + - template: /common/config/azure-pipelines/templates/push-and-create-github-pr.yaml@self parameters: BranchName: ${{ parameters.FeatureBranch }} diff --git a/common/config/azure-pipelines/templates/bump-versions.yaml b/common/config/azure-pipelines/templates/bump-versions.yaml index 17f8922afbf..4f5ae64806d 100644 --- a/common/config/azure-pipelines/templates/bump-versions.yaml +++ b/common/config/azure-pipelines/templates/bump-versions.yaml @@ -1,9 +1,6 @@ parameters: - name: VersionPolicyName type: string - - name: BranchName - type: string - default: $(Build.SourceBranchName) steps: - template: /common/config/azure-pipelines/templates/install-run-rush.yaml@self @@ -12,5 +9,4 @@ steps: version --bump --version-policy ${{ parameters.VersionPolicyName }} - --target-branch ${{ parameters.BranchName }} DisplayName: 'Rush Version (Policy: ${{ parameters.VersionPolicyName }})' diff --git a/common/config/azure-pipelines/templates/pack.yaml b/common/config/azure-pipelines/templates/pack.yaml index 0fe99c813a3..c5d46fdfe2a 100644 --- a/common/config/azure-pipelines/templates/pack.yaml +++ b/common/config/azure-pipelines/templates/pack.yaml @@ -9,9 +9,6 @@ steps: Arguments: '--help' DisplayName: 'Install Rush' - - bash: 'rm -f "$HOME/.npmrc"' - displayName: 'Clear user npmrc for publish' - - template: /common/config/azure-pipelines/templates/install-run-rush.yaml@self parameters: Arguments: > diff --git a/eslint/eslint-config/CHANGELOG.json b/eslint/eslint-config/CHANGELOG.json index 7ec75053b04..ffcd389bee7 100644 --- a/eslint/eslint-config/CHANGELOG.json +++ b/eslint/eslint-config/CHANGELOG.json @@ -1,18 +1,6 @@ { "name": "@rushstack/eslint-config", "entries": [ - { - "version": "4.6.6", - "tag": "@rushstack/eslint-config_v4.6.6", - "date": "Fri, 21 Aug 2026 22:28:47 GMT", - "comments": { - "dependency": [ - { - "comment": "Updating dependency \"@rushstack/eslint-plugin\" to `0.23.4`" - } - ] - } - }, { "version": "4.6.5", "tag": "@rushstack/eslint-config_v4.6.5", diff --git a/eslint/eslint-config/CHANGELOG.md b/eslint/eslint-config/CHANGELOG.md index 41d74cf26b2..7acab147289 100644 --- a/eslint/eslint-config/CHANGELOG.md +++ b/eslint/eslint-config/CHANGELOG.md @@ -1,11 +1,6 @@ # Change Log - @rushstack/eslint-config -This log was last generated on Fri, 21 Aug 2026 22:28:47 GMT and should not be manually modified. - -## 4.6.6 -Fri, 21 Aug 2026 22:28:47 GMT - -_Version update only_ +This log was last generated on Thu, 20 Aug 2026 00:16:38 GMT and should not be manually modified. ## 4.6.5 Thu, 20 Aug 2026 00:16:38 GMT diff --git a/eslint/eslint-config/package.json b/eslint/eslint-config/package.json index 1c5fcbab7b1..e9c6edcc5ce 100644 --- a/eslint/eslint-config/package.json +++ b/eslint/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/eslint-config", - "version": "4.6.6", + "version": "4.6.5", "description": "A TypeScript ESLint ruleset designed for large teams and projects", "license": "MIT", "repository": { diff --git a/eslint/eslint-plugin/CHANGELOG.json b/eslint/eslint-plugin/CHANGELOG.json index 41aff56b806..a8dd855099c 100644 --- a/eslint/eslint-plugin/CHANGELOG.json +++ b/eslint/eslint-plugin/CHANGELOG.json @@ -1,18 +1,6 @@ { "name": "@rushstack/eslint-plugin", "entries": [ - { - "version": "0.23.4", - "tag": "@rushstack/eslint-plugin_v0.23.4", - "date": "Fri, 21 Aug 2026 22:28:46 GMT", - "comments": { - "patch": [ - { - "comment": "Fix no-new-null false positives for ECMAScript private class members." - } - ] - } - }, { "version": "0.23.3", "tag": "@rushstack/eslint-plugin_v0.23.3", diff --git a/eslint/eslint-plugin/CHANGELOG.md b/eslint/eslint-plugin/CHANGELOG.md index 92919f58028..40aa72a1d8b 100644 --- a/eslint/eslint-plugin/CHANGELOG.md +++ b/eslint/eslint-plugin/CHANGELOG.md @@ -1,13 +1,6 @@ # Change Log - @rushstack/eslint-plugin -This log was last generated on Fri, 21 Aug 2026 22:28:46 GMT and should not be manually modified. - -## 0.23.4 -Fri, 21 Aug 2026 22:28:46 GMT - -### Patches - -- Fix no-new-null false positives for ECMAScript private class members. +This log was last generated on Thu, 20 Aug 2026 00:16:38 GMT and should not be manually modified. ## 0.23.3 Thu, 20 Aug 2026 00:16:38 GMT diff --git a/eslint/eslint-plugin/package.json b/eslint/eslint-plugin/package.json index 274aaa8f818..5aec181a107 100644 --- a/eslint/eslint-plugin/package.json +++ b/eslint/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/eslint-plugin", - "version": "0.23.4", + "version": "0.23.3", "description": "An ESLint plugin providing supplementary rules for use with the @rushstack/eslint-config package", "license": "MIT", "repository": { diff --git a/rigs/heft-node-rig/CHANGELOG.json b/rigs/heft-node-rig/CHANGELOG.json index b6c3f56fc92..48a52b37ff0 100644 --- a/rigs/heft-node-rig/CHANGELOG.json +++ b/rigs/heft-node-rig/CHANGELOG.json @@ -1,18 +1,6 @@ { "name": "@rushstack/heft-node-rig", "entries": [ - { - "version": "2.11.49", - "tag": "@rushstack/heft-node-rig_v2.11.49", - "date": "Fri, 21 Aug 2026 22:28:47 GMT", - "comments": { - "dependency": [ - { - "comment": "Updating dependency \"@rushstack/eslint-config\" to `4.6.6`" - } - ] - } - }, { "version": "2.11.48", "tag": "@rushstack/heft-node-rig_v2.11.48", diff --git a/rigs/heft-node-rig/CHANGELOG.md b/rigs/heft-node-rig/CHANGELOG.md index 9eac2e6cba0..902b5d4e2b5 100644 --- a/rigs/heft-node-rig/CHANGELOG.md +++ b/rigs/heft-node-rig/CHANGELOG.md @@ -1,11 +1,6 @@ # Change Log - @rushstack/heft-node-rig -This log was last generated on Fri, 21 Aug 2026 22:28:47 GMT and should not be manually modified. - -## 2.11.49 -Fri, 21 Aug 2026 22:28:47 GMT - -_Version update only_ +This log was last generated on Fri, 21 Aug 2026 15:16:34 GMT and should not be manually modified. ## 2.11.48 Fri, 21 Aug 2026 15:16:34 GMT diff --git a/rigs/heft-node-rig/package.json b/rigs/heft-node-rig/package.json index ecfd12a8141..99a9f6a117d 100644 --- a/rigs/heft-node-rig/package.json +++ b/rigs/heft-node-rig/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/heft-node-rig", - "version": "2.11.49", + "version": "2.11.48", "description": "A rig package for Node.js projects that build using Heft", "license": "MIT", "scripts": { diff --git a/rigs/heft-vscode-extension-rig/CHANGELOG.json b/rigs/heft-vscode-extension-rig/CHANGELOG.json index 89130d665c7..200cb77a188 100644 --- a/rigs/heft-vscode-extension-rig/CHANGELOG.json +++ b/rigs/heft-vscode-extension-rig/CHANGELOG.json @@ -1,18 +1,6 @@ { "name": "@rushstack/heft-vscode-extension-rig", "entries": [ - { - "version": "1.1.52", - "tag": "@rushstack/heft-vscode-extension-rig_v1.1.52", - "date": "Fri, 21 Aug 2026 22:28:47 GMT", - "comments": { - "dependency": [ - { - "comment": "Updating dependency \"@rushstack/heft-node-rig\" to `2.11.49`" - } - ] - } - }, { "version": "1.1.51", "tag": "@rushstack/heft-vscode-extension-rig_v1.1.51", diff --git a/rigs/heft-vscode-extension-rig/CHANGELOG.md b/rigs/heft-vscode-extension-rig/CHANGELOG.md index fa15b35a8f2..cc275a316ec 100644 --- a/rigs/heft-vscode-extension-rig/CHANGELOG.md +++ b/rigs/heft-vscode-extension-rig/CHANGELOG.md @@ -1,11 +1,6 @@ # Change Log - @rushstack/heft-vscode-extension-rig -This log was last generated on Fri, 21 Aug 2026 22:28:47 GMT and should not be manually modified. - -## 1.1.52 -Fri, 21 Aug 2026 22:28:47 GMT - -_Version update only_ +This log was last generated on Fri, 21 Aug 2026 15:16:34 GMT and should not be manually modified. ## 1.1.51 Fri, 21 Aug 2026 15:16:34 GMT diff --git a/rigs/heft-vscode-extension-rig/package.json b/rigs/heft-vscode-extension-rig/package.json index 5c3bcff5382..8b75a14db99 100644 --- a/rigs/heft-vscode-extension-rig/package.json +++ b/rigs/heft-vscode-extension-rig/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/heft-vscode-extension-rig", - "version": "1.1.52", + "version": "1.1.51", "description": "A rig package for VSCode Extensions that build using Heft", "license": "MIT", "scripts": { diff --git a/rigs/heft-web-rig/CHANGELOG.json b/rigs/heft-web-rig/CHANGELOG.json index 9f254a7b22d..176f440007c 100644 --- a/rigs/heft-web-rig/CHANGELOG.json +++ b/rigs/heft-web-rig/CHANGELOG.json @@ -1,18 +1,6 @@ { "name": "@rushstack/heft-web-rig", "entries": [ - { - "version": "1.4.33", - "tag": "@rushstack/heft-web-rig_v1.4.33", - "date": "Fri, 21 Aug 2026 22:28:47 GMT", - "comments": { - "dependency": [ - { - "comment": "Updating dependency \"@rushstack/eslint-config\" to `4.6.6`" - } - ] - } - }, { "version": "1.4.32", "tag": "@rushstack/heft-web-rig_v1.4.32", diff --git a/rigs/heft-web-rig/CHANGELOG.md b/rigs/heft-web-rig/CHANGELOG.md index 95555000b58..c45a2d8a0ae 100644 --- a/rigs/heft-web-rig/CHANGELOG.md +++ b/rigs/heft-web-rig/CHANGELOG.md @@ -1,11 +1,6 @@ # Change Log - @rushstack/heft-web-rig -This log was last generated on Fri, 21 Aug 2026 22:28:47 GMT and should not be manually modified. - -## 1.4.33 -Fri, 21 Aug 2026 22:28:47 GMT - -_Version update only_ +This log was last generated on Fri, 21 Aug 2026 15:16:34 GMT and should not be manually modified. ## 1.4.32 Fri, 21 Aug 2026 15:16:34 GMT diff --git a/rigs/heft-web-rig/package.json b/rigs/heft-web-rig/package.json index 82b089598d0..b716247fd90 100644 --- a/rigs/heft-web-rig/package.json +++ b/rigs/heft-web-rig/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/heft-web-rig", - "version": "1.4.33", + "version": "1.4.32", "description": "A rig package for web browser projects that build using Heft", "license": "MIT", "scripts": { From eb015541661843ce485ba87d54d0a6a68be58fb3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Fri, 21 Aug 2026 22:47:39 +0000 Subject: [PATCH 15/16] Use safe bump tag delimiter Co-authored-by: dmichon-msft <26827560+dmichon-msft@users.noreply.github.com> --- .../azure-pipelines/templates/bump-versions-stages.yaml | 4 ++-- .../config/azure-pipelines/templates/esrp-publish-stages.yaml | 2 +- .../azure-pipelines/templates/find-bump-pipeline-run.yaml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/common/config/azure-pipelines/templates/bump-versions-stages.yaml b/common/config/azure-pipelines/templates/bump-versions-stages.yaml index 63112e86c8f..3dc1291c8c5 100644 --- a/common/config/azure-pipelines/templates/bump-versions-stages.yaml +++ b/common/config/azure-pipelines/templates/bump-versions-stages.yaml @@ -3,7 +3,7 @@ # There is one bump pipeline per version policy; each of them builds the repo, bumps the versions # for its own version policy, packs the resulting tarballs and opens a GitHub PR with the changes. # The packed tarballs are published to the npm feed later by the matching "esrp publish" pipeline, -# which locates this pipeline run via the "bump-versions:" build tag. +# which locates this pipeline run via the "bump-versions|" build tag. parameters: - name: VersionPolicyName @@ -104,7 +104,7 @@ stages: set -e BUMP_SHA=$(git rev-parse HEAD) echo "##vso[task.setvariable variable=BumpSha;isOutput=true]${BUMP_SHA}" - echo "##vso[build.addbuildtag]bump-versions:${BUMP_SHA}" + echo "##vso[build.addbuildtag]bump-versions|${BUMP_SHA}" echo "Tagged build with bump SHA: ${BUMP_SHA}" name: TagBuild displayName: 'Tag build with bump commit SHA' diff --git a/common/config/azure-pipelines/templates/esrp-publish-stages.yaml b/common/config/azure-pipelines/templates/esrp-publish-stages.yaml index b8657dc9df7..ca18ebf66d0 100644 --- a/common/config/azure-pipelines/templates/esrp-publish-stages.yaml +++ b/common/config/azure-pipelines/templates/esrp-publish-stages.yaml @@ -2,7 +2,7 @@ # # There is one publish pipeline per version policy. Each of them is triggered when the version bump # PR produced by the matching bump pipeline is merged to main; it locates the originating bump -# pipeline run (via the "bump-versions:" build tag) and publishes the tarballs that were packed +# pipeline run (via the "bump-versions|" build tag) and publishes the tarballs that were packed # by that run to the npm feed via ESRP. parameters: diff --git a/common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml b/common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml index f221c726526..7467f7970fa 100644 --- a/common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml +++ b/common/config/azure-pipelines/templates/find-bump-pipeline-run.yaml @@ -71,7 +71,7 @@ steps: echo "Found merged PR #${PR_NUMBER}; head SHA: ${HEAD_SHA}" - BUMP_TAG="bump-versions:${HEAD_SHA}" + BUMP_TAG="bump-versions|${HEAD_SHA}" ENCODED_TAG=$(url_encode "$BUMP_TAG") BUILDS_URL="${SYSTEM_COLLECTIONURI}${{ parameters.TeamProject }}/_apis/build/builds?definitions=${PIPELINE_ID}&tagFilters=${ENCODED_TAG}&queryOrder=finishTimeDescending&\$top=1&api-version=7.1" From f82a99b76f5cecd4b3d5969dec98c1dc525d828c Mon Sep 17 00:00:00 2001 From: Rushbot Date: Fri, 21 Aug 2026 23:06:48 +0000 Subject: [PATCH 16/16] Applying package version bumps Pipeline Run: https://dev.azure.com/RushStack/GitHubProjects/_build/results?buildId=12638 Run ID: 12638 --- apps/rush/CHANGELOG.json | 43 +++++++++++++++++++ apps/rush/CHANGELOG.md | 24 ++++++++++- apps/rush/package.json | 2 +- ...pace-cycle-detection_2026-07-23-01-32.json | 9 ---- .../rush/bmiddha-runner-persist-policy.json | 9 ---- ...move-external-filter_2026-03-16-21-07.json | 10 ----- ...compiler-baseline_2026-08-18-03-14-04.json | 9 ---- ...e-global-pnpmfile_2026-08-04-08-30-00.json | 10 ----- .../rush/node-26_2026-08-17-12-00.json | 10 ----- ...consumer-contract_2026-08-18-03-14-04.json | 9 ---- .../rush/pr-5802_2026-08-13-00-09-36.json | 11 ----- ...hboard-select-all_2026-08-07-15-26-00.json | 10 ----- ...hd-wire-layer-ws1_2026-08-14-05-30-00.json | 11 ----- ...mp-decoupled-deps_2026-08-21-19-16-39.json | 11 ----- ...tive-private-null_2026-08-19-22-58-08.json | 9 ---- eslint/eslint-config/CHANGELOG.json | 12 ++++++ eslint/eslint-config/CHANGELOG.md | 7 ++- eslint/eslint-config/package.json | 2 +- eslint/eslint-plugin/CHANGELOG.json | 12 ++++++ eslint/eslint-plugin/CHANGELOG.md | 9 +++- eslint/eslint-plugin/package.json | 2 +- libraries/rush-lib/package.json | 2 +- libraries/rush-sdk/package.json | 2 +- rigs/heft-node-rig/CHANGELOG.json | 12 ++++++ rigs/heft-node-rig/CHANGELOG.md | 7 ++- rigs/heft-node-rig/package.json | 2 +- rigs/heft-vscode-extension-rig/CHANGELOG.json | 12 ++++++ rigs/heft-vscode-extension-rig/CHANGELOG.md | 7 ++- rigs/heft-vscode-extension-rig/package.json | 2 +- rigs/heft-web-rig/CHANGELOG.json | 12 ++++++ rigs/heft-web-rig/CHANGELOG.md | 7 ++- rigs/heft-web-rig/package.json | 2 +- .../package.json | 2 +- .../package.json | 2 +- .../rush-bridge-cache-plugin/package.json | 2 +- .../rush-buildxl-graph-plugin/package.json | 2 +- .../rush-http-build-cache-plugin/package.json | 2 +- .../rush-redis-cobuild-plugin/package.json | 2 +- .../rush-resolver-cache-plugin/package.json | 2 +- rush-plugins/rush-serve-plugin/package.json | 2 +- 40 files changed, 174 insertions(+), 140 deletions(-) delete mode 100644 common/changes/@microsoft/rush/add-workspace-cycle-detection_2026-07-23-01-32.json delete mode 100644 common/changes/@microsoft/rush/bmiddha-runner-persist-policy.json delete mode 100644 common/changes/@microsoft/rush/copilot-remove-external-filter_2026-03-16-21-07.json delete mode 100644 common/changes/@microsoft/rush/es2022-compiler-baseline_2026-08-18-03-14-04.json delete mode 100644 common/changes/@microsoft/rush/fix-pnpm11-subspace-global-pnpmfile_2026-08-04-08-30-00.json delete mode 100644 common/changes/@microsoft/rush/node-26_2026-08-17-12-00.json delete mode 100644 common/changes/@microsoft/rush/node20-consumer-contract_2026-08-18-03-14-04.json delete mode 100644 common/changes/@microsoft/rush/pr-5802_2026-08-13-00-09-36.json delete mode 100644 common/changes/@microsoft/rush/rush-serve-dashboard-select-all_2026-08-07-15-26-00.json delete mode 100644 common/changes/@microsoft/rush/thelarkinn-rushd-wire-layer-ws1_2026-08-14-05-30-00.json delete mode 100644 common/changes/@rushstack/eslint-plugin/automated-bump-decoupled-deps_2026-08-21-19-16-39.json delete mode 100644 common/changes/@rushstack/eslint-plugin/native-private-null_2026-08-19-22-58-08.json diff --git a/apps/rush/CHANGELOG.json b/apps/rush/CHANGELOG.json index 350eadec0c9..ee40eea4516 100644 --- a/apps/rush/CHANGELOG.json +++ b/apps/rush/CHANGELOG.json @@ -1,6 +1,49 @@ { "name": "@microsoft/rush", "entries": [ + { + "version": "5.178.2", + "tag": "@microsoft/rush_v5.178.2", + "date": "Fri, 21 Aug 2026 23:06:47 GMT", + "comments": { + "minor": [ + { + "comment": "Add early validation to `rush install`/`rush update` that immediately fails with a meaningful error message if an undeclared cycle is detected among workspace packages, specifying the cycle path." + }, + { + "comment": "Add a per-iteration, host-driven runner persist policy so IPC runners can be kept hot or torn down per operation per iteration, instead of fixing persistence at plugin construction." + } + ], + "patch": [ + { + "comment": "In PnpmShrinkwrapFile getIntegrityForImporter, remove the external filter and include workspace-local link: dependencies by recursing into their importer entries, so shrinkwrap-deps.json hashes cover the full dependency tree." + }, + { + "comment": "Fix cross-subspace `workspace:*` dependency failures with pnpm 11." + }, + { + "comment": "Fix `file:` dependency context resolution to use canonical dependency keys for pnpm v9/v10." + }, + { + "comment": "Allow Ctrl+A and Command+A to select text in Rush serve dashboard fields." + }, + { + "comment": "Add an optional internal IOperationGraphEventSink dual-emit hook to OperationGraph/OperationExecutionRecord: structured operation registration/status/header/activity events and an id-tagged per-operation raw output tap, with no change to existing terminal output." + } + ], + "none": [ + { + "comment": "Update class field declarations for ES2022 emit semantics." + }, + { + "comment": "Add support for Node 26." + }, + { + "comment": "Require Node.js 20.9 or newer for the Rush bootstrap and runtime." + } + ] + } + }, { "version": "5.178.1", "tag": "@microsoft/rush_v5.178.1", diff --git a/apps/rush/CHANGELOG.md b/apps/rush/CHANGELOG.md index 78a3e35f0a5..13e3cbef3a9 100644 --- a/apps/rush/CHANGELOG.md +++ b/apps/rush/CHANGELOG.md @@ -1,6 +1,28 @@ # Change Log - @microsoft/rush -This log was last generated on Wed, 05 Aug 2026 19:31:07 GMT and should not be manually modified. +This log was last generated on Fri, 21 Aug 2026 23:06:47 GMT and should not be manually modified. + +## 5.178.2 +Fri, 21 Aug 2026 23:06:47 GMT + +### Minor changes + +- Add early validation to `rush install`/`rush update` that immediately fails with a meaningful error message if an undeclared cycle is detected among workspace packages, specifying the cycle path. +- Add a per-iteration, host-driven runner persist policy so IPC runners can be kept hot or torn down per operation per iteration, instead of fixing persistence at plugin construction. + +### Patches + +- In PnpmShrinkwrapFile getIntegrityForImporter, remove the external filter and include workspace-local link: dependencies by recursing into their importer entries, so shrinkwrap-deps.json hashes cover the full dependency tree. +- Fix cross-subspace `workspace:*` dependency failures with pnpm 11. +- Fix `file:` dependency context resolution to use canonical dependency keys for pnpm v9/v10. +- Allow Ctrl+A and Command+A to select text in Rush serve dashboard fields. +- Add an optional internal IOperationGraphEventSink dual-emit hook to OperationGraph/OperationExecutionRecord: structured operation registration/status/header/activity events and an id-tagged per-operation raw output tap, with no change to existing terminal output. + +### Updates + +- Update class field declarations for ES2022 emit semantics. +- Add support for Node 26. +- Require Node.js 20.9 or newer for the Rush bootstrap and runtime. ## 5.178.1 Wed, 05 Aug 2026 19:31:07 GMT diff --git a/apps/rush/package.json b/apps/rush/package.json index 38b775062e6..49eb94d73f0 100644 --- a/apps/rush/package.json +++ b/apps/rush/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/rush", - "version": "5.178.1", + "version": "5.178.2", "description": "A professional solution for consolidating all your JavaScript projects in one Git repo", "keywords": [ "install", diff --git a/common/changes/@microsoft/rush/add-workspace-cycle-detection_2026-07-23-01-32.json b/common/changes/@microsoft/rush/add-workspace-cycle-detection_2026-07-23-01-32.json deleted file mode 100644 index 970da9764da..00000000000 --- a/common/changes/@microsoft/rush/add-workspace-cycle-detection_2026-07-23-01-32.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "changes": [ - { - "packageName": "@microsoft/rush", - "comment": "Add early validation to `rush install`/`rush update` that immediately fails with a meaningful error message if an undeclared cycle is detected among workspace packages, specifying the cycle path.", - "type": "minor" - } - ] -} diff --git a/common/changes/@microsoft/rush/bmiddha-runner-persist-policy.json b/common/changes/@microsoft/rush/bmiddha-runner-persist-policy.json deleted file mode 100644 index c084a6f1098..00000000000 --- a/common/changes/@microsoft/rush/bmiddha-runner-persist-policy.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "changes": [ - { - "packageName": "@microsoft/rush", - "comment": "Add a per-iteration, host-driven runner persist policy so IPC runners can be kept hot or torn down per operation per iteration, instead of fixing persistence at plugin construction.", - "type": "minor" - } - ] -} diff --git a/common/changes/@microsoft/rush/copilot-remove-external-filter_2026-03-16-21-07.json b/common/changes/@microsoft/rush/copilot-remove-external-filter_2026-03-16-21-07.json deleted file mode 100644 index e91bc81bdc6..00000000000 --- a/common/changes/@microsoft/rush/copilot-remove-external-filter_2026-03-16-21-07.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "comment": "In PnpmShrinkwrapFile getIntegrityForImporter, remove the external filter and include workspace-local link: dependencies by recursing into their importer entries, so shrinkwrap-deps.json hashes cover the full dependency tree.", - "type": "patch", - "packageName": "@microsoft/rush" - } - ], - "packageName": "@microsoft/rush" -} diff --git a/common/changes/@microsoft/rush/es2022-compiler-baseline_2026-08-18-03-14-04.json b/common/changes/@microsoft/rush/es2022-compiler-baseline_2026-08-18-03-14-04.json deleted file mode 100644 index 00311c9f9d9..00000000000 --- a/common/changes/@microsoft/rush/es2022-compiler-baseline_2026-08-18-03-14-04.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "changes": [ - { - "packageName": "@microsoft/rush", - "comment": "Update class field declarations for ES2022 emit semantics.", - "type": "none" - } - ] -} diff --git a/common/changes/@microsoft/rush/fix-pnpm11-subspace-global-pnpmfile_2026-08-04-08-30-00.json b/common/changes/@microsoft/rush/fix-pnpm11-subspace-global-pnpmfile_2026-08-04-08-30-00.json deleted file mode 100644 index 8a316848947..00000000000 --- a/common/changes/@microsoft/rush/fix-pnpm11-subspace-global-pnpmfile_2026-08-04-08-30-00.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@microsoft/rush", - "comment": "Fix cross-subspace `workspace:*` dependency failures with pnpm 11.", - "type": "patch" - } - ], - "packageName": "@microsoft/rush" -} diff --git a/common/changes/@microsoft/rush/node-26_2026-08-17-12-00.json b/common/changes/@microsoft/rush/node-26_2026-08-17-12-00.json deleted file mode 100644 index dc5b3d23a46..00000000000 --- a/common/changes/@microsoft/rush/node-26_2026-08-17-12-00.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@microsoft/rush", - "comment": "Add support for Node 26.", - "type": "none" - } - ], - "packageName": "@microsoft/rush" -} diff --git a/common/changes/@microsoft/rush/node20-consumer-contract_2026-08-18-03-14-04.json b/common/changes/@microsoft/rush/node20-consumer-contract_2026-08-18-03-14-04.json deleted file mode 100644 index 73689523cb3..00000000000 --- a/common/changes/@microsoft/rush/node20-consumer-contract_2026-08-18-03-14-04.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "changes": [ - { - "packageName": "@microsoft/rush", - "comment": "Require Node.js 20.9 or newer for the Rush bootstrap and runtime.", - "type": "none" - } - ] -} diff --git a/common/changes/@microsoft/rush/pr-5802_2026-08-13-00-09-36.json b/common/changes/@microsoft/rush/pr-5802_2026-08-13-00-09-36.json deleted file mode 100644 index ba465a740a1..00000000000 --- a/common/changes/@microsoft/rush/pr-5802_2026-08-13-00-09-36.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "changes": [ - { - "comment": "Fix `file:` dependency context resolution to use canonical dependency keys for pnpm v9/v10.", - "type": "patch", - "packageName": "@microsoft/rush" - } - ], - "packageName": "@microsoft/rush", - "email": "5100938+bmiddha@users.noreply.github.com" -} \ No newline at end of file diff --git a/common/changes/@microsoft/rush/rush-serve-dashboard-select-all_2026-08-07-15-26-00.json b/common/changes/@microsoft/rush/rush-serve-dashboard-select-all_2026-08-07-15-26-00.json deleted file mode 100644 index 633261c2710..00000000000 --- a/common/changes/@microsoft/rush/rush-serve-dashboard-select-all_2026-08-07-15-26-00.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "changes": [ - { - "packageName": "@microsoft/rush", - "comment": "Allow Ctrl+A and Command+A to select text in Rush serve dashboard fields.", - "type": "patch" - } - ], - "packageName": "@microsoft/rush" -} diff --git a/common/changes/@microsoft/rush/thelarkinn-rushd-wire-layer-ws1_2026-08-14-05-30-00.json b/common/changes/@microsoft/rush/thelarkinn-rushd-wire-layer-ws1_2026-08-14-05-30-00.json deleted file mode 100644 index 9a954f01b9c..00000000000 --- a/common/changes/@microsoft/rush/thelarkinn-rushd-wire-layer-ws1_2026-08-14-05-30-00.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "changes": [ - { - "packageName": "@microsoft/rush", - "type": "patch", - "comment": "Add an optional internal IOperationGraphEventSink dual-emit hook to OperationGraph/OperationExecutionRecord: structured operation registration/status/header/activity events and an id-tagged per-operation raw output tap, with no change to existing terminal output." - } - ], - "email": "TheLarkInn@users.noreply.github.com", - "packageName": "@microsoft/rush" -} diff --git a/common/changes/@rushstack/eslint-plugin/automated-bump-decoupled-deps_2026-08-21-19-16-39.json b/common/changes/@rushstack/eslint-plugin/automated-bump-decoupled-deps_2026-08-21-19-16-39.json deleted file mode 100644 index eb5d63adacf..00000000000 --- a/common/changes/@rushstack/eslint-plugin/automated-bump-decoupled-deps_2026-08-21-19-16-39.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "changes": [ - { - "comment": "", - "type": "none", - "packageName": "@rushstack/eslint-plugin" - } - ], - "packageName": "@rushstack/eslint-plugin", - "email": "rushbot@users.noreply.github.com" -} \ No newline at end of file diff --git a/common/changes/@rushstack/eslint-plugin/native-private-null_2026-08-19-22-58-08.json b/common/changes/@rushstack/eslint-plugin/native-private-null_2026-08-19-22-58-08.json deleted file mode 100644 index f16f9e815e4..00000000000 --- a/common/changes/@rushstack/eslint-plugin/native-private-null_2026-08-19-22-58-08.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "changes": [ - { - "packageName": "@rushstack/eslint-plugin", - "comment": "Fix no-new-null false positives for ECMAScript private class members.", - "type": "patch" - } - ] -} diff --git a/eslint/eslint-config/CHANGELOG.json b/eslint/eslint-config/CHANGELOG.json index ffcd389bee7..5804a97ee66 100644 --- a/eslint/eslint-config/CHANGELOG.json +++ b/eslint/eslint-config/CHANGELOG.json @@ -1,6 +1,18 @@ { "name": "@rushstack/eslint-config", "entries": [ + { + "version": "4.6.6", + "tag": "@rushstack/eslint-config_v4.6.6", + "date": "Fri, 21 Aug 2026 23:06:47 GMT", + "comments": { + "dependency": [ + { + "comment": "Updating dependency \"@rushstack/eslint-plugin\" to `0.23.4`" + } + ] + } + }, { "version": "4.6.5", "tag": "@rushstack/eslint-config_v4.6.5", diff --git a/eslint/eslint-config/CHANGELOG.md b/eslint/eslint-config/CHANGELOG.md index 7acab147289..b1d3934ac0a 100644 --- a/eslint/eslint-config/CHANGELOG.md +++ b/eslint/eslint-config/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log - @rushstack/eslint-config -This log was last generated on Thu, 20 Aug 2026 00:16:38 GMT and should not be manually modified. +This log was last generated on Fri, 21 Aug 2026 23:06:47 GMT and should not be manually modified. + +## 4.6.6 +Fri, 21 Aug 2026 23:06:47 GMT + +_Version update only_ ## 4.6.5 Thu, 20 Aug 2026 00:16:38 GMT diff --git a/eslint/eslint-config/package.json b/eslint/eslint-config/package.json index e9c6edcc5ce..1c5fcbab7b1 100644 --- a/eslint/eslint-config/package.json +++ b/eslint/eslint-config/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/eslint-config", - "version": "4.6.5", + "version": "4.6.6", "description": "A TypeScript ESLint ruleset designed for large teams and projects", "license": "MIT", "repository": { diff --git a/eslint/eslint-plugin/CHANGELOG.json b/eslint/eslint-plugin/CHANGELOG.json index a8dd855099c..6855873de81 100644 --- a/eslint/eslint-plugin/CHANGELOG.json +++ b/eslint/eslint-plugin/CHANGELOG.json @@ -1,6 +1,18 @@ { "name": "@rushstack/eslint-plugin", "entries": [ + { + "version": "0.23.4", + "tag": "@rushstack/eslint-plugin_v0.23.4", + "date": "Fri, 21 Aug 2026 23:06:47 GMT", + "comments": { + "patch": [ + { + "comment": "Fix no-new-null false positives for ECMAScript private class members." + } + ] + } + }, { "version": "0.23.3", "tag": "@rushstack/eslint-plugin_v0.23.3", diff --git a/eslint/eslint-plugin/CHANGELOG.md b/eslint/eslint-plugin/CHANGELOG.md index 40aa72a1d8b..cef34e2b324 100644 --- a/eslint/eslint-plugin/CHANGELOG.md +++ b/eslint/eslint-plugin/CHANGELOG.md @@ -1,6 +1,13 @@ # Change Log - @rushstack/eslint-plugin -This log was last generated on Thu, 20 Aug 2026 00:16:38 GMT and should not be manually modified. +This log was last generated on Fri, 21 Aug 2026 23:06:47 GMT and should not be manually modified. + +## 0.23.4 +Fri, 21 Aug 2026 23:06:47 GMT + +### Patches + +- Fix no-new-null false positives for ECMAScript private class members. ## 0.23.3 Thu, 20 Aug 2026 00:16:38 GMT diff --git a/eslint/eslint-plugin/package.json b/eslint/eslint-plugin/package.json index 5aec181a107..274aaa8f818 100644 --- a/eslint/eslint-plugin/package.json +++ b/eslint/eslint-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/eslint-plugin", - "version": "0.23.3", + "version": "0.23.4", "description": "An ESLint plugin providing supplementary rules for use with the @rushstack/eslint-config package", "license": "MIT", "repository": { diff --git a/libraries/rush-lib/package.json b/libraries/rush-lib/package.json index c1e072cd268..dad76f66997 100644 --- a/libraries/rush-lib/package.json +++ b/libraries/rush-lib/package.json @@ -1,6 +1,6 @@ { "name": "@microsoft/rush-lib", - "version": "5.178.1", + "version": "5.178.2", "description": "A library for writing scripts that interact with the Rush tool", "repository": { "type": "git", diff --git a/libraries/rush-sdk/package.json b/libraries/rush-sdk/package.json index 801c66f20fa..b60554f790c 100644 --- a/libraries/rush-sdk/package.json +++ b/libraries/rush-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/rush-sdk", - "version": "5.178.1", + "version": "5.178.2", "description": "An API for interacting with the Rush engine", "repository": { "type": "git", diff --git a/rigs/heft-node-rig/CHANGELOG.json b/rigs/heft-node-rig/CHANGELOG.json index 48a52b37ff0..e05acf92706 100644 --- a/rigs/heft-node-rig/CHANGELOG.json +++ b/rigs/heft-node-rig/CHANGELOG.json @@ -1,6 +1,18 @@ { "name": "@rushstack/heft-node-rig", "entries": [ + { + "version": "2.11.49", + "tag": "@rushstack/heft-node-rig_v2.11.49", + "date": "Fri, 21 Aug 2026 23:06:47 GMT", + "comments": { + "dependency": [ + { + "comment": "Updating dependency \"@rushstack/eslint-config\" to `4.6.6`" + } + ] + } + }, { "version": "2.11.48", "tag": "@rushstack/heft-node-rig_v2.11.48", diff --git a/rigs/heft-node-rig/CHANGELOG.md b/rigs/heft-node-rig/CHANGELOG.md index 902b5d4e2b5..75fc086ba77 100644 --- a/rigs/heft-node-rig/CHANGELOG.md +++ b/rigs/heft-node-rig/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log - @rushstack/heft-node-rig -This log was last generated on Fri, 21 Aug 2026 15:16:34 GMT and should not be manually modified. +This log was last generated on Fri, 21 Aug 2026 23:06:47 GMT and should not be manually modified. + +## 2.11.49 +Fri, 21 Aug 2026 23:06:47 GMT + +_Version update only_ ## 2.11.48 Fri, 21 Aug 2026 15:16:34 GMT diff --git a/rigs/heft-node-rig/package.json b/rigs/heft-node-rig/package.json index 99a9f6a117d..ecfd12a8141 100644 --- a/rigs/heft-node-rig/package.json +++ b/rigs/heft-node-rig/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/heft-node-rig", - "version": "2.11.48", + "version": "2.11.49", "description": "A rig package for Node.js projects that build using Heft", "license": "MIT", "scripts": { diff --git a/rigs/heft-vscode-extension-rig/CHANGELOG.json b/rigs/heft-vscode-extension-rig/CHANGELOG.json index 200cb77a188..4cab4875b81 100644 --- a/rigs/heft-vscode-extension-rig/CHANGELOG.json +++ b/rigs/heft-vscode-extension-rig/CHANGELOG.json @@ -1,6 +1,18 @@ { "name": "@rushstack/heft-vscode-extension-rig", "entries": [ + { + "version": "1.1.52", + "tag": "@rushstack/heft-vscode-extension-rig_v1.1.52", + "date": "Fri, 21 Aug 2026 23:06:47 GMT", + "comments": { + "dependency": [ + { + "comment": "Updating dependency \"@rushstack/heft-node-rig\" to `2.11.49`" + } + ] + } + }, { "version": "1.1.51", "tag": "@rushstack/heft-vscode-extension-rig_v1.1.51", diff --git a/rigs/heft-vscode-extension-rig/CHANGELOG.md b/rigs/heft-vscode-extension-rig/CHANGELOG.md index cc275a316ec..6c54066f050 100644 --- a/rigs/heft-vscode-extension-rig/CHANGELOG.md +++ b/rigs/heft-vscode-extension-rig/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log - @rushstack/heft-vscode-extension-rig -This log was last generated on Fri, 21 Aug 2026 15:16:34 GMT and should not be manually modified. +This log was last generated on Fri, 21 Aug 2026 23:06:47 GMT and should not be manually modified. + +## 1.1.52 +Fri, 21 Aug 2026 23:06:47 GMT + +_Version update only_ ## 1.1.51 Fri, 21 Aug 2026 15:16:34 GMT diff --git a/rigs/heft-vscode-extension-rig/package.json b/rigs/heft-vscode-extension-rig/package.json index 8b75a14db99..5c3bcff5382 100644 --- a/rigs/heft-vscode-extension-rig/package.json +++ b/rigs/heft-vscode-extension-rig/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/heft-vscode-extension-rig", - "version": "1.1.51", + "version": "1.1.52", "description": "A rig package for VSCode Extensions that build using Heft", "license": "MIT", "scripts": { diff --git a/rigs/heft-web-rig/CHANGELOG.json b/rigs/heft-web-rig/CHANGELOG.json index 176f440007c..479cf726333 100644 --- a/rigs/heft-web-rig/CHANGELOG.json +++ b/rigs/heft-web-rig/CHANGELOG.json @@ -1,6 +1,18 @@ { "name": "@rushstack/heft-web-rig", "entries": [ + { + "version": "1.4.33", + "tag": "@rushstack/heft-web-rig_v1.4.33", + "date": "Fri, 21 Aug 2026 23:06:47 GMT", + "comments": { + "dependency": [ + { + "comment": "Updating dependency \"@rushstack/eslint-config\" to `4.6.6`" + } + ] + } + }, { "version": "1.4.32", "tag": "@rushstack/heft-web-rig_v1.4.32", diff --git a/rigs/heft-web-rig/CHANGELOG.md b/rigs/heft-web-rig/CHANGELOG.md index c45a2d8a0ae..2dc6ede2a18 100644 --- a/rigs/heft-web-rig/CHANGELOG.md +++ b/rigs/heft-web-rig/CHANGELOG.md @@ -1,6 +1,11 @@ # Change Log - @rushstack/heft-web-rig -This log was last generated on Fri, 21 Aug 2026 15:16:34 GMT and should not be manually modified. +This log was last generated on Fri, 21 Aug 2026 23:06:47 GMT and should not be manually modified. + +## 1.4.33 +Fri, 21 Aug 2026 23:06:47 GMT + +_Version update only_ ## 1.4.32 Fri, 21 Aug 2026 15:16:34 GMT diff --git a/rigs/heft-web-rig/package.json b/rigs/heft-web-rig/package.json index b716247fd90..82b089598d0 100644 --- a/rigs/heft-web-rig/package.json +++ b/rigs/heft-web-rig/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/heft-web-rig", - "version": "1.4.32", + "version": "1.4.33", "description": "A rig package for web browser projects that build using Heft", "license": "MIT", "scripts": { diff --git a/rush-plugins/rush-amazon-s3-build-cache-plugin/package.json b/rush-plugins/rush-amazon-s3-build-cache-plugin/package.json index 7c514881d93..dcee5d1ff2d 100644 --- a/rush-plugins/rush-amazon-s3-build-cache-plugin/package.json +++ b/rush-plugins/rush-amazon-s3-build-cache-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/rush-amazon-s3-build-cache-plugin", - "version": "5.178.1", + "version": "5.178.2", "description": "Rush plugin for Amazon S3 cloud build cache", "repository": { "type": "git", diff --git a/rush-plugins/rush-azure-storage-build-cache-plugin/package.json b/rush-plugins/rush-azure-storage-build-cache-plugin/package.json index 932d0d46597..49188dc62b4 100644 --- a/rush-plugins/rush-azure-storage-build-cache-plugin/package.json +++ b/rush-plugins/rush-azure-storage-build-cache-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/rush-azure-storage-build-cache-plugin", - "version": "5.178.1", + "version": "5.178.2", "description": "Rush plugin for Azure storage cloud build cache", "repository": { "type": "git", diff --git a/rush-plugins/rush-bridge-cache-plugin/package.json b/rush-plugins/rush-bridge-cache-plugin/package.json index ab4bd627746..7f07ff232e4 100644 --- a/rush-plugins/rush-bridge-cache-plugin/package.json +++ b/rush-plugins/rush-bridge-cache-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/rush-bridge-cache-plugin", - "version": "5.178.1", + "version": "5.178.2", "description": "Rush plugin that provides a --set-cache-only command flag to populate the cache from content on disk.", "license": "MIT", "main": "./lib-commonjs/index.js", diff --git a/rush-plugins/rush-buildxl-graph-plugin/package.json b/rush-plugins/rush-buildxl-graph-plugin/package.json index 3ff07970ed9..d64ae5dd32d 100644 --- a/rush-plugins/rush-buildxl-graph-plugin/package.json +++ b/rush-plugins/rush-buildxl-graph-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/rush-buildxl-graph-plugin", - "version": "5.178.1", + "version": "5.178.2", "description": "Rush plugin for generating a BuildXL graph.", "repository": { "type": "git", diff --git a/rush-plugins/rush-http-build-cache-plugin/package.json b/rush-plugins/rush-http-build-cache-plugin/package.json index 1474e117534..7fbf268b60e 100644 --- a/rush-plugins/rush-http-build-cache-plugin/package.json +++ b/rush-plugins/rush-http-build-cache-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/rush-http-build-cache-plugin", - "version": "5.178.1", + "version": "5.178.2", "description": "Rush plugin for generic HTTP cloud build cache", "repository": { "type": "git", diff --git a/rush-plugins/rush-redis-cobuild-plugin/package.json b/rush-plugins/rush-redis-cobuild-plugin/package.json index 6870c959362..31891744592 100644 --- a/rush-plugins/rush-redis-cobuild-plugin/package.json +++ b/rush-plugins/rush-redis-cobuild-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/rush-redis-cobuild-plugin", - "version": "5.178.1", + "version": "5.178.2", "description": "Rush plugin for Redis cobuild lock", "repository": { "type": "git", diff --git a/rush-plugins/rush-resolver-cache-plugin/package.json b/rush-plugins/rush-resolver-cache-plugin/package.json index 6fe1b367520..1f4b60da3fd 100644 --- a/rush-plugins/rush-resolver-cache-plugin/package.json +++ b/rush-plugins/rush-resolver-cache-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/rush-resolver-cache-plugin", - "version": "5.178.1", + "version": "5.178.2", "description": "A Rush plugin that generates a resolver cache file after successful install.", "license": "MIT", "repository": { diff --git a/rush-plugins/rush-serve-plugin/package.json b/rush-plugins/rush-serve-plugin/package.json index 3035020f5e7..d92882699b7 100644 --- a/rush-plugins/rush-serve-plugin/package.json +++ b/rush-plugins/rush-serve-plugin/package.json @@ -1,6 +1,6 @@ { "name": "@rushstack/rush-serve-plugin", - "version": "5.178.1", + "version": "5.178.2", "description": "A Rush plugin that hooks into a rush action and serves output folders from all projects in the repository.", "license": "MIT", "repository": {