如何从命令行上传文件作为jenkins中的文件参数

时间:2012-11-12 17:30:24

标签: curl jenkins command-line-interface

我在Jenkins的命令行中使用字符串参数触发构建:

curl http://jenkins:8080/job/Build/buildWithParameters?PARAM=value&token=token

我现在想要从命令行触发带有文件作为文件参数的构建。

例如,如果我的项目构建了main.c,那么我希望能够触发构建并从命令行上传我的main.c。

这可能吗?

4 个答案:

答案 0 :(得分:14)

Jenkins Remote access API页面中描述了这一点:

curl http://jenkins/job/$JOB_NAME/build -F file0=@PATH_TO_FILE -F json='{"parameter": [{"name":"FILE_LOCATION_AS_SET_IN_JENKINS", "file":"file0"}]}'

请注意,您需要使用URL / build而不是/ buildWithParameters

答案 1 :(得分:9)

如果需要发送字符串参数和文件参数,可以执行以下操作:

json='{"parameter": [{"name": "param1", "value": "value1"},
  {"name": "param2", "value": "value2"},
  {"name":"fileParam", "file":"file0"}]}'

url=http://jenkins/job/My_Remote_Jenkins_Job/build

curl -v $url -F file0=@/some/folder/path/template.zip -F json="$json" --user username:password

我必须确保Jenkins作业param1中存在参数param2fileParmMy_Remote_Jenkins_Job

答案 2 :(得分:6)

我使用的解决方案(基于Christophers建议使用jenkins-cli)是:

java -jar jenkins-cli.jar -s http://jenkins:8080 build Build -p main.c=hello.c

使用main.c的File参数将您的本地hello.c作为main.c上传到Build作业的工作区。

答案 3 :(得分:0)

不幸的是,自Jenkins 2.165以来,Russels answer用于CLI的操作不再起作用,因为已删除了Jenkins命令行界面的“远程”操作模式。

来自Jenkins blog

使用本地文件或=的命令选项或参数 标准输入/输出(例如,安装插件,build -p,支持) 只接受后者。

这意味着必须按以下方式更改命令行:

java -jar jenkins-cli.jar -s http://jenkins:8080 build Build -p main.c= <hello.c

通过为文件参数“ main.c”传递空字符串,我们向CLI指示应从标准输入中读取文件。我们正在使用外壳程序重定向操作符“ <”将文件“ hello.c”重定向到标准输入。