在GitLab CI中设置PostgreSQL

时间:2017-03-23 03:18:57

标签: postgresql gitlab-ci

我正在尝试在GitLab.com上设置一个CI运行器,我想用它来运行需要PostgreSQL数据库连接的测试。 CI + PostgreSQL的文档似乎过于简单,似乎告诉我们一旦提供了连接信息,就完成了数据库设置。因为我无法创建数据库,所以我可能会误解文档。我的gitlab-ci.yml看起来像这样

image: node:latest

services:
  - postgres:latest

variables:
  POSTGRES_DB: rx_reactive_test
  POSTGRES_USER: rx_reactive_tester
  POSTGRES_PASSWORD: "1esdf3143"

cache:
  paths:
  - node_modules/

postgresql:
  script:
   - yarn install
   - npm test

通过运行命令npm test`,它将运行一些将与数据库建立连接的测试。但是这些测试失败并显示错误消息

pg-reactive
  ✓ should build connection with the test database.
  1) should run a query returning one row.


1 passing (23ms)
1 failing

1) pg-reactive should run a query returning one row.:
   Uncaught Error: connect ECONNREFUSED 127.0.0.1:5432
    at Object.exports._errnoException (util.js:1033:11)
    at exports._exceptionWithHostPort (util.js:1056:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1099:14)

这些测试与我的本地测试数据库运行良好,因此我的CI设置一定存在问题。我会很感激我的问题: - )

1 个答案:

答案 0 :(得分:6)

在GitLab CI中,您的作业在docker容器中运行。因此,Postgres不是在localhost上运行,而是在可以在" postgres"上访问的主机上运行。 (服务名称是解析为可用于访问数据库的IP的服务器名称。)

看起来CI设置一个名为" CI"的ENV变量。这样你就可以转换你的数据库连接,以便在CI中测试来自" localhost:5432"到" postgres:5432"如果您在GitLab CI环境中运行。