BuildMaster 6.0 Upgrade Notes

KB#1156: Last Updated Aug 20, 2019

Users who choose to upgrade an existing instance should upgrade to the latest v5.8 version first before upgrading to v6.0+.

Upgrade Notes

BuildMaster 6.0 is a major version with the following changes:

  • .NET 4.5.2+ is required (previous installs required v4.5.0+) (major configuration change)
  • Free edition now grants unlimited users, but all users are full administrators (major configuration change) (details)
  • Multiple license key support is removed in favor of a single license key (major configuration change) (details)
  • SQL Server 2008 or later is required for new installations (major configuration change)
  • Environment assignments to Resource Credentials are enforced during plan execution (major configuration change) (details)
  • Legacy plan action-operation converters in extensions are removed
  • Existing custom extensions must be recompiled against the latest SDK after upgrading to the Inedo.BuildMaster.SDK v6; see upgrading extensions (major configuration change)
  • Legacy features are now hidden by configuration (major configuration change) (details)
  • Deployment plan templates are renamed to Modules
  • New UI styling that still should be familiar to v5 users
  • Application import & export (new feature)
  • Inedo SDK support (new feature)
  • Native API endpoints that were deprecated in v5 are removed

Upgrade Process

Upgrading from a v3 or v4? This document is for informational purposes only, and you should upgrade directly to v6; please see Upgrading from BuildMaster v3 and v4 first.

Upgrading from a 5.x? You should directly upgrade to the latest BuildMaster 5.8 prior to upgrading to v6.

You can upgrade from BuildMaster v5.8 to the latest BuildMaster 6.x simply by downloading and running the installer, removing 5.x extension and installing the 6.x extensions

Risk Mitigation

Although the risks vary depending on which 5.x version you're upgrading from, you should take the following precautions to prevent downtime:

  • Make sure that your BuildMaster database is backed up prior to upgrade
  • Make sure that your Encryption Key is backed up prior to upgrade
  • Make sure that the installation's \Extensions directory is backed up prior to upgrade


Because there are database changes, a rollback will require uninstalling BuildMaster, and then restoring your BuildMaster instance.

Upgrading Extensions

Extensions in BuildMaster v6 can now be compiled against the Inedo.SDK. This also means that existing extensions need to be recompiled against the Inedo.BuildMaster.SDK 6.0, or if no legacy features are used, the latest Inedo.SDK package from NuGet.

Because of this, customers that still use any legacy plans, build importers, source control providers, or issue tracking providers must download the {ExtensionName}Legacy extension in addition to the {ExtensionName} extension counterpart . The complete list of available legacy extensions is here:

  • TFSLegacy
  • JiraLegacy
  • TeamCityLegacy
  • MercurialLegacy
  • JenkinsLegacy
  • FTPLegacy
  • AzureLegacy
  • AmazonLegacy
  • YouTrackLegacy
  • NuGetLegacy
  • WindowsLegacy
  • InedoCoreLegacy

Which NuGet package should I choose?

Extensions that implement any legacy features (e.g. legacy plan actions, source control providers, issue tracker connections, database connections) must use v6 of the Inedo.BuildMaster.SDK. Database calls (i.e. DB.) or references to strongly-typed tables names (i.e. Tables.) are also not available in the Inedo.SDK since it is shared across multiple products. Support for shared/common objects (e.g. servers, roles) is supported via the SDK class.

If no legacy features are used and there is no reliance on specific database calls, the extension should use the latest Inedo.SDK NuGet package. The complete list of Inedo.SDK supported classes can be found in the Inedo SDK Reference.

Upgrading Extensions

