繁体   English   中英

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

[英]How to upload file from command line as file parameter in jenkins

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

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

我现在想从命令行使用文件作为文件参数来触发构建。

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

这可能吗?

这在Jenkins 远程访问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

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

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

我必须确保参数param1param2fileParm存在于 Jenkins 作业My_Remote_Jenkins_Job

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

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

使用 main.c 的文件参数会将您的本地 hello.c 作为 main.c 上传到构建作业的工作区

不幸的是,自 Jenkins 2.165 以来, Russels使用 CLI 的回答不再有效,因为 Jenkins 命令行界面的“远程”操作模式已被删除。

来自詹金斯博客

使用本地文件或 = 用于标准输入/输出(例如 install-plugin、build -p、support)的命令选项或参数现在只接受后者。

这意味着必须像这样更改命令行:

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

通过为文件参数“main.c”传递一个空字符串,我们向 CLI 指示应该从标准输入读取文件。 我们使用 shell 重定向运算符“<”将文件“hello.c”重定向到标准输入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM