Jenkins 工作区中的@tmp 文件夹是什么以及如何清理它们

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()
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

运行管道后,该var/lib/jenkins/workspace文件夹包含 4 个文件夹(假设我的项目名称是Foo):

  1. 福@2
  2. Foo@2@tmp
  3. 脚@tmp

这些是什么,我该如何清理它们?cleanWs除了构建后的第一个之外,不会删除任何其他内容。

编辑:这不是这个问题的重复,因为

  • 这个问题没有回答我的问题:这些文件是什么。
  • 该问题的答案建议使用deleteDir,在使用 Docker 容器时不推荐使用。

小智 7

由于代理被定义了 2 次,因此创建了 Foo@2 Foo@2@tmp 文件夹。一旦它在管道块内的顶层定义。一旦进入称为构建的阶段。阶段“build”的工作文件夹是 Foo@2 文件夹。


Vik*_* Be 5

有一个关于 deleteDir() 不删除 @tmp/@script/@... 目录的打开的Jenkins 问题

删除这些的解决方法:

post {
  always {
    cleanWs()
    dir("${env.WORKSPACE}@tmp") {
      deleteDir()
    }
    dir("${env.WORKSPACE}@script") {
      deleteDir()
    }
    dir("${env.WORKSPACE}@script@tmp") {
      deleteDir()
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

还有一个关于描述@tmp是什么的问题的评论

它 [@tmp 文件夹] 包含在运行时加载的任何库的内容。如果没有副本,Replay 就无法可靠地工作。


归档时间:

查看次数:

8668 次

最近记录:

5 年,2 月 前