2017-05-08 21 views
5

मेरी परियोजना को चलाने के लिए डॉकर सहित मेरी पहली गिटलैब सीआई पाइपलाइन स्थापित कर रहा हूं। मैं अपनी पाइपलाइन को कई चरणों में विभाजित करना चाहता था इसलिए मैंने "बिल्ड", "टेस्ट" और "क्लीन-बिल्ड" बनाया।डॉकर धावक के साथ गिटलैब सीआई - एकाधिक चरण

इस परिदृश्य सब कुछ ठीक काम करता है:

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 चलाते हैं, तो कंटेनर परीक्षण चरण में नहीं चल रहे हैं।

गिटलाब-सीआई के साथ संयोजन का मिश्रण केवल विशिष्ट उपयोग-मामलों में आवश्यक है। आपके मामले में, आपको बिल्कुल भी आवश्यकता नहीं है। आप अपने परीक्षण चरण में केवल php-fpm छवि का उपयोग कर सकते हैं, क्योंकि gitlab-ci पहले से ही डॉकर पर चल रहा है।

test: 
    stage: test 
    image: <your php-fpm image here> 
    script: 
    - cd /app 
    - composer install 
    - make runTests 
संबंधित मुद्दे