Skip to content

Build Champion

Ladislau Szomoru edited this page Aug 2, 2020 · 30 revisions

This page describes the Build Champion role. This is a weekly rotating role.

Daily Goals

  1. Make sure an Insider build is released daily Build Status
  2. Make sure the Continuous Build for the master branch is green Build Status

Process

Given build failures, make sure to pay attention to the #build Slack channel. It should notify who's likely responsible.

Insider build

Insiders build is scheduled to run every weekday at 5:00 AM UTC. Check the state of the most recent scheduled build and use the steps documented here to troubleshoot the build failures, and produce a successful build.

Troubleshooting build failures

Depending on the nature of the build failure, use the following steps:

  • hygiene or compilation errors - push a commit that fixes them and ping the responsible dev. If the fix isn't trivial, bring in the related developer to come up with a fix.

  • test failures or flaky test - comment out the test and create an issue for the test owner to fix. The rule is: a flaky test is as good as a failing test.

  • code signing errors, retrigger builds. If the errors persist, file an issue to ESRP.

  • other:

    1. Try to reason about the failure, get familiar with the build infrastructure and attempt to fix it.
    2. Reach out to the previous week's Build Champion, they might know something.
    3. Reach out to João/Ladislau. Improve the Build Champion process by documenting whatever he tells you.

After a fix was pushed to address the build failure, manually queue the build.

FAQ

Why do we have two builds?

The Continuous Build is a public, lightweight build which runs on every commit and PR and has access to no credentials. It exists to make sure our code base is clean, compilable and tests are happy on branches and pull requests.

The Product Build is a private, heavyweight build which runs daily to produce Insiders, so it has access to credentials. It exists to create all VS Code distributable assets and place them on our builds page. Note: it's important that it never runs on PRs of external forks of VS Code.

How do the builds run?

All our builds run in Azure DevOps and are scripted using YAML build definition files:

Clone this wiki locally