Build Automation Guidelines

Written by Mitch Denny

The purpose of this knowledge base article is to define the standards pertaining to names of build definitions, lab names and drop locations.

Generic Format for Build Definition Names

Readify Cloud uses the following generic format for build definition names:

    [BranchName]_[ComponentName]_[Environment]

What is a [BranchName]?

[BranchName] is a string which uniquely identifies the location of source which this build uses to produce build outputs. Typically a team will target a specific branch when producing a build. The following list provides a location in source control and provides a sample of what the BranchName would be:

    $/[Team Project]/Branches/FeatureA becomes FeatureA

    $/[Team Project]/Trunk becomes Trunk

    $/[Tream Project]/Releases/V1Beta1 becomes V1Beta1

What is a [ComponentName]?

[ComponentName] is a name which can logically identify the nature of the code being built. Often this will be the name of the solution that is being build (where just one solution is being built) or the overall descriptive name where multiple solutions are being built. For example:

    $/[Team Project]/Trunk/MyApplication would have a [ComponentName] of MyApplication

What is a [EnvironmentName]?

This is an optional component which defines which environment this build will be deployed into where Lab Management is being used. Environment Names should represent the nature of the target environment and should align with the environment name inside MTM.

Bringing it Together

If we were building the Trunk for a solution called MyApplication and it was a lab build destined for a single server where the environment name within MTM was called W2K8R2SingleServer then the build definition name would be:

    Trunk_MyApplication_W2K8R2SingleServer

Where it was a CI build (no lab target) this name would be:

    Trunk_MyApplication

And the lab build definition would trigger the Trunk_MyApplication build as part of the process.

Drop Folders

Establishing Drop Folders correctly is critical for the security of the the environment where a single WebDAV endpoint is used to expose all drops. The following standard should be used for naming drop folders:

    \\[drop server fqdn]\builds\[Team Project Collection Name]\[Team Project Name]\

This enables build drops and log files to be easily accessible from within the development environment and from external users without requiring VPN access.