Jenkins-需要Jenkins_主页,但缺少systemInfo的总体/管理权限

Jenkins-需要Jenkins_主页,但缺少systemInfo的总体/管理权限,jenkins,Jenkins,我正在使用Jenkins API自动化Jenkins工具,它需要知道$Jenkins_HOME的价值。这个工具在Jenkins之外运行 我正在使用http:///systemInfo 查看环境变量 不幸的是,此API没有环境变量: http:///api/xml/systemInfo 问题是,systemInfo页面需要admin,它会给出一个错误,即用户缺少总体/管理权限 那么-为什么systemInfo需要管理员(但XML不需要)-或者更重要的是,如何使用常规用户凭据为给定的JENKINS服

我正在使用Jenkins API自动化Jenkins工具,它需要知道$Jenkins_HOME的价值。这个工具在Jenkins之外运行

我正在使用http:///systemInfo 查看环境变量

不幸的是,此API没有环境变量:

http:///api/xml/systemInfo

问题是,systemInfo页面需要admin,它会给出一个错误,即用户缺少总体/管理权限

那么-为什么systemInfo需要管理员(但XML不需要)-或者更重要的是,如何使用常规用户凭据为给定的JENKINS服务器获取JENKINS_主页?

为什么systemInfo需要管理员 为什么systeminfo需要管理员(但XML不需要)

设想以下假设情况:

有一个管理员管理软件项目和jenkins实例,他可以将机密信息设置为环境变量(例如jenkins管道可以使用的特定
密钥)

如果现在项目中的每个普通用户或服务都可以读取所有环境变量,那么他也可以直接访问
密钥
,而不必处于只能在服务器上访问的jenkins配置的受控环境中

如何访问服务器外部的环境变量 对于给定的JENKINS服务器,如何使用 常规用户凭据

我想您需要为服务/用户提供某种
令牌
/
私钥
,用于向服务器提出提升权限请求。例如,在本问题中解释:

  • 堆栈溢出:
有了这个令牌,您就可以提升客户端的权限。 例如,验证脚本客户端的示例:

curl-xpost-L——用户jenkins:apiToken\
https://jenkins.yourcompany.com/job/your_job/build
我希望这也涵盖了您想要的xml api访问点

有关jenkins身份验证的更多资源

  • (适用于版本
    2.129+

如何使用常规用户凭据获取给定JENKINS服务器的JENKINS_主页

我认为没有任何地方可以直接向非管理员用户公开

以受控方式展示路径的一种干净方法是在Jenkins启动期间提取一次信息,并将其放在所有其他人都可以访问的地方

例如,您可以通过在
$JENKINS_home/init.groovy.d/create JENKINS home.groovy
中添加以下初始化脚本,通过
$JENKINS_URL/userContent/JENKINS_home.txt
提供路径

import jenkins.model.Jenkins
Jenkins.get().getRootDir().toPath().resolve("userContent").resolve("jenkins_home.txt").setText(Jenkins.get().getRootDir().getPath())

你用的是什么版本的詹金斯?我假设你的工具是Jenkins的外部工具,而不是groovy?Windows或Linux?Jenkins版本:2.204.2澄清了这个问题:我使用的是API,所以Win/Linux/OSX应该不重要-这都是Jenkins之外的工具,使用API从Jenkins查询信息。看起来你是对的-Jan的回答解释了为什么这是真的。不幸的是,你的变通方法(我投票赞成)在我的情况下不起作用,我正在创建一个通用Jenkins工具,否则不需要更改Jenkins配置-但我认为它对搜索此信息的其他人很有用。我希望有一种方法可以获得允许访问systeminfo的API密钥(在我们的环境变量中没有任何隐藏的秘密),而没有有效地给予任何拥有该关键管理权限的人。因此,您的情况是:您有一个Jenkins实例(服务器)正在运行。还有一些普通用户正在使用Jenkins服务器。现在,您希望创建一个工具,任何用户都可以在其本地计算机上安装/使用该工具,该工具应具有在服务器上提取
Jenkins_HOME
env var的内部功能,而无需对服务器进行任何修改,也无需通过apiKey赋予它理论上的管理功能。另外,除了一个现成的jenkins实例之外,您不想添加任何额外的服务器或其他任何东西吗?如果我是一个与您的环境无关的完全不同的jenkins实例的用户,您是否也需要这样做,您希望我能够在我的本地计算机上安装您的工具,并与我的jenkins实例进行交互如果服务器不知道有这样一个工具,那么这个工具应该能够检索到该实例的
JENKINS_HOME
env var?宾果-这是我的梦想。我想要一种工具能够在不需要管理和更改JENKINS设置的情况下获取JENKINS_HOME。看起来这可能是不可能的gh我想不出JENKINS_HOME需要保护的原因。我猜这只是没有实现的功能(就像JENKINS API的很多功能一样)。