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

Curl 如何将文件上传到jenkins并用于构建?,curl,jenkins,Curl,Jenkins,我对詹金斯很陌生,我一直在尝试使用curl来构建我的工作。除了这个curl,我想向Jenkins发送一个文件,该文件应该放在我工作区的特定目录中。我一直在谷歌上搜索,但似乎找不到清晰的文档来帮助我找到解决方案。请导游。我也看了一些关于谷歌和StackOverflow的其他文章,但没有找到我要找的东西 curl-X POST JENKINS\u URL/job/job\u NAME/build\ --表单file0=/home/abc.xml\ --格式json='{“参数”:[{“名称”:“/w

我对詹金斯很陌生,我一直在尝试使用curl来构建我的工作。除了这个curl,我想向Jenkins发送一个文件,该文件应该放在我工作区的特定目录中。我一直在谷歌上搜索,但似乎找不到清晰的文档来帮助我找到解决方案。请导游。我也看了一些关于谷歌和StackOverflow的其他文章,但没有找到我要找的东西

curl-X POST JENKINS\u URL/job/job\u NAME/build\ --表单file0=/home/abc.xml\ --格式json='{“参数”:[{“名称”:“/workspace”,“文件”:“file0”}]}'


我也试过了,但似乎不起作用。

来自Jenkins文件参数帮助

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

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

这是脚本的一部分。作业有一个名为RECORDS\u 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"}]}'
请注意,詹金斯可以处理文件上传

java -jar jenkins-cli.jar -s http://localhost:8080/ build builder \
      -p YOUR_JOBS_FILE_ARGUMENT_NAME=/home/abc.xml
[查看OP自己的答案后编辑]

警报


curl命令中的文件名路径部分有“@”(请注意,@在路径之前)。jenkins cli不需要它。发生这种错误时,很难追踪。

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


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

什么不起作用?你犯了什么错误?Jenkins将文件保存到工作区;你需要复制它。事实上,我在工作区中找不到该文件,所以我无法确定它是否上传了!另外,“名称”:“/工作区”是否正确?是否需要配置作业以获取文件参数?我已经这样做了,我已经在config.curl-X POST url/jobname/build-form file0=sample.xml-F json='{“parameter”:[{“name”:“sample.xml”,“file”:“file0”}]}'中的file参数中放置了location/workspace作为文件位置,得到一个空指针异常,文件参数名是什么?必须指定{“名称”:“参数名称”,谢谢你的回答。除了你的"作业"文件"参数"名称外,我了解了大部分内容。让我解释一下我的理解,当我打开jenkins并将作业配置为获取参数时,我选择了文件参数并给它一个文件位置和描述,那么文件位置就是你所说的"作业"文件"参数"名称的意思吗?原因是什么儿子,当我按照您指定的上述命令执行时,我收到空指针异常?很抱歉,我问的是非常基本的问题,但詹金斯是我昨天生命中第一次接触到的东西。感谢您的帮助。解决了问题。感谢您的帮助。很高兴知道。请按照中的说明接受回答,如您所见,Jenkins cli更直观。它很直观,但我希望在我的项目中保持较低的依赖性,所以我们使用curl:)
curl -X POST JENKINS_URL/job/JOB_NAME/build \ 
  --form file0=@/home/abc.xml \ 
  --form json='{"parameter": [{"name":"xyz/abcd.xml", "file":"file0"}]}'