GithubHelp home page GithubHelp logo

anystatus / anystatus Goto Github PK

View Code? Open in Web Editor NEW
58.0 5.0 19.0 1.06 MB

A remote control for your CI/CD pipelines and more

Home Page: https://www.anystat.us

License: GNU General Public License v3.0

C# 100.00%
azure devops cicd jenkins build-status teamcity cd-pipelines anystatus monitor dashboard

anystatus's Introduction

AnyStatus

AnyStatus is a desktop application that brings together Metrics and Events from various sources into one simple dashboard. AnyStatus integrates with Azure DevOps, Jenkins, Docker, Binance, and more. You can also develop your own custom plugins and widgets.

Download

Download and install AnyStatus from the Microsoft Store. This allows you to always be on the latest version when we release new builds with automatic upgrades.

Screenshots

AnyStatus

Status

Build Status
GitHub example workflow
Azure Build Status
Release Status
Store Deployment
NuGet Deployment

License

AnyStatus is licensed under the GNU General Public License v3.0

Copyright © Alon Amsalem and contributors. All rights reserved.

anystatus's People

Contributors

alanbirtles avatar alonam avatar dotmorten avatar michaelmairegger avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

anystatus's Issues

Cannot set Account, Project, Pipeline fields for Azure DevOps Pipeline

Hi,

If I click
"Add widget"
"Select Category": "Azure Devops"
"Azure DevOps Pipeline", "Add"

and provide an endpoint with "Azure DevOps Personal Access Token",
I don't have the possibility to choose an Account, Project or Pipeline!?

AnyStatus

I don't understand how to set these fields.
Seems like a bug.

Notification should show which entry changed

Im using AnyStatus version 3.1.59.0

The notification just say
"Widget 'Root' status changed from to failed"

It should use the widget name rather than 'Root'

Also the previous status word is missing.

Support numeric properties

Allow only numeric characters when editing numeric properties of a widget such as integers or doubles.

maximized window cant be moved or resized

steps to reproduce:

  1. push left mouse button on window header
  2. drag to top of screen (one of standart Windows action for maximize window).

Maximized window cant be moved or resized: double click on header (standart action for restore size), drag window header, trying to resize... nothing works.
I found only one solution: click "Open" menu item from tray icon

Resolve environment variables in File Name field of PowerShell task

Issue:
Eg. %userprofile%\source\repos\CommonScripts\AnyStatus\sharedPowerShellTask.ps1
This results in "Error occurred..." in log

Desired way to handle it:
Resolve the env variable values found between % signs, eg. the above to:
C:\users\myUserName\source\repos\CommonScripts\AnyStatus\sharedPowerShellTask.ps1

If this works, it is possible to share the same configuration among multiple people without modification, as long as they have the same files pulled from a git repo to the default location.

Azure DevOps Server Authentication

The endpoint account is required to authenticate login, so asking for it with the widgets causes issues:

If I don't include it in the Address for the endpoint, it fails to authenticate. If I do include it in the Address for the endpoint authentication succeeds but looking for projects fails.

AnyStatus crashes

I added an Azure DevOps Release to AnyStatus and now it crashes when I want to expand the release.
It's an two fase release where the second fase has lots of failures

image

In the event viewer is this long stack trace with an ArgumentException

