BuildXL/README.md

30 строки
2.0 KiB
Markdown
Исходник Постоянная ссылка Обычный вид История

# BuildXL (Microsoft Build Accelerator)
2018-11-01 02:10:56 +03:00
<img alt="BuildXL Icon" src="Public/Src/Branding/BuildXL.png" width=15%>
2018-11-01 02:10:56 +03:00
## 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](https://en.wikipedia.org/wiki/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:
2018-11-01 02:10:56 +03:00
* [JavaScript](Documentation/Wiki/Frontends/js-onboarding.md)
* [MSBuild](Documentation/Wiki/Frontends/MSBuild/Main.md)
* [Ninja (CMake)](Documentation/Wiki/Frontends/Ninja.md)
* Its own internal scripting language, DScript, an experimental TypeScript based format used as an intermediate language by a small number of teams inside Microsoft
2018-11-01 02:10:56 +03:00
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.
2018-11-01 02:10:56 +03:00
OS compatibility:
* Windows 10+
* Ubuntu 20.04
## Examples
See the `Examples/` folder for basic project examples.
## Documentation
Merged PR 663189: Change maxProcMultiplier to 0.9 by default Added details here: https://microsoft.sharepoint.com/teams/toolsforeng/_layouts/OneNote.aspx?id=%2Fteams%2Ftoolsforeng%2FOne%20Note%2FToolsForSoftwareEngineers%2FBuild%20Tools%2FBuildXL&wd=target%28BuildXL.one%7C10FACD4F-4E15-4FE3-96BA-446F3FE6454E%2FA%5C%2FB%20testing%20for%20performance%7C6D58DC8F-DF8F-49A5-9E70-07DCCA89756B%2F%29 **/abTesting:maxProcNormal=\"/maxProcMultiplier:1\" /abTesting:maxProcLow=\"/maxProcMultiplier:0.9\" /abTesting:maxProcLowest=\"/maxProcMultiplier:0.75\"** ![Screenshot 2022-05-23 200211.png](https://mseng.visualstudio.com/9ed2c125-1cd5-4a17-886b-9d267f3a5fab/_apis/git/repositories/50d331c7-ea65-45eb-833f-0303c6c2387e/pullRequests/663189/attachments/Screenshot%202022-05-23%20200211.png) ![Screenshot 2022-05-23 201930.png](https://mseng.visualstudio.com/9ed2c125-1cd5-4a17-886b-9d267f3a5fab/_apis/git/repositories/50d331c7-ea65-45eb-833f-0303c6c2387e/pullRequests/663189/attachments/Screenshot%202022-05-23%20201930.png) let tonum = (arg0:string) { case(isempty(arg0), 0, tolong(arg0)) }; let tomin = (arg0:string) { myround(tonum(arg0)/60000.0) }; let tohour = (arg0:string) { myround(tonum(arg0)/3600000.0) }; let topercent = (arg0:double, arg1:double) { myround(100.0 * arg0 / arg1) }; database("CloudBuildProd").BuildPerfInfo(startDate=ago(30d), endDate=now(), msrReportable=1, customer="Office") | where NumProcessHits + NumProcessMisses > 0 | join ( dominoinvocation | where Environment contains "Enlist" | parse Environment with * "ABTesting=" AbTestingGroup ";" * | where toint(MachineInfo_ProcessorCount) == 80 ) on $left.BuildId == $right.RelatedSessionId, $left.BuildControllerMachineName == $right.MachineName | summarize NumBuilds = count(), InternalError=countif(ReturnCode contains "InternalError"), TotalExeDuration_avg=myround(avg(ExecuteProcess_Total)), Phase_BuildXL_avg=myround(avg(Phase_BuildXL)), Phase_BuildXL_p50=myround(percentile(Phase_BuildXL, 50)), Success_percent=topercent(countif(ReturnCode == "Success"), count()), NumBuildsMissingWorker_percent=topercent(countif(NumWorkerMissing > 0), count()), NumCacheHitRate_avg=myround(avg(NumCacheHitRate)), TotalMachineHours=round(sum(NumMachineHours)), NumWorkers_avg=myround(avg(NumWorkers)), TotalMaterializationHour_avg=round(avg(TotalMaterializationHour)), TotalMaterializeInputHour_avg=round(avg(TotalMaterializeInputHour)), TotalMaterializedInputGb_avg=myround(avg(TotalMaterializedInputGb)), TotalBuildXLMachineHours=myround(sum(NumActualBuildXLHours)), BuildXLMachineHours_avg=myround(avg(NumActualBuildXLHours)), by AbTestingGroup --------- database("CloudBuildProd").BuildInfo | where BuildEngineType == "OfficeDomino" | where StartTime >= ago(10d) | join ( dominoinvocation | where Environment contains "Enlist" | parse Environment with * "ABTesting=" AbTestingGroup ";" * ) on $left.BuildId == $right.RelatedSessionId, $left.BuildControllerMachi...
2022-05-27 23:21:45 +03:00
The BuildXL documentation landing page is [here](Documentation/INDEX.md) and look at [the developer guide](Documentation/Wiki/DeveloperGuide.md) in order to understand how to build and use BuildXL.
2018-11-08 02:42:12 +03:00
## Build Status - Azure DevOps Pipelines
[![Build status](https://dev.azure.com/mseng/Domino/_apis/build/status/15756?branchName=main)](https://dev.azure.com/mseng/Domino/_build/latest?definitionId=15756)