You can now resolve remote presets when using Renovate's local platform in renovate-graph

Featured image for sharing metadata for article

In Utilising Renovate's local platform to make renovate-graph more efficient I mentioned that you can take advantage of Renovate's local platform to run against a local directory.

During a hackathon week at work, I've recently been using renovate-graph --platform local alongside my new renovate-packagedata-diff tool to provide a diff of dependencies in a PR, to present relevant information to the user, which has been working very well so far πŸ™ŒπŸΌ

One wrinkle in the plan is that as an organisation we take advantage of shared config presets to centralise some common customManagers to extract common internal package files, or have other tweaks to different things, which is super useful.

However, there's a long-standing issue in renovate-graph, inherited from Renovate's known limitations in the local platform where Renovate rightfully so can't determine how to resolve a local> or github> preset, as in local mode, it doesn't have any way to know how to look these up.

This means that if in your repository, you had a renovate.json:

{
  "extends": [
    "github>abc/foo:xyz.json5",
    "local>abc/foo:xyz"
  ]
}

This would then result in i.e.:

 INFO: Throwing preset error
       "validationError": "Preset caused unexpected error (local>elastic/renovate-config:platform-devflow)"
ERROR: Failed to read repository information for "local": Error: config-validation
       "error": {
         "name": "Error",
         "message": "config-validation",

However, today I've managed to add support to renovate-graph to add the ability to look up presets, even when running in --platform local πŸš€

This is only possible in renovate-graph, due to additional metadata that gets as part of running with --platform local i.e.:

# linebreaks for readability
env RG_LOCAL_PLATFORM=github
    RG_LOCAL_ORGANISATION=elastic
    RG_LOCAL_REPO=kibana
    npx @jamietanna/renovate-graph@latest --platform local

In this case, because we're explicitly telling renovate-graph that we're running against GitHub, renovate-graph will assume that this is

It doesn't support self-hosted setups or non-GitHub hosts (for now), but does at least allow now resolving any presets in a config.js as well as a repo-level renovate.json πŸ‘πŸΌ

If you'd prefer not to follow presets, one option I've found useful is to use ignorePresets:

env RENOVATE_IGNORE_PRESETS='github>.../renovate-config:some-preset,local>.../renovate-config:another-preset' renovate-graph --platform local

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 Apache License 2.0.

#renovate #dependency-management-data.

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.