刚开始使用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实例上运行?
答案 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