0

最近我正在学习使用 Gitlab CI。作为演示,我决定配置一个代码质量检查作业。在注册跑步者之后,我.gitlab-ci.yml像这样配置我的文件:

code_quality:
  image: docker:stable
  variables:
    DOCKER_DRIVER: overlay2
  allow_failure: true
  services:
    - docker:stable-dind
  script:
    - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
    - docker run
        --env SOURCE_CODE="$PWD"
        --volume "$PWD":/code
        --volume /var/run/docker.sock:/var/run/docker.sock
        "registry.gitlab.com/gitlab-org/security-products/codequality:$SP_VERSION" /code
  artifacts:
    reports:
      codequality: gl-code-quality-report.json

这是官方网页:链接

这是来自 gitlab 官方的模板。当我运行管道时,它就像卡住了一样。然后我知道,码头工人正在拉很多codeclimate图像,包括两个超过 1GB 的图像。最后,提取这些图像大约需要 15 分钟。

这对我来说花费了太多时间,所以我想我可以建立一个本地注册表来加快拉动速度(因为它在 docker tech 中使用 docker,所以每次我运行 pipline 时都会有一个 containerA 并在 containerA 中运行一个 containerB。所以对于 containerA ,从来没有本地镜像。所以containerA总是从registry中拉取镜像。)我在我的服务器上部署了一个本地registry,并将所有10GB+的镜像都推送到它。我改变了我.gitlab-ci.yml这样的:

code_quality:
  image: docker:latest
  variables:
    DOCKER_DRIVER: overlay2
  before_script:
    - which docker
  allow_failure: true
  services:
    - name: docker:stable-dind
      command: ["--insecure-registry=192.168.0.1:5000"]
  script:
    - which docker
    - docker pull 192.168.0.1:5000/codeclimate:0.72.0
    - docker pull 192.168.0.1:5000/codeclimate-structure:latest
    - docker pull 192.168.0.1:5000/codeclimate-duplication:latest
    - docker pull 192.168.0.1:5000/codeclimate-coffeelint:latest
    - docker pull 192.168.0.1:5000/codeclimate-csslint:latest
    - docker pull 192.168.0.1:5000/codeclimate-eslint:latest
    - docker pull 192.168.0.1:5000/codeclimate-rubocop:latest
    - docker pull 192.168.0.1:5000/codeclimate-fixme:latest
    - export SP_VERSION=$(echo "$CI_SERVER_VERSION" | sed 's/^\([0-9]*\)\.\([0-9]*\).*/\1-\2-stable/')
    - docker run
        --env SOURCE_CODE="$PWD"
        --env CODECLIMATE_VERSION=0.72.0
        --env TIMEOUT_SECONDS=90
        --volume "$PWD":/code
        --volume /var/run/docker.sock:/var/run/docker.sock
        192.168.0.1:5000/codequality:latest /code
  artifacts:
    reports:
      codequality: gl-code-quality-report.json

(192.168.0.1 是本地主机)

我又跑了一次管道,它比从互联网上拉图像还要慢!通过执行命令iostat,我的硬盘 io 速度刚刚超过 1740kb/s,而且它的成本

这让我感觉很失落。你有什么建议吗?感谢你们!

4

1 回答 1

0

当我的 gitlab-runner 服务器是虚拟机时,它很慢。当我使用真实服务器时,docker 会在一秒钟内提取所有图像!

于 2019-03-07T06:44:12.063 回答