2017-05-08 2 views
5

내 프로젝트를 실행하는 Docker를 포함한 첫 번째 GitLab Ci 파이프 라인을 설정합니다. 나는 파이프 라인을 여러 단계로 나누어서 "빌드", "테스트"및 "클린 빌드"를 만들었습니다. 이 시나리오 모두에서 GitLab Ci with docker runner - 다중 스테이지

잘 작동합니다 :

stages: 
    - build 
    - test 
    - clean 

image: docker:latest 

services: 
    - docker:dind 

before_script: 
    - export RELEASE=${CI_BUILD_REF_NAME} 
    - docker version 

build: 
    stage: build 
    tags: 
    - sendis-dind 
    script: 
    - echo "Hallo in Build Stage" 

test: 
    stage: test 
    tags: 
    - sendis-dind 
    script: 
    - echo "Hallo in TEST Stage" 

clean-build: 
    stage: clean 
    tags: 
    - sendis-dind 
    script: 
    - echo "Hallo beim Clean Up" 
    when: always 

모든 3 단계는

성공적으로 실행되지만 이것이 실패 : 두 번째 단계에서 다음과 같은 메시지

stages: 
    - build 
    - test 
    - clean 

image: docker:latest 

services: 
    - docker:dind 

before_script: 
    - export RELEASE=${CI_BUILD_REF_NAME} 
    - docker version 

build: 
    stage: build 
    tags: 
    - sendis-dind 
    script: 
    - apk add --update py-pip 
    - pip install docker-compose 
    - docker --version 
    - docker-compose --version 
    - docker-compose -p ${RELEASE} build 
    - docker-compose -p ${RELEASE} up -d 

test: 
    stage: test 
    tags: 
    - sendis-dind 
    script: 
    - docker exec ${RELEASE}_phpfpm_1 bash -c "cd /app; composer install; make runTests" 

clean-build: 
    stage: clean 
    tags: 
    - sendis-dind 
    script: 
    - docker-compose -p ${RELEASE} down --volumes 
    when: always 

Running with gitlab-ci-multi-runner 9.1.1 (6104325) 
    on sendis-dind-runner (8b9eca1e) 
Using Docker executor with image docker:latest ... 
Starting service docker:dind ... 
Pulling docker image docker:dind ... 
Using docker image docker:dind ID=sha256:559dd16b4e0a64d9de2447d3de234743046443f770bf5226f45f9b7f9c68887b for docker service... 
ERROR: Preparation failed: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 
Will be retried in 3s ... 
Using Docker executor with image docker:latest ... 
Starting service docker:dind ... 
Pulling docker image docker:dind ... 
Using docker image docker:dind ID=sha256:559dd16b4e0a64d9de2447d3de234743046443f770bf5226f45f9b7f9c68887b for docker service... 
ERROR: Preparation failed: Error response from daemon: Conflict. The container name "/runner-8b9eca1e-project-140-concurrent-0-docker" is already in use by container "db166f7894856c245c6a4f5318326c5f3b6ab82d82157961d18b079444153113". You have to remove (or rename) that container to be able to reuse that name. 
Will be retried in 3s ... 
Using Docker executor with image docker:latest ... 
Starting service docker:dind ... 
Pulling docker image docker:dind ... 
Using docker image docker:dind ID=sha256:559dd16b4e0a64d9de2447d3de234743046443f770bf5226f45f9b7f9c68887b for docker service... 
ERROR: Preparation failed: Error response from daemon: Conflict. The container name "/runner-8b9eca1e-project-140-concurrent-0-docker" is already in use by container "db166f7894856c245c6a4f5318326c5f3b6ab82d82157961d18b079444153113". You have to remove (or rename) that container to be able to reuse that name. 
Will be retried in 3s ... 
ERROR: Job failed (system failure): Error response from daemon: Conflict. The container name "/runner-8b9eca1e-project-140-concurrent-0-docker" is already in use by container "db166f7894856c245c6a4f5318326c5f3b6ab82d82157961d18b079444153113". You have to remove (or rename) that container to be able to reuse that name. 

답변

0

서로 다른 단계는 서로 아티팩트 만 공유하지만 별도의 고정 컨테이너입니다. 즉, 빌드 단계에서 docker-compose up -d을 실행하면 컨테이너가 테스트 단계에서 실행되고 있지 않습니다.

dit와 gitlab-ci를 결합하는 것은 매우 구체적인 사용 사례에서만 필요합니다. 당신의 경우에는, 당신은 전혀 신경 쓰지 않아도됩니다. gitlab-ci가 이미 docker에서 실행 중이므로 php-fpm 이미지를 테스트 단계에서 사용할 수 있습니다.

test: 
    stage: test 
    image: <your php-fpm image here> 
    script: 
    - cd /app 
    - composer install 
    - make runTests 
관련 문제