Настройка 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.