Jenkins构建中的每个文件参数“帮助文本”,
接受来自浏览器的文件提交作为构建参数。上载的文件将放置在工作空间中的指定位置,然后您的构建可以访问和使用该文件。这在许多情况下很有用,例如: 让人们对其构建的工件进行测试。 通过允许用户放置文件来自动执行上载/发布/部署过程。 通过上传数据集执行数据处理。 提交的文件的名称在环境变量中可用,该环境变量的名称与文件位置相同。例如,如果将文件位置设置为abc.zip,则$ {abc.zip}会为您提供从浏览器传递的原始文件名(例如my.zip)。该名称将不包括目录名部分。 文件上传是可选的。如果用户选择不上传任何内容,Jenkins只会跳过此参数并且不会放置任何内容(但它也不会删除工作空间中已经存在的任何内容。)
接受来自浏览器的文件提交作为构建参数。上载的文件将放置在工作空间中的指定位置,然后您的构建可以访问和使用该文件。这在许多情况下很有用,例如:
提交的文件的名称在环境变量中可用,该环境变量的名称与文件位置相同。例如,如果将文件位置设置为abc.zip,则$ {abc.zip}会为您提供从浏览器传递的原始文件名(例如my.zip)。该名称将不包括目录名部分。
文件上传是可选的。如果用户选择不上传任何内容,Jenkins只会跳过此参数并且不会放置任何内容(但它也不会删除工作空间中已经存在的任何内容。)
和“文件位置”
指定工作空间中相对于上传文件放置位置的位置(例如,“ jaxb-ri / data.zip”)
每个示例都尝试了简单上传zip文件-似乎没有在任何地方上传文件-既不在Workspace中,也不在某些temp目录下。如何找到文件和/或使用它?
这是尝试上传文件的简单管道。
properties( [ parameters( [ file(name: "file1", file: "file1.zip", description: 'Choose path to upload file1.zip from local system.') ] ) ] ) node { stage("Upload File") { sh ''' ls -lrt ls ${file1.zip} ${file1} file1.zip ''' } }
并在控制台日志中观察到运行时的相应错误。
[Pipeline] { [Pipeline] stage [Pipeline] { (Upload File) [Pipeline] sh [testSh] Running shell script + ls -lrt total 0 Workspacedir///testSh@tmp/durable-ba40512f/script.sh: line 4: ${file1.zip}: bad substitution [Pipeline] } [Pipeline] // stage [Pipeline] } [Pipeline] // node [Pipeline] End of Pipeline ERROR: script returned exit code 1 Finished: FAILURE
为此尝试了Groovy建议(多种方式):在Jenkins中获取二进制或压缩的上传文件- Windows无法打开文件夹。Compressed(zipped)文件夹无效,但运气不好。
由于在通过脚本管道使用文件参数方面存在局限性,因此,一个简单的自由样式作业看起来很容易:(
我现在要使用它,并继续进行下游依赖性或消耗上传工件的类似操作。
在此处输入图片说明
有了它,它只上传文件,并且不会篡改文件大小和//它的内容:)
可访问性明智的做法是通过${paramNameDefined}。
${paramNameDefined}
在execute shell构建类型下,我们可以在${file1}上面放一个示例来完成获取文件的技巧。
${file1}
因此,这是在自由样式作业之上运行的输出!
Copying file to file1 [sharedspace] $ /bin/sh -xe /tmp/hudson3237344085461334672.sh + ls file1.zip file1.zip Finished: SUCCESS