通过 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
我在 *.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