{"id":22621661,"url":"https://github.com/larscom/gitlab-ci-dashboard","last_synced_at":"2025-07-28T23:05:26.521Z","repository":{"id":64025343,"uuid":"572693125","full_name":"larscom/gitlab-ci-dashboard","owner":"larscom","description":"Gitlab CI Dashboard will provide you a global overview of all pipelines, schedules and their status within a single group","archived":false,"fork":false,"pushed_at":"2025-07-26T21:40:06.000Z","size":3308,"stargazers_count":52,"open_issues_count":2,"forks_count":2,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-07-27T01:22:05.870Z","etag":null,"topics":["actix-web","api","dashboard","docker","gitlab","gitlab-api","gitlab-ci","gitlab-pipelines","gitlab-runner","monitor","monitoring","pipelines","rust","rust-lang","schedules","self-hosted","tokio-rs"],"latest_commit_sha":null,"homepage":"https://gitlab-ci-dashboard.larscom.nl","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/larscom.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-11-30T20:35:39.000Z","updated_at":"2025-07-26T21:40:09.000Z","dependencies_parsed_at":"2024-03-14T21:29:37.975Z","dependency_job_id":"e05ed711-7a93-4513-a25c-337364c37933","html_url":"https://github.com/larscom/gitlab-ci-dashboard","commit_stats":null,"previous_names":[],"tags_count":100,"template":false,"template_full_name":null,"purl":"pkg:github/larscom/gitlab-ci-dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larscom%2Fgitlab-ci-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larscom%2Fgitlab-ci-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larscom%2Fgitlab-ci-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larscom%2Fgitlab-ci-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/larscom","download_url":"https://codeload.github.com/larscom/gitlab-ci-dashboard/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/larscom%2Fgitlab-ci-dashboard/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":267600091,"owners_count":24113713,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-28T02:00:09.689Z","response_time":68,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["actix-web","api","dashboard","docker","gitlab","gitlab-api","gitlab-ci","gitlab-pipelines","gitlab-runner","monitor","monitoring","pipelines","rust","rust-lang","schedules","self-hosted","tokio-rs"],"created_at":"2024-12-08T23:11:14.114Z","updated_at":"2025-07-28T23:05:26.514Z","avatar_url":"https://github.com/larscom.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Gitlab CI Dashboard\n\n[![Docker Image Version](https://img.shields.io/docker/v/larscom/gitlab-ci-dashboard?sort=semver\u0026label=latest%20release\u0026color=blue)](https://hub.docker.com/r/larscom/gitlab-ci-dashboard)\n[![workflow](https://github.com/larscom/gitlab-ci-dashboard/actions/workflows/workflow.yml/badge.svg)](https://github.com/larscom/gitlab-ci-dashboard/actions/workflows/workflow.yml)\n[![License MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n![Preview](https://github.com/larscom/gitlab-ci-dashboard/blob/main/.github/img/preview.png)\n\n\u003cbr /\u003e\n\nGitlab CI Dashboard will provide you with a **global** overview of all pipelines, schedules, and their statuses within a\nsingle group.\nThe default functionality of Gitlab is limited at the project level. This can become hard to manage when you have a lot\nof\nprojects, potentially resulting in undetected failed pipelines.\n\n## 👉 [Demo (main branch)](https://gitlab-ci-dashboard.larscom.nl)\n\n\u003cbr /\u003e\n\n## 🚀 Highlights\n\n- View all pipeline statuses per group (e.g: failed/canceled/success)\n- View all pipeline schedules per group\n- You won't get rate limited by the Gitlab API, due to server-side caching\n- Communication to the Gitlab API happens only server side\n- Only 1 `read only` token is needed to serve a whole team\n    - Optionally use a `read/write` token to perform actions like restarting failed pipelines, create new pipelines or\n      cancel pipelines.\n\n## ✅ Features (DONE)\n\n- [x] Overview of all latest pipeline statuses within a group\n- [x] Overview of all pipeline statuses within a group\n- [x] Overview of all schedules within a group\n- [x] Navigate to Gitlab\n- [x] Shows jobs and their status per pipeline\n- [x] Download artifacts from jobs directly\n- [x] Search for projects within a group\n- [x] Filter pipelines by status and projects by topic\n- [x] Add projects to favorites\n- [x] Start a new pipeline (requires read/write API token)\n- [x] Restart failed pipelines (requires read/write API token)\n- [x] Cancel pipelines (requires read/write API token)\n\n## 📒 Features (PLANNED)\n\n- [ ] Overview of all registries (container/package) within a group\n- [ ] ... suggestions are welcome\n\n## ⚡️ Requirements\n\n- Gitlab server (v4 API)\n- API token (read only or read/write)\n- Docker\n\n## 💡 Getting started\n\n1. Generate a `read_api` or `api` access token in Gitlab, depending on your requirements (\n   e.g: https://gitlab.com/-/profile/personal_access_tokens)\n\n![Access Token](https://github.com/larscom/gitlab-ci-dashboard/blob/main/.github/img/access_token.png)\n\n2. Run docker with the required environment variables (GITLAB_BASE_URL, GITLAB_API_TOKEN)\n\n```bash\ndocker run -p 8080:8080 -e GITLAB_BASE_URL=https://gitlab.com -e GITLAB_API_TOKEN=my_token larscom/gitlab-ci-dashboard:latest\n```\n\nOr you can run it with a TOML configration file\n\n```bash\ndocker run -p 8080:8080 -v $(pwd)/config.toml:/app/config.toml larscom/gitlab-ci-dashboard:latest\n```\n\n3. Dashboard should be available at: http://localhost:8080/ showing (by default) all available groups and their\n   projects\n\n## 👉 Create/Cancel/Retry Pipelines\n\nYou are able to perform write operations like creating,canceling,retrying pipelines, but you need to set the environment\nvariable: `API_READ_ONLY` to `false` and provide a valid `read/write` access token.\n\n## 👉 Hide the 'write' operations button\n\nYou are able to hide the ellipsis (...) when you just want to use `READ_ONLY` mode. Set the `UI_HIDE_WRITE_ACTIONS` to\ntrue.\n\n## ⏰ Prometheus\n\nPrometheus metrics are exposed on the following endpoint\n\n\u003e http://localhost:8080/metrics/prometheus\n\n## 🔌 Configration\n\nYou have the option to set the configuration via environment variables or a TOML file.\nA TOML file takes precedence over environment variables, except for the `RUST_LOG` variable.\n\n### Load from TOML file\n\n\u003e An example TOML file can be found inside the `./api` folder.\n\nMount the `config.toml` inside the container.\n\n```bash\ndocker run -p 8080:8080 -v $(pwd)/config.toml:/app/config.toml larscom/gitlab-ci-dashboard:latest\n```\n\n### Environment variables\n\n| Variable                          | Type   | Description                                                                                                                        | Required | Default      |\n|-----------------------------------|--------|------------------------------------------------------------------------------------------------------------------------------------|----------|--------------|\n| GITLAB_BASE_URL                   | string | The base url to the Gitlab server (e.g: https://gitlab.com)                                                                        | yes      |              |\n| GITLAB_API_TOKEN                  | string | A readonly or read/write access token generated in Gitlab (see: https://gitlab.com/-/profile/personal_access_tokens)               | yes      |              |\n| GITLAB_GROUP_ONLY_IDS             | string | Provide a comma seperated string of group ids which will only be displayed (e.g: 123,789,888)                                      | no       |              |\n| GITLAB_GROUP_SKIP_IDS             | string | Provide a comma seperated string of group ids which will be ignored (e.g: 123,789,888)                                             | no       |              |\n| GITLAB_GROUP_ONLY_TOP_LEVEL       | bool   | Show only top level groups, projects in sub groups will be shown inside the top level groups (see: GITLAB_GROUP_INCLUDE_SUBGROUPS) | no       | true         |\n| GITLAB_GROUP_INCLUDE_SUBGROUPS    | bool   | Whether to include subgroup projects whenever projects are fetched for a specific group                                            | no       | true         |\n| GITLAB_GROUP_CACHE_TTL_SECONDS    | int    | Expire after write time in seconds for groups (cache)                                                                              | no       | 300          |\n| GITLAB_PROJECT_SKIP_IDS           | string | Provide a comma seperated string of project ids which will be ignored (e.g: 123,789,888)                                           | no       |              |\n| GITLAB_PROJECT_CACHE_TTL_SECONDS  | int    | Expire after write time in seconds for projects (cache)                                                                            | no       | 300          |\n| GITLAB_PIPELINE_CACHE_TTL_SECONDS | int    | Expire after write time in seconds for pipelines (cache)                                                                           | no       | 5            |\n| GITLAB_PIPELINE_HISTORY_DAYS      | int    | How far back in time (days), it should fetch pipelines from gitlab (pipelines tab only)                                            | no       | 5            |\n| GITLAB_BRANCH_CACHE_TTL_SECONDS   | int    | Expire after write time in seconds for branches (cache)                                                                            | no       | 60           |\n| GITLAB_SCHEDULE_CACHE_TTL_SECONDS | int    | Expire after write time in seconds for schedules (cache)                                                                           | no       | 300          |\n| GITLAB_JOB_CACHE_TTL_SECONDS      | int    | Expire after write time in seconds for jobs (cache)                                                                                | no       | 5            |\n| GITLAB_ARTIFACT_CACHE_TTL_SECONDS | int    | Expire after write time in seconds for artifacts (cache)                                                                           | no       | 1800         |\n| API_READ_ONLY                     | bool   | If true, you are not able to perform 'write' operations like retrying a pipeline                                                   | no       | true         |\n| UI_HIDE_WRITE_ACTIONS             | bool   | If true, the ellipsis action button (...) is hidden, handy if you want to use this application in read-only mode                   | no       | false        |\n| SERVER_LISTEN_IP                  | string | The IP address where the web server should listen on                                                                               | no       | 0.0.0.0      |\n| SERVER_LISTEN_PORT                | int    | The port where the web server should listen on                                                                                     | no       | 8080         |\n| SERVER_WORKER_COUNT               | int    | The amount of worker threads the web server should have                                                                            | no       | CPU specific |\n| RUST_LOG                          | string | The log level of the application, set to \"debug\" to enable debug logging                                                           | no       | info         |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flarscom%2Fgitlab-ci-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flarscom%2Fgitlab-ci-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flarscom%2Fgitlab-ci-dashboard/lists"}