2017-03-23 16 views
4

私はGitLab.comでCIランナーを設定しようとしています。PostgreSQLデータベース接続が必要なテストを実行するために使用したいと思います。 CI + PostgreSQLのドキュメントはあまり単純すぎるようですが、接続情報が提供されるとデータベースの設定が完了したことを伝えるようです。データベースの作成に失敗したため、私はおそらくドキュメントを誤解しています。私gitlab-ci.ymlは、コマンドのNPM test`を実行することにより、このGitLabでのPostgreSQLのセットアップCI

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

お返事ありがとうございますが、まだ少し曖昧ですので、次の接続設定を使用する必要がありますか? '接続:{ホスト: 'postgres'、ユーザー: 'ユーザー'、パスワード: 'テスト'、ポート:5432、データベース: 'withlove_test'}' – javiercf