Jenkins 詹金斯的文物档案
我对jenkins中的归档文件夹路径有问题。我只想归档项目调试文件夹中的内容。我用下面的方法来做这件事Jenkins 詹金斯的文物档案,jenkins,jenkins-plugins,Jenkins,Jenkins Plugins,我对jenkins中的归档文件夹路径有问题。我只想归档项目调试文件夹中的内容。我用下面的方法来做这件事 MyApp1/MyApp1/bin/Debug/* 当我使用它时,它将归档调试文件夹中的内容,但保持相同的文件夹结构(MyApp1/MyApp1/bin/debug)。 如果我只需要归档debug(debug/)文件夹中的文件,我应该怎么做 请告诉我。仅使用存档工件设置无法删除路径的“前缀”。(一些上传扩展确实支持这一点——例如,通过FTP发布插件) 如果您确实需要此功能,一个简单的解决方案
MyApp1/MyApp1/bin/Debug/*
当我使用它时,它将归档调试文件夹中的内容,但保持相同的文件夹结构(MyApp1/MyApp1/bin/debug)。如果我只需要归档debug(debug/)文件夹中的文件,我应该怎么做
请告诉我。仅使用存档工件设置无法删除路径的“前缀”。(一些上传扩展确实支持这一点——例如,通过FTP发布插件)
如果您确实需要此功能,一个简单的解决方案是添加一个额外的构建步骤,将调试文件夹复制到项目工作区的根目录。一个更干净的方法可能是使用一个专用于生成工件的阶段,设置适当的工作目录:
stage('Release') {
steps {
dir('MyApp1/MyApp1/bin/Debug') {
archiveArtifacts artifacts: '**', fingerprint: true
}
}
}
这真的很容易!您可以像使用“”插件一样使用插件。 安装后,必须在所有构建步骤之后添加一个新的“构建步骤”,即文件操作。有很多你喜欢的选择。 例如“文件重命名”、“复制文件”、“创建文件夹”等
带有“展平”开关的“复制文件”选项,使您能够仅复制文件名而不复制任何文件地址。您可以使用它,将文件复制到工作区的根目录中并存档 我创建了一种方法来实现这一点:
def archiveFilesWithoutPath(globPattern) {
def files = findFiles(glob: globPattern)
for (def i = 0; i < files.size(); i++) {
def file = files[i]
def parentFolder = new File(file.path).getParent()
dir(parentFolder) {
archiveArtifacts file.name
}
}
}
目前唯一的缺点是你需要允许
new java.io.File java.lang.String
及
在脚本批准中。如果是Visual Studio,您可以阅读解决方案,找到项目文件,然后从中可以找到输出目录。不幸的是,这对我不起作用,因为我的Jenkins不知道“步骤”命令。我删除了steps块,只是将dir命令放到stage中。我也很费劲,因为'dir'命令中的路径无效,但它没有抱怨。@Chaoste这个答案适用于声明性管道;我猜您使用的是脚本化的。这也可以放在
post
中,而不是定义一个额外的阶段:post{success{dir('MyApp1/MyApp1/bin/Debug'){archiveArtifacts artifacts:'**'}}
new java.io.File java.lang.String
method java.io.File getParent