コード例 #1
0
        private bool IsRegressing(Project project)
        {
            AllBuildDetails lastBuildDetails;

            if (lastProjectsBuildDetails.TryGetValue(project, out lastBuildDetails) == false ||
                lastBuildDetails == null)
            {
                return(false);
            }
            AllBuildDetails newBuildDetails = project.AllBuildDetails;

            if (newBuildDetails == null)
            {
                return(false);
            }

            // moving from unknown/aborted to successful should not be considered as a regression
            if (newBuildDetails.Status.Value <= BuildStatusEnum.Successful)
            {
                return(false);
            }

            bool res = BuildStatusUtils.IsWorse(newBuildDetails.Status, lastBuildDetails.Status);

            return(res);
        }
コード例 #2
0
 private void UpdateForProject(Project project)
 {
     if (lastStatuses.ContainsKey(project.Url) && lastCompletedStatuses.ContainsKey(project.Url))
     {
         if (lastStatuses[project.Url].IsInProgress)
         {
             if (project.StatusValue == BuildStatusEnum.Successful)
             {
                 if (BuildStatusUtils.IsErrorBuild(lastCompletedStatuses[project.Url]))
                 {
                     FixedProjects.Add(project);
                 }
                 else
                 {
                     SucceedingProjects.Add(project);
                 }
             }
             else if (TreatAsFailure(project.Status))
             {
                 if (TreatAsFailure(lastCompletedStatuses[project.Url]))
                 {
                     StillFailingProjects.Add(project);
                 }
                 else
                 {
                     FailingProjects.Add(project);
                 }
             }
         }
     }
 }
コード例 #3
0
        private bool ShouldOpenConsolePage(Project project)
        {
            if (project == null)
            {
                return(false);
            }
            BuildStatus status = project.Status;
            bool        res    = BuildStatusUtils.IsErrorBuild(status) || status.IsInProgress;

            return(res);
        }
コード例 #4
0
        private BuildStatus GetProjectStatus(Project project)
        {
            BuildStatus status             = project.Status;
            BuildStatus acknowledgedStatus = GetAcknowledgedStatus(project);

            if (project.IsAcknowledged || (acknowledgedStatus != null))
            {
                if (project.IsAcknowledged || (status.Value == acknowledgedStatus.Value))
                {
                    return(new BuildStatus(BuildStatusEnum.Successful, false, false));
                }
                else if (status.Value != BuildStatusEnum.Unknown && BuildStatusUtils.IsWorse(acknowledgedStatus, status))
                {
                    ClearAcknowledgedStatus(project);
                }
            }
            return(status);
        }
コード例 #5
0
        // FIXME: the framework doesn't fire correctly MouseClick and MouseDoubleClick,
        // so this is deactivated
        private void notifyIcon_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button != MouseButtons.Left)
            {
                return;
            }

            try
            {
                // order the projects by build status
                var projectsByStatus = new Dictionary <BuildStatusEnum, SortedSet <Project> >();
                foreach (KeyValuePair <Project, AllBuildDetails> pair in lastProjectsBuildDetails)
                {
                    BuildStatusEnum status = BuildStatusEnum.Unknown;
                    if (pair.Value != null)
                    {
                        status = BuildStatusUtils.DegradeStatus(pair.Value.Status).Value;
                    }
                    SortedSet <Project> projects = new SortedSet <Project>();
                    if (projectsByStatus.TryGetValue(status, out projects) == false)
                    {
                        projects = new SortedSet <Project>();
                        projectsByStatus.Add(status, projects);
                    }
                    projects.Add(pair.Key);
                }

                StringBuilder text   = new StringBuilder();
                string        prefix = null;
                foreach (KeyValuePair <BuildStatusEnum, SortedSet <Project> > pair in projectsByStatus)
                {
                    // don't display successful projects unless this is the only status
                    if (pair.Key == BuildStatusEnum.Successful || projectsByStatus.Count == 1)
                    {
                        continue;
                    }

                    if (prefix != null)
                    {
                        text.Append(prefix);
                    }
                    string statusText = JenkinsTrayResources.ResourceManager
                                        .GetString("BuildStatus_" + pair.Key.ToString());
                    text.Append(statusText);
                    foreach (Project project in pair.Value)
                    {
                        text.Append("\n  - ").Append(project.Name);

                        BuildDetails lastFailedBuild = project.LastFailedBuild;
                        if (lastFailedBuild != null && lastFailedBuild.Users != null && lastFailedBuild.Users.Count > 0)
                        {
                            string users = StringUtils.Join(lastFailedBuild.Users, ", ");
                            text.Append(" (").Append(users).Append(")");
                        }
                    }
                    prefix = "\n";
                }

                string textToDisplay = text.ToString();
                if (string.IsNullOrEmpty(textToDisplay))
                {
                    textToDisplay = JenkinsTrayResources.DisplayBuildStatus_NoProjects;
                }
                notifyIcon.ShowBalloonTip(BALLOON_TOOLTIP_TIMEOUT, JenkinsTrayResources.DisplayBuildStatus_Caption,
                                          textToDisplay, ToolTipIcon.Info);
            }
            catch (Exception ex)
            {
                LoggingHelper.LogError(logger, ex);
            }
        }