Jenkins远程触发器无法工作

时间:2015-07-14 14:11:45

标签: curl jenkins

当我尝试使用以下命令触发构建时出现以下错误:

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页面)

任何建议。

9 个答案:

答案 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

上设置构建,发现和读取权限

有关详细信息,请参阅 https://cloudbees.zendesk.com/hc/en-us/articles/204338790-Why-are-builds-not-being-triggered-with-Build-Token-Root-Plugin-

答案 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)

安装参数化构建插件

__PRETTY_FUNCTION__

如果您使用授权令牌触发构建(作业 - &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"