我有一个Jenkins管道,用于Docker容器中的PHP项目。这是我的Jenkinsfile:
pipeline {
agent any
stages {
stage('Build') {
agent any
steps {
sh 'docker-compose up -d'
sh 'docker exec symfony composer install'
}
}
stage('Test') {
steps {
sh 'docker exec symfony php ./bin/phpunit --coverage-clover=\'reports/coverage/coverage.xml\' --coverage-html=\'reports/coverage\' --coverage-crap4j=\'reports/crap4j.xml\''
}
}
stage('Coverage') {
steps {
step([$class: 'CloverPublisher', cloverReportDir: '/reports/coverage', cloverReportFileName: 'coverage.xml'])
}
}
}
post {
cleanup {
sh 'docker-compose down -v'
cleanWs()
}
}
}
运行管道之后,var/lib/jenkins/workspace
文件夹包含4个文件夹(假设我的项目名称为Foo
):
这些是什么,我该如何清理它们? cleanWs
不会删除除构建后的第一个以外的任何东西。
编辑:这不是this question的重复,因为
a)这个问题不能回答我的问题:这些文件是什么。
b)该问题的答案建议使用deleteDir
,在使用Docker容器时为not recommended。
答案 0 :(得分:2)
有一个关于deleteDir()的Jenkins issue已打开,没有删除@ tmp / @ script / @ ...目录。
删除这些内容的解决方法:
post {
always {
cleanWs()
dir("${env.WORKSPACE}@tmp") {
deleteDir()
}
dir("${env.WORKSPACE}@script") {
deleteDir()
}
dir("${env.WORKSPACE}@script@tmp") {
deleteDir()
}
}
}
这个问题上还有一个comment,描述了 @tmp 是什么:
它[@tmp文件夹]包含在处加载的任何库的内容 运行。没有副本,重放就无法可靠地工作。
答案 1 :(得分:2)
Foo @ 2 Foo @ 2 @ tmp 定义了两次代理,因此创建了文件夹。一旦在流水线块的顶层定义了它。一旦进入阶段,就称为构建。 阶段“ build”的工作文件夹是Foo @ 2文件夹。