当前位置: 首页 > 面试题库 >

触发带有卷曲和碎屑的参数化构建

禄光霁
2023-03-14
问题内容

我在SO上看到了与此类似的帖子,但与我要执行的操作不完全相同(或者至少没有要运行的命令的完整示例)。

我正在尝试使用curl远程触发Jenkins的参数化构建。我启用了“防止跨站请求伪造”,因此我还需要传递有效的碎屑。

我的脚本如下:

#!/bin/bash

json="{\"parameter\": [{ \"P1\": \"param1\", \"P2\": \"param2\", \"P3\": \"param3\" }]}"
crumb=`curl "http://SERVER/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,%22:%22,//crumb)"`

curl -v -H $crumb -X POST http://SERVER/job/JOB_NAME/buildWithParameters -d token=runme --data-urlencode json="$json"

我还尝试将要传递给curl的URL修改为:

USERNAME:APITOKEN@SERVER

USERNAME:PASSWORD@SERVER

curl的输出是:

* About to connect() to SERVER port 8080 (#0)
*   Trying SERVER... connected
* Connected to SERVER (SERVER) port 8080 (#0)
* Server auth using Basic with user 'USERNAME'
> POST /job/JOB_NAME/buildWithParameters HTTP/1.1
> Authorization: Basic bjAwNjY5MjI6YWxLaW5kaTg=
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.13.1.0 zlib/1.2.3 libidn/1.18 libssh2/1.2.2
> Host: SERVER:8080
> Accept: */*
> .crumb:776eb589e8b930d9f06cfc2df885314c
> Content-Length: 168
> Content-Type: application/x-www-form-urlencoded
>
< HTTP/1.1 403 No valid crumb was included in the request
< Content-Type: text/html;charset=ISO-8859-1
< Cache-Control: must-revalidate,no-cache,no-store
< Content-Length: 1469
< Server: Jetty(8.y.z-SNAPSHOT)
<

因此,看来我没有正确传递面包屑,但是我不确定命令的正确格式是什么。


问题答案:

正确的格式如下:

curl -H ".crumb:xxxxxxxxxxxxxxxxxxxxxx"


 类似资料:
  • 问题内容: 我在Jenkins中配置了项目,该项目轮询SCM并在发布更改时开始构建。有一个后构建动作来构建另一个项目。我的问题是,之后要构建的项目具有其自己的参数。如何知道生成后操作触发时指定了哪个参数?现在,如果我使用“选择”,是否只是选择第一个?我如何挑选其他人? 问题答案: 好吧,让我们一个接一个:) 如果要查看使用了哪个参数,可以安装此插件:显示构建参数插件 如果要使用特定参数触发构建,请

  • 我在一天中做了一些API调用,但在使用Adobe Sign的新设置时遇到了问题。我可以得到请求很好,但得到HTTP404时,尝试任何张贴或放入他们的服务器。例如,到这里.... 当然,$HttpCode返回404,如上图所示。我为邮局做错什么了吗?

  • 问题内容: 我有三个管道项目,项目a,项目b和项目c。project-c需要一个参数。成功完成project-a或project- b时,我想触发带有参数的project-c的构建。 我可以在管道中使用以下代码在project-a和project-b中执行此操作: 但这需要两名执行者。我希望project-a或project-b在使用参数运行project-c之前完全完成。 问题答案: 您的管道很

  • 问题内容: 我有一个jenkins管道,其设置如下,其中Build A是管道的开始,并在完成时触发构建B,依此类推(如下所示)。到目前为止,我已经实现了Build A,B和C。我使用了Jenkins参数化的Trigger插件作为构建后的动作来触发我的构建。 无论如何,在构建B完成之后,有什么我可以根据构建B之后的构建用fork启动构建的参数的方法,如下所示。Build C和Build D是将部署到

  • 问题内容: 我试图通过cURL从命令提示符向远程REST API发送“ GET”请求,如下所示: 但它不返回任何输出。我尝试直接从浏览器ping URL,我能够成功获得响应,但我不知道该命令出了什么问题。 基本上,我想为远程REST服务设置一个“ GET”请求,该请求通过curl向我提供json数据作为响应。谁能指导我我在做什么错?我尝试了各种帖子,但是所有人都在谈论POST请求而不是GET。 问

  • 我正在尝试通过cURL从命令提示符向远程REST API发送“GET”请求,如下所示: 但它没有返回任何输出。我尝试直接从浏览器ping URL,我能够成功得到响应,我不明白命令有什么问题。 基本上,我想向远程REST服务设置一个“GET”请求,该服务通过curl向我提供json数据作为响应。有人能告诉我我犯了什么错误吗?我尝试了各种帖子,但都谈论POST请求,而不是GET。