在GitLab CI中设置PostgreSQL

Hao*_* Yu 13 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
Run Code Online (Sandbox Code Playgroud)

通过运行命令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)
Run Code Online (Sandbox Code Playgroud)

这些测试与我的本地测试数据库运行良好,因此我的CI设置一定存在问题.我会感谢任何有关我的问题的帮助:-)

ssc*_*uth 7

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

看起来CI设置了一个名为"CI"的ENV变量,这样您就可以将CI连接进行测试,从"localhost:5432"切换到"postgres:5432",以防您在GitLab CI环境中运行.

  • 嘿,感谢您的回答,但它仍然有点模糊,所以它应该适用于以下连接设置?`连接:{主机:'postgres',用户:'user',密码:'test',端口:5432,数据库:'withlove_test'}`? (2认同)