Exemplo n.º 1
0
        private void InvokeOnBuildStatusChanged(IQueuedBuildsView buildsView, StatusChangedEventArgs args)
        {
            Action <BuildStatusChangedEventArgs> handler = this.OnBuildStatusChanged;

            if (handler != null)
            {
                handler(new BuildStatusChangedEventArgs(args, buildsView));
            }
        }
Exemplo n.º 2
0
        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();
            }
        }
Exemplo n.º 3
0
        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();
        }
Exemplo n.º 4
0
        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 {}
            }
        }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
        /// <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)
            {
            }
        }
Exemplo n.º 7
0
        private void BuildsViewOnStatusChanged(object sender, StatusChangedEventArgs statusChangedEventArgs)
        {
            IQueuedBuildsView buildsView = sender as IQueuedBuildsView;

            InvokeOnBuildStatusChanged(buildsView, statusChangedEventArgs);
        }
Exemplo n.º 8
0
 public BuildStatusChangedEventArgs(StatusChangedEventArgs args, IQueuedBuildsView queue)
 {
     this.Args  = args;
     this.Queue = queue;
 }
Exemplo n.º 9
0
        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();
            }
        }