Локальный GitLab Runner зависает, а Shared GitLab.com запускается успешно - PullRequest
0 голосов
/ 26 апреля 2019

РЕДАКТИРОВАТЬ: Как отметил Rekovni, использование GitLab Runner с Docker на компьютере с Windows является проблемой. Установка бегуна в виртуальной машине на основе Linux решила проблему.


Я занимаюсь разработкой программы на Python с использованием среды conda.Он размещен на GitLab.com, и я использую GitLab-CI для создания документации.

Я настроил для него следующий файл .gitlab-ci.yml:

image: continuumio/miniconda3:latest

before_script:
  # Update conda and create environment, which is then activated.
  - conda update -vvv -y -c conda-forge conda
  - conda env create -f helpers/NAME.yml
  - source activate NAME
  # Correct installation.
  - conda install -q -y gsl=2.2.1

pages:
  script:
    # Install make.
    - apt-get update
    - apt-get install -q -y build-essential
    # Install Spinx-related packages.
    - conda install -q -y sphinx sphinx_rtd_theme
    # Create documentation.
    - cd REPO/doc
    - sphinx-apidoc -o source/ ../REPO --force --separate
    - make html
    # Transfer documentation to public pages folder.
    - mv build/html/ ../../public/
  artifacts:
    paths:
      - public
#   only:
#     - master

Запуск этого сценария собщий GitLab Runner, который поставляется с GitLab.com, работает, а документация генерируется и помещается в общую папку.

Для будущих юнит-тестов (которые занимают гораздо больше времени) я хочу предоставить локальный бегун на Win10 машин в моей сети.Для этого я установил gitlab-runner.exe и Docker Desktop.Я успешно зарегистрировал бегуна в проекте на GitLab.com.

Бегун использует следующий файл конфигурации config.toml:

concurrent = 1
check_interval = 0
log_level = "info"

[session_server]
  session_timeout = 1800

[[runners]]
  name = "NAME"
  url = "https://gitlab.com"
  token = "TOKEN"
  executor = "docker"
  [runners.custom_build_dir]
  [runners.docker]
    tls_verify = false
    image = "alpine:latest"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]

Проблема заключается в том, что локальный бегун зависает во времявыполнение приведенного выше сценария без каких-либо сообщений об ошибках, и я не знаю, как его отладить.У меня есть

  1. Журнал скрипта, который показан на странице Job на GitLab.com;и
  2. Консольный вывод gitlab-runner.exe на локальной машине.

Относительно 1. Я вижу

[0KRunning with gitlab-runner 11.10.0 (3001a600)
...
[32;1mChecking out COMMIT_HASH as BRANCH_NAME...[0;m
...
[0K[32;1m$ conda update -vvv -y -c conda-forge conda[0;m
DEBUG conda.gateways.logging:set_verbosity(148): verbosity set to 3
...
...
...
TRACE conda.gateways.disk.update:rename(52): renaming /opt/conda/share/doc/openssl/html/man3/OSSL_STORE_LOADER_new.html => /opt/conda/share/doc/openssl/html/man3/OSSL_STORE_LOADER_new.html.c~
TRACE conda.core.path_actions:execute(1041): renaming share/doc/openssl/html/man3/OSSL_STORE_LOADER_set_close.html => share/doc/openssl/html/man3/OSSL_STORE_LOADER_set_close.html.c~
TRACE conda.gateways.disk.update:rename(52): renaming /opt/conda/share/doc/openssl/html/man3/OSSL_STORE_LOADER_set_close.html => /opt/conda/share/doc/openssl/html/man3/OSSL_STORE_LOADER_set_close.html.c~
TRACE conda.core.path_actions:execute(1041): renaming share/doc/openssl/html/man3/OSSL_STORE_LOADER_set_ctrl.html => share/doc/openssl/html/man3/OSSL_STORE_LOADER_set_ctrl.html.c~

, где он внезапно останавливается, не достигая- conda env create -f helpers/NAME.yml line.

Что касается 2., я вижу

C:\GitLab-Runner>gitlab-runner.exe --debug run
Runtime platform                                    arch=amd64 os=windows pid=14116 revision=3001a600 version=11.10.0Starting multi-runner from C:\GitLab-Runner\config.toml ...  builds=0
Checking runtime mode                               GOOS=windows uid=-1
Configuration loaded                                builds=0
...
Feeding runners to channel                          builds=0
Checking for jobs... nothing                        runner=TOKEN
Feeding runners to channel                          builds=0
Checking for jobs... received                       job=203033130 repo_url=REPO_URL.git runner=TOKEN
...
Attaching to container HASH ...  job=203033130 project=6249897 runner=TOKEN
Starting container HASH ...  job=203033130 project=6249897 runner=TOKEN
Waiting for attach to finish HASH ...  job=203033130 project=6249897 runner=TOKEN
Waiting for container HASH ...  job=203033130 project=6249897 runner=TOKEN
Appending trace to coordinator... ok                code=202 job=203033130 job-log=0-10348 job-status=running runner=TOKEN sent-log=1801-10347 status=202 Accepted
Appending trace to coordinator... ok                code=202 job=203033130 job-log=0-19445 job-status=running runner=TOKEN sent-log=10348-19444 status=202 Accepted
...
Appending trace to coordinator... ok                code=202 job=203033130 job-log=0-933150 job-status=running runner=TOKEN sent-log=241860-933149 status=202 Accepted
Submitting job to coordinator... ok                 code=200 job=203033130 job-status= runner=TOKEN 
Submitting job to coordinator... ok                 code=200 job=203033130 job-status= runner=TOKEN 

, где кажется, что переключение с Appending trace to coordinator на Submitting job to coordinator происходит примерно в то время, когда оно застревает.После этого 1. не обновляется никакой дополнительной информацией и 2. застревает в цикле Submitting job to coordinator.

Кто-нибудь знает:

  1. В чем причина сбоя сможет быть местный бегун (когда тот же сценарий работает с общим бегуном)?
  2. Что я могу сделать для устранения этой проблемы?

Спасибо и всего наилучшего, Томас

1 Ответ

1 голос
/ 26 апреля 2019

GitLab CI в настоящее время не предлагает решения для использования своего бегуна с Docker в среде Windows, однако на данный момент существует epic , который отслеживает прогресс в этом направлении.

В одном из выпусков эпопеи вкладчику удалось получить рабочую версию gitlab-runner, которая использует Docker для Windows, с которой можно найти более подробную информацию здесь .

Более распространенным (и, возможно, более простым) способом использования Docker в среде Windows является установка gitlab-runner в качестве оболочки Shell и вызов команд Docker вручную для запуска ваших тестов.

И наоборот, если вы просто хотите продолжать использовать тот же сценарий CI, вы можете установить виртуальную машину Linux на свой компьютер с Windows 10 и получить этот хост для запуска докера!

...