使用 Jenkins 将 Postgresql 映像部署到 openshift 后如何执行数据库脚本?
How to execute a database script after deploying a Postgresql image to openshift with Jenkins?
我有一个 git 仓库,里面有 Jenkins 管道和 postgresql 的官方模板:
种类:"BuildConfig"
api版本:"v1"
元数据:
姓名:"postgresql-pipeline"
规格:
战略:
詹金斯管道策略:
詹金斯文件:|-
管道{
代理任何
环境 {
DATABASE_NAME = 'sampledb'
DATABASE_USER = 'root'
DATABASE_PASSWORD = 'root'
}
阶段{
舞台('Clone git'){
脚步 {
git 'https://bitbucket.org/businnessdata_db/postgresql-test.git'
}
}
舞台('Deploy db'){
脚步 {
嘘 'oc status'
嘘 'oc delete secret/postgresql'
嘘 'oc delete pvc/postgresql'
嘘 'oc delete all -l "app=postgresql-persistent"'
嘘 'oc new-app -f openshift/templates/postgresql-persistent.json'
}
}
舞台('Execute users script'){
脚步 {
sh 'oc status'
}
}
stage('Execute update script') {
steps {
sh 'oc status'
}
}
}
}
type: JenkinsPipeline<code>
我必须在最后 2 个步骤中添加什么才能 运行 针对新生成的数据库的脚本?
您可以在 Jenkins 容器上安装 psql,然后通过 shell 命令 运行 脚本。
sh """
export PGPASSWORD=<password>
psql -h <host> -d <database> -U <user_name> -p <port> -a -w -f <file>.sql
"""
或者,由于 Jenkinsfiles 是用 Groovy 编写的,因此请使用 Groovy 来执行您的语句。这是使用数据库的 Groovy documentation。
我有一个 git 仓库,里面有 Jenkins 管道和 postgresql 的官方模板:
种类:"BuildConfig"
api版本:"v1"
元数据:
姓名:"postgresql-pipeline"
规格:
战略:
詹金斯管道策略:
詹金斯文件:|-
管道{
代理任何
环境 {
DATABASE_NAME = 'sampledb'
DATABASE_USER = 'root'
DATABASE_PASSWORD = 'root'
}
阶段{
舞台('Clone git'){
脚步 {
git 'https://bitbucket.org/businnessdata_db/postgresql-test.git'
}
}
舞台('Deploy db'){
脚步 {
嘘 'oc status'
嘘 'oc delete secret/postgresql'
嘘 'oc delete pvc/postgresql'
嘘 'oc delete all -l "app=postgresql-persistent"'
嘘 'oc new-app -f openshift/templates/postgresql-persistent.json'
}
}
舞台('Execute users script'){
脚步 {
sh 'oc status'
}
}
stage('Execute update script') {
steps {
sh 'oc status'
}
}
}
}
type: JenkinsPipeline<code>
我必须在最后 2 个步骤中添加什么才能 运行 针对新生成的数据库的脚本?
您可以在 Jenkins 容器上安装 psql,然后通过 shell 命令 运行 脚本。
sh """
export PGPASSWORD=<password>
psql -h <host> -d <database> -U <user_name> -p <port> -a -w -f <file>.sql
"""
或者,由于 Jenkinsfiles 是用 Groovy 编写的,因此请使用 Groovy 来执行您的语句。这是使用数据库的 Groovy documentation。