private static Dictionary<string, object> GetConfiguration(IBuildGroupItem definition, Options options, CustomBuildType buildType) { var isMain = buildType == CustomBuildType.StandardMain || buildType == CustomBuildType.NoCompileMain; var isRelease = buildType == CustomBuildType.StandardRelease || buildType == CustomBuildType.NoCompileRelease || buildType == CustomBuildType.WindowsService; string subfolder; if (isRelease) subfolder = Constants.ReleaseFolder; else if (isMain) subfolder = Constants.MainFolder; else subfolder = Constants.DevFolder; Dictionary<string, object> config; switch (buildType) { case CustomBuildType.NoCompileDev: case CustomBuildType.NoCompileMain: case CustomBuildType.NoCompileRelease: config = new Dictionary<string, object> { {"CreateWorkItem", false}, {"IsRelease", isRelease}, {"DeploymentPackagesLocation", buildType == CustomBuildType.NoCompileRelease ? CommonData.DeploymentPackagesLocation : null} }; break; case CustomBuildType.WindowsService: config = new Dictionary<string, object> { {"CreateWorkItem", false}, {"PerformTestImpactAnalysis", false}, {"CreateLabel", true}, {"AssociateChangesetsAndWorkItems", false}, {"ConfigurationsToBuild", (isMain || isRelease) ? new[] {Constants.AnyCpuRelease} : new[] {Constants.AnyCpuDebug}}, {"DisableTests", !isRelease}, {"DropBuild", false}, {"IsRelease", isRelease}, {"CustomBinariesReferencePath", Path.Combine(options.SharedTfsLocation, Constants.AssembliesFolder, isRelease ? Constants.ReleaseFolder : Constants.MainFolder)}, {"CustomBinariesDestination", Path.Combine(options.SharedTfsLocation, Constants.AssembliesFolder, subfolder)}, {"SymbolStorePath", Path.Combine(options.SharedTfsLocation, Constants.SymbolsFolder, subfolder)}, }; break; default: config = new Dictionary<string, object> { {"CreateWorkItem", false}, {"PerformTestImpactAnalysis", false}, {"CreateLabel", true}, {"AssociateChangesetsAndWorkItems", false}, {"ConfigurationsToBuild", (isMain || isRelease) ? new[] {Constants.AnyCpuRelease} : new[] {Constants.AnyCpuDebug}}, {"DisableTests", !isRelease}, {"DropBuild", (isMain || isRelease)}, {"IsRelease", isRelease}, {"DeploymentPackagesLocation", buildType == CustomBuildType.StandardRelease ? CommonData.DeploymentPackagesLocation : null}, {"CustomBinariesReferencePath",Path.Combine(options.SharedTfsLocation, Constants.AssembliesFolder, isRelease ? Constants.ReleaseFolder : Constants.MainFolder)}, {"CustomBinariesDestination", Path.Combine(options.SharedTfsLocation, Constants.AssembliesFolder, subfolder)}, {"SymbolStorePath", Path.Combine(options.SharedTfsLocation, Constants.SymbolsFolder, subfolder)}, }; break; } if (!_externalConfiguration.ContainsKey(definition.Name)) return config; var customConfig = _externalConfiguration[definition.Name]; foreach (var customConfigItem in customConfig) { if (config.ContainsKey(customConfigItem.Key)) config[customConfigItem.Key] = customConfigItem.Value; else { config.Add(customConfigItem.Key, customConfigItem.Value); } } return config; }
/// <summary> /// Obtain the build type from the build definition name /// </summary> /// <param name="definition"></param> /// <returns></returns> private static CustomBuildType GetBuildType(IBuildGroupItem definition) { var buildType = CustomBuildType.StandardDev; if (definition == null) return buildType; var buildDefName = definition.Name.ToLower(); if (buildDefName.EndsWith(Constants.ServiceBuildsNameExtension.ToLower())) buildType = CustomBuildType.WindowsService; else if (buildDefName.EndsWith(Constants.ResourcesDevBuildsNameExtension.ToLower())) buildType = CustomBuildType.NoCompileDev; else if (buildDefName.EndsWith(Constants.ResourcesMainBuildsNameExtension.ToLower())) buildType = CustomBuildType.NoCompileMain; else if (buildDefName.EndsWith(Constants.ResourcesReleaseBuildsNameExtension.ToLower())) buildType = CustomBuildType.NoCompileRelease; else if (buildDefName.StartsWith(Constants.CdnBuildsNamePrefix.ToLower())) buildType = CustomBuildType.Cdn;else if (buildDefName.EndsWith(Constants.DevBuildsNameExtension.ToLower())) buildType = CustomBuildType.StandardDev; else if (buildDefName.EndsWith(Constants.MainBuildsNameExtension.ToLower())) buildType = CustomBuildType.StandardMain; else if (buildDefName.EndsWith(Constants.ReleaseBuildsNameExtension.ToLower())) buildType = CustomBuildType.StandardRelease; return buildType; }