【问题标题】:Jenkins Pipeline always fails詹金斯管道总是失败
【发布时间】:2016-07-15 04:22:19
【问题描述】:

我的 Jenkins 流水线阶段都成功了,但构建总是说它失败了。需要明确的是,构建是成功的,我希望它在 Jenkins 中注册为成功,但出于某种原因,Jenkins 认为它​​失败了。所有阶段都在仪表板中显示成功,但构建用红球标记,控制台输出以 Finished: FAILURE 结尾。

这是我的管道文件

node {
    try{
        stage 'Clone repo'
        sh 'gcloud source repos clone <repo-name> --project=<project-name>'
        dir('<repo-name>') {
            try{
                stage 'Run tests'
                sh './gradlew test'
                stage 'Run integration tests'
                sh './gradlew integrationTest'
                publishHTML(target: [
                    allowMissing: false, 
                    alwaysLinkToLastBuild: false, 
                    keepAll: false, 
                    reportDir: '<repo-name>/build/reports/integrationTest', 
                    reportFiles: 'index.html', 
                    reportName: 'Integration Test Reports'])
            } finally {
                stage 'Stop and remove docker containers'
                sh 'docker-compose down'
                sh 'docker-compose rm -f'
            }
        }
    } finally {
        deleteDir()
    }
}

【问题讨论】:

  • 詹金斯在哪里显示失败?它会给出错误消息吗?一般来说,除非需要,否则不要使用 currentBuild.result 选项——依赖 error('message') 步骤和 try/catch 块(避免意外行为)。哦:我应该提一下,我是一名从事流水线工作并在此处维护流水线阶段视图的开发人员。
  • 我只添加了这些以尝试使其正常工作。我删除了它们,它仍然失败。我是否需要添加显示成功或其他内容的日志消息?
  • 不,只是不要发现错误。

标签: jenkins jenkins-pipeline


【解决方案1】:

当我实际上在一个 dir 块中时,我意识到我已经包含了 html 报告的完整路径。日志中没有任何迹象。

【讨论】:

  • 是的,如果您吞下异常,您将丢失此信息。
【解决方案2】:

你的问题解决了吗?

无论如何,deleteDir 函数有时可能是个问题。因为 deleteDir 会递归删除当前目录及其内容,所以如果您尝试删除整个作业工作区,可能会引发错误。

注意在 dir 函数中使用它,如下所示:

dir('directoryToDelete') {
    deleteDir()
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-12
    • 2019-12-02
    • 1970-01-01
    • 2022-11-11
    • 2019-01-09
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多