Application: AnyStatus.Desktop.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.ArgumentException
   at System.Windows.GridLength..ctor(Double, System.Windows.GridUnitType)
   at AnyStatus.LengthPercentageConverter.Convert(System.Object, System.Type, System.Object, System.Globalization.CultureInfo)
   at System.Windows.Data.BindingExpression.TransferValue(System.Object, Boolean)
   at System.Windows.Data.BindingExpression.Activate(System.Object)
   at System.Windows.Data.BindingExpression.AttachToContext(AttachAttempt)
   at System.Windows.Data.BindingExpression.AttachOverride(System.Windows.DependencyObject, System.Windows.DependencyProperty)
   at System.Windows.Data.BindingExpressionBase.OnAttach(System.Windows.DependencyObject, System.Windows.DependencyProperty)
   at System.Windows.StyleHelper.GetInstanceValue(System.Windows.UncommonField`1<System.Collections.Specialized.HybridDictionary[]>, System.Windows.DependencyObject, System.Windows.FrameworkElement, System.Windows.FrameworkContentElement, Int32, System.Windows.DependencyProperty, Int32, System.Windows.EffectiveValueEntry ByRef)
   at System.Windows.StyleHelper.GetChildValueHelper(System.Windows.UncommonField`1<System.Collections.Specialized.HybridDictionary[]>, MS.Utility.ItemStructList`1<System.Windows.ChildValueLookup> ByRef, System.Windows.DependencyProperty, System.Windows.DependencyObject, MS.Internal.FrameworkObject, Int32, Boolean, System.Windows.EffectiveValueEntry ByRef, System.Windows.ValueLookupType ByRef, System.Windows.FrameworkElementFactory)
   at System.Windows.StyleHelper.GetChildValue(System.Windows.UncommonField`1<System.Collections.Specialized.HybridDictionary[]>, System.Windows.DependencyObject, Int32, MS.Internal.FrameworkObject, System.Windows.DependencyProperty, MS.Utility.FrugalStructList`1<System.Windows.ChildRecord> ByRef, System.Windows.EffectiveValueEntry ByRef, System.Windows.ValueLookupType ByRef, System.Windows.FrameworkElementFactory)
   at System.Windows.StyleHelper.GetValueFromTemplatedParent(System.Windows.DependencyObject, Int32, MS.Internal.FrameworkObject, System.Windows.DependencyProperty, MS.Utility.FrugalStructList`1<System.Windows.ChildRecord> ByRef, System.Windows.FrameworkElementFactory, System.Windows.EffectiveValueEntry ByRef)
   at System.Windows.StyleHelper.ApplyTemplatedParentValue(System.Windows.DependencyObject, MS.Internal.FrameworkObject, Int32, MS.Utility.FrugalStructList`1<System.Windows.ChildRecord> ByRef, System.Windows.DependencyProperty, System.Windows.FrameworkElementFactory)
   at System.Windows.StyleHelper.InvalidatePropertiesOnTemplateNode(System.Windows.DependencyObject, MS.Internal.FrameworkObject, Int32, MS.Utility.FrugalStructList`1<System.Windows.ChildRecord> ByRef, Boolean, System.Windows.FrameworkElementFactory)
   at System.Windows.FrameworkTemplate.InvalidatePropertiesOnTemplate(System.Windows.DependencyObject, System.Object)
   at System.Windows.FrameworkTemplate.HandleBeforeProperties(System.Object, System.Windows.DependencyObject ByRef, System.Windows.DependencyObject, System.Windows.FrameworkElement, System.Windows.Markup.INameScope)
   at System.Windows.FrameworkTemplate+<>c__DisplayClass45_0.<LoadOptimizedTemplateContent>b__2(System.Object, System.Xaml.XamlObjectEventArgs)
   at System.Xaml.XamlObjectWriter.OnBeforeProperties(System.Object)
   at System.Xaml.XamlObjectWriter.Logic_CreateAndAssignToParentStart(MS.Internal.Xaml.Context.ObjectWriterContext)
   at System.Xaml.XamlObjectWriter.WriteEndObject()
   at System.Xaml.XamlWriter.WriteNode(System.Xaml.XamlReader)
   at System.Windows.FrameworkTemplate.LoadTemplateXaml(System.Xaml.XamlReader, System.Xaml.XamlObjectWriter)

