timoschwarzer / gitlab-monitor Goto Github PK
View Code? Open in Web Editor NEWA web-based monitor dashboard for GitLab CI
Home Page: https://gitlab-monitor.timoschwarzer.com
License: MIT License
A web-based monitor dashboard for GitLab CI
Home Page: https://gitlab-monitor.timoschwarzer.com
License: MIT License
Hi, i wonder if it's possible to only show projects that have a specific tag?
Let's assume i have many projects, that don't have a consistent naming scheme and are distributed in different groups and subgroups.
I would like to tag some of these projects and only show these projects in the monitor.
As far as i understand it is currently only possible to also include tagged projects, but not to only show tagged ones.
Hello,
Is it possible to create a different docker image that is not using root? On Open shift cluster by default images that require root are disabled...
Thank you for considering!
Best regards,
Andrej
Hi, awesome job on the dashboard! Pls consider adding merge request related info to the dashboard. We had the issue of promoting the actively review the merge request in a timely manner.
What about a configuration option to change the default sorting?
Personally I have some use cases where I'd love to see my projects ordered alphabetically, because I have a high number of projects and for me it is hard to find the right project in the dashboard.
Hey, just found this project and love it! I'm working on some ideas to customize it and tweak it but had one thing I wanted to add as an issue. Passing a full access token as a GET variable I think is an accident waiting to happen!
An API token being passed as a GET variable is susceptible to being grabbed or snagged by all sorts of things
There have been cases, albeit rare, of code repositories being compromised and code being injected with malware. Corporate espionage cases of companies stealing competitors software. Holding source code for ransom not to publicly release.
Passing info via get vars is cool but you wouldn't ask someone to include a password in the URL. I would have a field that lets someone enter the token in a form field, hit submit, and keep it in a post variable or cookie.
It seems that the project view always shows the default branch, no matter which one is running
It should show the branch that is actually running.
It seems that the info is on the pipeline object in the ref
property
Is there a way to make the default branch pipeline status always on the display even if the last build was more than maxAge?
e.g master was last ran 20 hours ago, maxAge is set to 100 hours but the card was showing "No recent builds"
We're currently using the gitlab-monitor to track the status of our various (small and large) repositories.
What we are missing is the possibility to visualize the status of different branches. The background color of each component shows the status of one branch only, and splitting it would probably clutter the view (?).
One idea is to set up different configurations and regularly swap them: Show devel dashboard for 5 minutes, then master dashboard for five minutes, ...
Add an optional header that shows a configurable text. In our case, this would simply be "master" or "devel", to quickly distinguish what is currently displayed.
It would be great if we could set the visibility level of the projects we want to see in our dashboard.
In our case, we use the hosted gitlab.com version. Now it shows all the public and private projects.
We only want to see our private projects.
Would it be possible to filter out skipped pipelines?
Background: We use semantic commits to automatically generate tags and a changelog. Since this is a step in our build pipeline, it results in a commit and a tag for this commit, which only contains the changelog (and other minor things, like a version number in a config file). We skip the build, since it does not contain changes to our code.
The problem is now - the master and the latest tags now don't have a successful build, which results in gitlab-monitor always showing it in gray instead of green (or red).
Would it be possible to filter these pipelines out? We would like to use default branch "master" and the penultimate pipeline.
Hope you get what I mean ;-)
Hi @timoschwarzer,
Do you have any idea why GitLab returns 500
on this API request:
GET https://gitlab.com/api/v4/projects?order_by=last_activity_at&per_page=20&visibility=private
?
This is configuration I am using for your monitor:
{
"gitlabApi": "https://gitlab.com/api/v4",
"privateToken": "<MY PRIVATE API TOKEN>",
"maxAge": 0,
"fetchCount": 20,
"pipelinesOnly": false,
"autoZoom": false,
"showPipelineIds": true,
"showJobs": "icon",
"showDurations": true,
"showUsers": false,
"projectVisibility": "private",
"title": null,
"filter": {
"include": ".*",
"includeTags": ".*",
"exclude": null,
"excludeTags": null
},
"projectFilter": {
"*": {
"include": ".*",
"exclude": null,
"default": null,
"showMerged": true,
"showTags": true
}
}
}
Your monitor loads quite long and when I inspected network requests I saw that for this configuration your monitor is calling above given API point. I tried calling the same API point from Postman and I am getting again 500
. My API token is valid, I checked that by listing my private groups: GET https://gitlab.com/api/v4/groups?owned=yes
.
So basically, I cannot list private projects from my private group with a valid API private token and thus I cannot see anything on your monitor.
Note that I also have one or more private projects that belong to my account on GitLab. I also have one or more private projects in my private group.
Thanks for any help and thanks for your awesome open-source contribution!
Best regards,
Herman
Several issues are encountered when running the dashboard in docker:
I trigger pipelines of projects manually a lot and when I do it on projects that haven't had a new commit in a long time, they won't show up in the monitor.
Another issue with manually triggering pipelines (for projects that have had a commit in the last 7 days) is that the monitor gets confused and displays multiple (X) symbols for instance...
Here I just clicked the retry button on the right of the first pipeline:
The result was pretty much the same:
But this is what the monitor displays:
The time is wrong as well btw. It shows 17:39 instead of 3:49.
Also, why does the monitor always display the pipeline stages from right to left instead of from left to right like Gitlab does? This is very confusing.
Hello, thanks for this really cool tool! :-)
I have one little problem though. I try to limit the visible projects to the ones of my group/subgroup and I use the 'filter' param for this. I have tried something like this:
"filter": {
"include": ".*cxa-dsi.*",
"exclude": null
}
and also
"include": "cxa/cxa-dsi",
and also
"include": "cxa/cxa-dsi.*",
and also
"include": "/cxa/cxa-dsi.*",
Always I get projects that do not contain cxa-dsi
in their path.
So I assume I don't understand what I am supposed to put in or it doesn't work or I have the wrong idea of how to use the filtering at all. :-)
Help is appreciated.
Hi,
Some of my projects are being build by gitlab ci when new tag is added (only tags gitlab ci settings). These project are not shown in gitlab monitor (https://timoschwarzer.com/gitlab-monitor/).
My gitlab monitor configuration
{
"gitlabApi": "xxx",
"privateToken": "xxx",
"maxAge": 24,
"fetchCount": 20,
"pipelinesOnly": true,
"autoZoom": true,
"showPipelineIds": true,
"showJobNames": true,
"showDurations": true,
"showUsers": true,
"projectVisibility": "any",
"filter": {
"include": "rnd",
"exclude": null
}
}
Regards
Arek
Hi Timo!
I've happily using the monitor for the past months and got totally used to my bird's eye view of running pipelines. ❤️
Since a couple days, the monitor seems to have trouble fetching the right information about running pipelines. Like, when I leave maxAge
to the default, it only shows me one project which also has a wrong last run timestamp on it. When I set maxAge: 0
it shows me everything but all the last run times are off...
Maybe something changes in the Gitlab API? Anyone else with this issue?
Thanks!
I tried to filter only selected projects from our group.
I did it as array but unfortunately it doesn't work for me. Nothing shows up.
"filter": { "include": [ "group/project1", "group/project2", "group/project3" ], "exclude": null },
Is it bugged or I misunderstand something?
It seems that it always shows the last pipeline being run.
It would be great to see the last X pipelines.
Instead of showing one card per project, you could show the card pipelines as the first citizen, and filter the amount of pipelines per project according to a config value of last pipelines.
this is a pipeline response eg:
[
{"id":1163,"sha":"2bfae32771c66a375cde4fa9bd746b7788999ce3","ref":"master","status":"success"},
{"id":1162,"sha":"b5158a9347961d671df6f6933403842ee2f374b1","ref":"14-delete-dialogs-bug","status":"success"},
{"id":1153,"sha":"66e97da8d1f80f3f70e20bedf99defc1c9f1f231","ref":"master","status":"success"},
{"id":1150,"sha":"4636977f5447c97f249199cdba2dcf8d39887575","ref":"13-env-vars-config","status":"success"},
... ]
Imaging if you have multiples branches building at the same time, you could only see one
The Configuration-Documentation https://github.com/timoschwarzer/gitlab-monitor/blob/master/CONFIGURATION.md mentions "showJobs" which is not working.
The Configuration https://github.com/timoschwarzer/gitlab-monitor/blob/master/src/config.default.json contains parameter "showJobNames" which is not documented at https://github.com/timoschwarzer/gitlab-monitor/blob/master/CONFIGURATION.md.
Hey there,
sorry this is my first time creating an issue on github, not sure if this is the right place for a build error. I'm trying to build the project and I am running into the following error:
yarn run v1.7.0
$ cross-env NODE_ENV=production webpack --progress --hide-modules
Hash: 595d2233e810a76f4a1b
Version: webpack 3.10.0
Time: 18159ms
Asset Size Chunks Chunk Names
icons.svg 86 kB [emitted]
build.js 735 kB 0 [emitted] [big] main
build.js.map 950 kB 0 [emitted] main
index.html 254 bytes [emitted]
ERROR in build.js from UglifyJs
Invalid assignment [./node_modules/query-string/index.js:8,0][build.js:22681,30]
Child html-webpack-plugin for "index.html":
1 asset
error Command failed with exit code 2.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
I tried googling this error but couldn't find much info on it. Here's an attached screenshot of my steps as well:
Any idea where I am going wrong here?
Next feature request :-D
We have pipeline with jobs that are allowed to fail, which gitlab shows with an orange exclamation mark. gitlab-monitor shows these jobs with a red cross, like a normal failed job.
Would be nice to have this visible in gitlab-monitor with an orange exclamation mark, too.
There should be an option to change the sort of the projects to last build time (or ideally, last triggered time). When a job/pipeline is manually triggered is should cause the project to be moved to the top so it is move visible.
For usage at a TV I would like to have an autostart-option so that the gitlab-monitor is starting with the supplied configuration automatically instead of showing the configuration and the Save-button for the first time.
Hi there!
I want to move the project to GitLab in the next weeks.
If there are reasons against this, please comment.
Using the docker image, I set GITLAB_MONITOR_CONFIG to my config json (verified works), but when I browse to localhost, I get the "Before you can use GitLab Monitor, it has to be configured" page.
Here's how I'm running the container:
docker run --publish 80:80/tcp --env GITLAB_MONITOR_CONFIG={...json...} timoschwarzer/gitlab-monitor
I opened an interactive session, ran the commands from wrapper.sh, and verified that /usr/share/nginx/html/config.json
was populated with my config before nginx started.
Does this look like a bug, or am I doing something wrong?
It would be useful to have the option to filter by a particular branch or to show all branches at once.
For instance, right now we have some development super active on a branch, so the build monitor is almost always showing that branch, but most of the team only needs to know if master is active and that branch being red isn't useful information for them.
If I rerun a job in the pipeline, gitlab-monitor displays a duplicate of the job.
Instead it would be nice to (optionally) only display the newes job of a given name in a pipeline.
I suggest the following patch
but since I'm not a JavaScript programmer, I'd like a second opinion
When using this app as a build board it would be helpful to keep failed builds at the top of the list until either
I want to be able to monitor projects to groups where I am a member. This is essential when using gitlab.com.
https://docs.gitlab.com/ce/api/projects.html
membership | boolean | no | Limit by projects that the current user is a member of |
---|
Hi,
My pipelines are triggered when tag is added to gitlab. Pipeline is started on master or develop branch but on monitoring dashboard branch master i always shown.
Gitlab allows you to tag a project (not tag as in the Git sense)
It would be great if we could include projects on our dashboard based on these tags, as we have a handful of projects across several groups we would like to include.
You get a list of tags from the v4 API project search scope response:
[
{
"id": 201,
// other fields omitted
"created_at": "2016-08-12T16:05:03.531Z",
"default_branch": "master",
"tag_list": [
"composer",
"monitored"
],
// other fields omitted
}
]
Our badges are broken. We use variables inside our badges, and gitlab-monitor shows a broken image. The generated url/image looks like this: https:///%%7Bproject_path%7D/pipelines
Seems like %{project_path} is not translated. Don't know wether this is a bug in gitlab or in gitlab-monitor.
Allow to set an array of scopeID in the parameter "projectScopeId".
The app should look in all "groups" or "users" listed.
So, I've pulled the project, and filled in the default config in src/config.default.json
and moved that file to the public folder
.
I've made a API key token (which works) and I use the following URL: https://gitlab.com/api/v4/users/<my_user_id>
.
This also works, but when I do the project detail API call (https://gitlab.com/api/v4/users/<my_user_id>/projects/<project_id>
, it throws a 404, so I don't see any project. I've tried seting projects public etc... but nothing seems to work... what am I doing wrong here?
Hi there, I was thinking that for desktop uses, it would be great to check whether the tab is active or not, and depending on that, not send requests to gitlab
Since the tab is not active, the user can't see the changes, so it kinda not make sense to update the view, until the tab get active again.
This way, we could save a lot of requests or load to Gitlab, when the user is not watching
The behavior is transparent to users. Or maybe we could add a config flag, but it doesn't make sense for now.
Maybe in the future if we add notifications for failed builds, then the config flag makes sense, because you'll want to be notify even if the tab is not active
what do you think? I could work on this in this week, and maybe if you want we could also try out notifications separately
https://github.com/timoschwarzer/gitlab-monitor/blob/master/CONFIGURATION.md says "Your configuration overrides the default configuration, which can be found src/config.default.json", but is missing the filename of my configuration file.
Hello,
Your project is very interesting. After going around the features, I think there is one missing ..: p
Indeed, it would be very favorable to be able to integrate the sound alerts from the browsers.
We use gitlab-monitor on a TV in our company but we do not always have eyes on it. A sound alert would be very interesting in the case of an error (build failed etc ...)
What about an option to only show the latest tags?
In our project we have several repositories each with several tags. Using the option to limit the number of pipelines to 5 would result in always showing 5 pipelines for each project. This would potentially hide some branches in the process.
We'd like more ways to filter the projects that get displayed. Currently I'm thinking groups
and projects
optional parameters that can be used separately or together.
e.g. ?groups=mygroup1,mygroup2&projects=mygroup1/myproject1,mygroup2/myproject2
(or maybe a repeating parameter rather than comma separated)
So if there was a project=mygroup3/myproject3 in the example above, it would not be displayed due to the group filter not including mygroup3. But if it did, or there was no group filter, it would be shown. (The project names are fully qualified because of possible duplicate names leading to ambiguity.)
I didn't want to do a PR out of nowhere as I'm not sure if there's a better/more elegant way (this was just my off the cuff thoughts).
It would be nice to not pass the token around everywhere-- maybe a proxy mode so all requests go through the gitlab-monitor server? Additionally being able to disable the configure page would make it a little less obvious the token is exposed.
Since I don't need full real-time updates, it would be awesome if we could configure how often the page pokes the GitLab API.
My intention here is that this issue is short-lived and doesn't distract from the development of this repository. If this content is deemed not supported, feel free to close/remove.
Dear GitLab-monitor users,
I am reaching out to you as one of the Product designers from GitLab focusing in on CI. This project was listed as one of the inspirations for that feature area.
We believe our users are best-served by features that are influenced by them. As GitLab is developing a feature called public pipeline page we would like to find out more about this problem space and define exactly what is needed to solve which use cases. This will help prioritization, ideation, and iteration scope.
In preparation of our research effort I am reaching out to you directly to ask if you are willing to help us out. We would love to interview you similar to our direct "GitLab first look" research applicants. This would take around one hour of your time and there are immediate personal rewards aside from us implementing a great feature in the long run.
If you are willing to help out, please sign up at https://about.gitlab.com/community/gitlab-first-look/ and if possible send an email to [email protected].
kind regards,
Dimitrie
Can you update the documentation with how to configure gitlab-monitor (and probably its docker equivalent) when you want to use it behind a reverse proxy and a other bath besides the root path. E.g. add the documentation how you implemented timoschwarzer.com/gitlab-monitor
.
With even a modest gitlab install this dashboard makes a lot of requests-- polling every minute (or even every 5) is probably enough for many situations
At present there is a boolean parameter showJobNames
to switch between showing status icon or job name. However when job name is displayed it isn't intuitive enough that a job was success or failed. Would be nice to be able to show status icon and name together.
There is two alternatives to config it:
Add param showJobs
. Can be icon
(default), name
and iconAndName
. Deprecate param showJobNames
and make showJobs=name
when it's set for backward compatibility.
Keep param showJobNames
and add new boolean param showJobStatusIcon
.
showJobNames | showJobSatusIcon | display |
---|---|---|
true | true | icon & name |
true | false/undefined | name |
false | true/false/undefined | icon |
undefined | true/undefined | icon |
I favor alternative 1.
Just found this project and tried it, nice work!
One suggestion: Adding hovers to job icons would allow to have the compact job representation with icons, but easily see e.g. which job failed. I just added it via :title="job.name" to my local version:
<a class="job-view" target="_blank" rel="noopener noreferrer" :href="project.web_url + '/-/jobs/' + job.id">
is now
<a class="job-view" target="_blank" :title="job.name" rel="noopener noreferrer" :href="project.web_url + '/-/jobs/' + job.id">
P.S.: Sorry for not sending a pull request, but I don't have the repository cloned atm.
Hi,
I'd really like to be able to store a default configuration on disk and have the monitor load that rather than from browser storage.
Is this already possible?
Thanks
Ian
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.