Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
555d841
Add SourceDirectory replacement variables
ChumpChief Feb 6, 2026
390a269
Use variable for build-client
ChumpChief Feb 6, 2026
e9928c0
Absolute paths for bash tasks
ChumpChief Feb 6, 2026
179bad4
Update install templates
ChumpChief Feb 6, 2026
ac71c0a
Fix cache path
ChumpChief Feb 6, 2026
8e266c7
Update install-build-tools
ChumpChief Feb 6, 2026
894e09c
Update set-package-version
ChumpChief Feb 6, 2026
b9c5235
Update build-lint
ChumpChief Feb 6, 2026
4b40460
npm task and other fixup
ChumpChief Feb 7, 2026
0c005bc
Fixup archive step
ChumpChief Feb 7, 2026
ba3f129
Fixup copy build archive and other SourcesDirectory usages
ChumpChief Feb 7, 2026
9424d8f
Artifact copy fix
ChumpChief Feb 7, 2026
99b6f44
Fixup include-test-task
ChumpChief Feb 9, 2026
629d6b0
Fixup copyresults for taskTests
ChumpChief Feb 9, 2026
4895e0c
Fixup include-process-test-results
ChumpChief Feb 10, 2026
863f124
Update build-npm-package, update build-npm-client-package to specify …
ChumpChief Feb 10, 2026
1362f7a
Update builds that reference build-npm-package
ChumpChief Feb 10, 2026
0bf04ae
Fix repo install of build-tools
ChumpChief Feb 10, 2026
869d3d6
Fix set-package-version
ChumpChief Feb 10, 2026
18cd401
Rooted paths where needed
ChumpChief Feb 10, 2026
200661c
Update policy checks
ChumpChief Feb 10, 2026
488e759
Include variable output
ChumpChief Feb 10, 2026
2c16ee1
Use runtime resolution for variables in template files, and specify c…
ChumpChief Feb 10, 2026
edfe75c
Fix macro expansion, define variables for policy check
ChumpChief Feb 10, 2026
f9d933e
Add debug output for policy check
ChumpChief Feb 10, 2026
c8be296
Update include-policy-check for checkout path
ChumpChief Feb 10, 2026
795e483
Checkout path should always be to the FF directory
ChumpChief Feb 10, 2026
383236b
TODOs for install-pnpm
ChumpChief Feb 10, 2026
78226ea
Add explicit checkout step with path for upload-dev-manifest
ChumpChief Feb 11, 2026
5c91c6a
Use FluidFrameworkDirectory where path requires FF repo root
ChumpChief Feb 19, 2026
39ece40
Update new SourcesDirectory usage
ChumpChief Feb 20, 2026
c9fbe3f
Update upload-dev-manifest.yml
ChumpChief Feb 24, 2026
188e9a9
workingDirectory as workspace
ChumpChief Feb 24, 2026
2d76ae8
Add link to documentation on checkout location
ChumpChief Feb 24, 2026
3481200
Update server pipelines
ChumpChief Feb 24, 2026
c6b3626
Fix publish code coverage
ChumpChief Feb 24, 2026
5aafb2d
Do todos
ChumpChief Feb 25, 2026
50fd6d1
Complete removal of use of SourcesDirectory
ChumpChief Feb 25, 2026
c13c177
Absolute path for WORKING_DIRECTORY
ChumpChief Feb 25, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion tools/pipelines/build-api-markdown-documenter.yml
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ extends:
publish: ${{ variables.publish }}
publishOverride: ${{ parameters.publishOverride }}
releaseBuildOverride: ${{ parameters.releaseBuildOverride }}
buildDirectory: tools/api-markdown-documenter
buildDirectory: ${{ variables.FluidFrameworkDirectory }}/tools/api-markdown-documenter
packageManagerInstallCommand: 'pnpm i --frozen-lockfile'
packageManager: pnpm
testCoverage: ${{ variables.testCoverage }}
Expand Down
2 changes: 1 addition & 1 deletion tools/pipelines/build-benchmark-tool.yml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ extends:
packageManagerInstallCommand: 'pnpm i --frozen-lockfile'
testCoverage: ${{ variables.testCoverage }}
packageManager: pnpm
buildDirectory: tools/benchmark
buildDirectory: ${{ variables.FluidFrameworkDirectory }}/tools/benchmark
tagName: benchmark
taskBuild: build
taskBuildDocs: true
Expand Down
2 changes: 1 addition & 1 deletion tools/pipelines/build-build-common.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ extends:
publishOverride: ${{ parameters.publishOverride }}
releaseBuildOverride: ${{ parameters.releaseBuildOverride }}
buildToolsVersionToInstall: ${{ parameters.buildToolsVersionToInstall }}
buildDirectory: common/build/build-common
buildDirectory: ${{ variables.FluidFrameworkDirectory }}/common/build/build-common
tagName: build-common
packageManagerInstallCommand: 'pnpm i --frozen-lockfile'
packageManager: pnpm
Expand Down
2 changes: 1 addition & 1 deletion tools/pipelines/build-build-tools.yml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ extends:
packageManagerInstallCommand: 'pnpm i --frozen-lockfile'
packageManager: pnpm
testCoverage: ${{ variables.testCoverage }}
buildDirectory: build-tools
buildDirectory: ${{ variables.FluidFrameworkDirectory }}/build-tools
tagName: build-tools
isReleaseGroup: true
taskBuild: build
Expand Down
2 changes: 1 addition & 1 deletion tools/pipelines/build-bundle-size-artifacts.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ extends:
testCoverage: false
packageManagerInstallCommand: 'pnpm i --frozen-lockfile'
packageManager: pnpm
buildDirectory: .
buildDirectory: ${{ variables.FluidFrameworkDirectory }}
tagName: bundle-and-code-coverage-artifacts
# This pipeline doesn't generate production artifacts but the build-npm-package template is too intertwined with
# that scenario, which requires that the pipeline runs in the 1ES pool.
Expand Down
2 changes: 1 addition & 1 deletion tools/pipelines/build-client.yml
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ extends:
packageManager: pnpm
testCoverage: ${{ eq(variables['System.TeamProject'], 'public' ) }} # disabling code coverage for internal project since we don't use it
reportCodeCoverageComparison: ${{ eq(variables['Build.Reason'], 'PullRequest') }}
buildDirectory: .
buildDirectory: ${{ variables.FluidFrameworkDirectory }}
tagName: client
isReleaseGroup: true
poolBuild: Large-eastus2
Expand Down
2 changes: 1 addition & 1 deletion tools/pipelines/build-common-utils.yml
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@ extends:
publishOverride: ${{ parameters.publishOverride }}
releaseBuildOverride: ${{ parameters.releaseBuildOverride }}
buildToolsVersionToInstall: ${{ parameters.buildToolsVersionToInstall }}
buildDirectory: common/lib/common-utils
buildDirectory: ${{ variables.FluidFrameworkDirectory }}/common/lib/common-utils
tagName: common-utils
packageManagerInstallCommand: 'pnpm i --frozen-lockfile'
packageManager: pnpm
Expand Down
34 changes: 18 additions & 16 deletions tools/pipelines/build-docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -97,20 +97,21 @@ stages:
displayName: 'Check Version Deployment Condition'
steps:
- checkout: self
path: $(FluidFrameworkDirectory)
submodules: false
clean: true