Exception Info: System.Windows.Markup.XamlParseException
   at System.Windows.FrameworkTemplate.LoadTemplateXaml(System.Xaml.XamlReader, System.Xaml.XamlObjectWriter)
   at System.Windows.FrameworkTemplate.LoadTemplateXaml(System.Xaml.XamlObjectWriter)
   at System.Windows.FrameworkTemplate.LoadOptimizedTemplateContent(System.Windows.DependencyObject, System.Windows.Markup.IComponentConnector, System.Windows.Markup.IStyleConnector, System.Collections.Generic.List`1<System.Windows.DependencyObject>, System.Windows.UncommonField`1<System.Collections.Hashtable>)
   at System.Windows.FrameworkTemplate.LoadContent(System.Windows.DependencyObject, System.Collections.Generic.List`1<System.Windows.DependencyObject>)
   at System.Windows.StyleHelper.ApplyTemplateContent(System.Windows.UncommonField`1<System.Collections.Specialized.HybridDictionary[]>, System.Windows.DependencyObject, System.Windows.FrameworkElementFactory, Int32, System.Collections.Specialized.HybridDictionary, System.Windows.FrameworkTemplate)
   at System.Windows.FrameworkTemplate.ApplyTemplateContent(System.Windows.UncommonField`1<System.Collections.Specialized.HybridDictionary[]>, System.Windows.FrameworkElement)
   at System.Windows.FrameworkElement.ApplyTemplate()
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.StackPanel.StackMeasureHelper(System.Windows.Controls.IStackMeasure, System.Windows.Controls.IStackMeasureScrollData, System.Windows.Size)
   at System.Windows.Controls.StackPanel.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at MS.Internal.Helper.MeasureElementWithSingleChild(System.Windows.UIElement, System.Windows.Size)
   at System.Windows.Controls.ItemsPresenter.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Border.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Control.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Border.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Grid.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at MS.Internal.Helper.MeasureElementWithSingleChild(System.Windows.UIElement, System.Windows.Size)
   at System.Windows.Controls.ContentPresenter.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Border.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Control.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.DockPanel.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at MS.Internal.Helper.MeasureElementWithSingleChild(System.Windows.UIElement, System.Windows.Size)
   at System.Windows.Controls.ContentPresenter.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Border.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Grid.MeasureCell(Int32, Boolean)
   at System.Windows.Controls.Grid.MeasureCellsGroup(Int32, System.Windows.Size, Boolean, Boolean, Boolean ByRef)
   at System.Windows.Controls.Grid.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Control.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.VirtualizingStackPanel.MeasureChild(System.Windows.Controls.Primitives.IItemContainerGenerator ByRef, System.Windows.Controls.Primitives.IContainItemStorage ByRef, System.Windows.Controls.Primitives.IContainItemStorage ByRef, System.Object ByRef, Boolean ByRef, Double ByRef, Double ByRef, Boolean ByRef, Boolean ByRef, System.Collections.IList ByRef, System.Object ByRef, System.Collections.IList ByRef, Int32 ByRef, Boolean ByRef, Boolean ByRef, System.Windows.Size ByRef, System.Windows.Rect ByRef, System.Windows.Controls.VirtualizationCacheLength ByRef, System.Windows.Controls.VirtualizationCacheLengthUnit ByRef, Int64 ByRef, Boolean ByRef, Double ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, Boolean ByRef, Boolean, Boolean, Boolean, Boolean, Boolean, Boolean ByRef, Boolean ByRef)
   at System.Windows.Controls.VirtualizingStackPanel.MeasureOverrideImpl(System.Windows.Size, System.Nullable`1<Double> ByRef, System.Collections.Generic.List`1<Double> ByRef, System.Nullable`1<Double> ByRef, Boolean)
   at System.Windows.Controls.VirtualizingStackPanel.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at MS.Internal.Helper.MeasureElementWithSingleChild(System.Windows.UIElement, System.Windows.Size)
   at System.Windows.Controls.ItemsPresenter.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Grid.MeasureCell(Int32, Boolean)
   at System.Windows.Controls.Grid.MeasureCellsGroup(Int32, System.Windows.Size, Boolean, Boolean, Boolean ByRef)
   at System.Windows.Controls.Grid.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Control.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.VirtualizingStackPanel.MeasureChild(System.Windows.Controls.Primitives.IItemContainerGenerator ByRef, System.Windows.Controls.Primitives.IContainItemStorage ByRef, System.Windows.Controls.Primitives.IContainItemStorage ByRef, System.Object ByRef, Boolean ByRef, Double ByRef, Double ByRef, Boolean ByRef, Boolean ByRef, System.Collections.IList ByRef, System.Object ByRef, System.Collections.IList ByRef, Int32 ByRef, Boolean ByRef, Boolean ByRef, System.Windows.Size ByRef, System.Windows.Rect ByRef, System.Windows.Controls.VirtualizationCacheLength ByRef, System.Windows.Controls.VirtualizationCacheLengthUnit ByRef, Int64 ByRef, Boolean ByRef, Double ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, Boolean ByRef, Boolean, Boolean, Boolean, Boolean, Boolean, Boolean ByRef, Boolean ByRef)
   at System.Windows.Controls.VirtualizingStackPanel.MeasureOverrideImpl(System.Windows.Size, System.Nullable`1<Double> ByRef, System.Collections.Generic.List`1<Double> ByRef, System.Nullable`1<Double> ByRef, Boolean)
   at System.Windows.Controls.VirtualizingStackPanel.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at MS.Internal.Helper.MeasureElementWithSingleChild(System.Windows.UIElement, System.Windows.Size)
   at System.Windows.Controls.ItemsPresenter.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Grid.MeasureCell(Int32, Boolean)
   at System.Windows.Controls.Grid.MeasureCellsGroup(Int32, System.Windows.Size, Boolean, Boolean, Boolean ByRef)
   at System.Windows.Controls.Grid.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Control.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.VirtualizingStackPanel.MeasureChild(System.Windows.Controls.Primitives.IItemContainerGenerator ByRef, System.Windows.Controls.Primitives.IContainItemStorage ByRef, System.Windows.Controls.Primitives.IContainItemStorage ByRef, System.Object ByRef, Boolean ByRef, Double ByRef, Double ByRef, Boolean ByRef, Boolean ByRef, System.Collections.IList ByRef, System.Object ByRef, System.Collections.IList ByRef, Int32 ByRef, Boolean ByRef, Boolean ByRef, System.Windows.Size ByRef, System.Windows.Rect ByRef, System.Windows.Controls.VirtualizationCacheLength ByRef, System.Windows.Controls.VirtualizationCacheLengthUnit ByRef, Int64 ByRef, Boolean ByRef, Double ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, System.Windows.Size ByRef, Boolean ByRef, Boolean, Boolean, Boolean, Boolean, Boolean, Boolean ByRef, Boolean ByRef)
   at System.Windows.Controls.VirtualizingStackPanel.MeasureOverrideImpl(System.Windows.Size, System.Nullable`1<Double> ByRef, System.Collections.Generic.List`1<Double> ByRef, System.Nullable`1<Double> ByRef, Boolean)
   at System.Windows.Controls.VirtualizingStackPanel.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at MS.Internal.Helper.MeasureElementWithSingleChild(System.Windows.UIElement, System.Windows.Size)
   at System.Windows.Controls.ItemsPresenter.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at MS.Internal.Helper.MeasureElementWithSingleChild(System.Windows.UIElement, System.Windows.Size)
   at System.Windows.Controls.ScrollContentPresenter.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Grid.MeasureCell(Int32, Boolean)
   at System.Windows.Controls.Grid.MeasureCellsGroup(Int32, System.Windows.Size, Boolean, Boolean, Boolean ByRef)
   at System.Windows.Controls.Grid.MeasureCellsGroup(Int32, System.Windows.Size, Boolean, Boolean)
   at System.Windows.Controls.Grid.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.ScrollViewer.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Border.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Control.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Grid.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at MS.Internal.Helper.MeasureElementWithSingleChild(System.Windows.UIElement, System.Windows.Size)
   at System.Windows.Controls.ContentPresenter.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Border.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Control.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.DockPanel.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Grid.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at MS.Internal.Helper.MeasureElementWithSingleChild(System.Windows.UIElement, System.Windows.Size)
   at System.Windows.Controls.ContentPresenter.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Control.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.DockPanel.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Border.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at MS.Internal.Helper.MeasureElementWithSingleChild(System.Windows.UIElement, System.Windows.Size)
   at System.Windows.Controls.ContentPresenter.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Border.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Control.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at MS.Internal.Helper.MeasureElementWithSingleChild(System.Windows.UIElement, System.Windows.Size)
   at System.Windows.Controls.ContentPresenter.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Documents.AdornerDecorator.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Grid.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Controls.Border.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.Window.MeasureOverrideHelper(System.Windows.Size)
   at System.Windows.Window.MeasureOverride(System.Windows.Size)
   at System.Windows.FrameworkElement.MeasureCore(System.Windows.Size)
   at System.Windows.UIElement.Measure(System.Windows.Size)
   at System.Windows.ContextLayoutManager.UpdateLayout()
   at System.Windows.ContextLayoutManager.UpdateLayoutCallback(System.Object)
   at System.Windows.Media.MediaContext+InvokeOnRenderCallback.DoWork()
   at System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
   at System.Windows.Media.MediaContext.RenderMessageHandlerCore(System.Object)
   at System.Windows.Media.MediaContext.RenderMessageHandler(System.Object)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
   at System.Windows.Threading.DispatcherOperation.InvokeImpl()
   at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(System.Object)
   at MS.Internal.CulturePreservingExecutionContext.CallbackWrapper(System.Object)
   at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
   at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at MS.Internal.CulturePreservingExecutionContext.Run(MS.Internal.CulturePreservingExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Windows.Threading.DispatcherOperation.Invoke()
   at System.Windows.Threading.Dispatcher.ProcessQueue()
   at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
   at MS.Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef)
   at MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object)
   at System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32)
   at System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate)
   at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority, System.TimeSpan, System.Delegate, System.Object, Int32)
   at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr, Int32, IntPtr, IntPtr)
   at MS.Win32.UnsafeNativeMethods.MessageBox(System.Runtime.InteropServices.HandleRef, System.String, System.String, Int32)
   at System.Windows.MessageBox.ShowCore(IntPtr, System.String, System.String, System.Windows.MessageBoxButton, System.Windows.MessageBoxImage, System.Windows.MessageBoxResult, System.Windows.MessageBoxOptions)
   at System.Windows.MessageBox.Show(System.String, System.String, System.Windows.MessageBoxButton, System.Windows.MessageBoxImage)
   at AnyStatus.Desktop.Program.Main()


