private void InvokeOnBuildStatusChanged(IQueuedBuildsView buildsView, StatusChangedEventArgs args) { Action <BuildStatusChangedEventArgs> handler = this.OnBuildStatusChanged; if (handler != null) { handler(new BuildStatusChangedEventArgs(args, buildsView)); } }
static void CancelQueuedBuilds(IBuildServer buildServer) { IQueuedBuildsView queuedBuildsView = buildServer.CreateQueuedBuildsView("Contoso"); queuedBuildsView.StatusFilter = QueueStatus.Queued; queuedBuildsView.QueryOptions = QueryOptions.Definitions | QueryOptions.Controllers; queuedBuildsView.Refresh(false); foreach (IQueuedBuild queuedBuild in queuedBuildsView.QueuedBuilds) { queuedBuild.Cancel(); } }
public void ConnectForEvents(string teamProject, QueueStatus queueStatus) { IQueuedBuildsView buildsView = null; lock (sync) { if (buildsViews.ContainsKey(teamProject)) { return; } buildsView = Context.BuildServer.CreateQueuedBuildsView(teamProject); buildsView.StatusFilter = queueStatus; buildsView.StatusChanged += BuildsViewOnStatusChanged; this.buildsViews.Add(teamProject, buildsView); } buildsView.Connect(); }
public void DisconnectAll() { IQueuedBuildsView[] tmp; lock (sync) { tmp = new IQueuedBuildsView[this.buildsViews.Count]; buildsViews.Values.CopyTo(tmp, 0); buildsViews.Clear(); } foreach (IQueuedBuildsView buildsView in tmp) { try { buildsView.StatusChanged -= BuildsViewOnStatusChanged; buildsView.Disconnect(); } catch {} } }
public PipelineEnvironment(DeliveryPipeline pipeline, string environmentName, IBuildDefinition buildDefinition) { Pipeline = pipeline; EnvironmentName = environmentName; BuildDefinition = buildDefinition; IsCommitBuildVisibility = EnvironmentName.Equals("Commit", StringComparison.InvariantCultureIgnoreCase) ? Visibility.Visible : Visibility.Collapsed; LastStatus = new PipelineEnvironmentBuildStatus(null); LastBuildFinishTime = DateTime.MaxValue; LastBuildNumber = "0"; _queuedBuildsView = BuildDefinition.BuildServer.CreateQueuedBuildsView(new Uri[] { BuildDefinition.Uri }); _queuedBuildsView.StatusFilter = QueueStatus.InProgress | QueueStatus.Queued; _queuedBuildsView.QueryOptions = QueryOptions.Definitions; _buildSpec = Pipeline.Source.BuildServer.CreateBuildDetailSpec(BuildDefinition); _buildSpec.InformationTypes = null; StartPolling(); }
/// <summary> /// Create initial connection to the TFS 2008 Build Server. /// </summary> public void Connect() { TeamFoundationServer tfs = new TeamFoundationServer(TfsUrl); IBuildServer buildServer = (IBuildServer)tfs.GetService(typeof(IBuildServer)); buildQueue = buildServer.CreateQueuedBuildsView(TeamProject); // We are only interested in builds when they are finished or as they are in progress buildQueue.StatusFilter = QueueStatus.Completed | QueueStatus.InProgress; // Hook up our build queue listener. buildQueue.StatusChanged += new StatusChangedEventHandler(buildQueue_StatusChanged); try { buildQueue.Connect(); } catch (Exception ex) { } }
private void BuildsViewOnStatusChanged(object sender, StatusChangedEventArgs statusChangedEventArgs) { IQueuedBuildsView buildsView = sender as IQueuedBuildsView; InvokeOnBuildStatusChanged(buildsView, statusChangedEventArgs); }
public BuildStatusChangedEventArgs(StatusChangedEventArgs args, IQueuedBuildsView queue) { this.Args = args; this.Queue = queue; }
internal void PopulateTeamBuilds(bool refresh, bool resort, Action <IBuildDetailSpec> modifyAction) { ListViewCCH listView = GetTreeView(); listView.BeginUpdate(); BackupSelectedItems(); //if (refresh || this.lastSelectedTeamProjectIndex != this.parentControl.selectedTeamProjectIndex || !lastIsQueuedSelected.Equals(IsQueuedSelected)) if (refresh || this.lastAppliedFilterHashCode != UIContext.Instance.ControlTeamBuildFilter.LastAppliedFilterHashCode || !lastIsQueuedSelected.Equals(IsQueuedSelected)) { this.cachedBuilds = null; } if (this.cachedBuilds == null) { string[] checkedProjects = UIContext.Instance.ControlTeamBuildFilter.CheckedProjects; UIContext.Instance.ProgressBegin(checkedProjects.Length, 1); try { this.cachedBuilds = new Dictionary <bool, List <BuildInfo> > { { false, new List <BuildInfo>() }, { true, new List <BuildInfo>() } }; listView.Groups.Clear(); this.teamBuildQualities.Clear(); foreach (string teamProject in checkedProjects) { List <BuildInfo> buildDetails = new List <BuildInfo>(); if (IsQueuedSelected) { IQueuedBuildsView buildsView = Context.BuildServer.CreateQueuedBuildsView(teamProject); buildsView.QueryOptions = QueryOptions.All; buildsView.StatusFilter = QueueStatus.All; buildsView.Refresh(true); IQueuedBuild[] queuedBuilds = buildsView.QueuedBuilds; foreach (var queuedBuild in queuedBuilds) { buildDetails.Add(new BuildInfo(queuedBuild)); } } else { IBuildDetailSpec buildDetailSpec = Context.BuildServer.CreateBuildDetailSpec(teamProject); buildDetailSpec.MaxBuildsPerDefinition = btnLatestBuilds.Checked ? 1 : int.MaxValue; buildDetailSpec.QueryOrder = BuildQueryOrder.StartTimeDescending; buildDetailSpec.Status = BuildStatus.Failed | BuildStatus.NotStarted | BuildStatus.PartiallySucceeded | BuildStatus.Stopped | BuildStatus.Succeeded; if (modifyAction != null) { modifyAction(buildDetailSpec); } IBuildQueryResult builds = Context.BuildServer.QueryBuilds(buildDetailSpec); foreach (var buildDetail in builds.Builds) { buildDetails.Add(new BuildInfo(buildDetail)); } } if (this.cachedBuilds.ContainsKey(this.IsQueuedSelected)) { List <BuildInfo> cachedBuildItems = this.cachedBuilds[this.IsQueuedSelected]; foreach (var item in buildDetails) { cachedBuildItems.Add(item); } } else { this.cachedBuilds.Add(this.IsQueuedSelected, buildDetails); } //this.cachedBuilds.Add(IsQueuedSelected, cachedBuildItems); listView.Groups.Add(teamProject, teamProject); string[] buildQualities = Context.BuildServer.GetBuildQualities(teamProject); this.teamBuildQualities.Add(teamProject, new List <string>(buildQualities)); UIContext.Instance.ProgressDoStep(); } this.lastAppliedFilterHashCode = UIContext.Instance.ControlTeamBuildFilter.LastAppliedFilterHashCode; } finally { UIContext.Instance.ProgressEnd(); } } if (resort) { SortListData(); } listView.Visible = true; try { UIContext.Instance.ProgressBegin(this.cachedBuilds.Count, 1); listView.Items.Clear(); foreach (var cachedBuild in this.cachedBuilds[IsQueuedSelected]) { PopulateListItem(listView, cachedBuild); UIContext.Instance.ProgressDoStep(); } // this.cachedBuilds.ForEach(teamBuild => // { // ListViewItem viewItem = listView.Items.Add(teamBuild.Status.ToString()); // viewItem.UseItemStyleForSubItems = false; // viewItem.StateImageIndex = GetBuildStatusImage(teamBuild.Status); // viewItem.Tag = teamBuild; // viewItem.SubItems.Add(teamBuild.StartTime.ToString()); // viewItem.SubItems.Add(teamBuild.BuildNumber); // viewItem.SubItems.Add(teamBuild.BuildDefinition.Name); // viewItem.SubItems.Add(teamBuild.BuildAgent.Name); // viewItem.SubItems.Add(teamBuild.RequestedBy); // viewItem.SubItems.Add(teamBuild.Quality); // viewItem.SubItems.Add(teamBuild.FinishTime.ToString()); // // bool logFileExists = !string.IsNullOrEmpty(teamBuild.LogLocation) // && File.Exists(teamBuild.LogLocation); // // ListViewItem.ListViewSubItem subItem = viewItem.SubItems.Add(logFileExists ? "Has log" : "No log"); // subItem.ForeColor = logFileExists // ? Color.FromKnownColor(KnownColor.WindowText) : Color.FromKnownColor(KnownColor.ControlLight); // // viewItem.Group = listView.Groups[teamBuild.BuildDefinition.TeamProject]; // // UIContext.ProgressDoStep(); // }); } finally { listView.EndUpdate(); UIContext.Instance.ProgressEnd(); RestoreSelectedItems(); } }