otto-de / gitactionboard Goto Github PK
View Code? Open in Web Editor NEWGitactionBoard - Ultimate Dashboard for GithubActions.
License: Apache License 2.0
GitactionBoard - Ultimate Dashboard for GithubActions.
License: Apache License 2.0
Describe the bug
Any modification to the default workflow event filter list in the preferences view results in no jobs appearing in the 'Workflow Jobs' view. When this happens, returning to the 'Preferences' view then reveals that all of the workflow event filter items are now displaying as [object Object]
. Clearing the filter list and returning to the 'Workflow Jobs' view then displays all the jobs again, and the preference view displays the default filter list correctly again.
To Reproduce
Steps to reproduce the behavior:
The steps below use the 'Schedule' event as an example, however any event can be used instead.
[object Object]
.Expected behavior
I expect the 'Workflow Jobs' view to display all job status' that match the 'Show Builds Due To' filter list in the 'Preferences' view, and I expect the preferences view to correctly display the event filter names after items have been removed and/or added.
Screenshots
Step 1 and 2 (image edited to cover sensitive information, but can still see that lots of jobs are being displayed):
Step 3:
Step 4 and 5:
Step 6 and 7:
Step 8 and 9:
Additional context
The dashboard was run with the following command (example org and repo names used instead of real as that information is sensitive):
docker run -p 9080:8080 -e REPO_OWNER_NAME=ExampleOrg -e REPO_NAMES=Repo1,Repo2,Repo3 -e GITHUB_ACCESS_TOKEN=ExampleToken -it ottoopensource/gitactionboard:latest
Bug reproduced on both Brave (Chromium) and Firefox browsers.
Hi it would be nice to have an example deployment in the README, using an organisation and or a USERNAME. Also a multi repo view example too would be appreciated.
Hi there,
we are getting exception. I don't know how to reproduce it, but it appears in our logs. Maybe you know what needs to be done:
{
"textPayload": "java.util.concurrent.CompletionException: org.springframework.web.client.RestClientException: Error while extracting response for type [class de.otto.platform.gitactionboard.adapters.service.job.WorkflowsRunDetailsResponse] and content type [application/json;charset=utf-8]\n\tat java.base/java.util.concurrent.CompletableFuture.encodeThrowable(Unknown Source) ~[na:na]\n\tat java.base/java.util.concurrent.CompletableFuture.completeThrowable(Unknown Source) ~[na:na]\n\tat java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(Unknown Source) ~[na:na]\n\tat java.base/java.lang.Thread.run(Unknown Source) ~[na:na]\nCaused by: org.springframework.web.client.RestClientException: Error while extracting response for type [class de.otto.platform.gitactionboard.adapters.service.job.WorkflowsRunDetailsResponse] and content type [application/json;charset=utf-8]\n\tat org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:118) ~[spring-web-6.0.9.jar!/:6.0.9]\n\tat org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:865) ~[spring-web-6.0.9.jar!/:6.0.9]\n\tat org.springframework.web.client.RestTemplate.execute(RestTemplate.java:764) ~[spring-web-6.0.9.jar!/:6.0.9]\n\tat org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:378) ~[spring-web-6.0.9.jar!/:6.0.9]\n\tat de.otto.platform.gitactionboard.adapters.service.ApiService.getForObject(ApiService.java:37) ~[classes!/:3.3.2]\n\tat de.otto.platform.gitactionboard.adapters.service.job.GithubJobDetailsService.fetchWorkflowDetails(GithubJobDetailsService.java:166) ~[classes!/:3.3.2]\n\tat de.otto.platform.gitactionboard.adapters.service.job.GithubJobDetailsService.lambda$fetchJobDetails$0(GithubJobDetailsService.java:37) ~[classes!/:3.3.2]\n\t... 2 common frames omitted\nCaused by: org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize value of type de.otto.platform.gitactionboard.adapters.service.job.RunStatus
from String "pending": not one of the values accepted for Enum class: [queued, in_progress, completed]\n\tat org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.readJavaType(AbstractJackson2HttpMessageConverter.java:406) ~[spring-web-6.0.9.jar!/:6.0.9]\n\tat org.springframework.http.converter.json.AbstractJackson2HttpMessageConverter.read(AbstractJackson2HttpMessageConverter.java:354) ~[spring-web-6.0.9.jar!/:6.0.9]\n\tat org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:103) ~[spring-web-6.0.9.jar!/:6.0.9]\n\t... 8 common frames omitted\nCaused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type de.otto.platform.gitactionboard.adapters.service.job.RunStatus
from String "pending": not one of the values accepted for Enum class: [queued, in_progress, completed]",
"insertId": "64a7be6000081321049edc13",
"resource": {
"type": "cloud_run_revision",
"labels": {
"service_name": "gitactionboard",
"location": "europe-west1",
"project_id": "gcp-XXXXX",
"configuration_name": "gitactionboard",
"revision_name": "gitactionboard-00011-xtn"
}
},
"timestamp": "2023-07-07T07:27:28.529185Z",
"severity": "ERROR",
"labels": {
"instanceId": "001bdd422e2935bd69f703cf95a072f496f1e0c9dc1eb85f9c0691fdb81012a4e0059a8b2f80b42a45ad181e25b9d78d23c9a9d81e57aeaa6028106bcfd7eb1084"
},
"logName": "projects/gcp-XXXXX/logs/run.googleapis.com%2Fstdout",
"receiveTimestamp": "2023-07-07T07:27:28.711025682Z"
}
Is your feature request related to a problem? Please describe.
We like to split jobs up in sub jobs files, like the build and deploy workflow includes a build jobs and a deploy jobs file. Each of these sub jobs will only be triggered by the main workflow (either using repository_dispatch or workflow_dispatch)
This means that gitactionboard shows 4 jobs for each repo, while we are only interested in the main job.
Describe the solution you'd like
Ability to specify which jobs should be shown
Describe alternatives you've considered
Is your feature request related to a problem? Please describe.
The current display on GitActionBoard provides a high-level view of the status of GitHub workflows, which is useful but not comprehensive for teams managing numerous workflows across various repositories. The absence of detailed information like the triggering event and the user who triggered the workflow makes it harder to quickly understand and act on workflow statuses, especially in complex project environments.
Describe the solution you'd like
I propose an enhancement to the workflow display that introduces a list view with additional columns for more detailed insights. The proposed columns are:
In addition to these columns, the following features would significantly enhance the tool's utility:
Describe alternatives you've considered
An alternative could involve using separate tools or scripts to extract and display this information. However, integrating these features directly into GitActionBoard would offer a seamless and centralized experience for monitoring and managing GitHub workflows, eliminating the need for additional tools and processes.
Additional context
Incorporating these enhancements would empower teams, especially those with multiple workflows and repositories, to have a more detailed and actionable overview of their CI/CD pipeline statuses. This improvement aims at not just monitoring but also at effectively managing and troubleshooting workflows by providing all necessary details in one comprehensive view.
Is your feature request related to a problem? Please describe.
We are using the gitactionboard as part of our Daily Operations tasks. As someone who is responsible for the status of all of our pipelines, it would be great to add an additional filter for all Pull Request builds. Right now it's possible to filter green builds and show the red ones only. Unfortunately tools like dependabot are leading to some additional builds and this is getting confusing for the person who is doing the operations for the team.
Describe the solution you'd like
I would like to get an additional filter so the daily operations guy can get a quick overview of the status of all applications on the master branch.
Both AWS ECR and Trivy report https://nvd.nist.gov/vuln/detail/CVE-2022-37434 vulneribility for the base image. Please consider upgrading. Thank you
Describe the bug
If a workflow job initially fails but a rerun of the same workflow job is successful, the workflow shows the state of the first attempt
To Reproduce
Steps to reproduce the behavior:
Expected behavior
gitactionboard should show the status of the latest attempt of a workflow job
It would be very nice to filter out some jobs, like the feature branchs. Maybe someone is only interested in the jobs in the develop branch or main. If all repositories have the same branch names (develop, main, issue/, feature/, etc...)
Currently, there is no tests for frontend code base. It'll be good to have some tests for it
Is your feature request related to a problem? Please describe.
To me it's unclear which version is currently live. I always need to check in my container orchestrator to see which version is live.
Describe the solution you'd like
Show the version number of Gitactionboard (e.g. v3.0.5) somewhere in UI.
Describe alternatives you've considered
None
Description + reprodcution
I'm setting up the docker image, pointing it at one of my (private) repos.
I had some trouble with setting up the workflows in said repo, so many of the runs I triggered did not start because of workflow parsing errors.
During startup of the container, I see the following logs:
# a bunch of
2023-04-17T11:39:02.922Z INFO 1 --- [nPool-worker-11] d.o.p.g.a.s.job.GithubJobDetailsService : Fetching run details for Workflow(name=check_for_release, repoName=test-work
flow-viewer, id=54272134)
...
2023-04-17T11:39:03.459Z ERROR 1 --- [nPool-worker-10] d.o.p.g.a.s.job.GithubJobDetailsService : org.springframework.web.client.RestClientException: Error while extracting response for type [class de.otto.platform.gitactionboard.adapters.service.job.WorkflowsRunDetailsResponse] and content type [application/json;charset=utf-8]
...
java.util.concurrent.CompletionException: org.springframework.web.client.RestClientException: Error while extracting response for type [class de.otto.platform.gitactionboard.adapters.service.job.WorkflowsRunDetailsResponse] and content type [application/json;charset=utf-8]
Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type `de.otto.platform.gitactionboard.adapters.service.job.RunConclusion` from String "startup_failure": not one of the values accepted for Enum class: [skipped, cancelled, success, timed_out, neutral, action_required, failure]
at [Source: (org.springframework.util.StreamUtils$NonClosingInputStream); line: 1, column: 341] (through reference chain: de.otto.platform.gitactionboard.adapters.service.job.WorkflowsRunDetailsResponse["workflow_runs"]->java.util.ArrayList[0]->de.otto.platform.gitactionboard.adapters.service.job.WorkflowsRunDetailsResponse$WorkflowRunDetails["conclusion"])
Additional context
Tested with docker image 3.1.0
and latest
.
Hi,
Is your feature request related to a problem? Please describe.
I can't run the container from dockerhub on my macbook (arm64) without emulation.
Describe the solution you'd like
this project looks very cool. I was looking for something like jenkinsci/build-monitor-plugin for actions, and this looks pretty similar.
One thing I noticed is that only a amd64 image is published on DockerHub. For running on an apple arm, or also on a raspi, it would be useful to publish arm64 too. I'm not sure if the image has anything arch-specific to it, but since it seems to be a pretty standard java spring app I guess it's 'just' a matter of making the x-platform build, presumably using qemu and docker buildx.
Describe alternatives you've considered
None
Additional context
I might be able to do a pr for that if that is desired.
Best,
Florian
Hi,
I got a failure if too many repos:
2022-06-23 13:44:47.684 ERROR 1 --- [onPool-worker-3] d.o.p.g.a.s.w.GithubWorkflowService : org.springframework.web.client.HttpClientErrorException: 414 URI Too Long: [no body]
java.util.concurrent.CompletionException: org.springframework.web.client.HttpClientErrorException: 414 URI Too Long: [no body]
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314) ~[na:na]
at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319) ~[na:na]
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1702) ~[na:na]
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.exec(CompletableFuture.java:1692) ~[na:na]
at java.base/java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290) ~[na:na]
at java.base/java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1020) ~[na:na]
at java.base/java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1656) ~[na:na]
at java.base/java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594) ~[na:na]
at java.base/java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:183) ~[na:na]
Caused by: org.springframework.web.client.HttpClientErrorException: 414 URI Too Long: [no body]
at org.springframework.web.client.HttpClientErrorException.create(HttpClientErrorException.java:145) ~[spring-web-5.3.20.jar!/:5.3.20]
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:168) ~[spring-web-5.3.20.jar!/:5.3.20]
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:122) ~[spring-web-5.3.20.jar!/:5.3.20]
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63) ~[spring-web-5.3.20.jar!/:5.3.20]
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:819) ~[spring-web-5.3.20.jar!/:5.3.20]
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:777) ~[spring-web-5.3.20.jar!/:5.3.20]
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:711) ~[spring-web-5.3.20.jar!/:5.3.20]
at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:334) ~[spring-web-5.3.20.jar!/:5.3.20]
at de.otto.platform.gitactionboard.adapters.service.ApiService.getForObject(ApiService.java:37) ~[classes!/:2.0.7]
at de.otto.platform.gitactionboard.adapters.service.workflow.GithubWorkflowService.getWorkflowIdentifiers(GithubWorkflowService.java:44) ~[classes!/:2.0.7]
at de.otto.platform.gitactionboard.adapters.service.workflow.GithubWorkflowService.lambda$fetchWorkflows$1(GithubWorkflowService.java:30) ~[classes!/:2.0.7]
at java.base/java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1700) ~[na:na]
... 6 common frames omitted
I've tried pushing a secret to one of our repos. The Teams alert will only come once I've opened the /#/secrets endpoint in my browser. Any chance to make this come without UI interaction? We don't use the UI.
Describe the bug
We recently moved our buildmonitor to be available from outside of the otto whitelist and got flagged as phishing website.
Firefox then showed a warning similar to the one below not only for this subdomain but also for the whole domain.
We're not quite sure how this happened and it doesn't seem to be a certificate issue as everything was up to date. Nontheless it might be worth investigating on that topic.
For now we restricted the monitor to internal traffic once again.
Screenshots
The current frontend is custom built and every feature - like the sidebar toggle - has to be created. This can easily lead to errors regarding different screen sizes, browser window ratios, etc... It also slows down the implementation of new features.
I'd like to switch to a frontend framework like vuetify. Using a framework like that comes with quite a few benefits:
Workflows which are in the status Waiting will cause a java error as they are not part of the allowed enum.
Steps to reproduce the behavior:
Caused by: com.fasterxml.jackson.databind.exc.InvalidFormatException: Cannot deserialize value of type
de.otto.platform.gitactionboard.adapters.service.job.RunStatus from String "waiting": not one of the values accepted for Enum class: [queued, in_progress, completed]
Expected behavior
Support for the "waiting" workflow status, but ideally all statuses as listed on https://docs.github.com/en/rest/actions/workflow-runs?apiVersion=2022-11-28
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.