Beispiel #1
0
        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;
        }
Beispiel #2
0
 /// <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;
 }