Gitlab CI:作业挂起克隆回购
Posted
技术标签:
【中文标题】Gitlab CI:作业挂起克隆回购【英文标题】:Gitlab CI: job hangs up on cloning repo 【发布时间】:2017-01-09 09:27:31 【问题描述】:我在 Gitlab.com CI 的 CI 流程中有两个工作管道(带有共享运行器),第二个挂断在 Checking out c5b6078f as master...
第一个作业“构建”正确完成并将有效图像推送到 AWS docker 注册表。第二个工作甚至在开始检查存储库之前就挂断了。
我已经尝试了 git 策略“获取”和“克隆”,结果相同。
工作日志:
使用 gitlab-ci-multi-runner 1.5.2 (76fdacd) 运行 将 Docker 执行器与映像 silintl/ecs-deploy 结合使用 ... 正在拉取 docker 镜像 silintl/ecs-deploy ... 通过 runner-8a2f473d-machine-1472732000-783cccf8-digital-ocean-4gb 在 runner-8a2f473d-project-1459347-concurrent-0 上运行... 正在克隆存储库... 正在克隆到“/builds/zendoro/frontend-catalogue”... 正在检查 c5b6078f 作为主...gitlab-ci.yml:
image: ekino/dind-aws
stages:
- build
- deploy-dev
- deploy-prod
variables:
CONTAINER_IMAGE: XXXYYYZZZ.dkr.ecr.eu-west-1.amazonaws.com/$CI_PROJECT_NAME:$CI_BUILD_REF
CONTAINER_TAG: XXXYYYZZZ.dkr.ecr.eu-west-1.amazonaws.com/$CI_PROJECT_NAME:$CI_BUILD_REF_NAME
build:
stage: build
services:
- docker:dind
script:
- eval $(aws ecr get-login --region eu-west-1)
- docker build --pull -t $CONTAINER_IMAGE .
- docker push $CONTAINER_IMAGE
- docker tag $CONTAINER_IMAGE $CONTAINER_TAG
- docker push $CONTAINER_TAG
deployment-dev:
stage: deploy-dev
image: silintl/ecs-deploy
script:
- ecs-deploy -c default -n $CI_PROJECT_NAME -i $CONTAINER_IMAGE
environment: Development
dependencies:
- build
only:
- master
deployment-prod:
stage: deploy-prod
image: silintl/ecs-deploy
script:
- ecs-deploy -c production -n $CI_PROJECT_NAME -i $CONTAINER_IMAGE
environment: Production
dependencies:
- build
only:
- tags
我还尝试了另一个部署映像“jakubriedl/ecs-deploy”,它基本相同,但在 Alpine linux 上并没有挂断,而是以 ERROR: Build failed: exit code 2
结束
带有高山图像的完整作业日志:
使用 gitlab-ci-multi-runner 1.5.2 (76fdacd) 运行 将 Docker 执行器与映像 jakubriedl/ecs-deploy 结合使用 ... 正在拉取 docker 镜像 jakubriedl/ecs-deploy ... 通过 runner-8a2f473d-machine-1472734703-4f8bb312-digital-ocean-4gb 在 runner-8a2f473d-project-1459347-concurrent-0 上运行... 正在克隆存储库... 正在克隆到“/builds/zendoro/frontend-catalogue”... 正在检查 3647bc37 作为主... 错误:构建失败:退出代码 2【问题讨论】:
【参考方案1】:今天的答案更有可能在Overriding Entrypoints Doc 中找到——标记为“For Docker 17.06+”的部分。
GitLab 可以毫无问题地运行定义了 ENTRYPOINT
的图像,前提是您像 entrypoint: [""]
一样覆盖它,然后将其视为您在编写 script
部分时选择了图像能够提供的最佳外壳。
【讨论】:
【参考方案2】:问题在于 GitLab-CI 中的某种错误。图像不能定义 ENTRYPOINT,因为它失败了描述的方式。所以创建没有 ENTRYPOINT 的图像是解决方案。
gitlab上的相关问题https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/1507
【讨论】:
以上是关于Gitlab CI:作业挂起克隆回购的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes 上的 GitLab Auto DevOps 挂起,网络超时,无法执行 yj