我在Jenkins的命令行中使用字符串参数触发构建:
curl http://jenkins:8080/job/Build/buildWithParameters?PARAM=value&token=token
我现在想要从命令行触发带有文件作为文件参数的构建。
例如,如果我的项目构建了main.c,那么我希望能够触发构建并从命令行上传我的main.c。
这可能吗?
答案 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
中存在参数param2
,fileParm
和My_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”重定向到标准输入。