Search code examples
dockerjenkinsjenkins-pipelinecloudbees

How to save Docker volume from within Cloudbees Pipeline in case of fail


I run a set of API-Tests in a Docker-Container that are started by a Jenkins-Pipeline-Stage (Cloudbees-plugin).

I would like to save the logs of the tests away in case the stage (see below) fails. I tried to do it with a post-action in a later stage but then I do not have access to the image any more. How would you approach this problem? How can I save the image away in case of a fail?

    stage('build Dockerimage and run API-tests') {
      steps{
        script {
          def apitestimage = docker.build('apitestimage', '--no-cache=true dockerbuild')
          apitestimage.inside('-p 5800:5800') {
            dir('testing'){
              sh 'ctest -V'
            }
          }
          sh 'docker rmi --force apitestimage'
        }
      }
    }

Solution

  • Use a post { failure { .. } } step to archive the data of the failing stage directly within the failed stage, not later.