Jenkins按构建工作分开的工作区

时间:2019-12-20 12:33:17

标签: jenkins jenkins-pipeline

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

这项工作的第一步是清理工作区-确保没有以前构建的文件。

当我们开始构建并有人开始单独构建时,我们的问题就出现了-工作区被擦除了。这两个版本都在生成这些html,并且内容来自不同版本。

如果某人有想法如何将每个版本分开以拥有自己的工作区,将非常高兴与大家分享。我希望仅将其应用于一项工作。其他作业必须保留在共享工作区中。

3 个答案:

答案 0 :(得分:0)

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

类似于

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变量的路径来做一些事情,但这对我来说似乎并不好。

答案 1 :(得分:0)

在作业配置下,选中“使用自定义工作区”,然后传递您要在其中创建此工作区的位置。我通常通过传递$ BUILD_NUMBER变量来创建工作空间目录。

Use Custom Workspace

答案 2 :(得分:0)

这是我一直在寻找的解决方案:

pipeline {
    agent {
        node {
            label 'master'
            customWorkspace "${JENKINS_HOME}/workspace/${JOB_NAME}/${BUILD_NUMBER}"
        }
    }
}

最后,我使用清理来删除每个构建的生成文件夹,如下所示:

post {
    cleanup {
        deleteDir()
        dir("${workspace}@tmp") {
            deleteDir()
        }
        dir("${workspace}@script") {
            deleteDir()
        }
    }
}
谢谢你们