如何使用curl触发jenkins作业并在url中传递参数

如何使用curl触发jenkins作业并在url中传递参数,jenkins,build,Jenkins,Build,我正在尝试使用curl命令触发jenkins构建。下面是我的命令 http://localhost:8080/view/Project%20IRT/job/create_image/buildWithParameters?token=sprit&Action="blah blah"&ClientName="morang" 它给出了下面的错误,并使用我在作业中定义的默认参数触发构建 'Action' is not recognized as an internal or exte

我正在尝试使用curl命令触发jenkins构建。下面是我的命令

http://localhost:8080/view/Project%20IRT/job/create_image/buildWithParameters?token=sprit&Action="blah blah"&ClientName="morang"
它给出了下面的错误,并使用我在作业中定义的默认参数触发构建

'Action' is not recognized as an internal or external command,
operable program or batch file.
'ClientName' is not recognized as an internal or external command,
operable program or batch file.
这里我遗漏了什么。以及如何在url中传递参数以触发作业。我也尝试过这样做,但下面的命令没有成功给出json错误

curl -X POST http://localhost:8080/view/Project%20IRT/job/create_image/build --data token=sprit --data-urlencode json='{"parameter": [{"name":"Action", "value":"blah blah"},{"name":"ClientName", "value":"morang"}]}'
JSONERROR-

Caused by: net.sf.json.JSONException: A JSONObject text must begin with '{' at character 1 of '{parameter:
        at net.sf.json.util.JSONTokener.syntaxError(JSONTokener.java:499)
        at net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:919)
        at net.sf.json.JSONObject._fromString(JSONObject.java:1145)
        at net.sf.json.JSONObject.fromObject(JSONObject.java:162)
        at net.sf.json.JSONObject.fromObject(JSONObject.java:132)
        at org.kohsuke.stapler.RequestImpl.getSubmittedForm(RequestImpl.java:916)
        ... 81 more
</pre></div></div></div><footer><div class="container-fluid"><div class="row"><div class="col-md-6" id="footer"></div><div class="col-md-18"><span class="page_generated">Page generated:
 Mar 21, 2016 10:39:05 AM IST</span><span class="rest_api"><a href="api/">REST API</a></span><span class="jenkins_ver"><a href="http://jenkins-ci.org/">Jenkins ver. 1.644</a></span><div
 id="l10n-dialog" class="dialog"></div><div id="l10n-footer" style="display:none; float:left"><a href="#" onclick="return showTranslationDialog();"><img src="/static/fbacd7a6/plugin/tra
nslation/flags.png" />
      Help us localize this page
    </a></div><script>var footer = document.getElementById('l10n-footer');
    var f = document.getElementById('footer');
    f.insertBefore(footer,f.firstChild);
    footer.style.display="block";

    var translation={};
    translation.bundles = "mC177+QPH0ukSUfPbWxfIyQw/DlaO16MmOglhwDdqW6lL/PyzHLaYsioVPvSoTyYFpwCaSkCkRllDVhBqkkft89+rzGakHYKf4ZR3PT0B4HF31sxwlLtogh+g+d5ujrwV53UuNzg67Bb9U4lYNodstxN3fuv/F
cnebyjHpcQPci0zoAkJbd7YJIX3LaNdkuvdoPZmneCtaMjG5camLnbJM+pj9v4BHCQy9gooUl+aIDIuuhLiblKIVXFQfI4UbW2sGYNWluX4qn1iEyeBJGS6kNHKE05r2E5z9X5CVxcvHPb99pTDgBNqhc+WCDdN1d6PM7ueps55Mo/8v5ywsHGE9D
LlfvzHbmfu8Lg+JaQSZK2IKVvN55Ofr9x/4dgeE0khYjkodFSVo8Q/knoFjYZ/tWyIKyXJJrc6OJ40V29iOTF/KNHKFPWZOFueBUyDLiPEClcCMgA6iUB9vbzkFicKLvsTj+cQUAxjzL+8n4Vxh31qmVF/Md+8SdAfI0eau1F";
    translation.detectedLocale = "";

    function showTranslationDialog() {
      if(!translation.launchDialog)
        loadScript("/static/fbacd7a6/plugin/translation/dialog.js");
      else
        translation.launchDialog();
      return false;
    }</script></div></div></div></footer></body></html>curl: (3) [globbing] bad range specification in column 2
