如何避免Jenkins重复使用工作区?

7ivaypg9  于 2023-08-03  发布在  Jenkins
关注(0)|答案(3)|浏览(182)

我有几个共享一个节点的并行阶段,并在完成后清理它们的工作空间。我的问题是,当阶段失败时,我希望工作空间不被清理,这样我就可以检查它。
实际情况是:

  1. falling stage失败,按我的需要保留工作区
    1.第二阶段重用工作区,成功
    1.第二阶段清理工作空间
    我该如何避免这种情况?
m1m5dgzv

m1m5dgzv1#

Jenkins有一个后期阶段。根据管道的结果,执行不同的代码分支。因此,让我们说你的管道是成功的,然后你的清理脚本清理插件被称为。如果管道失败,您可以将结果存档,或者简单地跳过工作区的清理。
查看官方jenkin文档以获取更多信息(搜索'post'):https://jenkins.io/doc/book/pipeline/syntax/

pipeline {
    agent any
    stages {
        stage('PostExample') {
            steps {
                // do something here
            }
        }
    }
    post { //Is called after your stage
        failure { 
            //pipeline failed - do not clear workspace
        }
        success {
            //pipeline is successful - clear workspace
        }
    }
}

字符串
另一方面,如果你想保留你的结果,你可以考虑将它们归档,这样它们就独立于你的工作空间,因为你可以随时从Jenkins GUI(

p8h8hvxi

p8h8hvxi2#

你只需要在执行jenkins文件时使用finally(这将执行而不考虑stage输出)方法:参见How to perform actions for failed builds in Jenkinsfile

3htmauhk

3htmauhk3#

您应该查找ws(specified_workspace){your actions},它可以帮助您重新定义所包含的操作的工作区,因此您可以将其放在管道的开头。您可以为管道的每个新执行创建一个新的工作区(例如,使用执行编号或日期)。在post操作中(post用于声明式,finally用于脚本式),执行bat或shell命令,如果成功,将删除整个文件夹。
在失败的情况下,还可以使用工件和归档您的工作空间

相关问题