- template: /tools/pipelines/templates/include-install-build-tools.yml@self
parameters:
buildDirectory: $(Build.SourcesDirectory)
buildDirectory: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)
- task: Bash@3
name: SetVersion
displayName: 'Set Build Version'
env:
VERSION_BUILDNUMBER: $(Build.BuildNumber)
inputs:
targetType: 'inline'
workingDirectory: $(Build.SourcesDirectory)
workingDirectory: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)
script: |
# Generate the build version. Sets the environment variables version, codeVersion, and isLatest.
flub generate buildVersion
Expand All @@ -119,7 +120,7 @@ stages:
displayName: 'Check Version Deployment Condition'
inputs:
targetType: 'inline'
workingDirectory: $(Build.SourcesDirectory)
workingDirectory: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)
script: |
# Check if the version is the latest minor of its corresponding major version series
# Sets variable shouldDeploy to true if the version is the latest minor and false otherwise
Expand Down Expand Up @@ -172,14 +173,14 @@ stages:

- template: /tools/pipelines/templates/include-install-pnpm.yml@self
parameters:
buildDirectory: $(Build.SourcesDirectory)/docs
buildDirectory: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs

- task: Bash@3
displayName: Install dependencies
retryCountOnTaskFailure: 4
inputs:
targetType: 'inline'
workingDirectory: $(Build.SourcesDirectory)/docs
workingDirectory: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs
script: |
set -eu -o pipefail
pnpm i --frozen-lockfile
Expand All @@ -188,28 +189,28 @@ stages:
displayName: npm run build
inputs:
command: 'custom'
workingDir: $(Build.SourcesDirectory)/docs
workingDir: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs
customCommand: 'run build'

