我有带有输入步骤的Jenkins管道,我想通过脚本提交此输入(单字符串参数)。到目前为止,我正在尝试使用curl,理想情况下,我将通过Python请求库发送它。这应该是一个简单的POST请求,但是使用CSRF变得棘手。我已经获得Jenkins- Crumb(在这种情况下,使用curl是在同一台机器和同一bash会话上进行的),但仍然无法发送内容…
我正在发送Jenkins-Crumb:XXX标头,就像在https://wiki.jenkins- ci.org/display/JENKINS/Remote+access+API中解释的那样
Jenkins-Crumb:XXX
我的要求看起来像这样:
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/'
我发布的URL与构建日志中链接的URL相同(控制台输出)。
有一种更简单的方法,只需调用proceedEmpty作业的URL:
proceedEmpty
curl -X POST -H "Jenkins-Crumb:${JENKINS_CRUMB}" http://${JENKINS_URL}/job/${JOB_NAME}/${BUILD_ID}/input/${INPUT_ID}/proceedEmpty
无需传递身体数据。
要中止,请使用:
curl -X POST -H "Jenkins-Crumb:${JENKINS_CRUMB}" http://${JENKINS_URL}/job/${JOB_NAME}/${BUILD_ID}/input/${INPUT_ID}/abort