Jenkins从API触发了一份工作

时间:2016-01-06 12:08:16

标签: html jenkins

我实际上是在尝试对jenkins进行一些API调用以触发构建。

实际上,我遇到两个问题:

在非限制性环境中,我不需要连接以触发作业,我应该发送POST请求:

http://address/job/jobId/build?delay=0sec

在制作时,我得到以下输出,告诉我我没有令牌值:

<html>

    <head>

        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>

        <title>Error 401 Invalid password/token for user: </title>

    </head>

    <body>
        <h2>HTTP ERROR 401</h2>

        <p>Problem accessing /job/Di%20Injector/build. Reason:

            <pre>    Invalid password/token for user: </pre>
        </p>
        <hr />
        <i>
            <small>Powered by Jetty://</small>
        </i>
        <br/>                                                

        <br/>                                                

        <br/>                                                

        <br/>                                                

        <br/>                                                

        <br/>                                                

        <br/>                                                

        <br/>                                                

        <br/>                                                

        <br/>                                                

        <br/>                                                

        <br/>                                                

        <br/>                                                

        <br/>                                                

        <br/>                                                

        <br/>                                                

        <br/>                                                

        <br/>                                                

        <br/>                                                

        <br/>                                                


    </body>

</html>

我在哪里可以获得这些信息?

在受限制的环境中,我必须先登录才能获得工作或触发新版本。事实上,我不知道,我无法找到要发送到服务器的url / verb / params以获得访问权限。

你能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:14)

解决方案是为Jenkins用户(或Jenkins构建用户)生成API令牌。

转到您的用户的以下链接:

http://YOUR_JENKINS_URL/user/YOUR_JENKINS_USER_ID/configure

从此部分复制user_id和令牌:

enter image description here

并启动以下命令以触发构建:

curl -X POST http://YOUR_JENKINS_USER_ID:YOUR_API_TOKEN@YOUR_JENKINS_URL/job/YOUR_JENKINS_JOB/build

我在我的https Jenkins服务器上进行了快速测试。

没有令牌,我收到了这条消息:

Authentication required
<!--
You are authenticated as: anonymous
Groups that you are in:

Permission you need to have (but didn't): hudson.model.Hudson.Read
 ... which is implied by: hudson.security.Permission.GenericRead
 ... which is implied by: hudson.model.Hudson.Administer
-->

使用user_id / token,使用curl命令构建正常:)

答案 1 :(得分:0)

如果要使用参数进行构建,则为:

假设您的jenkins构建接受两个参数,并且您想使用shell脚本进行api调用:

您可以在shell脚本中放置以下命令:

  

curl -X POST --data“ package_name = ABC.tar.gz” --data“ release_notes = none” --data“ delay = 0sec” https://USERID:TOKEN@JENKINS_URL/job/SOMETHING/SOMETHING/SOMETHING/ / buildWithParameters

只需使用地址栏进行链接。确保链接以 buildWithParameters

结尾