Glu*_*ear 6 jenkins docker jenkins-pipeline
我有一个 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除了构建后的第一个之外,不会删除任何其他内容。
编辑:这不是这个问题的重复,因为
deleteDir,在使用 Docker 容器时不推荐使用。有一个关于 deleteDir() 不删除 @tmp/@script/@... 目录的打开的Jenkins 问题。
删除这些的解决方法:
post {
  always {
    cleanWs()
    dir("${env.WORKSPACE}@tmp") {
      deleteDir()
    }
    dir("${env.WORKSPACE}@script") {
      deleteDir()
    }
    dir("${env.WORKSPACE}@script@tmp") {
      deleteDir()
    }
  }
}
还有一个关于描述@tmp是什么的问题的评论:
它 [@tmp 文件夹] 包含在运行时加载的任何库的内容。如果没有副本,Replay 就无法可靠地工作。
| 归档时间: | 
 | 
| 查看次数: | 8668 次 | 
| 最近记录: |