Jenkins 詹金斯的文物档案

Jenkins 詹金斯的文物档案,jenkins,jenkins-plugins,Jenkins,Jenkins Plugins,我对jenkins中的归档文件夹路径有问题。我只想归档项目调试文件夹中的内容。我用下面的方法来做这件事 MyApp1/MyApp1/bin/Debug/* 当我使用它时,它将归档调试文件夹中的内容,但保持相同的文件夹结构(MyApp1/MyApp1/bin/debug)。 如果我只需要归档debug(debug/)文件夹中的文件,我应该怎么做 请告诉我。仅使用存档工件设置无法删除路径的“前缀”。(一些上传扩展确实支持这一点——例如,通过FTP发布插件) 如果您确实需要此功能,一个简单的解决方案

我对jenkins中的归档文件夹路径有问题。我只想归档项目调试文件夹中的内容。我用下面的方法来做这件事

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