如何使用具有代码质量的GitLab CI?

时间:2019-03-06 12:03:27

标签: docker gitlab gitlab-ci gitlab-ci-runner docker-in-docker

最近我正在研究使用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

这是官方网页:Link

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

这对我来说花费了太多时间,所以我想我可以建立一个本地注册表来加快提速速度(因为它在docker tech中使用了docker,因此每次我运行pipline时都会有一个containerA并在containerA中运行一个containerB。因此,对于containerA,永远不会有本地映像。因此,containerA总是从注册表中提取映像。)在服务器上部署本地注册表并将所有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,并且花费

这使我感到失败。您有什么建议吗? 谢谢你们!

1 个答案:

答案 0 :(得分:0)

当我的gitlab-runner服务器是虚拟机时,速度很慢。当我使用真实的服务器时,泊坞窗在一秒钟内提取了所有图像!