使用 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