2017-01-05 3 views
1

mongodb 테스트 용 도커 이미지가 있습니다. zhaoyi0113/mongo-uat에서 찾을 수 있습니다. 이 이미지에서 도커 컨테이너를 시작할 때 시작될 때까지 몇 분이 걸릴 몇 개의 mongodb 인스턴스가 생성됩니다. 이제 무인 장치 CI로이 컨테이너 내부에 통합 테스트 케이스를 실행하고 싶습니다. 다음은 내 .drone.yml 파일입니다드론 파이프 라인의 도커 컨테이너 내부에서 통합 테스트를 실행하는 방법

pipeline: 
    build: 
    image: node:latest 
    commands: 
     - npm install 
     - npm test 
     - npm run eslint 
    integration: 
    image: zhaoyi0113/mongo-uat 
    commands: 
     - npm install 
     - npm run integration 

이 파이프 라인의 두 단계는 첫 번째는 nodejs 프로젝트에 단위 테스트를 실행하는 것입니다있다. 두 번째 것은 integration은 mongodb 도커 이미지에서 통합 테스트 케이스를 실행하는 데 사용됩니다.

drone exec을 실행하면 오류 failed to connect to mongo instance가 표시됩니다. 나는 mongodb 인스턴스가 시작하는데 몇 분이 필요하기 때문에 그렇게 생각한다. npm installnpm run integration 명령은 mongodb 인스턴스가 시작된 후에 실행해야합니다. 어떻게 빌드 명령을 지연시킬 수 있습니까?

EDIT1

화상 zhaoyi0113/mongo-uat는 MongoDB의 환경을 갖는다. 그것은 몇 가지 mongodb 인스턴스를 생성합니다. 나는이 컨테이너를 시작할 수있는이 명령을 docker run -d zhaoyi0113/mongo-uat 실행하여이 컨테이너에 첨부하여 mongodb 인스턴스를 볼 수 있습니다. 무인 항공기가 도커 컨테이너를 시작하는 방법을 잘 모르겠습니다.

+0

이 전체 YAML 예는? mongodb docker 이미지가 시작되는 곳은 어디입니까? http://readme.drone.io/usage/services-guide/를 보셨습니까? –

+0

예. 전체 yaml 파일입니다. mongodb 도커는이 이미지'zhaoyi0113/mongo-uat'에 내장되어 있습니다. 서비스 섹션에 mongodb와 같은 서비스가 선언되어 있어야합니다 ( –

+0

). 예제는 http://readme.drone.io/usage/services-guide를 참조하십시오. 파이프 라인에서 서비스를 시작하는 것이 가장 좋은 방법은 아닙니다. –

답변

3

통합 테스트에 권장되는 방법은 YAML의 서비스 섹션에서 서비스 컨테이너를 배치하는 것입니다 [1] [2]

따라서 내가 YAML 파일 아래를 만들 것 몽고 서비스 컨테이너를 시작하기 위해서이다. Mongo 서비스는 기본 포트 127.0.0.1에서 시작하여 파이프 라인 컨테이너에서 액세스 할 수 있습니다.

pipeline: 
    test: 
    image: node 
    commands: 
     - npm install 
     - npm run test 
    integration: 
    image: node 
    commands: 
     - npm run integration 

services: 
    mongo: 
    image: mongo:3.0 

이것은 MySQL, Postgres, Mongo 등의 서비스를 테스트 할 때 권장되는 방법입니다.

[1] http://readme.drone.io/usage/getting-started/#services
[2] http://readme.drone.io/usage/services-guide/

관련 문제