如何使用curl和身份验证令牌将参数传递给Jenkins

如何使用curl和身份验证令牌将参数传递给Jenkins,jenkins,jenkins-groovy,Jenkins,Jenkins Groovy,我有一个Jenkins作业MY_REMOTE_作业,在该作业上,我启用了Triger构建远程运行,以使用身份验证令牌 我想使用已设置的输入参数$MYPARAMETER(在CALLING_JOB中)在另一个作业(CALLING_JOB)中触发我的_REMOTE_作业。我试过这个命令: curl -k -u JENKINS_USER_JOHN:123TOKEN123 https://myserver.com:8443/jenkins/job/MY_REMOTE_JOB/buildWithParame

我有一个Jenkins作业MY_REMOTE_作业,在该作业上,我启用了Triger构建远程运行,以使用身份验证令牌

我想使用已设置的输入参数$MYPARAMETER(在CALLING_JOB中)在另一个作业(CALLING_JOB)中触发我的_REMOTE_作业。我试过这个命令:

curl -k -u JENKINS_USER_JOHN:123TOKEN123 https://myserver.com:8443/jenkins/job/MY_REMOTE_JOB/buildWithParameters?token=123TOKEN123&INPUT_PARAMETER=$MYPARAMETER
作业MY_REMOTE_作业的触发/调用实际上是成功的,但是应该传递给该作业的参数($MYPARAMETER)以某种方式被留下,因此该作业在没有参数的情况下执行

我应该如何修改curl,以便它将参数传递给my_REMOTE_作业


我在Jenkins 1.609.3上运行,乍一看,我可以说您缺少发布数据的-X标志

我也有类似的问题,我参考了curl的手册页,发现-F标志很有用,因为它模拟了一个填充表单,请注意参数名及其顺序与Jenkins Build with Parameters page/form上的参数名及其顺序完全匹配

例如,让我们假设您的参数部分的顺序在描述性管道语法中的格式如下

pipeline {
    parameters {
        string(name: "PARAMETER1", defaultValue: "", description: "Enter a Value")
        string(name: "PARAMETER2", defaultValue: "", description: "Enter a Value")
        string(name: "PARAMETER3", defaultValue: "", description: "Enter a Value")
        string(name: "PARAMETER4", defaultValue: "", description: "Enter a Value")
        string(name: "PARAMETER5", defaultValue: "", description: "Enter a Value")
    } 
} 
curl命令中参数的顺序应类似

基于下面curl命令的格式

curl -k -u JENKINS_USER_JOHN:123TOKEN123 https://myserver.com:8443/jenkins/job/MY_REMOTE_JOB/buildWithParameters?token=123TOKEN123&INPUT_PARAMETER=$MYPARAMETER
我建议您尝试以下格式

curl -k -X POST -u JENKINS_USER_JOHN:123TOKEN123 "https://myserver.com:8443/jenkins/job/MY_REMOTE_JOB/buildWithParameters" -F PARAMETER1=${PARAMETER1_VALUE} -F PARAMETER2=${PARAMETER2_VALUE} -F PARAMETER3=${PARAMETER3_VALUE} -F PARAMETER34=${PARAMETER4_VALUE} -F PARAMETER5=${PARAMETER5_VALUE}
curl -k -X POST -u JENKINS_USER_JOHN:123TOKEN123 -H ${YOUR_CRUMB_VALUE} "https://myserver.com:8443/jenkins/job/MY_REMOTE_JOB/buildWithParameters" -F PARAMETER1=${PARAMETER1_VALUE} -F PARAMETER2=${PARAMETER2_VALUE} -F PARAMETER3=${PARAMETER3_VALUE} -F PARAMETER4=${PARAMETER4_VALUE} -F PARAMETER5=${PARAMETER5_VALUE}
这是你的链接

如果您还打算使用具有适当身份验证的CSRF保护,请遵循,启用此功能后,您可以使用curl命令中的值和-H标志

因此,使用CSRF时,curl命令的格式如下

curl -k -X POST -u JENKINS_USER_JOHN:123TOKEN123 "https://myserver.com:8443/jenkins/job/MY_REMOTE_JOB/buildWithParameters" -F PARAMETER1=${PARAMETER1_VALUE} -F PARAMETER2=${PARAMETER2_VALUE} -F PARAMETER3=${PARAMETER3_VALUE} -F PARAMETER34=${PARAMETER4_VALUE} -F PARAMETER5=${PARAMETER5_VALUE}
curl -k -X POST -u JENKINS_USER_JOHN:123TOKEN123 -H ${YOUR_CRUMB_VALUE} "https://myserver.com:8443/jenkins/job/MY_REMOTE_JOB/buildWithParameters" -F PARAMETER1=${PARAMETER1_VALUE} -F PARAMETER2=${PARAMETER2_VALUE} -F PARAMETER3=${PARAMETER3_VALUE} -F PARAMETER4=${PARAMETER4_VALUE} -F PARAMETER5=${PARAMETER5_VALUE}
最后还要找到一些与你的问题相关的其他答案


希望以上建议能解决您的问题,祝您好运

您是否尝试过将URL用双引号括起来?