当基于浏览器的测试失败时,我们将截取浏览器窗口的屏幕截图以更好地说明问题。但是,我不知道如何将它们归档到我的管道中,因为管道在发生故障后会停止。与junit.xml相同,我也想在错误的情况下使用它。

我已经检查过,屏幕截图已正确生成并存储。

我的定义看起来像这样(无关紧要的东西大都被修剪掉了):

node {
   stage('Build docker container') {
       checkout([$class: 'GitSCM', ...])
       sh "docker build -t webapp ."
   }
   stage('test build') {
       sh "mkdir -p rspec screenshots"
       sh "docker run -v /var/jenkins_home/workspace/webapp/rspec/junit.xml:/myapp/junit.xml -v /var/jenkins_home/workspace/webapp/screenshots:/myapp/tmp/capybara -v webapp bundle exec rspec"
   }
   stage('Results') {
      junit 'rspec/junit*.xml'
      archive 'screenshots/*'
   }
}

最佳答案

您可以使用简单的Java try/catch来避免测试失败时发生管道失败,或者使用Jenkins catchError这样:

node {
    catchError {
        // Tests that might fail...
    }
    // Archive your tests artifacts
}

关于Jenkins管道: How to archive artifacts when the build fails?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39528168/

10-16 06:03