如何在gitlab ci中加载init.sql文件到postgres服务?

问题描述 投票:0回答:3

我想在测试阶段使用

service
文件初始化我的
sql

test:
  services:
    - postgres:latest
  variables:
    POSTGRES_DB: test
  stage: test
  image: gliderlabs/herokuish:latest
  script:
    - setup_test_db
    - cp -R . /tmp/app
    - /bin/herokuish buildpack test
  only:
    - branches
  except:
    variables:
      - $TEST_DISABLED

这是

auto devops
中的测试作业。
我想使用 postgres 图像
docker-entrypoint

这就是我在电脑上的
docker-compose
中使用它的方式:

volumes:
  - './src/sql:/docker-entrypoint-initdb.d'

这样,当

postres
图像启动时,我的架构就可以使用了。
我怎样才能做到
gitlab-ci.yml

postgresql docker gitlab gitlab-ci
3个回答
1
投票

目前 Gitlab CI 不支持

volumes

在测试过程中,您可以使用

docker-compose
来解决此问题,它具有
postgres
的服务来启动您的项目,您可以像平常一样安装它的卷


0
投票

您可以将以下脚本添加到您的 gitlab ci 中以使其工作。

before_script:
  - apt update && apt install -y postgresql
  - export PGPASSWORD=$POSTGRES_PASSWORD
  - psql -h "postgres" -U "$POSTGRES_USER" -d "$POSTGRES_DB" -f ./src/sql

0
投票

如果您只有一个简单的 SQL 固定装置(例如添加用户),您可以覆盖服务定义中的

command
,以将 SQL 注入服务容器的
/docker-entrypoint-initdb.d

test:
  services:
    - postgres:latest
      command:
        - /bin/sh
        - -c
        - >-
          echo "$SOME_SQL" > /docker-entrypoint-initdb.d/init.sql &&
          docker-entrypoint.sh # or whatever is called in that image
  script:
    - ...

如果您想知道,不...没有办法用存储库中的文件填充 $SOME_SQL 变量。因此,如果您可以摆脱此 YAML 中的内联变量、Gitlab UI 中的 CI 变量等,这只是一个可行的解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.