Accessing your Renovate Dependency Dashboard, without GitHub/GitLab Issues enabled

Featured image for sharing metadata for article

When working with Renovate, I heavily recommend having the Dependency Dashboard enabled.

It's a great way to get a central view of all the in-flight, pending or ignored dependency updates, and provides great insight into what's going on under the hood. It even provides a list of "detected dependencies", so you don't have to use something like dependency-management-data to get that insight πŸ˜‰

At work I'm currently working with a few repositories which have GitHub Issues disabled (for valid reasons) or are very large monorepos.

For repositories without GitHub Issues, we don't get a Dependency Dashboard. And for the large monorepos, we're often getting to the point where our Dependency Dashboard is truncated by GitHub's limits, resulting in most-but-not-all of the data being available.

This means we're missing out on visibility over PRs that we may want to get raised, reducing our ability to respond accordingly to PRs, especially if you have a rate limit for branches or open PRs on the repo.

Something that's been noodling away in my mind for a bit is how to render a Dependency Dashboard without access to the Dependency Dashboard.

Mend Renovate Cloud does it πŸ‘€

In my usage of Mend Renovate Cloud (the hosted SAAS Mend provide for free πŸ’œ) on personal projects, I've found that their web app manages to render a

A snippet of the Mend Renovate SAAS app, showing https://developer.mend.io/github/renovatebot/renovate and a snippet of the Dependency Dashboard, showing "Ignored or blocked" with an update, and "Pending Status Checks" with many updates, followed by a "Create/Rebase" button to click once you're ready to trigger a run

When I first saw this - probably a year or so ago? - I was blown away, and intrigued as to how Mend managed to do this.

In the last week, I've managed to work it out πŸ‘€

How?

Digging through network requests + the Renovate execution logs, I noticed the experimental option checkedBranches being set when triggering a Renovate run via the Mend Renovate Cloud's Dependency Dashboard for a given repository.

This then allows Renovate to process as if it had been triggered when someone had gone in to a real Dependency Dashboard and checked option(s) for Renovate to process it.

Example

As part of testing this out, I've ended up creating an example app, which can be found on GitLab.com.

This requires you to have used Renovate's Report functionality to export the internal state that Renovate has about a given repository.

For instance, following these steps, we can get a copy of Renovate's Report:

# NOTE that the `--dry-run=full` is required to process which branches Renovate will know about
env RENOVATE_REPORT_TYPE=file RENOVATE_REPORT_PATH=renovate.json npx renovate@40 renovatebot/renovate --dry-run=full

From here, the app then shows which repositories it knows about:

A blank-ish page showing the title "Renovate Report browser" and a list of one item: renovatebot/renovate which links out to a page we'll see next

When clicking through, we can then see the full Dependency Dashboard:

A snippet of Jamie's example app, showing a rendered view of the Dependency Dashboard for Renovate, with "deprecated dependencies", "pending approval" dependencies and a "Create/Rebase" button to click once you're ready to trigger a run. When a checkbox is checked, the "Create/Rebase" button is a pleasing green/blue colour

When you click "Create/Rebase" button, this then loads a page which indicates the command Renovate would run, for instance:

renovate \
  renovatebot/renovate \
  --checked-branches \
  "renovate/main-aggregate-error-5.x,renovate/main-diff-8.x,renovate/main-got-14.x,renovate/main-p-throttle-7.x,renovate/main-node-22.x,renovate/main-renovatebot-github-action-42.x,renovate/main-globals-16.x,renovate/main-ghcr.io-renovatebot-base-image-10.x"

If this were to trigger Renovate itself, it'd then process as if this was ticked on the Dependency Dashboard πŸš€

Written by Jamie Tanna's profile image Jamie Tanna on , and last updated on .

Content for this article is shared under the terms of the Creative Commons Attribution Non Commercial Share Alike 4.0 International, and code is shared under the GNU Affero General Public License v3.0 only.

#blogumentation #renovate.

πŸ€– Content in this blog post (prose or code snippets) includes code derived from the following LLMs:

  • gpt:40

This post was filed under articles.

Interactions with this post

Interactions with this post

Below you can find the interactions that this page has had using WebMention.

Have you written a response to this post? Let me know the URL:

Do you not have a website set up with WebMention capabilities? You can use Comment Parade.