【问题标题】:Jenkins trigger a job from APIJenkins 从 API 触发作业
【发布时间】:2016-01-06 12:08:15
【问题描述】:

我实际上是在尝试对 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。

你也可以帮我解决这个问题吗?

【问题讨论】:

    标签: html jenkins


    【解决方案1】:

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

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

    http://YOUR_JENKINS_URL/user/YOUR_JENKINS_USER_ID/configure
    

    复制此部分的 user_id 和令牌:

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

    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 命令构建就可以了:)

    【讨论】:

    • 这个答案看起来不错,但我总是有一个错误需要验证:-/
    • 让我们开个聊天室讨论一下吧:)
    • 可以在这里找到crumb 的完整示例:Running jenkins jobs via command line
    【解决方案2】:

    如果您使用参数构建,那么这里是:

    假设您的 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

    结尾

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多