Настройка PostgreSQL в GitLab CI

Я пытаюсь настроить CI runner на GitLab.com и я хотел бы использовать его для запуска тестов, которым нужно подключение к базе данных 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 ответов


в GitLab CI ваша работа выполняется в контейнере docker. Таким образом, Postgres работает не на localhost, а на хосте, доступном на "postgres" (имя службы-это имя сервера, которое разрешает IP-адрес, который можно использовать для доступа к БД).

похоже, что CI устанавливает переменную ENV под названием "CI", чтобы вы могли переключить соединение DB для тестирования в CI с" localhost:5432 "на" postgres:5432 " в случае, если вы работаете в среде GitLab CI.