# Run the tests
- task: Npm@1
displayName: Run tests
inputs:
command: 'custom'
workingDir: $(Build.SourcesDirectory)/docs
workingDir: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs
customCommand: 'run test'

- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
displayName: 'Generate SBOM'
inputs:
BuildDropPath: $(Build.SourcesDirectory)/docs/build
BuildDropPath: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs/build
PackageName: 'fluidframework-docs'
PackageVersion: '$(Build.BuildId)'

- task: PublishPipelineArtifact@1
displayName: 'Publish site build artifact'
inputs:
targetPath: '$(Build.SourcesDirectory)/docs/build'
targetPath: '$(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs/build'
artifactName: 'fluidframework-docs'
publishLocation: 'pipeline'

Expand Down Expand Up @@ -262,7 +263,7 @@ stages:
inputs:
GdnBreakPolicyMinSev: Warning
GdnBreakAllTools: true
GdnBreakBaselineFiles: '$(Build.SourcesDirectory)/docs/.gdnbaselines'
GdnBreakBaselineFiles: '$(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs/.gdnbaselines'
GdnBreakGdnToolESLint: true
GdnBreakGdnToolESLintSeverity: Warning
GdnBreakPolicy: M365
Expand All @@ -289,21 +290,22 @@ stages:
continueOnError: true
steps:
- checkout: self
path: $(FluidFrameworkDirectory)
submodules: false
clean: true

- template: /tools/pipelines/templates/include-use-node-version.yml@self

- template: /tools/pipelines/templates/include-install-pnpm.yml@self
parameters:
buildDirectory: $(Build.SourcesDirectory)/docs
buildDirectory: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs

- task: Bash@3
displayName: Install dependencies
retryCountOnTaskFailure: 4
inputs:
targetType: 'inline'
workingDirectory: $(Build.SourcesDirectory)/docs
workingDirectory: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs
script: |
set -eu -o pipefail
# Ensure it's easy to tell which workspace this is running in by inspecting the logs
Expand All @@ -314,14 +316,14 @@ stages:
displayName: Build
inputs:
command: 'custom'
workingDir: $(Build.SourcesDirectory)/docs
workingDir: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs
customCommand: 'run build'

- task: Npm@1
displayName: Validate links
inputs:
command: 'custom'
workingDir: $(Build.SourcesDirectory)/docs
workingDir: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs
customCommand: 'run ci:check-links'

- stage: deploy
Expand Down Expand Up @@ -349,14 +351,14 @@ stages:
inputs:
source: current
artifact: fluidframework-docs
path: '$(Build.SourcesDirectory)/docs/build'
path: '$(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs/build'

