2017-03-23 3 views
4

GitLab.com에서 CI 러너를 설정하려고하고 있는데이 도구를 사용하여 PostgreSQL 데이터베이스 연결이 필요한 테스트를 실행하고 싶습니다. CI + PostgreSQL에 대한 문서는 지나치게 단순한 것으로 보이고 일단 연결 정보가 제공되면 데이터베이스 설정이 완료되었음을 알리는 것 같습니다. 아마도 데이터베이스를 만들지 못해 문서를 오해 할 것입니다. 내 gitlab-ci.yml 명령 NPM의 test`을 실행하여이GitLab CI에서 PostgreSQL 설정하기

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 

처럼 보이는, 데이터베이스와의 연결을 구축 할 몇 가지 검사를 실행합니다. 그러나 이러한 테스트는 오류 메시지와 함께 실패합니다.

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 설치에 문제가있을 수 있습니다. 내 문제에 대한 도움을 주시면 감사하겠습니다 :-)

답변

3

GitLab CI에서 작업은 도커 컨테이너 내에서 실행됩니다. 따라서 Postgres는 localhost에서 실행되지 않고 "postgres"에서 연결할 수있는 호스트에서 실행됩니다 (서비스 이름은 DB에 연결할 수있는 IP로 확인되는 서버 이름입니다).

GitLab CI 환경에서 실행중인 경우 CI의 테스트를 위해 DB 연결을 "localhost : 5432"에서 "postgres : 5432"로 전환 할 수 있도록 CI가 ENV 변수를 "CI" .

+0

안녕하세요, 답변 주셔서 감사합니다.하지만 여전히 약간 모호하므로 다음 연결 설정을 사용해야합니다. '연결 : {호스트 : '포스트 그레스', 사용자 : '사용자', 암호 : '테스트', 포트 : 5432, 데이터베이스 : 'withlove_test'}' – javiercf

관련 문제