Toolkit for GitLab server admins and GitLab feature developers!
Better way to see and control your GitLab self-hosted runners.
Take a look at current GitLab runner page in group's CI/CD settings.
You can see all runner names and basic information but that's it.
You can rename runners, pause/resume/delete them only individually.
Most importantly, it could only display 4 runners at a time. (as of version 14.10)
Some organizations might have 100+ runners and want to take actions
with all of them or at least runners with some specific tags at once.
Some also embrace ephemeral runners where they are periodically destroyed and respawned.
This helps mitigate "state drift" issue on servers.
(The state drift issue might be addressed by using docker runner but some still prefer VM/baremetal runners
for performance gain or job startup time.)
Status report is another area that's missing.
GitLab doesn't display if a runner is running a job or being idle.
Let alone job history for each runner that could help identifying faulty runners.
GitLabKit Runner Admin can help improve experience of managing runners.
Put your group ID in text box and hit enter to go to group page. Simple enough.
Displays all runners in the group
- Orange row = Runner is running a job (job displayed on far right)
- Red row = Runner is offline
- Use the toggle in front of runner name to individually enable/disable it
- Click on job name on the right to navigate back to job page on GitLab
- Click on runner name for runner history page
You could filter runners by tags, online status and active/paused status.
And number in parentheses show you runner counts for that tag/status given current active filter criteria.
Filters can be combined too!
Simple enough
At the bottom of group page you can take action on runners being displayed.
So you can filter with some criteria and enable, disable or delete them.
From group page, click on any runner name to see its job history.
- Green row = Succeeded job
- Red row = Failed job
- Orange row = Running job
- Neutral row = Cancelled job
- Time in parentheses on the far right = Job duration
- Click on job name on the right to navigate back to job page on GitLab
GitLabKit Runner Admin is published as a docker image.
You can try running by using docker run
$ docker run \
-e CONNECTIONS__GITLABSERVER="https://<your-gitlab-server>" \
-e SECRETS__GITLABTOKEN="<gitlab-token>" \
-p 80:80 \
encx/gitlabkit-runner
or docker-compose
file
version: '3.8'
services:
gitlabkit-runner-admin:
image: encx/gitlabkit-runner
environment:
- CONNECTIONS__GITLABSERVER="https://<your-gitlab-server>"
- SECRETS__GITLABTOKEN="<gitlab-token>"
- ASPNETCORE_URLS=http://+:80
ports: ["80:80"]
of course, you could also run this in Kubernetes environment and have multiple pods of it since the Runner Admin doesn't hold any state.
Settings could be passed to Runner Admin's container using these environment variables
variable | example | required | description |
---|---|---|---|
CONNECTIONS__GITLABSERVER |
https://gitlab.yourcompany.com |
yes | GitLab server URL |
SECRETS__GITLABTOKEN |
rG2f93ddaz |
yes | GitLab token. Could be a personal token or group token that has sufficient permission to view CI/CD settings in the group |
CONNECTIONS__REDISSERVER |
redis-server:16379 |
no | Redis host. If set, it will be used as cache. |
SECRETS__REDISUSER |
username |
no | Redis ACL user. Leave empty if Redis has no ACL user set. |
SECRETS__REDISPASSWORD |
password |
no | Redis password. Could be used alone if Redis has set requirepass . Or could be used together with SECRETS__REDISUSER for ACL authentication. |
LOGTARGETS__SEQ |
http://seq-server:5341 |
no | Runner Admin supports Seq logger. Use this to set log ingestion URL. |
APPLICATIONINSIGHTS__CONNECTIONSTRING |
- | no | Runner Admin supports Application Insights to see application diagnostics. Use this to set connection string from Azure dashboard. |
Full suite GitLab REST API client.
No more manual HTTP clients.
Will be available on .net, TypeScript, JVM languages and more.
This project is in its early phase. More modules to come.
For contributors, please read CONTRIBUTING.md