private void CheckForNewBuilds()
        {
            //TODO:Sort out the inprogress builds.
            if (_inProgressBuild == null)
            {
                // enumerate all the build types checking for an inprogress build...
                foreach (BuildTypeModel buildType in _buildProjects.SelectMany(p => p.BuildTypes))
                {
                    IBuildProgress inProgressBuild = Client.GetInProgressBuild(buildType.Id);

                    if (inProgressBuild != null)
                    {
                        _inProgressBuild = inProgressBuild;
                        OnBuildUpdated(CreateBuildModel(_inProgressBuild));
                    }
                }
            }

            // get all completed builds and trigger events
            IEnumerable<IBuildResult> completedBuilds = Client.GetCompletedBuilds();

            IEnumerable<IBuildResult> unseenBuilds =
                completedBuilds == null ? new IBuildResult[0] :
                completedBuilds.Where(
                    c =>
                    !_completedBuildIds.Contains(c.Id) &&
                    (BuildTypeIds.Length == 0 || BuildTypeIds.Contains(c.BuildTypeId)));

            foreach (IBuildResult unseenBuild in unseenBuilds)
            {
                IFullBuildResult detailedUnseenBuild = Client.GetCompletedBuild(unseenBuild.Id);

                _completedBuildIds.Add(unseenBuild.Id);

                OnBuildUpdated(CreateBuildModel(detailedUnseenBuild));
            }
        }
        private void UpdateInProgressBuildStatus()
        {
            // get the latest version of the _inprogressBuild...

            IBuildProgress latestBuild = Client.GetInProgressBuild(_inProgressBuild.BuildTypeId);

            if (latestBuild == null)
            {
                // build has finished!
                _inProgressBuild = null;
            }
            else
            {
                _inProgressBuild = latestBuild;

                OnBuildUpdated(CreateBuildModel(_inProgressBuild));
            }
        }
示例#3
0
 public BuildSummaryWriter(IBuildProgress progress, IOutput output)
 {
     _progress = progress;
     _output = output;
 }
 private BuildModel CreateBuildModel(IBuildProgress source)
 {
     return new BuildModel
                {
                    Id = source.Id,
                    Number = source.Number,
                    Status = source.Status,
                    WebUri = source.WebUri,
                    Personal = source.Personal,
                    History = source.History,
                    Pinned = source.Pinned,
                    StatusText = source.StatusText,
                    BuildType =
                        _buildProjects.SelectMany(b => b.BuildTypes).Where(t => t.Id == source.BuildTypeId).
                        FirstOrDefault(),
                    Started = source.Started,
                    Finished = null,
                    AgentId = source.AgentId,
                    PercentageComplete = source.PercentageComplete,
                    ElapsedRunTime = source.ElapsedRunTime,
                    EstimatedRunTime = source.EstimatedRunTime,
                    CurrentStage = source.CurrentStage,
                    OutDated = source.Outdated,
                    ProbablyHanging = source.ProbablyHanging,
                    IsRunning = true
                };
 }
示例#5
0
 public TaskMonitor(IBuildProgress buildProgress, IBuildState buildState)
 {
     _buildProgress = buildProgress;
     _buildState = buildState;
 }