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