Bitbucket和Jenkins远程构建触发器

7

我想要实现的目标

使用Jenkins中的远程触发选项,在Bitbucket创建拉取请求时触发构建。因此,我在Jenkins中创建了一个作业,并配置了使用远程API触发构建。

Enter image description here

在Bitbucket中,我创建了一个Webhook来触发构建,URL结构如下:
http://jenkins_server_ip:port/job/job-name/build?token=<t1>

我得到了以下错误:

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
        <title>Error 403 No valid crumb was included in the request</title>
    </head>
    <body>
        <h2>HTTP ERROR 403</h2>
        <p>Problem accessing /job/android-sample/build. Reason:

            <pre>    No valid crumb was included in the request</pre>
        </p>
        <hr>
        <a href="http://eclipse.org/jetty">Powered by Jetty:// 9.4.z-SNAPSHOT</a>
        <hr/>
    </body>
</html>

我在互联网上查找了一些资料,有人说我们需要在Jenkins中使用crumbIssuer API,这可以通过wget完成。我该如何在Bitbucket中使用它?
2个回答

0
您可以在系统配置中关闭CSRF安全检查:系统配置→配置全局安全性CSRF保护,然后取消复选框的勾选。

2
你会暴露给什么? - Peter Mortensen

-1

首先,您需要从Jenkins获取crumb key,并将其插入到构建请求的HTTP头中。该crumb用于防止CSRF攻击。

以下Bash命令使用curl发送构建请求,效果很好:

CRUMB=`curl -u $USER:$PASS 'http://$SERVER:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)'`
curl -H $CRUMB -u $USER:PASS 'http://$SERVER:8080/job/$PROJECT/build?token=$UR_TOKEN'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接