Jenkins View doesn't support folders

We use Jenkins View item/plugin and it works well for our purposes. But it has one small thing - doesn't allow to expand folders in a view.
We have two main folders in Jenkins. If I try to create Jenkins View in anystatus for the main basic view, I see this:
image

Currently we can workaround it by adding Jenkins View item for each folder and it works fine. But it will be less and less comfortable (or even practically impossible) as the structure will expand.

Also, the motivation is to make the effort as minimal as it can be so developers won't dismiss the utility as it is too complicated to initialize it and requires to be updated as the structure changes. If it supports folders, once the main view is added, we don't have to touch it again.

"Unauthorised" message using azure devops.

I cannot seem to connect Azure Devops widget. There is not a lot of info on how to set this up - i.e. what URL exactly is required?.

Also there is not a lot of detail in the exception 😅

Is there some setting that I need to have changed on the Azure Devops perhaps?
(I have created an access token with full access to test this, and it still says Unauthorised)

image

Configuring Azure DevOps Pipeline

I am trying to configure AnyStatus to show build alerts for Azure DevOps and I am not able to get it working. The fields where I can specific the account, project and pipeline is not populating or editable.

image

And I have tried it with pretty much all auth options for Azure DevOps

image

image

It's always read only and not editable. How do you proceed from here?

