【问题标题】:Error Handling in Jenkins file for SQL queryJenkins 文件中用于 SQL 查询的错误处理
【发布时间】:2021-10-14 17:38:12
【问题描述】:

在我的 jenkinsfile 中,当我执行以下 sql 语句并返回 returnStatus 时,无论 sql 语句通过还是失败,它总是返回“0”

def user_code= sh(script: """sqlplus "a/b/c/test.sql" """, returnStatus: true)
if ( "${user_code}" != "0") {
    error("sql statement failed with status code ${user_code}")
} else {
 println "successfull"
}
}

我参考了这个页面Sql*plus always returns exit code 0? 它建议在 SQL Query 中处理此问题,但我有限制,我必须在 Jenkinsfile 中实现它。

  1. 我也尝试过 returnStdout: true 但它会抛出垃圾输出。

有人可以建议我如何在 jenkinsfile 中处理这个问题。

【问题讨论】:

    标签: shell groovy jenkins-pipeline sh jenkins-groovy


    【解决方案1】:

    您可以尝试在您的 test.sql 开头的标题中使用以下行生成新的 sql

    WHENEVER SQLERROR EXIT SQL.SQLCODE
    WHENEVER OSERROR EXIT
    
    sh(script: """sqlplus "a/b/c/test_with_header.sql" """, returnStatus: true)
    

    【讨论】:

    • 感谢您的回复,但正如我之前在问题中所述,我不拥有数据库文件。因此,我无法添加任何 SQL 语句或文件。
    • 以下是它在我们系统中的工作方式,以帮助我了解您的团队实施的详细信息 1. Jenkins 构建使用 docker 运行(包含所有已安装的程序和测试数据集) 2.我们使用 Maven+Liquebase 3 在 docker 实例上下载并部署所有 src 文件。为 DB 运行所有测试要运行它们,我们有函数,我们只传递 sqls 对于这些 sqls,我们为 sqlplus 添加语句集并运行修改后的查询.函数看起来像 db_call('select * from dual') 并给出输出 + 错误代码。所以访问文件系统你应该有
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多