qmo*_*qmo 121 workspace jenkins jenkins-pipeline
我们正在运行Jenkins 2.x并喜欢新的Pipeline插件.但是,如果存储库中有如此多的分支,则磁盘空间会很快填满.
是否有任何与Pipeline兼容的插件可以在成功的构建中消除工作空间?
cur*_*xes 116
就像@gotgenes用Jenkins Version指出的那样.2.74,以下作品,不确定从什么时候开始,也许有人可以编辑并添加上面的版本
cleanWs()
Run Code Online (Sandbox Code Playgroud)
使用Jenkins版本2.16和Workspace Cleanup插件,我使用
step([$class: 'WsCleanup'])
Run Code Online (Sandbox Code Playgroud)
删除工作区.
你可以去看看
JENKINS_URL/job/<any Pipeline project>/pipeline-syntax
Run Code Online (Sandbox Code Playgroud)
然后从Sample步骤中选择"step:General Build Step",然后从Build步骤中选择"在构建完成时删除工作区"
Krz*_*soń 96
您可以使用deleteDir()
Jenkinsfile作为管道的最后一步(假设您没有更改工作目录).
Mat*_*iMu 65
所提到的解决方案deleteDir()
和cleanWs()
(如果使用工作空间清理插件)都可以工作,但是建议在额外的构建步骤中使用它通常不是理想的解决方案.如果构建失败并且管道中止,则永远不会到达此清理阶段,因此在失败的构建上不会清除工作区.
=>在大多数情况下,您应该将其置于后建步骤条件中,例如always
:
pipeline {
agent any
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
post {
always {
cleanWs()
}
}
}
Run Code Online (Sandbox Code Playgroud)
Seb*_*ien 62
实际上,deleteDir函数以递归方式删除当前目录及其内容.将不会遵循符号链接和联结,但将被删除.
要删除工作空间的特定目录,请在dir步骤中包装deleteDir步骤.
dir('directoryToDelete') {
deleteDir()
}
Run Code Online (Sandbox Code Playgroud)
use*_*383 12
我使用deleteDir()如下:
post {
always {
deleteDir() /* clean up our workspace */
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我必须始终运行成功或失败,但您无法订购帖子条件.当前订单总是,更改,中止,失败,成功然后不稳定.
但是,有一个非常有用的后置条件,总是最后运行的清理,请参阅https://jenkins.io/doc/book/pipeline/syntax/
所以最后我的帖子如下:
post {
always {
}
success{
}
failure {
}
cleanup{
deleteDir()
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可能对某些角落案件有所帮助
And*_*ray 11
使用以下管道脚本:
pipeline {
agent { label "master" }
options { skipDefaultCheckout() }
stages {
stage('CleanWorkspace') {
steps {
cleanWs()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
跟着这些步骤:
使用“WipeWorkspace”扩展似乎也有效。它需要更长的形式:
checkout([
$class: 'GitSCM',
branches: scm.branches,
extensions: scm.extensions + [[$class: 'WipeWorkspace']],
userRemoteConfigs: scm.userRemoteConfigs
])
Run Code Online (Sandbox Code Playgroud)
更多详情: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
pipeline {
agent any
tools {nodejs "node"}
environment {
}
parameters {
string(name: 'FOLDER', defaultValue: 'ABC', description: 'FOLDER', trim: true)
}
stages {
stage('1') {
steps{
}
}
stage("2") {
steps {
}
}
}
post {
always {
echo "Release finished do cleanup and send mails"
deleteDir()
}
success {
echo "Release Success"
}
failure {
echo "Release Failed"
}
cleanup {
echo "Clean up in post work space"
cleanWs()
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您在Jenkins中使用了自定义工作区,则deleteDir()不会删除@tmp文件夹。
所以要删除@tmp以及工作区,请使用以下命令
pipeline {
agent {
node {
customWorkspace "/home/jenkins/jenkins_workspace/${JOB_NAME}_${BUILD_NUMBER}"
}
}
post {
cleanup {
/* clean up our workspace */
deleteDir()
/* clean up tmp directory */
dir("${workspace}@tmp") {
deleteDir()
}
/* clean up script directory */
dir("${workspace}@script") {
deleteDir()
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
此代码段也适用于默认工作空间。
对于 Jenkins 2.190.1,这肯定有效:
post {
always {
cleanWs deleteDirs: true, notFailBuild: true
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
162072 次 |
最近记录: |