Improve endpoint experience

When using a widget that requires an endpoint, the first experience you get is no way to pick an endpoint, and no obvious way to add one. It took me a while to realize there's a different spot to go add these.
It would be nice if the dropdown had an option at the bottom that says "add new endpoint..." and take you to the endpoint page with the right type pre-selected (or filtered to compatible ones)), and then navigate back once done.

Second I'd like to see the dropdown filtered by compatible endpoints, rather than showing all endpoints. Ie I should only see the nugets endpoint for the nuget widgets.

Display output of commandline

I'd like the ability to run a batch script and display the output in the status. Status is green if the script succeeds, and the description will show the output.
For example this would get the latest build number from a file and display it in the AnyStatus:

SET /p buildnum=<\\buildserver\currentbuildnumber.txt | echo %buildnum%

or current date:

echo %date%

Azure Devops Pipelines - Using '$top=1' in API call will not return in progress builds

I had a build running and was not able to have this show up in the list.

For some reason the URL having the $top parameter means it only returns completed builds. I could see the previous one, but not the one in progress currently.

If I pasted the API URL in browser - I get the same result - so it's not AnyStatus' doing.

If I remove the $top=1 parameter - then I get the list as expected - with the inProgress build at the top.

🤔

Maybe this is something on my Azure Org, will need to investigate a bit further when I get some time.

