通过 jenkins 部署 postgres - 连续 integration/deployment

Deploy postgres via jenkins - continuous integration/deployment

我在 *.sql 文件中得到了我的数据库转储(表、函数、触发器等)。 目前我正在通过 jenkins 部署它们,通过传递 execute shell 命令:

sudo -u postgres psql -d my_db < /[path_to_my_file].sql

问题是,如果我的 sql 文件有问题,构建会成功完成。如果出现故障,我希望立即获得信息,而无需查看日志并检查是否每个命令都已成功执行。

是否有可能(如果答案是 'yes' 如何)通过 jenkins 以其他方式部署 postgres 数据库?

确保你已经设置 set -e 在 运行 命令之前。 如果这不起作用,我会查看上面命令中的 return 代码。这可以通过 运行 echo $? 命令之后。

如果它在失败时给你一个零,那是 postgres 错误(因为它应该 return 失败时不是 0)。

也许有一个 postgres 标志在输入错误时失败。

编辑: -v ON_ERROR_STOP=1 作为 postgres 的标志应该使 postgres 因错误而失败

我把我的执行命令改成了:

sudo -u postgres psql -v ON_ERROR_STOP=1 -d my_db < [path_to_file].sql