9f084dbcb4
Add an 'orchestrator' and 'worker' mode to the BuildXLNugetInstaller so that the version is decided only on a single agent in a distributed build: this avoids race conditions between the agents when resolving a version. In the future this strategy might be adopted to the configuration download itself, but for that a prerequisite is that the configuration is distributed in a versioned manner (like Nuget), so for now it is good enough to keep this logic as specific to the BuildXL installer. This PR also adds an integration pipeline to test the installer before releasing. This pipeline exercises a straightforward flow and also the worker-orchestrator consistency when using the distributed mode. |
||
---|---|---|
.azdo | ||
.config | ||
.gdn | ||
.vscode | ||
Documentation | ||
Examples | ||
Private | ||
Public | ||
Shared | ||
cg | ||
secrets/CodeSign | ||
third_party | ||
.ci-npmrc | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
.npmrc | ||
.sscignore | ||
AnyBuild.json | ||
AnyBuildTest.json | ||
BuildCache.cmd | ||
BuildCacheDefault.json | ||
BuildCacheDefaultNetCore.json | ||
BuildCacheOverride.json | ||
CODEOWNERS | ||
CODE_OF_CONDUCT.md | ||
CONTRIBUTING.md | ||
CreatePr.cmd | ||
LICENSE | ||
NOTICE.txt | ||
README.md | ||
RunBxlWithPAT.ps1 | ||
RunCheckInTests-Test.cmd | ||
RunCheckInTests.cmd | ||
RunCheckInTestsWithPAT.ps1 | ||
SECURITY.md | ||
SlimBuildForMacTests.cmd | ||
buddy.cmd | ||
bxl.cmd | ||
bxl.sh | ||
bxlanalyzer.cmd | ||
clean.bat | ||
config.dsc | ||
config.microsoftInternal.dsc | ||
config.nuget.aspNetCore.dsc | ||
config.nuget.dotnetcore.dsc | ||
config.nuget.grpc.dsc | ||
config.nuget.vssdk.dsc | ||
domino.cmd | ||
drop.cmd | ||
dropout.cmd | ||
dropout.ps1 | ||
killbxl.cmd | ||
unix.mounts.dsc | ||
yarn.lock |
README.md
BuildXL (Microsoft Build Accelerator)
Introduction
BuildXL (Microsoft Build Accelerator) is a build engine originally developed for large internal teams at Microsoft. Internally at Microsoft, BuildXL runs 150,000+ builds per day on monorepo codebases up to a half-terabyte in size with a half-million process executions per build. It leverages distribution to thousands of data center machines and petabytes of source code, package, and build output caching. Thousands of developers use BuildXL on their desktops for faster builds.
BuildXL accelerates multiple build languages, including:
- JavaScript
- MSBuild
- Ninja (CMake)
- Its own internal scripting language, DScript, an experimental TypeScript based format used as an intermediate language by a small number of teams inside Microsoft
BuildXL has a command-line interface. There are currently no plans to integrate it into Visual Studio. The project is open source in the spirit of transparency of our engineering system. You may find our technology useful if you face similar issues of scale. Note that BuildXL is not intended as a replacement for MSBuild or to indicate any future direction of build languages from Microsoft.
OS compatibility:
- Windows 10+
- Ubuntu 20.04
Examples
See the Examples/
folder for basic project examples.
Documentation
The BuildXL documentation landing page is here and look at the developer guide in order to understand how to build and use BuildXL.