Upgrading a pre-v6 extension (whether using the Inedo.BuildMaster.SDK or Inedo.SDK) requires the following:

  • Target framework must be set to .NET 4.5.2 at a minimum
  • For Inedo.BuildMaster.SDK: Upgrade the SDK NuGet package to v6.0.0 (this will also install Inedo.SDK as a dependency)
  • For Inedo.BuildMaster.SDK or Inedo.SDK: Upgrade the Inedo.SDK to the latest version
  • NuGet will automatically reference the following packages, ensure they are set to CopyLocal=false and SpecificVersion=false in the project properties:
    • BuildMaster.Web.Controls (Inedo.BuildMaster.SDK only)
    • BuildMasterCore (Inedo.BuildMaster.SDK only)
    • Inedo.Agents.Client
    • Inedo.ExecutionEngine
    • Inedo.SDK
    • InedoLib
  • To resolve most compiler errors that you will receive on NuGet package upgrade, the ALT+SHIFT+F10 keyboard shortcut that brings up the Light Bulb will quickly apply the appropriate using statements
Class & Namespace Changes
  • PromotionContext no longer implements IGenericBuildMasterContext. While never documented as doing so, explicit casts to this interface must be removed
  • All helper classes marked with System.ObsoleteAttribute in the pre-v6 SDK have been removed in v6. Most replacements to InedoLib.Util. are found in InedoLib.AH
  • ILogger.Log() extensions (e.g. LogDebug, LogError) accepted a format string in v4.X which was deprecated in v5.0, and now removed in v6.0; use string.Format() inside the Log() call instead
Pre-v6 Type Name v6 Replacement
PromotionRequirementBase Inedo.Extensibility.PromotionRequirements.PromotionRequirement
PromotionRequirementEditorBase Inedo.Extensibility.PromotionRequirements.PromotionRequirementEditor
DeprecatedInBuildMasterVersionAttribute System.ObsoleteAttribute
Util.Agents Use context.GetAgent() instead
Util.Artifacts Use Artifact class
SourceControlFileFolderPicker Inedo.Web.ScmBrowserTextBox or Inedo.Web.FileBrowserTextBox
Inedo.BuildMaster.OtterScriptSymbolComparer Inedo.ExecutionEngine.OtterScriptSymbolComparer
Inedo.BuildMaster.Mapping.ICustomArgumentMapper Inedo.ExecutionEngine.Mapping.ICustomArgumentMapper
Inedo.BuildMaster.IssueTrackerConnections.IssueSources Inedo.Extensibility.IssueSources
Inedo.BuildMaster.IssueTrackerConnections.IIssueTrackerIssue Inedo.Extensibility.IIssueTrackerIssue
SuggestibleValue Inedo.Web.SuggestableValue (note the spelling change)
InedoLib.Util.WriteJson(TextWriter, object) Newtonsoft.Json.JsonSerializer.CreateDefault().Serialize(TextWriter, object)

Resource Credentials' Environment Usage

In this version, if a Resource Credential is assigned to an environment, any deployment targets that reference the credential must be associated with that environment, otherwise a run time error will occur.

Legacy Features

In this version, legacy features are hidden from the UI unless configured to be shown on the Advanced Settings page via the Legacy.{FeatureName} settings. Additionally, visiting the Administration > Legacy Features Dashboard and running the detection mechanism will also set the configuration values automatically.

Free Edition Licensing Changes

Before v6.0, BuildMaster Free included 5 users, 10 applications, and 5 servers. Beginning with v6.0, BuildMaster Free is now unlimited users, applications, and servers, but all anonymous users are granted "view-only" privileges and all authenticated users act as full administrators (i.e. all users have every permission granted to them and restrictions are ignored).

Important: any Free Edition users that expose their instance to the internet should be aware that this change effectively turns their BuildMaster instance into a public one, where applications, releases, and execution data can be viewed by any user with access to the web application.

Any existing free users who are negatively affected by this change, visit the contact form and we can send you a new key that will effectively be a 5 user key with no server or application restrictions.

Multiple License Key Support Removed

Important: Take note of your current license key before upgrading in case the latest license key added is not the key that is currently in use.

Multiple license key support will be removed in this version. On upgrade, BuildMaster will use the latest-added & activated license key as the single license key, and references to all others will be removed. If the wrong key was chosen as the single key, you will have to log-in to MyInedo if you did not take note of the current key.