Jenkins SQLRunnerBuilder:捕获错误消息

问题描述 投票:0回答:1

我有三个脚本来创建 table1、table2 和 table3。我需要将它们部署在不同的环境中,为此,我正在创建一个 Jenkins 管道来执行我的 SQL 脚本。

在第一次运行期间,所有脚本均已成功执行并创建了表。但是,在后续运行中,Oracle 给出错误消息:“对象已存在”,该消息显示在部署日志文件中。

我们如何捕获此验证/错误消息,以便我们可以根据它更新构建状态?

如有任何建议,我们将不胜感激。

https://www.jenkins.io/doc/pipeline/steps/sqlplus-script-runner/

pipeline {
    agent any
    stages {
        stage('Run SQL Scripts') {
            steps {
                script {
                    def scripts = ['script1.sql', 'script2.sql', 'script3.sql']
                        for (script in scripts) {
                            step([$class: 'SQLPlusRunnerBuilder', 
                                      credentialsId: 'your-credentials-id', 
                                      instance: 'your-instance', 
                                      scriptType: 'file', 
                                      script: script])
                        }
                }
            }
        }
    }
}

oracle jenkins groovy jenkins-plugins
1个回答
0
投票

如果我这样做,我会更改创建表的 SQL 脚本,以在运行之前检查它们是否存在:

IF((SELECT count(*) FROM dba_tables where table_name = 'TABLE_1') <= 0)
THEN
create table TABLE_1
(
ID NUMBER(3),
NAME VARCHAR2(30) NOT NULL
)
END IF;

这只会解决您现在遇到的问题,即在创建表后运行脚本会导致失败。 您将遇到的下一个问题是如何在更改架构时更新现有表。 但是,这是一个需要处理的相当复杂的问题。 您可能想采用 Liquidbase 等工具或某些模式管理框架。

© www.soinside.com 2019 - 2024. All rights reserved.