Gitlab CI 无法使用 pg_prove

Gitlab CI not able to use pg_prove

我正在努力建立一个 Gitlab CI 并 运行 使用正确版本的 postgres (13) 并安装了 PGTap。

我使用使用 postgres:13.3-alpine 的 Dockerfile 在本地部署我的项目,然后也安装 PGTap。但是,我不确定我是否可以使用这个 Dockerfile 来帮助解决我的 CI 问题。

在我的 gitlab-ci.yml 文件中,我目前有:

variables:
 GIT_SUBMODULE_STRATEGY: recursive

pgtap:
  only:
    refs:
      - merge_request
      - master
    changes:
      - ddl/**/*
  image: postgres:13.1-alpine
  services:
    - name: postgres:13.1-alpine
      alias: db
  variables:
    POSTGRES_DB: postgres
    POSTGRES_USER: postgres
    POSTGRES_PASSWORD: ""
    POSTGRES_HOST_AUTH_METHOD: trust
  script:
    - psql postgres://postgres@db/postgres -c 'create extension pgtap;'
    - psql postgres://postgres@db/postgres -f ddl/01.sql
    - cd ddl/
    - psql postgres://postgres@db/postgres -f 02.sql
    - psql postgres://postgres@db/postgres -f 03.sql
    - pg_prove -d postgres://postgres@db/postgres --recurse test_*

上面的工作直到它到达底部的 pg_prove 命令,因为我得到以下错误:

pg_prove: command not found

有什么方法可以使用脚本命令安装 pg_prove?或者有更好的方法吗?

有一个老问题 closed

总而言之,您可以根据 postgres:13.1-alpine 安装 PGTap 构建自己的映像,或者使用安装了 PGTap 的非官方 image 1maa/postgres:13-alpine :

docker run -it 1maa/postgres:13-alpine sh
/ # which pg_prove
/usr/local/bin/pg_prove

由于您的步骤图像是基于高山的,您可以尝试:

script:
 - apk add --no-cache --update build-base make perl perl-dev git openssl-dev
 - cpan TAP::Parser::SourceHandler::pgTAP
 - psql.. etc

您或许可以省略一些包...