如何将文件上传到jenkins并将其用于构建?

时间:2016-07-06 01:41:35

标签: curl jenkins

我是Jenkins的新手,我一直在尝试使用curl来建立自己的工作。除了这个卷曲,我想向Jenkins发送一个文件,该文件应放在我工作区的特定目录中。我一直在谷歌搜索,但似乎无法找到可以引导我解决的明确文档。请指南。我还查看了Google和StackOverflow上的其他一些文章,但无法找到我想要的内容。

  

curl -X POST JENKINS_URL / job / JOB_NAME / build \     --form file0 = / home / abc.xml \      - 形成json =' {"参数":[{"名称":" /工作区","文件":& #34; file0"}]}'

我也试过这个,似乎没有用。

2 个答案:

答案 0 :(得分:2)

来自Jenkins文件参数帮助

  

指定工作区中相对位置的上传位置   文件将被放置(例如,像" jaxb-ri / data.zip")

上传的文件位置是相对于工作区的。 您需要在脚本中复制/移动它。名称部分是作业的文件参数名称。它不是您文件的名称

这是来自脚本。该作业有一个名为RECORDS_LIST的文件参数。

curl -X POST  http://localhost:8080/job/builder/build \
             --form attachedfile=@c:/1.txt \
             --form json='{"parameter": [{"name":"RECORDS_LIST", "file":"attachedfile"}]}'

你可能

curl -X POST JENKINS_URL/job/JOB_NAME/build \ 
  --form file0=/home/abc.xml \ 
  --form json='{"parameter": [{"name":"YOUR_JOBS_FILE_ARGUMENT_NAME", "file":"file0"}]}'

请注意,jenkins command line api可以处理文件上传

java -jar jenkins-cli.jar -s http://localhost:8080/ build builder \
      -p YOUR_JOBS_FILE_ARGUMENT_NAME=/home/abc.xml

[看到OP自己的回答后编辑]

<强>警报

curl命令中的文件名路径部分有&#39; @&#39; (注意@之前的路径)。 jenkins cli不需要它。发生这种错误很难跟踪。

答案 1 :(得分:0)

Jayan所说的一切都是正确的。对于像我这样的初学者,我只是让它变得更简单。 的记住: 在我们的卷曲网址中@符号非常重要。此外,YOUR_JOBS_FILE_ARGUMENT_NAME是您要存储文件的路径,以及文件的名称和扩展名。如果将abcd.xml放在文件参数的文件位置,它会将abcd.xml保存在工作区的根目录中,如果要将其放在文件夹xyz中,则应将文件位置写入xyz / abcd.xml中在jenkins上配置作业时文件参数的文件位置,并确保在curl中使用相同的文件。因此,如果要将jckins上的abc.xml放到xyz / abcd.xml,请使用命令:

curl -X POST JENKINS_URL/job/JOB_NAME/build \ 
  --form file0=@/home/abc.xml \ 
  --form json='{"parameter": [{"name":"xyz/abcd.xml", "file":"file0"}]}'

这是非常基本的东西,但这是我偶然发现的地方。