private bool TreatAsFailure(BuildStatusEnum status)
 {
     return(status == BuildStatusEnum.Failed
            ||
            (status == BuildStatusEnum.Unstable &&
             ConfigurationService.NotificationSettings.TreatUnstableAsFailed));
 }
        private void SetBackgroundColors(BuildStatusEnum buildStatusEnum)
        {
            Color backgroundColor = GetBackgroundColor(buildStatusEnum);

            _projectName.BackColor     = backgroundColor;
            _buildStatusIcon.BackColor = backgroundColor;
        }
        public static BuildTransition GetBuildTransition(BuildStatusEnum buildStatusEnum)
        {
            BuildTransition buildTransition = null;

            switch (buildStatusEnum)
            {
            case BuildStatusEnum.Aborted:
                buildTransition = BuildTransition.Aborted;
                break;

            case BuildStatusEnum.Failed:
                buildTransition = BuildTransition.Failed;
                break;

            case BuildStatusEnum.Unstable:
                buildTransition = BuildTransition.Unstable;
                break;

            case BuildStatusEnum.Successful:
                buildTransition = BuildTransition.Successful;
                break;

            default:
                buildTransition = BuildTransition.Successful;
                break;
            }
            return(buildTransition);
        }
Exemple #4
0
        private void LoadIcon(BuildStatusEnum statusValue, bool isInProgress, bool isStuck)
        {
            BuildStatus status = new BuildStatus(statusValue, isInProgress, isStuck);

            if (iconsByKey.ContainsKey(status.Key))
            {
                return;
            }

            try
            {
                string resourceName = string.Format("JenkinsTray.Resources.StatusIcons.{0}.gif", status.Key);
                Image  img          = ResourceImageHelper.CreateImageFromResources(resourceName, GetType().Assembly);
                byte[] imgBytes     = DevExpress.XtraEditors.Controls.ByteImageConverter.ToByteArray(img, ImageFormat.Gif);
                iconsByKey.Add(status.Key, imgBytes);
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(JenkinsTrayResources.FailedLoadingIcons_Text,
                                    JenkinsTrayResources.FailedLoadingIcons_Caption,
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                LoggingHelper.LogError(logger, ex);
                throw new Exception("Failed loading icon: " + status, ex);
            }
        }
        public BuildStatus(BuildStatusEnum value, bool isInProgress, bool isStuck)
        {
            if (value < BuildStatusEnum.Successful)
                isInProgress = false;

            this.Value = value;
            this.IsInProgress = isInProgress;
            this.IsStuck = isStuck;
        }
Exemple #6
0
 public GamePage()
 {
     InitializeComponent();
     _buildStatus = BuildStatusEnum.None;
     _gameState = GameState.FirstTurn;
     BuildPopup.Width = Application.Current.Host.Content.ActualWidth;
     _r = new Random();
     _pollTimer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(5) };
     # region stuff
        public BuildStatus(BuildStatusEnum value, bool isInProgress, bool isStuck)
        {
            if (value < BuildStatusEnum.Successful)
            {
                isInProgress = false;
            }

            this.Value        = value;
            this.IsInProgress = isInProgress;
            this.IsStuck      = isStuck;
        }
        public NewNewsItemEventArgs AsNewsItemEventArgs(BuildStatusEnum previousWorkingOrBrokenBuildStatus, SirenOfShameSettings settings)
        {
            var person = settings.FindAddPerson(RequestedBy);

            return(new NewNewsItemEventArgs
            {
                Person = person,
                EventDate = DateTime.Now,
                Title = GetNewsItemTitle(previousWorkingOrBrokenBuildStatus),
                BuildDefinitionId = BuildDefinitionId,
                NewsItemType = GetNewsItemType(),
                ReputationChange = GetReputationChange(),
                BuildId = BuildId
            });
        }
 private static string BuildStatusToString(BuildStatusEnum buildStatus)
 {
     switch (buildStatus)
     {
         case BuildStatusEnum.Broken:
             return "Broken";
         case BuildStatusEnum.Working:
             return "Passing";
         case BuildStatusEnum.Unknown:
             return "Unknown";
         case BuildStatusEnum.InProgress:
             return "In Progress";
         default:
             throw new Exception("Unknown Status " + buildStatus);
     }
 }
Exemple #10
0
 public void InvokeStatusChecked(BuildStatusEnum status)
 {
     InvokeStatusChecked(new[]
     {
         new BuildStatus
         {
             BuildStatusEnum   = status,
             Name              = BUILD1_ID,
             RequestedBy       = CURRENT_USER,
             BuildDefinitionId = BUILD1_ID,
             StartedTime       = new DateTime(2010, 1, 1, 1, 1, 1),
             FinishedTime      = status == BuildStatusEnum.InProgress ? (DateTime?)null : new DateTime(2010, 1, 1, 1, 10, 10),
             Comment           = "Fixing a typo"
         }
     });
 }
        private void _status_SelectedIndexChanged(object sender, EventArgs e)
        {
            var newBuildStatus = (BuildStatusEnum)Enum.Parse(typeof(BuildStatusEnum), _status.Text);

            if ((_buildStatus == BuildStatusEnum.Unknown || _buildStatus == BuildStatusEnum.Working || _buildStatus == BuildStatusEnum.Broken)
                && newBuildStatus == BuildStatusEnum.InProgress)
            {
                _startedTime = DateTime.UtcNow;
            }
            else if (_buildStatus == BuildStatusEnum.InProgress && (newBuildStatus == BuildStatusEnum.Working || newBuildStatus == BuildStatusEnum.Broken))
            {
                _finishedTime = DateTime.UtcNow;
            }

            _buildStatus = newBuildStatus;

            UpdateDateTimeTextboxes();
        }
Exemple #12
0
        private void _status_SelectedIndexChanged(object sender, EventArgs e)
        {
            var newBuildStatus = (BuildStatusEnum)Enum.Parse(typeof(BuildStatusEnum), _status.Text);

            if ((_buildStatus == BuildStatusEnum.Unknown || _buildStatus == BuildStatusEnum.Working || _buildStatus == BuildStatusEnum.Broken) &&
                newBuildStatus == BuildStatusEnum.InProgress)
            {
                _startedTime = DateTime.UtcNow;
            }
            else if (_buildStatus == BuildStatusEnum.InProgress && (newBuildStatus == BuildStatusEnum.Working || newBuildStatus == BuildStatusEnum.Broken))
            {
                _finishedTime = DateTime.UtcNow;
            }

            _buildStatus = newBuildStatus;

            UpdateDateTimeTextboxes();
        }
        private static string BuildStatusToString(BuildStatusEnum buildStatus)
        {
            switch (buildStatus)
            {
            case BuildStatusEnum.Broken:
                return("Broken");

            case BuildStatusEnum.Working:
                return("Passing");

            case BuildStatusEnum.Unknown:
                return("Unknown");

            case BuildStatusEnum.InProgress:
                return("In Progress");

            default:
                throw new Exception("Unknown Status " + buildStatus);
            }
        }
Exemple #14
0
        private DateTime?GetFinishedTime(BuildStatusInfo buildStatusInfo, BuildStatusEnum buildStatusEnum, DateTime?lastBuildTime)
        {
            if (buildStatusInfo.LastBuildStatusEnum == null)
            {
                return(lastBuildTime);
            }
            var lastBuildStatusEnum = buildStatusInfo.LastBuildStatusEnum.Value;

            // the build stopped since our last poll time so update the finished time
            if (buildStatusEnum != BuildStatusEnum.InProgress && lastBuildStatusEnum == BuildStatusEnum.InProgress)
            {
                buildStatusInfo.FinishedTime = DateTime.Now;
            }

            if (buildStatusInfo.FinishedTime == null && buildStatusEnum != BuildStatusEnum.InProgress)
            {
                return(lastBuildTime);
            }

            return(buildStatusInfo.FinishedTime);
        }
Exemple #15
0
        //  http://javadoc.jenkins-ci.org/hudson/model/Result.html
        public static BuildStatusEnum StringToBuildStatus(string result)
        {
            BuildStatusEnum status = BuildStatusEnum.Unknown;

            result = result.ToLower();
            if (result == SUCCESS)
            {
                status = BuildStatusEnum.Successful;
            }
            else if (result == FAILURE)
            {
                status = BuildStatusEnum.Failed;
            }
            else if (result == UNSTABLE)
            {
                status = BuildStatusEnum.Unstable;
            }
            else if (result == ABORTED)
            {
                status = BuildStatusEnum.Aborted;
            }
            return(status);
        }
Exemple #16
0
        private static DateTime?GetStartedTime(BuildStatusInfo buildStatusInfo, BuildStatusEnum buildStatusEnum, DateTime?lastBuildTime)
        {
            bool thisIsTheFirstBuild = buildStatusInfo.LastBuildStatusEnum == null;

            if (thisIsTheFirstBuild)
            {
                return(lastBuildTime);
            }
            var lastBuildStatusEnum = buildStatusInfo.LastBuildStatusEnum.Value;

            // the build started since our last poll time so update the start time
            if (buildStatusEnum == BuildStatusEnum.InProgress && lastBuildStatusEnum != BuildStatusEnum.InProgress)
            {
                buildStatusInfo.StartedTime = DateTime.Now;
            }

            if (buildStatusInfo.StartedTime == null)
            {
                return(lastBuildTime);
            }

            return(buildStatusInfo.StartedTime);
        }
        private BuildStatus CreateBuildStatus(IBuildDetail buildDetail, IEnumerable <MyTfsBuildDefinition> allBuildDefinitions, bool applyBuildQuality)
        {
            BuildStatusEnum buildStatus  = GetBuildStatusEnum(buildDetail.Status);
            var             buildQuality = GetBuildStatusEnum(buildDetail.Quality);

            if (applyBuildQuality && buildStatus == BuildStatusEnum.Working)
            {
                buildStatus = buildQuality;
            }

            var result = new BuildStatus
            {
                BuildStatusEnum = buildStatus,
                StartedTime     = buildDetail.StartTime == DateTime.MinValue ? (DateTime?)null : buildDetail.StartTime,
                FinishedTime    = buildDetail.FinishTime == DateTime.MinValue ? (DateTime?)null : buildDetail.FinishTime,
            };

            var matchedBuildDefinition = allBuildDefinitions.FirstOrDefault(i => i.Uri == buildDetail.BuildDefinitionUri);

            if (matchedBuildDefinition != null)
            {
                result.Name = matchedBuildDefinition.Name;
                result.BuildDefinitionId = matchedBuildDefinition.Id;
            }
            else
            {
                _log.Error("The server appeared to return a build definition that we are not watching: " + buildDetail.BuildDefinitionUri);
            }

            result.BuildId = buildDetail.Uri.Segments.LastOrDefault();

            SetCheckinInfo(buildDetail, applyBuildQuality, result, buildQuality, matchedBuildDefinition);

            result.Url = _tfsProject.ConvertTfsUriToUrl(buildDetail.Uri);

            return(result);
        }
Exemple #18
0
        private void LoadIcon(BuildStatusEnum statusValue, bool isInProgress, bool isStuck)
        {
            BuildStatus status = new BuildStatus(statusValue, isInProgress, isStuck);

            if (iconsByKey.ContainsKey(status.Key))
            {
                return;
            }

            try
            {
                string resourceName = string.Format("JenkinsTray.Resources.TrayIcons.{0}.ico", status.Key);
                Icon   icon         = ResourceImageHelper.CreateIconFromResources(resourceName, GetType().Assembly);
                iconsByKey.Add(status.Key, icon);
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(JenkinsTrayResources.FailedLoadingIcons_Text,
                                    JenkinsTrayResources.FailedLoadingIcons_Caption,
                                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                LoggingHelper.LogError(logger, ex);
                throw new Exception("Failed loading icon: " + statusValue, ex);
            }
        }
        private string GetNewsItemTitle(BuildStatusEnum previousWorkingOrBrokenBuildStatus)
        {
            var wasBrokenNowWorking = previousWorkingOrBrokenBuildStatus == BuildStatusEnum.Broken && BuildStatusEnum == BuildStatusEnum.Working;
            var wasBrokenNowBroken  = previousWorkingOrBrokenBuildStatus == BuildStatusEnum.Broken && BuildStatusEnum == BuildStatusEnum.Broken;
            var wasWorkingNowBroken = previousWorkingOrBrokenBuildStatus == BuildStatusEnum.Working && BuildStatusEnum == BuildStatusEnum.Broken;
            var inProgress          = BuildStatusEnum == BuildStatusEnum.InProgress;

            if (inProgress)
            {
                return(string.Format("'{0}'", Comment));
            }
            if (wasBrokenNowWorking)
            {
                return(string.Format("Fixed the broken build"));
            }
            if (wasWorkingNowBroken)
            {
                return(string.Format("Broke the build"));
            }
            if (wasBrokenNowBroken)
            {
                return(string.Format("Failed to fix the build"));
            }
            if (BuildStatusEnum == BuildStatusEnum.Working || BuildStatusEnum == BuildStatusEnum.Unknown)
            {
                return(string.Format("Successful build"));
            }

            // some other previous status? this should never happen
            if (BuildStatusEnum == BuildStatusEnum.Broken)
            {
                return(string.Format("Broke the build"));
            }

            throw new Exception("Unknown build status: " + BuildStatusEnum);
        }
        public static BuildTransition GetBuildTransition(BuildStatusEnum buildStatusEnum)
        {
            BuildTransition buildTransition = null;

            switch(buildStatusEnum)
            {
                case BuildStatusEnum.Aborted:
                    buildTransition = BuildTransition.Aborted;
                    break;
                case BuildStatusEnum.Failed:
                    buildTransition = BuildTransition.Failed;
                    break;
                case BuildStatusEnum.Unstable:
                    buildTransition = BuildTransition.Unstable;
                    break;
                case BuildStatusEnum.Successful:
                    buildTransition = BuildTransition.Successful;
                    break;
                default:
                    buildTransition = BuildTransition.Successful;
                    break;
            }
            return buildTransition;
        }
Exemple #21
0
 public bool IsNewlyFixed(BuildStatusEnum? previousStatus)
 {
     return BuildStatusEnum == BuildStatusEnum.Working && previousStatus != null && previousStatus == BuildStatusEnum.Broken;
 }
        private static DateTime? GetStartedTime(BuildStatusInfo buildStatusInfo, BuildStatusEnum buildStatusEnum, DateTime? lastBuildTime)
        {
            bool thisIsTheFirstBuild = buildStatusInfo.LastBuildStatusEnum == null;
            if (thisIsTheFirstBuild)
            {
                return lastBuildTime;
            }
            var lastBuildStatusEnum = buildStatusInfo.LastBuildStatusEnum.Value;

            // the build started since our last poll time so update the start time
            if (buildStatusEnum == BuildStatusEnum.InProgress && lastBuildStatusEnum != BuildStatusEnum.InProgress)
            {
                buildStatusInfo.StartedTime = DateTime.Now;
            }

            if (buildStatusInfo.StartedTime == null)
                return lastBuildTime;

            return buildStatusInfo.StartedTime;
        }
Exemple #23
0
        private BuildStatus CreateBuildStatus(IBuildDetail buildDetail, bool applyBuildQuality)
        {
            BuildStatusEnum status = BuildStatusEnum.Unknown;

            status = GetBuildStatusEnum(buildDetail.Status);
            if (applyBuildQuality && status == BuildStatusEnum.Working)
            {
                status = GetBuildStatusEnum(buildDetail.Quality);
            }

            var result = new BuildStatus
            {
                BuildDefinitionId = buildDetail.BuildDefinitionUri.Segments[buildDetail.BuildDefinitionUri.Segments.Length - 1].ToString(),
                BuildStatusEnum   = status,
                RequestedBy       = buildDetail.RequestedBy != null ? buildDetail.RequestedBy :
                                    buildDetail.RequestedFor != null ? buildDetail.RequestedFor : buildDetail.LastChangedBy,
                StartedTime  = buildDetail.StartTime == DateTime.MinValue ? (DateTime?)null : buildDetail.StartTime,
                FinishedTime = buildDetail.FinishTime == DateTime.MinValue ? (DateTime?)null : buildDetail.FinishTime,
            };

            if (buildDetail.BuildDefinition != null)
            {
                this._UriToName[buildDetail.BuildDefinitionUri.ToString()] = buildDetail.BuildDefinition.Name;
            }

            result.Name    = this._UriToName[buildDetail.BuildDefinitionUri.ToString()];
            result.BuildId = buildDetail.Uri.Segments[buildDetail.Uri.Segments.Length - 1].ToString();

            var changesets = buildDetail.Information.GetNodesByType("AssociatedChangeset");

            if (changesets.Count() > 0)
            {
                HashSet <String> users = new HashSet <String>();
                foreach (var changeset in changesets)
                {
                    users.Add(changeset.Fields["CheckedInBy"]);
                }

                if (users.Count() > 1)
                {
                    result.RequestedBy = "(Multiple Users)";
                }
                else
                {
                    result.RequestedBy = users.First();
                }

                if (changesets.Count() > 1)
                {
                    result.Comment = "(Multiple Changesets)";
                }
                else
                {
                    result.Comment = changesets.First().Fields["Comment"];
                }
            }
            else
            {
                result.Comment = buildDetail.Reason.ToString();
            }

            if (applyBuildQuality &&
                GetBuildStatusEnum(buildDetail.Quality) == BuildStatusEnum.Broken)
            {
                result.Comment =
                    "Build deployment or test failure. Please see test server or test results for details.\n" +
                    result.Comment;
            }

            result.Url = _tfsProject.ConvertTfsUriToUrl(buildDetail.Uri);

            return(result);
        }
        private static void SetCheckinInfo(IBuildDetail buildDetail, bool applyBuildQuality, BuildStatus result, BuildStatusEnum buildQuality, MyTfsBuildDefinition buildDefinition)
        {
            var checkinInfoGetterService = new CheckinInfoGetterService();
            var checkinInfo = checkinInfoGetterService.GetCheckinInfo(buildDetail, result, buildDefinition);

            if (checkinInfo != null)
            {
                result.Comment     = checkinInfo.Comment;
                result.RequestedBy = checkinInfo.Committer;
            }

            if (applyBuildQuality && buildQuality == BuildStatusEnum.Broken)
            {
                result.Comment = "Build deployment or test failure. Please see test server or test results for details.\n" + result.Comment;
            }
        }
 private bool TreatAsFailure(BuildStatusEnum status)
 {
     return status == BuildStatusEnum.Failed
         || (status == BuildStatusEnum.Unstable && ConfigurationService.NotificationSettings.TreatUnstableAsFailed);
 }
Exemple #26
0
 protected Color GetBackgroundColor(BuildStatusEnum buildStatusEnum)
 {
     return(GetColorForBuildType(_buildStatusToColorMap, buildStatusEnum, PrimaryColor));
 }
Exemple #27
0
        public void FireAnyUntilBuildPassesEvents(RulesEngine rulesEngine, BuildStatus buildStatus, BuildStatusEnum? previousStatus)
        {
            bool newlyFixed = buildStatus.BuildStatusEnum == BuildStatusEnum.Working && previousStatus != null && previousStatus != BuildStatusEnum.Working;

            if (PlayAudio && PlayAudioUntilBuildPasses && newlyFixed)
            {
                rulesEngine.InvokeSetAudio(null, null);
            }
            if (PlayLights && PlayLightsUntilBuildPasses && newlyFixed)
            {
                rulesEngine.InvokeSetLights(null, null);
            }
        }
Exemple #28
0
        public void FireEvent(RulesEngine rulesEngine, BuildStatusEnum? previousStatus, BuildStatus buildStatus)
        {
            var newlyBroken = buildStatus.IsNewlyBroken(previousStatus);
            var newlyFixed = buildStatus.IsNewlyFixed(previousStatus);

            string message = null;
            string okText = null;
            if (newlyBroken)
            {
                message = "Build newly broken by " + buildStatus.RequestedBy;
                okText = "Rats";
            }
            if (newlyFixed)
            {
                message = "Build is passing again";
                okText = "Yayy!";
            }
            if (buildStatus.BuildStatusEnum == BuildStatusEnum.InProgress)
            {
                message = "Build triggered by " + buildStatus.RequestedBy;
                okText = "Ok, whatever";
            }
            if (buildStatus.BuildStatusEnum == BuildStatusEnum.Broken && !newlyBroken)
            {
                message = "Build still broken";
                okText = "Rats";
            }
            if (buildStatus.BuildStatusEnum == BuildStatusEnum.Working && !newlyFixed)
            {
                message = "Build passed";
                okText = "Yayy!";
            }
            message += " for " + buildStatus.Name;
            if (buildStatus.BuildStatusEnum == BuildStatusEnum.InProgress && !string.IsNullOrEmpty(buildStatus.Comment))
            {
                message += "\r\n" + buildStatus.Comment;
            }

            if (AlertType == AlertType.TrayAlert && !(previousStatus == null && buildStatus.BuildStatusEnum == BuildStatusEnum.Working))
            {
                rulesEngine.InvokeTrayNotify(buildStatus.BuildStatusEnum == BuildStatusEnum.Broken ? ToolTipIcon.Error : ToolTipIcon.Info, string.Format("Build {0}", buildStatus.BuildStatusDescription), message);
            }

            if (LedPattern != null)
            {
                rulesEngine.InvokeSetLights(LedPattern, LightsDuration);
            }
            
            if (AudioPattern != null)
            {
                rulesEngine.InvokeSetAudio(AudioPattern, AudioDuration);
            }
            if (AlertType == AlertType.ModalDialog)
            {
                rulesEngine.InvokeModalDialog(message, okText);
            }

            if (!string.IsNullOrEmpty(WindowsAudioLocation) && previousStatus != null)
            {
                rulesEngine.InvokePlayWindowsAudio(WindowsAudioLocation);
            }
        }
Exemple #29
0
 public BuildStatus(BuildStatusEnum value, bool isInProgress, bool isStuck)
 {
     this.Value        = value;
     this.IsInProgress = isInProgress;
     this.IsStuck      = isStuck;
 }
Exemple #30
0
 public static bool IsErrorBuild(BuildStatusEnum status)
 {
     return(status == BuildStatusEnum.Failed);
 }
Exemple #31
0
 public NewNewsItemEventArgs AsNewsItemEventArgs(BuildStatusEnum previousWorkingOrBrokenBuildStatus, SirenOfShameSettings settings)
 {
     var person = settings.FindAddPerson(RequestedBy);
     return new NewNewsItemEventArgs
     {
         Person = person,
         EventDate = DateTime.Now,
         Title = GetNewsItemTitle(previousWorkingOrBrokenBuildStatus),
         BuildDefinitionId = BuildDefinitionId,
         NewsItemType = GetNewsItemType(),
         ReputationChange = GetReputationChange(),
         BuildId = BuildId
     };
 }
Exemple #32
0
        public void FireApplicableRulesEngineEvents(BuildStatusEnum? previousWorkingOrBrokenStatus, BuildStatusEnum? previousStatus, RulesEngine rulesEngine, List<Rule> rules)
        {
            var rule = rules
                .Where(r => r.IsMatch(this, previousWorkingOrBrokenStatus))
                .OrderByDescending(r => r.PriorityId)
                .FirstOrDefault();

            if (rule != null)
                rule.FireEvent(rulesEngine, previousWorkingOrBrokenStatus, this);

            rules.ForEach(r => r.FireAnyUntilBuildPassesEvents(rulesEngine, this, previousStatus));
        }
 protected Color GetBackgroundColor(BuildStatusEnum buildStatusEnum)
 {
     return GetColorForBuildType(BuildStatusToColorMap, buildStatusEnum, PrimaryColor);
 }
 private static Color GetColorForBuildType(Dictionary<BuildStatusEnum, Color> dictionary, BuildStatusEnum newsItemEventType, Color defaultColor)
 {
     Color color;
     if (dictionary.TryGetValue(newsItemEventType, out color))
         return color;
     return defaultColor;
 }
 private string BuildStatusAsExport(BuildStatusEnum buildStatusEnum)
 {
     return(buildStatusEnum == BuildStatusEnum.Working ? "1" : "0");
 }
Exemple #36
0
        private static Color GetColorForBuildType(Dictionary <BuildStatusEnum, Color> dictionary, BuildStatusEnum newsItemEventType, Color defaultColor)
        {
            Color color;

            if (dictionary.TryGetValue(newsItemEventType, out color))
            {
                return(color);
            }
            return(defaultColor);
        }
Exemple #37
0
 public bool IsMatch(BuildStatus buildStatus, BuildStatusEnum? previousStatus)
 {
     bool isBuildDefinitionMatch = BuildDefinitionId == null || BuildDefinitionId == buildStatus.BuildDefinitionId;
     if (!isBuildDefinitionMatch) return false;
     bool isPersonMatch = string.IsNullOrEmpty(TriggerPerson) || TriggerPerson == buildStatus.RequestedBy;
     if (!isPersonMatch) return false;
     
     var newlyBroken = buildStatus.IsNewlyBroken(previousStatus);
     var newlyFixed = buildStatus.IsNewlyFixed(previousStatus);
     bool isTriggerTypeMatch = IsTriggerTypeMatch(buildStatus, newlyBroken, newlyFixed);
     return isTriggerTypeMatch;
 }
        private void LoadIcon(BuildStatusEnum statusValue, bool isInProgress, bool isStuck)
        {
            BuildStatus status = new BuildStatus(statusValue, isInProgress, isStuck);
            if (iconsByKey.ContainsKey(status.Key))
                return;

            try
            {
                string resourceName = string.Format("JenkinsTray.Resources.TrayIcons.{0}.ico", status.Key);
                Icon icon = ResourceImageHelper.CreateIconFromResources(resourceName, GetType().Assembly);
                iconsByKey.Add(status.Key, icon);
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(JenkinsTrayResources.FailedLoadingIcons_Text,
                    JenkinsTrayResources.FailedLoadingIcons_Caption,
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                LoggingHelper.LogError(logger, ex);
                throw new Exception("Failed loading icon: " + statusValue, ex);
            }
        }
Exemple #39
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);
            }
        }
