Gitlab配置postgresql服务

Gitlab配置postgresql服务,gitlab,gitlab-ci,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

刚开始使用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


当运行程序到达
构建
作业时,它一直告诉我uuid\u generate\u v4()函数不存在。我的
prepare\u db
作业是否在不同的Postgres实例上运行?

之所以发生这种情况,是因为prepare\u 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

您是否仔细检查了您在测试中是否使用了正确的db名称?@Ekans,是的,我在测试设置中使用的URL是
jdbc:postgresql://postgres:5432/my_database