jenkinspipe道擦除工作区

我们正在运行Jenkins 2.x并喜欢新的Pipeline插件。 但是,如果存储库中有这么多的分支,磁盘空间会很快填满。

有没有任何插件与Pipeline兼容,我可以消灭成功构build的工作区?

你可以使用deleteDir()作为pipe道Jenkinsfile的最后一步(假设你没有改变工作目录)。

就像Jenkins Version指出的@gotgenes一样 2.74 ,下面的作品,不知道从什么时候,也许如果有人可以编辑和添加上面的版本

 cleanWs() 

jenkins版本2.16和工作区清理插件 ,我有,我使用

 step([$class: 'WsCleanup']) 

删除工作区。

您可以通过转到查看

 JENKINS_URL/job/<any Pipeline project>/pipeline-syntax 

然后从样本步骤中select“步骤:通用构build步骤”,然后从构build步骤中select“构build完成后删除工作区”

事实上,deleteDir函数recursion地删除当前目录及其内容。 符号链接和连接将不会被遵循,但将被删除。

要删除工作空间的特定目录,请在dir步骤中包装deleteDir步骤。

 dir('directoryToDelete') { deleteDir() } 

我们通过使用git插件的function来确保我们正在使用干净的工作区。 您可以添加其他行为,如“结帐前清洁”。 我们也使用这个“Prune陈旧远程追踪分支”。

提到的解决schemedeleteDir()cleanWs() (如果使用工作区清理插件 )都可以工作,但在额外的构build步骤中使用它的build议通常不是所需的解决scheme。 如果构build失败并且pipe道被中止,那么这个清除阶段永远不会到达,因此工作空间不能在失败的构build上清除。

=>在大多数情况下,你应该像always把它放在一个后期build立的条件 :

 pipeline { agent any stages { stage('Example') { steps { echo 'Hello World' } } } post { always { cleanWs() } } } 

使用“WipeWorkspace”扩展似乎也是如此。 它需要更长的forms:

 checkout([ $class: 'GitSCM', branches: scm.branches, extensions: scm.extensions + [[$class: 'WipeWorkspace']], userRemoteConfigs: scm.userRemoteConfigs ]) 

更多细节在这里: https : //support.cloudbees.com/hc/en-us/articles/226122247-How-to-Customize-Checkout-for-Pipeline-Multibranch-

可用的GitSCM扩展: https : //github.com/jenkinsci/git-plugin/tree/master/src/main/java/hudson/plugins/git/extensions/impl