/// <summary> /// Queries TFS for a list of build definitions /// </summary> /// <param name="projectName">If set, only builddefs for this project are queried</param> /// <param name="buildName"></param> /// <returns></returns> public static IEnumerable<IBuildDefinitionQueryResult> QueryBuildDefinitions(ICommonStructureService css, IBuildServer bs, string projectName = "", string buildName = "") { var specs = new List<IBuildDefinitionSpec>(); if (String.IsNullOrWhiteSpace(projectName)) { // Get a query spec for each team project if (String.IsNullOrWhiteSpace(buildName)) specs.AddRange(css.ListProjects().Select(pi => bs.CreateBuildDefinitionSpec(pi.Name))); else specs.AddRange(css.ListProjects().Select(pi => bs.CreateBuildDefinitionSpec(pi.Name, buildName))); } else { // Get a query spec just for this team project if (String.IsNullOrWhiteSpace(buildName)) specs.Add(bs.CreateBuildDefinitionSpec(projectName)); else specs.Add(bs.CreateBuildDefinitionSpec(projectName, buildName)); } // Query the definitions var results = bs.QueryBuildDefinitions(specs.ToArray()); return results; }
static void QueryBuildDefinitions(IBuildServer buildServer) { Console.WriteLine(); Console.WriteLine("QueryBuildDefinitions:"); IBuildDefinition[] buildDefinitions = buildServer.QueryBuildDefinitions("Contoso"); foreach (var buildDefinition in buildDefinitions) { Console.WriteLine("\t{0}", buildDefinition.Name); } }
static void BulkUpdateController(IBuildServer buildServer) { IBuildDefinition[] buildDefinitions = buildServer.QueryBuildDefinitions("Contoso"); IBuildController defaultBuildController = buildServer.QueryBuildServiceHosts("*") .Where(bsh => bsh.Controller != null).Select(bsh => bsh.Controller).First(); foreach (IBuildDefinition buildDefinition in buildDefinitions) { buildDefinition.BuildController = defaultBuildController; buildDefinition.Save(); } }
public void ConnectToTfsServer(string hostname, string teamCollection, string projectName, string buildDefinitionName = null) { _hostname = hostname; _isWebServer = _hostname.Contains("://"); try { string url; if (_isWebServer) { _hostname = _hostname.TrimEnd('\\', '/'); url = _hostname + "/" + teamCollection; _urlPrefix = hostname + "/" + teamCollection + "/" + projectName + "/_build#buildUri="; } else { url = "http://" + _hostname + ":8080/tfs/" + teamCollection; _urlPrefix = "http://" + hostname + ":8080/tfs/Build/Build.aspx?artifactMoniker="; } _tfsCollection = new TfsTeamProjectCollection(new Uri(url), new TfsClientCredentials()); _buildServer = _tfsCollection.GetService<IBuildServer>(); var buildDefs = _buildServer.QueryBuildDefinitions(projectName); if (buildDefs.Length != 0) { _buildDefinition = string.IsNullOrWhiteSpace(buildDefinitionName) ? buildDefs[0] : buildDefs.FirstOrDefault(b => string.Compare(b.Name, buildDefinitionName, StringComparison.InvariantCultureIgnoreCase) == 0); } } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
public void ConnectToTfsServer(string hostname, string teamCollection, string projectName, Regex buildDefinitionNameFilter = null) { _hostname = hostname; _isWebServer = _hostname.Contains("://"); try { string url; if (_isWebServer) { _hostname = _hostname.TrimEnd('\\', '/'); url = _hostname + "/" + teamCollection; _urlPrefix = hostname + "/" + teamCollection + "/" + projectName + "/_build#buildUri="; } else { url = "http://" + _hostname + ":8080/tfs/" + teamCollection; _urlPrefix = "http://" + hostname + ":8080/tfs/Build/Build.aspx?artifactMoniker="; } _tfsCollection = new TfsTeamProjectCollection(new Uri(url), new TfsClientCredentials()); _buildServer = _tfsCollection.GetService <IBuildServer>(); var buildDefs = _buildServer.QueryBuildDefinitions(projectName); if (buildDefs.Length != 0) { _buildDefinitions = string.IsNullOrWhiteSpace(buildDefinitionNameFilter.ToString()) ? buildDefs : (buildDefs.Where(b => buildDefinitionNameFilter.IsMatch(b.Name))).Cast <IBuildDefinition>().ToArray(); } } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
public void ConnectToTfsServer(string hostname, string teamCollection, string projectName, Regex buildDefinitionNameFilter = null) { _hostname = hostname; _isWebServer = _hostname.Contains("://"); try { string url; if (_isWebServer) { _hostname = _hostname.TrimEnd('\\', '/'); url = _hostname + "/" + teamCollection; _urlPrefix = hostname + "/" + teamCollection + "/" + projectName + "/_build#buildUri="; } else { url = "http://" + _hostname + ":8080/tfs/" + teamCollection; _urlPrefix = "http://" + hostname + ":8080/tfs/Build/Build.aspx?artifactMoniker="; } _tfsCollection = new TfsTeamProjectCollection(new Uri(url), new TfsClientCredentials()); _buildServer = _tfsCollection.GetService<IBuildServer>(); var buildDefs = _buildServer.QueryBuildDefinitions(projectName); if (buildDefs.Length != 0) { _buildDefinitions = string.IsNullOrWhiteSpace(buildDefinitionNameFilter.ToString()) ? buildDefs : (buildDefs.Where(b => buildDefinitionNameFilter.IsMatch(b.Name))).Cast<IBuildDefinition>().ToArray(); } } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
public void BuildCopy() { if (string.IsNullOrEmpty(_configuration.Source) || string.IsNullOrEmpty(_configuration.ProjectSource) || string.IsNullOrEmpty(_configuration.Destination) || string.IsNullOrEmpty(_configuration.ProjectDestination)) { WriteHelp(); return; } IBuildServer buildServerSource = GetTfsBuildServer(_configuration.Source); IBuildServer buildServerDestination = GetTfsBuildServer(_configuration.Destination); IBuildDefinition[] sourceBuildDefinitions = buildServerSource.QueryBuildDefinitions(_configuration.ProjectSource); foreach (var sourceBuildDef in sourceBuildDefinitions) { IBuildDefinition targetBuildDef = buildServerDestination.CreateBuildDefinition(_configuration.ProjectDestination); Copy(sourceBuildDef, targetBuildDef); targetBuildDef.Save(); } }
internal static void Add_BuildDefinitions(XlHlp.XlLocation insertAt, Options_AZDO_TFS options, IBuildServer buildServer, TeamProject teamProject) { Int64 startTicks = Log.APPLICATION("Enter", Common.LOG_CATEGORY); try { var buildDefinitions = buildServer.QueryBuildDefinitions(teamProject.Name); foreach (IBuildDefinition buildDef in buildDefinitions) { insertAt.ClearOffsets(); XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), string.Format("{0}", teamProject.Name)); XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), string.Format("{0}", buildDef.Name)); XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), string.Format("{0}", buildDef.Description)); XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), string.Format("{0}", buildDef.QueueStatus)); insertAt.IncrementRows(); } } catch (Exception ex) { insertAt.ClearOffsets(); XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), string.Format("{0}", teamProject.Name)); XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), string.Format("{0}", "<N/A>")); XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), string.Format("{0}", "<N/A>")); XlHlp.AddOffsetContentToCell(insertAt.AddOffsetColumn(), string.Format("{0}", "<N/A>")); insertAt.IncrementRows(); } Log.APPLICATION("Exit", Common.LOG_CATEGORY, startTicks); }
public static IList <BuildProcessTemplateInfo> GetBuildProcessTemplates(ApplicationTask task, IBuildServer buildServer, IEnumerable <string> teamProjectNames) { var processTemplates = new List <BuildProcessTemplateInfo>(); var step = 0; foreach (var teamProjectName in teamProjectNames) { task.SetProgress(step++, string.Format(CultureInfo.CurrentCulture, "Processing Team Project \"{0}\"", teamProjectName)); try { var teamProjectBuildDefinitions = buildServer.QueryBuildDefinitions(teamProjectName, QueryOptions.Process); foreach (var processTemplate in buildServer.QueryProcessTemplates(teamProjectName)) { var processTemplateBuildDefinitions = new List <IBuildDefinition>(); foreach (var teamProjectBuildDefinition in teamProjectBuildDefinitions) { if (teamProjectBuildDefinition.Process != null && BuildProcessTemplateInfo.AreEquivalent(teamProjectBuildDefinition.Process, processTemplate)) { processTemplateBuildDefinitions.Add(teamProjectBuildDefinition); } } processTemplates.Add(new BuildProcessTemplateInfo(processTemplate, processTemplateBuildDefinitions)); } } catch (Exception exc) { task.SetWarning(string.Format(CultureInfo.CurrentCulture, "An error occurred while processing Team Project \"{0}\"", teamProjectName), exc); } if (task.IsCanceled) { task.Status = "Canceled"; break; } } return(processTemplates); }
private static int ExportBuilds(IBuildServer buildServer) { IBuildDefinition[] defs = buildServer.QueryBuildDefinitions(TeamProject); if (!Directory.Exists(ExportPath)) { Console.WriteLine("ExportPath not found, creating: {0}", ExportPath); Directory.CreateDirectory(ExportPath); } Console.WriteLine("Exporting {0} definitions to: {1}", defs.Length, ExportPath); Console.WriteLine(string.Empty); foreach (var b in defs) { Console.WriteLine(b.Name); BuildManagerViewModel.ExportDefinition(new BuildDefinitionViewModel(b), ExportPath); } Console.WriteLine(string.Empty); Console.WriteLine("{0} definitions exported to: {1}", defs.Length, ExportPath); return(0); }
public void ConnectToTfsServer(string hostname, string teamCollection, string projectName, string buildDefinitionName = null) { _hostname = hostname; _isWebServer = _hostname.Contains("://"); try { string url; if (_isWebServer) { _hostname = _hostname.TrimEnd('\\', '/'); url = _hostname + "/" + teamCollection; _urlPrefix = hostname + "/" + teamCollection + "/" + projectName + "/_build#buildUri="; } else { url = "http://" + _hostname + ":8080/tfs/" + teamCollection; _urlPrefix = "http://" + hostname + ":8080/tfs/Build/Build.aspx?artifactMoniker="; } // Get a connection to the desired Team Foundation Server _tfServer = TeamFoundationServerFactory.GetServer(url, new UICredentialsProvider()); // Get a reference to a build service _buildServer = _tfServer.GetService<IBuildServer>(); // Retrieve a list of build definitions var buildDefs = _buildServer.QueryBuildDefinitions(projectName); if (buildDefs.Length != 0) { if (string.IsNullOrWhiteSpace(buildDefinitionName)) _buildDefinition = buildDefs[0]; else { foreach (var buildDefinition in buildDefs) { if (string.Compare(buildDefinition.Name, buildDefinitionName, true) == 0) { _buildDefinition = buildDefinition; return; } } } } } catch (Exception ex) { Trace.WriteLine(ex.Message); } }
private static int ExportBuilds(IBuildServer buildServer) { IBuildDefinition[] defs = buildServer.QueryBuildDefinitions(TeamProject); if (!Directory.Exists(ExportPath)) { Console.WriteLine("ExportPath not found, creating: {0}", ExportPath); Directory.CreateDirectory(ExportPath); } Console.WriteLine("Exporting {0} definitions to: {1}", defs.Length, ExportPath); Console.WriteLine(string.Empty); foreach (var b in defs) { Console.WriteLine(b.Name); BuildManagerViewModel.ExportDefinition(new BuildDefinitionViewModel(b), ExportPath); } Console.WriteLine(string.Empty); Console.WriteLine("{0} definitions exported to: {1}", defs.Length, ExportPath); return 0; }
public IEnumerable <string> GetBuildDefinitions(string projectName) { var buildDefinitions = buildServer.QueryBuildDefinitions(projectName); return(buildDefinitions.Select(b => b.Name).ToList()); }
static void QueueAllBuildDefinitions(IBuildServer buildServer) { foreach (IBuildDefinition buildDefinition in buildServer.QueryBuildDefinitions("Contoso")) { IBuildRequest request; request = buildDefinition.CreateBuildRequest(); buildServer.QueueBuild(request); } }
// Grab all build definitions private IBuildDefinition[] GetAllBuildDefinitionsFromTheTeamProject() { _bs = _tfs.GetService <IBuildServer>(); return(_bs.QueryBuildDefinitions(_selectedTeamProject)); }
private void InitBuild() { buildServer = tfsCollection.GetService<IBuildServer>(); var allBuilds = buildServer.QueryBuildDefinitions("*"); MessageBox.Show(this, string.Join("\n", allBuilds.Select(b => b.TeamProject + "\\" + b.Name).OrderBy(e => e))); }
public static void RegisterBuildProcessTemplate(ApplicationTask task, IBuildServer buildServer, IEnumerable <string> teamProjectNames, string templateServerPath, ProcessTemplateType templateType, bool registerIfTemplateDoesNotExist, bool unregisterAllOtherTemplates, bool unregisterAllOtherTemplatesIncludesUpgradeTemplate, bool simulate) { var step = 0; foreach (var teamProjectName in teamProjectNames) { try { task.SetProgress(step++, string.Format(CultureInfo.CurrentCulture, "Processing Team Project \"{0}\"", teamProjectName)); var allTemplates = buildServer.QueryProcessTemplates(teamProjectName); var matchingTemplates = allTemplates.Where(t => t.ServerPath.Equals(templateServerPath, StringComparison.OrdinalIgnoreCase)).ToList(); if (unregisterAllOtherTemplates) { var templatesToUnregister = allTemplates.Except(matchingTemplates); if (!unregisterAllOtherTemplatesIncludesUpgradeTemplate) { templatesToUnregister = templatesToUnregister.Where(t => t.TemplateType != ProcessTemplateType.Upgrade); } foreach (var templateToUnregister in templatesToUnregister) { task.Status = string.Format(CultureInfo.CurrentCulture, "Unregistering existing build process template \"{0}\"", templateToUnregister.ServerPath); var buildDefinitions = buildServer.QueryBuildDefinitions(teamProjectName, QueryOptions.Process); foreach (var buildDefinition in buildDefinitions) { if (buildDefinition.Process != null && BuildProcessTemplateInfo.AreEquivalent(buildDefinition.Process, templateToUnregister)) { task.SetWarning(string.Format(CultureInfo.CurrentCulture, "WARNING - The build \"{0}\" uses the build process template \"{1}\" that is being unregistered", buildDefinition.Name, templateToUnregister.ServerPath)); } } if (!simulate) { templateToUnregister.Delete(); } } } if (!(unregisterAllOtherTemplates && unregisterAllOtherTemplatesIncludesUpgradeTemplate)) { if (templateType == ProcessTemplateType.Default || templateType == ProcessTemplateType.Upgrade) { // There can be only one upgrade or default template for a team project. // Make sure there isn't already a template with that type. foreach (var template in allTemplates.Except(matchingTemplates).Where(t => t.TemplateType == templateType)) { task.Status = string.Format(CultureInfo.CurrentCulture, "Changing type of existing build process template \"{0}\" from \"{1}\" to \"{2}\"", template.ServerPath, template.TemplateType.ToString(), ProcessTemplateType.Custom.ToString()); if (!simulate) { template.TemplateType = ProcessTemplateType.Custom; template.Save(); } } } } if (registerIfTemplateDoesNotExist && !matchingTemplates.Any()) { task.Status = string.Format(CultureInfo.CurrentCulture, "Registering new build process template \"{0}\" as type \"{1}\"", templateServerPath, templateType.ToString()); if (!simulate) { var template = buildServer.CreateProcessTemplate(teamProjectName, templateServerPath); template.TemplateType = templateType; template.Save(); } } else { foreach (var template in matchingTemplates.Where(t => t.TemplateType != templateType)) { task.Status = string.Format(CultureInfo.CurrentCulture, "Changing type of existing build process template \"{0}\" from \"{1}\" to \"{2}\"", template.ServerPath, template.TemplateType.ToString(), templateType.ToString()); if (!simulate) { template.TemplateType = templateType; template.Save(); } } } } catch (Exception exc) { task.SetError(string.Format(CultureInfo.CurrentCulture, "An error occurred while registering the build process template \"{0}\" for Team Project \"{1}\"", templateServerPath, teamProjectName), exc); } if (task.IsCanceled) { task.Status = "Canceled"; break; } } }