Jenkins输入管道步骤通过POST填充CSRF - howto? [英] Jenkins input pipeline step filled via POST with 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+APImy 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屋!