Dependency Updates - fulviofreitas/eero-ui GitHub Wiki
This project uses Renovate with a GitHub App for automated dependency management. The configuration is standardized across all eero-ecosystem repositories.
The dependency update system automatically:
- Tracks new releases of
eero-api(the core API client), capped below9.0.0 - Tracks the pinned VictoriaMetrics binary (
Dockerfile) via GitHub releases - Tracks the documented
eero-prometheus-exporterimage tag in the optional, commented-out compose service - Creates PRs immediately when dependencies have updates available
- Auto-merges minor/patch updates for non-critical dependencies
- Requires manual review for
eero-apiand major updates - Triggers instantly when
eero-apireleases a new version
Since 6.0 the exporter is not a dependency of eero-ui โ it appears in Renovate only as a documented image tag (see Custom Managers).
The Renovate configuration is standardized across all repositories:
| Repository | eero-api Tracking | npm Tracking | Config File |
|---|---|---|---|
| eero-api | โ N/A (is eero-api) | โ No | renovate.json5 |
| eero-cli | โ
^pyproject\.toml$
|
โ No | renovate.json5 |
| eero-ui | โ
^backend/pyproject\.toml$ (allowedVersions: "<9.0.0") |
โ Yes | renovate.json5 |
eero-prometheus-exporter is a separate project with its own Renovate setup; it is no longer part of eero-ui's dependency chain.
flowchart TB
subgraph eero-api ["๐ง eero-api"]
release["๐ Release v1.3.0"]
notify["๐ notify-downstream job"]
release --> notify
end
subgraph dispatch ["repository_dispatch"]
event["event: eero-api-dependency-update-available"]
end
notify --> event
subgraph downstream ["Downstream Repositories"]
subgraph ui ["eero-ui"]
ui_renovate["๐ Renovate Workflow"]
ui_pr["๐ Create PR"]
ui_ci["๐งช CI Pipeline"]
ui_renovate --> ui_pr --> ui_ci
end
subgraph cli ["eero-cli"]
cli_renovate["๐ Renovate Workflow"]
cli_pr["๐ Create PR"]
cli_ci["๐งช CI Pipeline"]
cli_renovate --> cli_pr --> cli_ci
end
end
event --> ui_renovate
event --> cli_renovate
ui_ci --> review["๐ Manual Review"]
cli_ci --> review
review --> merge["โ
Merge"]
subgraph regex ["eero-ui custom.regex managers (scheduled, not dispatched)"]
vm["๐ท VictoriaMetrics binary<br/>Dockerfile ARG VM_VERSION โ GitHub releases"]
exp_tag["๐ท exporter image tag<br/>docker-compose.yml commented service โ ghcr.io"]
end
vm --> ui_pr
exp_tag --> ui_pr
All repositories use the same base configuration. See the config files linked above for the full implementation.
| Setting | Value | Description |
|---|---|---|
| Schedule | at any time |
PRs created immediately (no delay) |
| PR Limits | 0 |
No rate limiting |
| Branch Prefix | deps/ |
All dependency branches |
| Commit Prefix | chore(deps): |
Semantic commit format |
| Dashboard | Enabled | With autoclose when no updates |
| Rule | Auto-merge | Commit Prefix | Labels |
|---|---|---|---|
| ๐ด eero-api | โ No | chore(deps-critical): |
critical, needs-review, eero-api
|
| ๐ก Python minor/patch | โ Squash | chore(deps-python): |
automerge |
| ๐ก npm minor/patch | โ Squash | chore(deps-npm): |
automerge |
| ๐ข GitHub Actions | โ Squash | chore(deps-actions): |
automerge |
| ๐ท VictoriaMetrics binary (minor/patch) | โ Squash | chore(deps-vm): |
victoria-metrics |
| ๐ท eero-prometheus-exporter documented tag (minor/patch) | โ Squash | docs(deps): |
eero-packages |
| ๐ต Major updates | โ No | chore(deps-major): |
major-update, needs-review
|
| ๐ฃ Security patches | Priority 20 | - | - |
| ๐จ Vulnerability alerts | โ Yes | - |
security, critical
|
When Renovate detects a new eero-api version:
-
Commit Message:
chore(deps-critical): update eero-api v1.3.0 -
Labels:
critical,needs-review,eero-api,dependencies - Reviewers: Automatically assigned to maintainers
- Assignees: Automatically assigned for accountability
- PR Body: Includes review checklist and relevant links
All major version updates (any dependency):
- Labeled with
major-update,needs-review - Automatically request review from maintainers
- Never auto-merged
The VictoriaMetrics binary has no native package manager, so enabledManagers includes custom.regex and customManagers defines one matcher for it:
| Manager | Where it looks | Source of new versions | Why |
|---|---|---|---|
| VictoriaMetrics binary |
Dockerfile ARG VM_VERSION=v1.96.0 in the vm-downloader stage |
GitHub releases of VictoriaMetrics/VictoriaMetrics (v-prefixed tags, kept like-for-like via extractVersionTemplate) |
The embedded time-series store was untracked before 6.0. Minor/patch auto-merge; majors go through the generic major-updates rule |
The ghcr.io/fulviofreitas/eero-prometheus-exporter tag in the commented-out eero-exporter service in docker-compose.yml is not tracked. eero-ui does not run or depend on the exporter, so the tag is only a pointer for operators. A package rule sets enabled: false for it so Renovate never opens PRs for it.
When eero-api releases a new version, it automatically notifies all downstream repositories via repository_dispatch.
sequenceDiagram
participant EC as eero-api
participant GH as GitHub
participant UI as eero-ui
participant CLI as eero-cli
EC->>EC: ๐ Semantic Release
EC->>GH: notify-downstream job
par Dispatch to all repos
GH->>UI: repository_dispatch
GH->>CLI: repository_dispatch
end
UI->>UI: ๐ Renovate runs
CLI->>CLI: ๐ Renovate runs
UI->>UI: ๐ Creates PR
CLI->>CLI: ๐ Creates PR
The two regex-managed versions (VictoriaMetrics binary, exporter image tag) are picked up on the scheduled and manual runs only; there is no cross-repository dispatch for them.
| Repository | Release Workflow | Renovate Workflow |
|---|---|---|
| eero-api | release.yml | renovate.yml |
| eero-cli | release.yml | renovate.yml |
| eero-ui | release.yml | renovate.yml |
| Trigger | When | Result |
|---|---|---|
repository_dispatch |
eero-api releases | Immediate PR creation |
schedule |
Weekly (Mondays 3 AM UTC) | Checks all dependencies |
workflow_dispatch |
Manual run | On-demand check |
To run Renovate manually:
- Go to Actions โ ๐ Renovate
- Click Run workflow
- Options:
- Dry-run mode: Preview changes without creating PRs
-
Log level: Set to
debugfor troubleshooting - Reset cache: Clear cached data for fresh run
Renovate creates a Dependency Dashboard issue that shows:
- All detected dependencies
- Pending updates
- Config warnings
- Manual override checkboxes
The dashboard is auto-closed when there are no more updates (dependencyDashboardAutoclose: true).
You can force-create any PR by checking its checkbox in the dashboard.
Renovate's auto-merge works with the repository's auto-merge workflow:
- Renovate creates PR with
automergelabel - CI pipeline runs and passes
- Auto-merge workflow detects the label
- PR is automatically merged (squash strategy)
| Label | Description |
|---|---|
automerge |
Added by Renovate for auto-mergeable PRs |
dependencies |
All Renovate PRs |
renovate |
All Renovate PRs |
The Renovate workflow includes repository caching for faster subsequent runs.
- Retention: 7 days
- Reset cache: Use the "Reset repository cache" option in manual workflow dispatch
-
Cache key:
renovate-cache-v1(bump version in workflow to bust cache)