Jenkins插件是否有REST API?

4

我正在编写一个脚本,快速检查我们的Jenkins插件是否为最新版本。我知道这是Jenkins内置的功能,但出于安全原因,我们的Jenkins实例没有网络访问权限。

我知道可以从以下地址获取有关插件的大量信息,包括版本:

https://plugins.jenkins.io/<name-of-plugin>

然而,我无法得到除HTML以外的其他返回结果。我可以从HTML中提取版本号,但如果有稳定的API可以返回JSON或类似的内容,那将是更好的选择。我相信Jenkins不会通过抓取HTML来检查更新,因此该API一定存在。有人知道它在哪里吗?


你可能想要查看这个插件管理库。我们使用Docker install_plugins.sh。这不是你想要的答案... - Ian W
我已经实现了爬取。考虑将其转换为公共API,但目前我只在本地拥有它。 - Erik B
如果您已经在进行网络爬虫,那么您可以节省很多精力,直接从updates.jenkins.io获取数据。您可以在Github上阅读有关jenkins-infra/update-center2的文档,包括站点布局。您还可以检查Jenkins中的PluginManager代码 - jenkins/core/src/main/java/hudson/PluginManager.java - Ian W
1个回答

3
有两种解决方案可用,我最终使用了抓取方法: https://updates.jenkins.io/download/plugins/<插件名称> 最新版本始终在第二行第二列中,因此抓取很容易。它大多数时候都能正常工作,但有时连接会被拒绝,我认为这可能是由于脚本发送的请求量过大所致。
我发现另一种选择是下载以下JSON文件: https://updates.jenkins.io/current/update-center.actual.json 它目前大小为1.7MB,包含有关所有Jenkins插件的最新版本信息。它还包含依赖项等元数据,可使您的脚本验证是否满足所有依赖项。
不幸的是,我没有找到下载单个插件的JSON的方法,所以您要么必须对单个插件进行HTML抓取,要么下载包含所有插件的大型JSON。
更新:我找到了API: https://plugins.jenkins.io/api/plugin/<插件名称> 我也找到了源代码和文档: https://github.com/jenkins-infra/plugin-site-api

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接