Jenkins 作业按构建分隔工作区



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

作业的第一步是清理工作区 - 以确保没有来自以前生成的文件。

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

如果有人知道如何将每个构建分开以拥有自己的工作区,将非常乐意分享它。我希望这仅适用于一项工作。其他工作必须保留在共享工作区中。

这是我寻找的解决方案:

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

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

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

如果您有管道作业,则只需在作业终止之前添加发布操作:

像这样:

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 的路径。工作区变量,但对我来说似乎不是很好。

在作业配置下,选中"使用自定义工作区"并传递要创建此工作区的位置。我通常通过传入目录的 $BUILD_NUMBER 变量来创建工作区目录。

使用自定义工作区

最新更新