在 GitLab 中设置 PostgreSQL CI

Setting up PostgreSQL in GitLab CI

我正在尝试在 GitLab.com 设置 CI 运行ner,我想将其用于 运行 需要 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 设置一定有问题。如果对我的问题有任何帮助,我将不胜感激:-)

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

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