MVVM Framework

Decide whether to replace current MVVM framework (based on MediatR) with a 3rd party lib or consider moving current framework to another repo.

Possibility to add Jenkins View

In a previous version of AnyStatus (at least up till version 2.9.9) it was possible to add a Jenkins view to the status overview. Whenever the contents of the view changed on the Jenkins server, these changes were reflected in the list of Jenkins jobs below the view automatically.

It seems that this functionality is no longer present in the current version of AnyStatus. Can it be added again? It makes monitoring all jobs a lot easier, as any new Jenkins jobs that are added to a view are also automatically monitored by AnyStatus.

UptimeRobot - An error occurred in [monitor name] Response status code does not indicate success: 404 (Not Found).

I have AnyStatus setup with some UptimeRobot health checks. They have been working for couple months. However, it stopped working about a week ago with error An error occurred in [monitor name] Response status code does not indicate success: 404 (Not Found). in Activity Log. At first I thought they had some down time. I've reach out to them and they said their API are working and I have confirmed by calling their API directly using the same api_key I used in AnyStatus and it worked.

I was able to call their API at https://api.uptimerobot.com/v2/getMonitors using the same api_key without issue.

Question, how can I find out what the actual error is?

What should my endpoint be for this kind of Jenkins server? How to troubleshoot when no jobs appear?

I'm trying to get AnyStatus working for the first time. I have a CloudBees Jenkins server with my jobs under

https://jenkins.mycompany.com/myorg/job/myorg-common

For example I can see one repo's master-branch runs at:

https://jenkins.mycompany.com/myorg/job/myorg-common/job/MyRepoName/job/master/

So should my endpoint address be

  • https://jenkins.mycompany.com/myorg/job/myorg-common/api
  • https://jenkins.mycompany.com/myorg/job/myorg-common/api/json
  • https://jenkins.mycompany.com/myorg/job/myorg-common/api/xml
  • https://jenkins.mycompany.com/myorg/job/myorg-common/job/MyRepoName/api
  • https://jenkins.mycompany.com/myorg/job/myorg-common/job/MyRepoName/api/json
  • https://jenkins.mycompany.com/myorg/job/myorg-common/job/MyRepoName/api/xml
  • Something else? I can't find any guidance on this.

I have both a username/password and a personal access token, but no combination of these works: No matter what I do, I can't see any jobs under "Configure Widget". Here's a screenshot with the jobs expanded:
image

And for reference, here's one way I tried it:
image

Versions at the bottom of the Jenkins Blue Ocean pages: 1.27.3 · Core 2.387.3.5 · 05862cf · 17th March 2023 01:43 AM

And I am on CloudBees CI Managed Controller 2.387.3.5-rolling

Jenkins 1.6x doesn't appear to be supported

We still have some Jenkins 1.6 instances we'd like to monitor in AnyStatus 3.0 (they work fine in 2.9.9). When I configure a Jenkins 1.6 endpoint in AnyStatus 3.0, the job list is not populated when I go to select a job for that endpoint. Other Jenkins 2+ endpoints work fine, but not our 1.6 instances. I receive an error in the activity panel:
An error response received from Jenkins server. System.Exception: An error response received from Jenkins server. at AnyStatus.Plugins.Jenkins.API.JenkinsApi.ExecuteAsync[T](IRestRequest request, CancellationToken cancellationToken) at AnyStatus.Plugins.Jenkins.Jobs.JenkinsJobHealthCheck.Handle(StatusRequest`1 request, CancellationToken cancellationToken) at MediatR.AsyncRequestHandler`1.MediatR.IRequestHandler<TRequest,MediatR.Unit>.Handle(TRequest request, CancellationToken cancellationToken) at MediatR.Pipeline.RequestPostProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next) at MediatR.Pipeline.RequestPreProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next) at MediatR.Pipeline.RequestExceptionActionProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next) at MediatR.Pipeline.RequestExceptionActionProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next) at MediatR.Pipeline.RequestExceptionProcessorBehavior`2.Handle(TRequest request, CancellationToken cancellationToken, RequestHandlerDelegate`1 next)

