Jenkins输入管道步骤通过POST填充CSRF - howto? [英] Jenkins input pipeline step filled via POST with CSRF - howto?

查看:822
本文介绍了Jenkins输入管道步骤通过POST填充CSRF - howto?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个输入步骤的Jenkins管道,我想通过一个脚本提交这个输入(单字符串参数)。
到目前为止,我尝试使用curl,理想情况下,我会通过Python请求库发送它。这应该是一个简单的POST请求,但是使用CSRF它变得棘手。我已经获得Jenkins-Crumb(在这种情况下使用curl,来自同一台机器和相同的bash会话),但仍然无法发送内容...



我发送 Jenkins-Crumb:XXX 头,就像 https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API



我的请求看起来像这样:

  curl -vvv -X POST --user'$ {USER}:$ { API_KEY}'-HJenkins-Crumb:$ {JENKINS_CRUMB}-d'json ={parameter:{name:$ {PARAM_NAME},value:asd},Jenkins- Crumb:$ {JENKINS_CRUMB}}''http:// $ {JENKINS_URL} / job / $ {JOB_NAME} / $ {BUILD_NR} / input /'
pre>

我在POST的URL与在构建日志(控制台输出)中链接的URL相同。

解决方案

我设法解决了这个问题。



希望别人能从我的答案中受益,我实现了OPs目标。



Jenkis Pipeline输入步骤需要的是一个格式正确的JSON和OK按钮标题发送到正确的URL。



所以,正确的语法是:

  curl -X POST -HJenkins-Crumb:$ {JENKINS_CRUMB}-d json ='{parameter:{name:$ {PARAMETER_NAME},value:$ {PARAMETER_VALUE}}} ='$ {SUBMIT_CAPTION}''http:// j $ {JENKINS_URL} / job / $ {JOB_NAME} / $ {BUILD_ID} / input / $ {INPUT_ID} / submit'

关注


I have Jenkins pipeline with an Input step, and I would like to submit this input(single string argument) via a script. So far I am trying with curl, ideally I'll be sending it via Python requests library. This should be an easy POST request, however with CSRF it becomes tricky. I've obtained Jenkins-Crumb (using curl in this case, from the same machine and same bash session), but still can't send the content...

I'm sending Jenkins-Crumb:XXX header, just like it is explained at https://wiki.jenkins-ci.org/display/JENKINS/Remote+access+API

my request looks like this:

curl -vvv -X POST --user '${USER}:${API_KEY}' -H "Jenkins-Crumb:${JENKINS_CRUMB}" -d 'json="{"parameter":{"name":"${PARAM_NAME}","value":"asd"},"Jenkins-Crumb":"${JENKINS_CRUMB}"}"' 'http://${JENKINS_URL}/job/${JOB_NAME}/${BUILD_NR}/input/'

The URL I'm POSTing at is the same, as the one linked in build log (Console output).

解决方案

I managed to resolve this issue.

Hoping that someone else will benefit from my answer, let me explain how I achieved OPs target.

All that Jenkis Pipeline input step needs is a properly formatted JSON and OK button caption sent to the right URL.

So, the proper syntax is:

curl -X POST -H "Jenkins-Crumb:${JENKINS_CRUMB}" -d json='{"parameter": {"name": "${PARAMETER_NAME}", "value": "${PARAMETER_VALUE}"}}' -d proceed='${SUBMIT_CAPTION}' 'http://j${JENKINS_URL}/job/${JOB_NAME}/${BUILD_ID}/input/${INPUT_ID}/submit'

regards

这篇关于Jenkins输入管道步骤通过POST填充CSRF - howto?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