当前位置: 首页 > 面试题库 >

Jenkins中缺少文件参数上传的文件

轩辕远
2023-03-14
问题内容

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}

在execute shell构建类型下,我们可以在${file1}上面放一个示例来完成获取文件的技巧。

因此,这是在自由样式作业之上运行的输出!

Copying file to file1
[sharedspace] $ /bin/sh -xe /tmp/hudson3237344085461334672.sh
+ ls file1.zip
file1.zip
Finished: SUCCESS


 类似资料:
  • 问题内容: 我在Jenkins的命令行中使用字符串参数触发构建: 我现在想从命令行触发使用文件作为文件参数的构建。 例如,如果我的项目构建了main.c,那么我希望能够触发构建并从命令行上传main.c。 这可能吗? 问题答案: 在“ Jenkins远程访问 API”页面中对此进行了描述: 请注意,您需要使用URL / build代替/ buildWithParameters

  • 问题内容: 在从openni编译演示时,我偶然发现了此错误: 我在Mac上执行此操作。我最好的猜测是该文件不在我的java.library.path中 我现在的问题是:这个猜测正确吗,以及如何在netbeans中添加到java.library.path中。 提前Thx 问题答案: 将此添加到projects属性的VM选项中:-Djava.library.path = / Users / olivi

  • 问题内容: 我有一个txt文件,其中包含一个字符串,我希望能够在我的一个脚本中使用此字符串,所以我想知道是否有一种方法可以将文件内容设置为构建属性之一或可以在脚本中使用的参数,应该与使用构建环境属性之一相同。例如:$ {JOB_NAME},它保存着作业名称,因此,我想以相同的方式访问其中保存着某些值的文件的内容。可能吗? 问题答案: 您可以通过作业的 File 参数将文件从计算机上载到工作区。 您

  • 我试图从我的一个项目中引用logary-js(免责声明:我自己的项目)。 我有这个packages.json文件: 此外,在本例https://github.com/logary/logary-js/tree/master/examples/webpack中,它很好地引用了日志,尽管是通过文件系统而不是Github。 所以问题就变成了;如何从GitHub引用日志?或者我应该在它的package.j

  • Firebase缺少dSYM文件 我按照指令上传dSYM文件/path/to/pods/directory/firebaseCrashlytics/upload-symbols-gsp/path/to/googleService-info.plist-p ios/path/to/dsyms

  • 使用Struts2.3.15.1 在struts2中实现文件上传。这是我已经做了很多次的事情,但是,我试图包括一些健全的检查(即最大文件大小)。我有fileUpload拦截器作为堆栈中的最后一个拦截器(即struts.xml)。我的堆栈包括一些内部拦截器以及validationWorkflowStack。我在struts中设置了以下属性。属性文件: 除了文件上传,我还在表单中传递一些其他参数。表格