Exemple #40
0
 private string BuildStatusAsExport(BuildStatusEnum buildStatusEnum)
 {
     return buildStatusEnum == BuildStatusEnum.Working ? "1" : "0";
 }
Exemple #41
0
        private string GetNewsItemTitle(BuildStatusEnum previousWorkingOrBrokenBuildStatus)
        {
            var wasBrokenNowWorking = previousWorkingOrBrokenBuildStatus == BuildStatusEnum.Broken && BuildStatusEnum == BuildStatusEnum.Working;
            var wasBrokenNowBroken = previousWorkingOrBrokenBuildStatus == BuildStatusEnum.Broken && BuildStatusEnum == BuildStatusEnum.Broken;
            var wasWorkingNowBroken = previousWorkingOrBrokenBuildStatus == BuildStatusEnum.Working && BuildStatusEnum == BuildStatusEnum.Broken;
            var inProgress = BuildStatusEnum == BuildStatusEnum.InProgress;

            if (inProgress) return string.Format("'{0}'", Comment);
            if (wasBrokenNowWorking) return string.Format("Fixed the broken build");
            if (wasWorkingNowBroken) return string.Format("Broke the build");
            if (wasBrokenNowBroken) return string.Format("Failed to fix the build");
            if (BuildStatusEnum == BuildStatusEnum.Working || BuildStatusEnum == BuildStatusEnum.Unknown) return string.Format("Successful build");

            // some other previous status? this should never happen
            if (BuildStatusEnum == BuildStatusEnum.Broken) return string.Format("Broke the build");

            throw new Exception("Unknown build status: " + BuildStatusEnum);
        }
        private void LoadIcon(BuildStatusEnum statusValue, bool isInProgress, bool isStuck)
        {
            BuildStatus status = new BuildStatus(statusValue, isInProgress, isStuck);
            if (iconsByKey.ContainsKey(status.Key))
                return;

            try
            {
                string resourceName = string.Format("Hudson.TrayTracker.Resources.StatusIcons.{0}.gif", status.Key);
                Image img = ResourceImageHelper.CreateImageFromResources(resourceName, GetType().Assembly);
                byte[] imgBytes = DevExpress.XtraEditors.Controls.ByteImageConverter.ToByteArray(img, ImageFormat.Gif);
                iconsByKey.Add(status.Key, imgBytes);
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(HudsonTrayTrackerResources.FailedLoadingIcons_Text,
                    HudsonTrayTrackerResources.FailedLoadingIcons_Caption,
                    MessageBoxButtons.OK, MessageBoxIcon.Error);
                LoggingHelper.LogError(logger, ex);
                throw new Exception("Failed loading icon: " + status, ex);
            }
        }
 public BuildStatus(BuildStatusEnum value, bool isInProgress, bool isStuck)
 {
     this.Value = value;
     this.IsInProgress = isInProgress;
     this.IsStuck = isStuck;
 }
 public void InvokeStatusChecked(BuildStatusEnum status)
 {
     InvokeStatusChecked(new[]
     {
         new BuildStatus
         {
             BuildStatusEnum = status,
             Name = BUILD1_ID,
             RequestedBy = CURRENT_USER,
             BuildDefinitionId = BUILD1_ID,
             StartedTime = new DateTime(2010, 1, 1, 1, 1, 1),
             FinishedTime = status == BuildStatusEnum.InProgress ? (DateTime?)null : new DateTime(2010, 1, 1, 1, 10, 10),
             Comment = "Fixing a typo"
         }
     });
 }
 public static bool IsErrorBuild(BuildStatusEnum status)
 {
     return status == BuildStatusEnum.Failed;
 }
        private DateTime? GetFinishedTime(BuildStatusInfo buildStatusInfo, BuildStatusEnum buildStatusEnum, DateTime? lastBuildTime)
        {
            if (buildStatusInfo.LastBuildStatusEnum == null)
            {
                return lastBuildTime;
            }
            var lastBuildStatusEnum = buildStatusInfo.LastBuildStatusEnum.Value;

            // the build stopped since our last poll time so update the finished time
            if (buildStatusEnum != BuildStatusEnum.InProgress && lastBuildStatusEnum == BuildStatusEnum.InProgress)
            {
                buildStatusInfo.FinishedTime = DateTime.Now;
            }

            if (buildStatusInfo.FinishedTime == null && buildStatusEnum != BuildStatusEnum.InProgress)
                return lastBuildTime;

            return buildStatusInfo.FinishedTime;
        }
 private void SetBackgroundColors(BuildStatusEnum buildStatusEnum)
 {
     Color backgroundColor = GetBackgroundColor(buildStatusEnum);
     _projectName.BackColor = backgroundColor;
     _buildStatusIcon.BackColor = backgroundColor;
     _editRulesTop.BackColor = backgroundColor;
     _loading.BackColor = backgroundColor;
 }
        private static void SetCheckinInfo(IBuildDetail buildDetail, bool applyBuildQuality, BuildStatus result, BuildStatusEnum buildQuality, MyTfsBuildDefinition buildDefinition)
        {
            var checkinInfoGetterService = new CheckinInfoGetterService();
            var checkinInfo = checkinInfoGetterService.GetCheckinInfo(buildDetail, result, buildDefinition);

            if (checkinInfo != null)
            {
                result.Comment = checkinInfo.Comment;
                result.RequestedBy = checkinInfo.Committer;
            }

            if (applyBuildQuality && buildQuality == BuildStatusEnum.Broken)
            {
                result.Comment = "Build deployment or test failure. Please see test server or test results for details.\n" + result.Comment;
            }
        }
Exemple #49
0
 public bool IsNewlyBroken(BuildStatusEnum? previousStatus)
 {
     return BuildStatusEnum == BuildStatusEnum.Broken && (previousStatus == null || previousStatus == BuildStatusEnum.Working);
 }