Skip to main content

Setting up Visual Studio Team Services to Run with Incredibuild

Prerequisites

This extension is compatible with Visual Studio Team Services (i.e. VSTS) 2015 Update 3 and VSTS 2017. An Incredibuild infrastructure is required to be set in your environment in order to be able to accelerate your VSTS builds. An Incredibuild Agent needs to be installed on each VSTS build agents you’d like to accelerate using the Incredibuild for VSTS extenstion In order to use the Incredibuild VSTS extension, an Enterprise Edition of Incredibuild is required.

Installation

Installing the Incredibuild extension for VSTS is as simple as navigating to the VSTS marketplace, searching for “Incredibuild” and installing the extension. For further information on installing Extensions in VSTS, see Get extensions for Visual Studio Team Services in the VSTS online manual. To install the Incredibuild extension in TFS 2015 Update 3 or TFS 2017, see Get extensions for Team Foundation Server (TFS).

Using the Incredibuild Build Step

The Incredibuild for VSTS Extension provides wrappers around the Incredibuild’s BuildConsole and IBConsole commands as an alternative to running the commands in a shell or using batch scripts. Using the extension will ensure that the command line is properly formatted, including the log console output and parse exit code. 

Adding an Incredibuild Build Step to a VSTS Job

To add an Incredibuild build step to a VSTS jobs:
  1. In your VSTS project, open the Build tab.
  2. Click +New to create a new empty build definition.
  3. In the new build definition click +Add build step… and select either Incredibuild BuildConsole, Incredibuild DevTools or Incredibuild Make and Build Tools.
  1. Once a build step was added, you will be able to configure the step’s parameters just below the step’s title (see screenshots in the following sections). For each parameter, clicking the help icon will open a tooltip with relevant information for the selected parameter.
  2. See the following sections for how to configure each of the Incredibuild build steps.
  3. Click Save on the configuration page. 

Configuring the Incredibuild BuildConsole Step

This build step provides a wrapper around the Incredibuild BuildConsole command, for distributing and accelerating compilations of Visual Studio solutions or projects. For more information on using Incredibuild to accelerate Visual Studio compilations, see Incredibuild for Visual Studio in the Incredibuild online manual.

Required Configurations

The “Target Solution File” configuration field is mandatory and should receive a solution name or project name to be compiled by Incredibuild.

Optional Configurations

Other BuildConsole optional parameters are grouped as: Target and Configuration, Distribution Control, Output and Logging, Miscellaneous and Advanced. For more information about the Incredibuild console configuration fields see the **“**Build Steps Configuration Fields Table” section below. 

Configuring Incredibuild DevTools Step

This build step provides a wrapper around the Incredibuild “IBConsole” command line, geared for accelerating various multi-process custom executions, such as unit tests, QA scripts, packaging, code analysis, asset builds, simulations and others. For more information on using Incredibuild to accelerate Visual Studio compilations, see Incredibuild for DevTools in the Incredibuild online manual. Required Configurations The “Command Line” configuration field is mandatory and should receive the command line to be executed and accelerated by Incredibuild.

Optional Configurations

Other DevTool step optional parameters are grouped as: Target and Configuration, Distribution Control, Output and Logging, Miscellaneous and Advanced. For more information about the Incredibuild console configuration fields see the Build Steps Configuration Fields Table” sectionbelow.  **

Configuring Incredibuild Make and Other Build Tools Step

The Make and Other Build Tools build step provides a wrapper around the Incredibuild “BuildConsole \Command” command line, geared for accelerating the build process of projects based on Make, MSBuild, WAF, ninja, scons, CMake or other build systems that are supported by default by Incredibuild. For a full list of pre-defined supported build tools and more information on using Incredibuild to accelerate Make and other build tools, see Incredibuild for Make and Other Build Tools in the Incredibuild online manual.

Required Configurations

The “Command Line” configuration field is mandatory and should receive the command line to be executed and accelerated by Incredibuild. Note that by default, Incredibuild automatically adds a parallel processes switch (in Make, this switch is named -j; in MSBuild it is /m:). If a parallel processes switch is already part of the command line, Incredibuild will change its value to a larger value in order to execute (and distribute) much more processes in parallel. In MSBuild for example, Incredibuild will change the value of an existing /m switch to a /m64, in the Make build system the -J flag will be changed to -j200. If the executed command is given in a Batch file (i.e. /command = Batchfile), and the MSBuild command that runs the build is inside the Batch file, Incredibuild won’t be able to determine how to change the /m value, and therefore won’t change it. In this case, it is up to the user to replace or add a /m command with a high value to it (the recommendation is more than 40 for MSBuild and more than 100 to Make build system variants). 

Optional Configurations

Other Make and Build Tools optional parameters are grouped as: Target and Configuration, Distribution Control, Output and Logging, Miscellaneous and Advanced. For more information about the Incredibuild console configuration fields see the Build Steps Configuration Fields Table” sectionbelow.  **

Build Steps Configuration Fields Table

Pay attention that some of the configuration fields below are only relevant for BuildConsole tasks and not for DevTools or Make & Build Tools tasks while the Command Line configuration field is only relevant for DevTools or Make & Build Tools tasks. If not specifically mentioned, the configuration field can be applied to all tasks.