首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有docker runner的GitLab Ci -多阶段

带有docker runner的GitLab Ci -多阶段
EN

Stack Overflow用户
提问于 2017-05-08 23:35:55
回答 1查看 1.7K关注 0票数 6

我正在设置我的第一个GitLab Ci管道,包括docker来运行我的项目。我想把我的流水线分成几个阶段,所以我创建了“构建”、“测试”和“干净构建”。

在这种情况下,一切都很正常:

代码语言:javascript
复制
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个阶段都运行成功

但这失败了:

代码语言:javascript
复制
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

下面是来自第二阶段的消息

代码语言:javascript
复制
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.
EN

回答 1

Stack Overflow用户

发布于 2017-12-05 17:54:18

不同的阶段只共享彼此的工件,但它们是单独的docker容器。这意味着如果您在构建阶段运行docker-compose up -d,容器将不会在测试阶段运行。

只有在非常特定的用例中,才需要将dind与gitlab-ci结合起来。在您的情况下,您根本不需要dind。您可以在测试步骤中简单地使用php-fpm镜像,因为gitlab-ci已经在docker上运行。

代码语言:javascript
复制
test:
  stage: test
  image: <your php-fpm image here>
  script:
    - cd /app
    - composer install
    - make runTests
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43851720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档