The JSON structure looks to be different between Jenkins 1 and Jenkins 2. Jenkins 2 response may look something like this:
{ "_class": "hudson.model.FreeStyleProject", "name": "A Real Job Type Job", "url": http://jenkins.server.local/job/ARealJobTypeJob/”, "color": "disabled" }
But a Jenkins 1 response looks like this:
{ "name": "A Real Job Type Job", "url": http://jenkins.server.local/job/ARealJobTypeJob/”, "color": "disabled" }

AzureDevops Pipeline "Who broke the build" support

Hi,

I've been looking at adding a way to see who triggered a build, and who the last person was that built something that broke!

So far I've got a bit of a prototype working
image

I just wanted to know what thoughts were on

  1. Modifying the existing AzureDevops Pipeline Widget vs. creating a new one with this extra functionality
  2. What people think of the layout.

www.anystat.us website expired

The site shows this:
image

Is there a plan to bring it back to life?
If not then the links should be updated to ``anystatus.github.ioAlso, there is a forward set up atanystatus.github.io` that is forwarding the client to `anystat.us`, preventing to see the content.

Double-click on widget to execute an action

It would be useful to have an option to set the action executed when a widget is double-clicked.

For example, I am using AnyStatus to view the status of my builds; to view their definitions I currently have to right-click and choose 'Open in Browser'. Instead, I'd like to be able to double-click them to have them open in browser.

Plugin idea: Monitor webpage for changes

It would be cool to have a webpage monitor that'll ping a webpage and download the contents.
If the contents suddenly change from previous checks, it should raise an alert.

Similarly it would be cool to be able to monitor a specific file in a git repo (like for instance release notes), or when a commit is made against a specific file in a branch (useful for monitoring popular repos for important changes coming).

Support for GitHub Actions

It would be nice to monitor specific GitHub workflows/actions that are triggered on a specified GitHub repository.

Update Microsoft Store

Is the version of AnyStatus been updated on the Microsoft Store?
I can't see a version number on the page but it hasn't been updated in quite a while.

Custom notifications

I've been trying to use the TextLabelWidget and make a notification when its text label changes. So far it appears the only thing that can make a notification is Status changed. I tried extending the INotification and NotificationHandler types, but it appears the stuff to actually send the notification is only in the actual app (where the StatusChangedNotificationHandler is defined), so the types to do this are not available. It would be nice if widges could create custom notifications based on custom logic, and not just be limited to Status.
Especially for TextLabelWidget, I'd like to be notified when its value changes.

Virtual Folder to show all Jobs for an endpoint

I have a curated list of jobs already on my Jenkins server. It is tedious to add each Job as a separate widget and to maintain that list as Jobs are added and removed. It would be preferable to add a virtual folder for an endpoint that automatically updates its children with all jobs from the endpoint.

Azure DevOps WorkItems - Custom Query Support

Hi,
I would like to support the Custom Query for listing the work items.
As now, I've edited the code in this way, but I don't think that it is releasable as is:

file: .\src\Plugins\AnyStatus.Plugins.Azure\WorkItems\AzureDevOpsWorkItemsWidget.cs

        [AsyncItemsSource(typeof(AzureDevOpsIterationSource), autoload: false)]
        public string Iteration { get; set; }

        [DisplayName("Custom Query")]
        public string CustomQuery { get; set; }

Here I've edited a few things:

  1. Added the CustomQuery Property
  2. Removed the Required Attribute to the Iteration property

then in the file: .\src\Plugins\AnyStatus.Plugins.Azure\WorkItems\AzureDevOpsWorkItemsQuery.cs

 protected override async Task Handle(StatusRequest<AzureDevOpsWorkItemsWidget> request, CancellationToken cancellationToken)
        {
            var api = new AzureDevOpsApi(Endpoint);
            string wiql;

            if (string.IsNullOrEmpty(request.Context.CustomQuery))
            {
                wiql = string.Format(query, request.Context.Iteration);
            } else
            {
                wiql = request.Context.CustomQuery;
            }

           [the rest is the same]

In the Handle Task I've checked that if the customQuery has value then I will use that, otherwise, I will use the default one.

Hope this will help implements something!

BTW Thanks for the absolutely great work done!

here few screenshots:

image

image

Widget Documentation

Currently there is no documentation on configuring or troubleshooting widgets. I think this would be useful.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.