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

在对travis-ci的测试期间,它会挂起

CI中的Gitlab克隆分支

Hadoop 挂起作业终止命令

Gitlab Windows runner 收到作业时转为不运行

问:Gitlab CI 谁重试旧管道