在Jenkins中,如何在中止之前执行操作

在Jenkins中,如何在中止之前执行操作,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,如何在中断前调用jenkins中的某种脚本?例如,我有一个很长的操作,我想在进程超时之前截图。我想看看进程在哪里停止 stage("Start") { options{ timeout(time: 1, unit: 'MINUTES') } steps { // Start long command //Screenshot 1.jpg

如何在中断前调用jenkins中的某种脚本?例如,我有一个很长的操作,我想在进程超时之前截图。我想看看进程在哪里停止

stage("Start")
    {
        options{
            timeout(time: 1, unit: 'MINUTES')
        }
        steps   {
                // Start long command
                //Screenshot 1.jpg
                }  
    }
    post {
        always {
            archiveArtifacts '1.jpg'
        }
    } 

使用描述性管道,如您的示例中所示,将“屏幕截图”移动到
post
应该可以做到这一点

 stage("Start"){
   options{
     timeout(time: 1, unit: 'MINUTES')
   }
   steps {
     // Start long command
   }  
}
post {
  always {
    // take Screenshot
    archiveArtifacts '1.jpg'
  }
}
如果您决定尝试脚本化管道(或在当前管道上),您可以执行以下操作

try {
  timeout(20) {
    // Start long command
  }
} finally {
  // take Screenshot
}
既然你在一个天生无头的管道中提到“截图”,我想知道你指的是什么

如果您想在WebDriver、Selenium或类似软件中捕获集成测试的屏幕截图,那么应该是测试脚本—具有超时并在失败时获取屏幕截图的脚本


请详细解释一下您的场景,以便提供更好的答案。

在这种情况下,屏幕截图将在关闭脚本窗口后显示。脚本启动程序时,头部有时会因错误而冻结。到了暂停时间,詹金斯中止了他们。我想知道一个错误,你可以并行运行两个步骤,共用一个头部。一个使用长时间运行的脚本,另一个使用计时器和屏幕捕获命令。为了能够在第一个阶段成功完成时停止第二个阶段,我将使用一个Env变量
Env.SCRIPT\u success
,默认情况下将其设置为
false
,并在脚本成功时将其更改为
true
。然后,在第二个阶段,创建一个循环,每X秒检查一次env变量,如果在Y次迭代后不是真的,则截图,然后使该阶段失败@Ацццццццццццццццццц。非常感谢。