当我尝试使用以下命令触发构建时出现以下错误:
curl http://jenkins_server:port/jenkins/job/job_name/build?token=token_name
输出:
需要身份验证
< - 您的身份验证为:匿名
您所在的群组:你需要拥有(但没有):hudson.model.Hudson.Read
...暗示:hudson.security.Permission.GenericRead
...暗示:hudson.model.Hudson.Administer
- >
我拥有管理员权限,并且还启用了“身份验证令牌”。我还有Job的Build,Discover和Read权限。我正在使用Jenkins 1.614。
我确实在网上查了好几个帖子,但找不到对我有用的东西。
尝试过几个选项,比如
1)卷曲-X POST http://jenkins_server:port/jenkins/job/job_name/build?token=token_name
2)curl -u user:API(打印一个很长的HTML页面)
任何建议。
答案 0 :(得分:21)
我安装Build Token Root Plugin以解决此问题
https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin
然后,设置身份验证令牌
最后,使用curl触发远程构建(注意转义字符" \")
curl http://JENKINS_URL/buildByToken/build?job=JOB_NAME\&token=TOKEN_NAME
或将URL粘贴到您的浏览器(无需转义字符" \")
http://JENKINS_URL/buildByToken/build?job=JOB_NAME&token=TOKEN_NAME
如果你看到Succeed,那就意味着成功触发了远程Jenkins。
请注意,您不必在Job
上设置构建,发现和读取权限答案 1 :(得分:12)
我认为没有必要设置任何类型的插件来使其工作,只需执行此BATCH CMD:
curl -X POST http://USER_ID_JENKINS_RECEIVER:TOKEN_OF_USER_ID_JENKINS_RECEIVER@URL_JENKINS_RECEIVER:PORT/job/NAME_OF_JOB/buildWithParameters?token=TOKEN_JOB_JENKINS_RECEIVER
要查看 USER_ID_TOKEN ,请转到jenkins右上角的用户名>转到配置>点击API令牌,它将会显示。
您必须在 JOB_OF_JENKINS_RECEIVER
我不得不说,它对Jenkins没有任何权限,对匿名用户完全有效。
答案 2 :(得分:6)
设置测试Jenkins服务器后,我遇到了同样的问题。解决方案是使用我的Jenkins管理员密码进行身份验证:
curl -u admin:<mypassword> http://localhost:8080/job/Test/build?token=<mytoken>
使用您用于登录Jenkins的相同用户名和密码。无需安装其他插件。
答案 3 :(得分:3)
我建议你试试Jenkins Python API。它提供了build_job
动作,非常容易触发作业。
build_job(name, parameters=None, token=None)
Trigger build job.
Parameters:
name – name of job
parameters – parameters for job, or None, dict
token – Jenkins API token
答案 4 :(得分:2)
在我的情况下,我的URL和令牌是正确的,但忘记了触发URL /构建的API用户所需的权限之一。
权限必须至少包含此处的列表:
答案 5 :(得分:0)
安装参数化构建插件
如果您使用授权令牌触发构建(作业 - &gt;配置 - &gt;'构建触发器' - &gt;'触发器远程构建(例如,从脚本)'),您可以访问:
curl -X POST http://server/job/myjob/buildWithParameters?token=TOKEN&PARAMETER=Value
答案 6 :(得分:0)
我也遇到了同样的问题并解决了该问题。
考虑一下,您有2个Jenkins A和B。如果要执行Jenkins B中存在的构建作业,则必须提供Jenkins B的API令牌。如果提供Jenkins A的API令牌,它将仅显示身份验证问题。
这是我犯的错误,一旦我根据所需的詹金斯(Jenkins)正确更改了API令牌,就可以解决。
答案 7 :(得分:-1)
在1.625.3上,给几乎所有为我工作的内容提供匿名读取权。
更新:我想我应该澄清一下,因为这被推翻了。我能够重现该错误消息,当我在所有访问类型上打开匿名用户的读访问权时,它解决了问题。只是说...
答案 8 :(得分:-1)
这对我有用:
tokenuser =您需要使用该用户登录并检查令牌配置jenkins->管理员用户
user =用户名
curl -XPOST --silent --show-error --user user:tokenuser "http://ipserver/jenkins/buildByToken/build?job=JOBNAME&token=7RJWiIwD5cW3S6QjwF7a"
示例:
curl -XPOST --silent --show-error --user desarrollador:b9611288e4159ea9fb7857faeadd06fe "http://ipserver/jenkins/buildByToken/build?job=DeployGF&token=7RJWiIwD5cW3S6QjwF7a"