Gitlab配置Postgresql服务

时间:2018-07-04 21:47:33

标签: gitlab gitlab-ci

刚开始使用GitLab,我似乎无法使我的配置正常工作。我正在使用以下内容:

image: maven:3.3-jdk-8-alpine

stages:
  - prepare
  - build

services:
  - postgres:latest

variables:
  POSTGRES_DB: my_database
  POSTGRES_USER: runner
  POSTGRES_PASSWORD: runner

prepare_db:
  stage: prepare
  image: postgres
  script:
  - export PGPASSWORD=$POSTGRES_PASSWORD
  - psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "CREATE EXTENSION \"uuid-ossp\";"

build:
  stage: build
  script: mvn clean test

如果我只想编译我的代码,它就可以正常工作,然后构建就应该是mvn clean compile,但是要运行测试,我需要一个PostgreSQL实例。在我的代码中,我依赖UUID,因此需要确保已安装uuid-ossp扩展。

在我的prepare_db工作中,我可以连接到Postgres实例并执行命令,我还通过发出第二个脚本命令SELECT uuid_generate_v4();来验证扩展程序是否正确安装,并且它返回一个uuid。

当跑步者进入build工作时,它总是告诉我uuid_generate_v4()函数不存在。我的prepare_db作业是否在其他Postgres实例上运行?

1 个答案:

答案 0 :(得分:0)

之所以发生,是因为prepare_db作业与构建作业完全隔离。所以基本上它什么也没准备。要解决此问题,请执行以下步骤:

.prepare_db: &prepare_db |
  export PGPASSWORD=$POSTGRES_PASSWORD
  psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -c "CREATE EXTENSION \"uuid-ossp\";"

build:
  stage: build
  script:
  - *prepare_db 
  - mvn clean test