Jenkins作业按构建分离工作区

Jenkins作业按构建分离工作区,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我们有一个任务,在构建期间在工作区文件夹中生成一些html文件。 我们的目标是在构建完成后获取这些文件并将其压缩 工作的第一步是清理工作区-确保没有来自以前版本的文件 当我们开始一个构建,而有人开始另一个构建时,我们的问题就出现了——工作区被抹去了。这两个版本都在生成这些html,内容从不同的版本混合而来 如果有人知道如何将每个构建分离出来以拥有自己的工作空间,我会非常乐意与大家分享。我想这只适用于一个工作。其他作业必须保留在共享工作区中。如果您有管道作业,您可以在作业终止之前添加一个post操

我们有一个任务,在构建期间在工作区文件夹中生成一些html文件。 我们的目标是在构建完成后获取这些文件并将其压缩

工作的第一步是清理工作区-确保没有来自以前版本的文件

当我们开始一个构建,而有人开始另一个构建时,我们的问题就出现了——工作区被抹去了。这两个版本都在生成这些html,内容从不同的版本混合而来


如果有人知道如何将每个构建分离出来以拥有自己的工作空间,我会非常乐意与大家分享。我想这只适用于一个工作。其他作业必须保留在共享工作区中。

如果您有管道作业,您可以在作业终止之前添加一个post操作:

比如:

if (currentBuild.result == "SUCCESS") {
    sh '''
        tar czf myArchive.tgz *.html
        scp myArchive.tgz xxx@xxxx:
    '''
} else {  
    step ([$class: 'Mailer', recipients: 'xxx@xxx.com'])
}
cleanWs cleanWhenFailure: false

如果你真的想操纵工作空间,我会做一些研究。也许您可以重新声明env.WORKSPACE变量的路径,但这对我来说并不太好。

在作业配置下,选中“使用自定义工作区”,并传递创建此工作区的位置。我通常通过为目录传入$BUILD\u NUMBER变量来创建工作区目录

这是我一直在寻找的解决方案: 最后,我使用“清理”删除每个生成的生成文件夹,如下所示:
谢谢你,伙计,你想保留工作区还是每次都有一个新的工作区?您需要并发构建吗?是@marxmacher-我在第一步中使用
cleanWs()
并使用新的工作区开始构建。我想避免并发生成。要避免并发生成,作业配置中有一个名为“不允许并发生成”的复选框。这将保持作业排队,直到第一个作业完成。
pipeline {
    agent {
        node {
            label 'master'
            customWorkspace "${JENKINS_HOME}/workspace/${JOB_NAME}/${BUILD_NUMBER}"
        }
    }
}
post {
    cleanup {
        deleteDir()
        dir("${workspace}@tmp") {
            deleteDir()
        }
        dir("${workspace}@script") {
            deleteDir()
        }
    }
}