curl: (3) [globbing] unmatched close brace/bracket in column 16
curl: (3) [globbing] unmatched close brace/bracket in column 13
由以下原因引起:net.sf.json.JSONException:JSONObject文本必须在{parameter:
位于net.sf.json.util.JSONTokener.syntaxError(JSONTokener.java:499)
在net.sf.json.JSONObject._fromJSONTokener(JSONObject.java:919)
net.sf.json.JSONObject.\u fromString(JSONObject.java:1145)
位于net.sf.json.JSONObject.fromObject(JSONObject.java:162)
位于net.sf.json.JSONObject.fromObject(JSONObject.java:132)
在org.kohsuke.stapper.RequestImpl.getSubmittedForm(RequestImpl.java:916)上
…还有81个
生成的页面:
2016年3月21日上午10:39:05 ISTvar footer=document.getElementById('l10n-footer');
var f=document.getElementById('footer');
f、 insertBefore(页脚,f.第一个孩子);
footer.style.display=“block”;
var translation={};
translation.bundles=“mC177+QPH0ukSUfPbWxfIyQw/DlaO16MmOglhwDdqW6lL/pyzhlaysiovvsotyyfpwcaskrkkrlldvhbqkkft89+rzgakhykf4zr3pt0b4hf31sxwltogh+g+d5ujrwV53UuNzg67Bb9U4lYNodstxN3fuv/F
CNEBYJHPCpCpCpCpCi0ZoakJBD7YJIX3 LandkuvdopzmNectamJG5CmLbNbJM+pj9v4BHCQy9gooUl+AidiuhLibLkivxFqfi4Ux4QN1IEBJGS6KNHKE05R2E5Z9X5CVXCvHPB99PtdGbNqHc+WCDdN1d6PM7ueps55Mo/8V5YW5YW9D
LlfvzHbmfu8Lg+JaQSZK2IKVvN55Ofr9x/4dgeE0khYjkodFSVo8Q/knoFjYZ/TWYIKYJJRC6OJ40V29IoTF/KNHKKFPWZOFUEBUYDLIPECLCMCMGA6IUB9VBZKFICKLVSTJ+cQUAxjzL+8n4Vxh31qmVF/Md+8SdAfI0eau1F”;
translation.detectedLocale=“”;
函数showTranslationDialog(){
如果(!translation.launchDialog)
loadScript(“/static/fbacd7a6/plugin/translation/dialog.js”);
其他的
translation.launchDialog();
返回false;
}curl:(3)[globbing]列2中的范围规格不正确
卷曲:(3)[globbing]第16列中不匹配的右括号/括号
卷曲:(3)[球形]第13列中不匹配的右括号/括号

您只是缺少“&”之前的转义字符。它应该类似于“^&”。这对我很有帮助,在我的情况下也很有效

因此,代码将如下所示:

...job/create_image/buildWithParameters?token=sprit&Action="blah blah"^&ClientName="morang"

您是否尝试过使用url localhost:8080/job/?无所谓,我只是尝试过。请仔细检查您的参数大小写,因为它区分大小写。它可以从firefox触发吗?那么可能只是curl上的urlencoding有问题。不知道,但出于某些原因,相同的curl命令在linux操作系统上可以正常工作,但givi除外ng windows操作系统中的错误。我之前在windows中运行过它。在windows CMD上,您需要通过在另一个%前面加上前缀来转义“%”。因此,URLESCE中的单个%需要更改为%%(原因是在CMD上,变量由%VARIABLE%引用)