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