Как я могу использовать GitLab CI с качеством кода? - PullRequest
0 голосов
/ 06 марта 2019

В последнее время я учусь на 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 official. И когда я бегу по трубопроводу, это как будто заклинило. Тогда я знал, что докер тянет много codeclimate изображений, включая два более 1 ГБ. И, наконец, вытащить эти изображения можно за 15 минут.

Это слишком дорого для меня, поэтому я думаю, что мог бы создать локальный реестр, чтобы ускорить процесс вытягивания (потому что он использует docker в технологии докеров, поэтому каждый раз, когда я запускаю pipline, есть контейнер A и запускаю контейнер B в контейнере A. Таким образом, для контейнера A never никогда не бывает локального образа. Поэтому containerA всегда извлекает образы из реестра.) После того, как я разверну локальный реестр на своем сервере и вставлю в него все 10 ГБ + образов. Я изменил свой .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 - localhost)

И я снова запустил конвейер, это даже медленнее, чем извлечение изображения из Интернета! По выполненной команде iostat моя скорость жесткого диска чуть выше 1740 Кбит / с, и она стоит

Это заставляет меня чувствовать себя потерянным. Есть ли у вас какие-либо рекомендации? Спасибо, ребята!

1 Ответ

0 голосов
/ 07 марта 2019

Это медленно, когда мой сервер gitlab-runner является виртуальной машиной.Когда я использовал реальный сервер, Docker вытащил все изображения за секунду!

...