最近我正在学习使用 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,而且它的成本
这让我感觉很失落。你有什么建议吗?感谢你们!