Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 9 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,13 @@ with Prometheus keeping the history and six alert rules on top.
One container, one file. Nothing is discovered: a repo is on the board because
you listed it in `repos.yml`, and for no other reason.

![The fleet board: tiles counting repos monitored, open PRs and issues, CI red on main, PRs with red checks, local clones out of sync, dirty working copies, branch protection and Dependabot, above a seven-day trend of open problems by kind.](dashboard.png)

The top tiles are what the forge says about the repos, the next row is what this
machine says about your clones, and every tile that counts something opens the
table of exactly which repos are behind its number — see
[the dashboard tour](docs/dashboard.md).

## Recipe

Write a `repos.yml` — one entry per repo you want on the board:
Expand Down Expand Up @@ -55,9 +62,9 @@ there is nothing to clone and nothing on your disk but `repos.yml`.
| | |
|---|---|
| `-v .../repos.yml:/config/repos.yml:ro` | Required. The fleet — [details](docs/configuration.md) |
| `-v "$HOME:/host:ro"` | Your home directory, read-only, so `~/...` in `repos.yml` resolves. Leave it out and the working-copy panels stay empty; everything GitHub reports still works |
| `-v "$HOME:/host:ro"` | Your home directory, read-only, so `~/...` in `repos.yml` resolves. Leave it out and the working-copy panels stay empty; everything the forge reports still works |
| `-v jq-fleet-data:/data` | Prometheus history and Grafana's database. Leave it out and both start empty at every run |
| `-e GITHUB_TOKEN=...` | Needs `repo` and `read:org`, and must read every repo you listed. Without one GitHub allows 60 calls an hour, which is not a fleet |
| `-e GITHUB_TOKEN=...` | Needs `repo` and `read:org`, and must read every GitHub repo you listed. Without one GitHub allows 60 calls an hour, which is not a fleet |
| `-e GITLAB_TOKEN=...` | Only if the fleet has a GitLab repo in it. Needs `read_api` |

`docker compose up -d` does the same thing with the flags written down; see
Expand Down
Binary file added dashboard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 6 additions & 2 deletions docs/dashboard.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,16 @@ keywords: grafana dashboard, promql, panel json, alert rules, state timeline, gr

## Clicking a tile

Every tile except *Repos monitored* links to a table listing exactly what is
Every tile that counts a set of repos links to a table listing exactly what is
behind that number — collapsed under *Drill-down* at the bottom, opened full
screen by the click. Each drill-down's row count is the tile's value by
construction, and each repo name links to that repo on its own forge the URL
construction, and each repo name links to that repo on its own forge: the URL
comes from the API that reported it, so a GitLab row opens GitLab.

Two tiles have no drill-down, because neither is a set of repos. *Repos
monitored* is the fleet itself, and *Data age* is the collector's own
freshness.

The tiles are laid out in two rows because that is how the data splits. The top
row is what **the forge** says about the repos — a headline count, the two workload
counts (open PRs, open issues), then the three problem counts. The bottom row is
Expand Down
Loading