- task: AzureStaticWebApp@0
displayName: 'Deploy website to ASWA'
inputs:
skip_app_build: true # site was built in previous stage
skip_api_build: true # api is written in js, no build needed
cwd: $(Build.SourcesDirectory)
cwd: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)
app_location: 'docs/build'
api_location: 'docs/api'
output_location: ''
Expand Down
2 changes: 1 addition & 1 deletion tools/pipelines/build-eslint-config-fluid.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ extends:
publishOverride: ${{ parameters.publishOverride }}
releaseBuildOverride: ${{ parameters.releaseBuildOverride }}
buildToolsVersionToInstall: ${{ parameters.buildToolsVersionToInstall }}
buildDirectory: common/build/eslint-config-fluid
buildDirectory: ${{ variables.FluidFrameworkDirectory }}/common/build/eslint-config-fluid
tagName: eslint-config-fluid
packageManagerInstallCommand: 'pnpm i --frozen-lockfile'
packageManager: pnpm
Expand Down
2 changes: 1 addition & 1 deletion tools/pipelines/build-eslint-plugin-fluid.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ extends:
publishOverride: ${{ parameters.publishOverride }}
releaseBuildOverride: ${{ parameters.releaseBuildOverride }}
buildToolsVersionToInstall: ${{ parameters.buildToolsVersionToInstall }}
buildDirectory: common/build/eslint-plugin-fluid
buildDirectory: ${{ variables.FluidFrameworkDirectory }}/common/build/eslint-plugin-fluid
tagName: eslint-plugin-fluid
packageManagerInstallCommand: 'pnpm i --frozen-lockfile'
packageManager: pnpm
Expand Down
2 changes: 1 addition & 1 deletion tools/pipelines/build-protocol-definitions.yml
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ extends:
publishOverride: ${{ parameters.publishOverride }}
releaseBuildOverride: ${{ parameters.releaseBuildOverride }}
buildToolsVersionToInstall: ${{ parameters.buildToolsVersionToInstall }}
buildDirectory: common/lib/protocol-definitions
buildDirectory: ${{ variables.FluidFrameworkDirectory }}/common/lib/protocol-definitions
packageManagerInstallCommand: 'pnpm i --frozen-lockfile'
packageManager: pnpm
tagName: protocol-definitions
Expand Down
2 changes: 1 addition & 1 deletion tools/pipelines/build-test-tools.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ extends:
publishOverride: ${{ parameters.publishOverride }}
releaseBuildOverride: ${{ parameters.releaseBuildOverride }}
buildToolsVersionToInstall: ${{ parameters.buildToolsVersionToInstall }}
buildDirectory: tools/test-tools
buildDirectory: ${{ variables.FluidFrameworkDirectory }}/tools/test-tools
packageManagerInstallCommand: 'pnpm i --frozen-lockfile'
packageManager: pnpm
testCoverage: ${{ variables.testCoverage }}
Expand Down
33 changes: 18 additions & 15 deletions tools/pipelines/deploy-website.yml
Original file line number Diff line number Diff line change
Expand Up @@ -109,21 +109,22 @@ stages:
pool: Large-eastus2
steps:
- checkout: self
path: $(FluidFrameworkDirectory)
submodules: false
clean: true

- template: /tools/pipelines/templates/include-use-node-version.yml@self

- template: /tools/pipelines/templates/include-install-pnpm.yml@self
parameters:
buildDirectory: $(Build.SourcesDirectory)/docs
buildDirectory: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs

- task: Bash@3
displayName: Install dependencies
retryCountOnTaskFailure: 4
inputs:
targetType: 'inline'
workingDirectory: $(Build.SourcesDirectory)/docs
workingDirectory: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs
script: |
set -eu -o pipefail
# Ensure it's easy to tell which workspace this is running in by inspecting the logs
Expand All @@ -134,7 +135,7 @@ stages:
displayName: npm run build
inputs:
command: 'custom'
workingDir: $(Build.SourcesDirectory)/docs
workingDir: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs
customCommand: 'run build'
env:
INSTRUMENTATION_KEY: $(INSTRUMENTATION_KEY)
Expand All @@ -145,28 +146,28 @@ stages:
displayName: 'Check inline script hashes correctness'
inputs:
targetType: 'filePath'
workingDirectory: $(Build.SourcesDirectory)/docs
filePath: '$(Build.SourcesDirectory)/docs/validateHashes.sh'
workingDirectory: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs
filePath: '$(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs/validateHashes.sh'

# Run the tests
- task: Npm@1
displayName: Run tests
inputs:
command: 'custom'
workingDir: $(Build.SourcesDirectory)/docs
workingDir: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs
customCommand: 'run test'

- task: AzureArtifacts.manifest-generator-task.manifest-generator-task.ManifestGeneratorTask@0
displayName: 'Generate SBOM'
inputs:
BuildDropPath: $(Build.SourcesDirectory)/docs/build
BuildDropPath: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs/build
PackageName: 'fluidframework-docs'
PackageVersion: '$(Build.BuildId)'

- task: PublishPipelineArtifact@1
displayName: 'Publish site build artifact'
inputs:
targetPath: '$(Build.SourcesDirectory)/docs/build'
targetPath: '$(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs/build'
artifactName: 'fluidframework-docs'
publishLocation: 'pipeline'

Expand Down Expand Up @@ -219,7 +220,7 @@ stages:
inputs:
GdnBreakPolicyMinSev: Warning
GdnBreakAllTools: true
GdnBreakBaselineFiles: '$(Build.SourcesDirectory)/docs/.gdnbaselines'
GdnBreakBaselineFiles: '$(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs/.gdnbaselines'
GdnBreakGdnToolESLint: true
GdnBreakGdnToolESLintSeverity: Warning
GdnBreakPolicy: M365
Expand All @@ -246,21 +247,22 @@ stages:
continueOnError: true
steps:
- checkout: self
path: $(FluidFrameworkDirectory)
submodules: false
clean: true

- template: /tools/pipelines/templates/include-use-node-version.yml@self

- template: /tools/pipelines/templates/include-install-pnpm.yml@self
parameters:
buildDirectory: $(Build.SourcesDirectory)/docs
buildDirectory: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs

- task: Bash@3
displayName: Install dependencies
retryCountOnTaskFailure: 4
inputs:
targetType: 'inline'
workingDirectory: $(Build.SourcesDirectory)/docs
workingDirectory: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs
script: |
set -eu -o pipefail
# Ensure it's easy to tell which workspace this is running in by inspecting the logs
Expand All @@ -271,14 +273,14 @@ stages:
displayName: Build
inputs:
command: 'custom'
workingDir: $(Build.SourcesDirectory)/docs
workingDir: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs
customCommand: 'run build'

- task: Npm@1
displayName: Validate links
inputs:
command: 'custom'
workingDir: $(Build.SourcesDirectory)/docs
workingDir: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs
customCommand: 'run ci:check-links'

- stage: deploy
Expand All @@ -298,6 +300,7 @@ stages:
displayName: 'Deploy website'
steps:
- checkout: self
path: $(FluidFrameworkDirectory)
submodules: false
clean: true

Expand All @@ -306,14 +309,14 @@ stages:
inputs:
source: current
artifact: fluidframework-docs
path: '$(Build.SourcesDirectory)/docs/build'
path: '$(Pipeline.Workspace)/$(FluidFrameworkDirectory)/docs/build'

- task: AzureStaticWebApp@0
displayName: 'Deploy website to ASWA'
inputs:
skip_app_build: true # site was built in previous stage
skip_api_build: true # api is written in js, no build needed
cwd: $(Build.SourcesDirectory)
cwd: $(Pipeline.Workspace)/$(FluidFrameworkDirectory)
app_location: 'docs/build'
api_location: 'docs/api'
output_location: ''
Expand Down
Loading
Loading