在 Gitlab CI/CD 审查阶段访问 postgresql

时间:2021-03-09 18:40:22

标签: postgresql gitlab gitlab-ci

如何在 Gitlab CI/CD 过程中的 Review 阶段(对于审查应用程序)将数据导入 postgresql 服务器?

我目前正在使用 Gitlab CI/CD 部署到 AWS。 Postgresql 用于整个构建阶段。

在构建阶段,信息从另一个应用程序成功导入到 postgresql。然后将数据作为 SQL 文件转储到工件(在两个位置)。

artifacts:
    paths:
      - postgres_backup.sql
      - scripts/postgres/postgres_backup.sql
    expire_in: 1 day

构建工件已创建。但是,它们在审查 - 自动部署 - 阶段不可用。 审核阶段基本上是:

review:
  extends: .auto-deploy
  stage: review
  before_script:
    - echo "Supposedly, this helps to carry over artifacts." 

文物不在那里。理想情况下,我希望将 SQL 备份推送到数据库,但 1) 工件不可用,2) psql 命令不可用(也不 apt)。

1 个答案:

答案 0 :(得分:1)

查看 .auto-deploy 作业(它可能来自 included job this too)。如果 .auto-deploy 作业具有 dependencies 关键字,则会影响您的工件。

默认情况下,当一个作业上传工件时,后续所有阶段的作业都会自动下载工件。这可以使用单个作业的 dependencies 关键字进行控制。

例如,使用 dependencies: [] 表示此作业没有依赖项,因此不会下载任何工件。 dependencies: ["npm install job"] 表示来自名为“npm install job”的作业的工件是唯一下载的工件,即使来自其他作业的工件已上传。

因此,如果您在 dependencies 作业中看到 .auto-deploy 关键字,则必须将其包含在您的 review 作业中。如果 .auto-deploydependencies: [],则您必须有 dependencies: ["your-job-name"],其中作业名称是上传文件的作业。

如果 .auto-deploydependencies 关键字至少包含一个作业名称,则您必须复制这些作业,并将它们包含在您的 review 作业中:

// .auto-deploy job:
.auto-deploy
  stage: deploy
  dependencies: ["job1", "job2"]
  script:
   - ...
// review job
review:
  stage: review
  dependencies: ["job1", "job2", "your-postgres-job"]
  script:
    - ...