# Are plugin versions in \`update-center.json\` guaranteed to be compatible?

**URL:** <https://community.jenkins.io/t/are-plugin-versions-in-update-center-json-guaranteed-to-be-compatible/4900>\
**Category:** Ask a question\
**Created:** [December 10, 2022, 4:36am UTC](https://community.jenkins.io/t/are-plugin-versions-in-update-center-json-guaranteed-to-be-compatible/4900 "2022-12-10T04:36:32Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![mayl](https://dub1.discourse-cdn.com/flex013/user_avatar/community.jenkins.io/mayl/32/2916_2.png) [@mayl](https://community.jenkins.io/u/mayl)\
**Post date:** [December 10, 2022, 4:36am UTC](https://community.jenkins.io/t/are-plugin-versions-in-update-center-json-guaranteed-to-be-compatible/4900/1 "2022-12-10T04:36:32Z")

</div>

I run an offline Jenkins server with a set of plugins that I fetch and build on the internet ahead of time using `nixos` and the [`jenkinsPlugins2nix`](https://github.com/Fuuzetsu/jenkinsPlugins2nix) tool. Mostly this works pretty well, but because of how `jenkinsPlugins2nix` currently works I have to manually set plugin versions quite a bit, which is pretty tedious.

I see that the `update-center.json` file gives a list of plugins, and that the documentation [here](https://github.com/jenkins-infra/update-center2/tree/master/site) advertises that they are designed to be compatible with specific Jenkins versions. I think updating the `jenkinsPlugins2nix` tool to use this file could make the system work much better. What I wasn’t able to understand was if all the plugin versions supplied in `update-center.json` were designed to not only be compatible with the given Jenkins version, but to also be compatible with one another.

For example if I install plugin A which depends on B, can I reasonably expect that the version of plugin B at the “top” level of `update-center.json` will be compatible for plugin A? I’ve found several examples where the version of B specified in A is something like 1.3, and the top level version is 1.5 (so same major, equal or higher minor version) but I didn’t seem to come across any where the top level version did not satisfy the dependency version. Are there more complicated scenarios I need to watch out for, like situations where plugins A and B come from `update-center.json` and they both depend on C, but the version of C in `update-center.json` does not mutually satisfy A and B?

I guess my question boils down to, can I follow the dependency tree in `update-center.json`, and install versions based on the `root.plugins.<plugin name>.version` version and have a consistent set of plugins, or is there some higher order dependency resolution that needs to run against `update-center.json`?

---

<div class="post-metadata">

**Author:** ![david.williams](https://avatars.discourse-cdn.com/v4/letter/d/6f9a4e/32.png) [@david.williams](https://community.jenkins.io/u/david.williams)\
**Post date:** [February 29, 2024, 10:44am UTC](https://community.jenkins.io/t/are-plugin-versions-in-update-center-json-guaranteed-to-be-compatible/4900/2 "2024-02-29T10:44:05Z")

</div>

I came across this question while investigating how to create plugin-catalog for cloudbees casc.  
Their is [GitHub - kyounger/casc-plugin-dependency-calculation: Given the plugins.yaml file, this script will calculate plugin-catalog.yaml file for a CloudBees CasC bundle.](https://github.com/kyounger/casc-plugin-dependency-calculation) which seems to solely use update-center.json for its dependency resolution.

I don suppose you ever got to the bottom of it mayl?
