Как вытащить подмодули с --remote в Gitlab CI? - PullRequest
1 голос
/ 31 мая 2019

Мне нужен мой Gitlab CI для обновления подмодулей с флагом --remote, чтобы HEAD был установлен на HEAD пульта дистанционного управления.После небольшого поиска в Google я обнаружил, что мне нужно установить GIT_SUBMODULE_STRATEGY на none и запустить git submodule update --recursive --remote --init вручную:

variables:
    GIT_STRATEGY: clone
    GIT_SUBMODULE_STRATEGY: none

before_script:
  - apk add git || ( apt-get update && apt-get -y install git )
  - git submodule update --recursive --remote  --init

test:build:
  services:
  - docker:dind
  image: ubuntu
  variables:
    DOCKER_HOST: tcp://docker:2375
    DOCKER_DRIVER: overlay2
  script:
  - echo "done

К сожалению, я получаю ошибку CI (имена отредактированы):

$ git submodule update --recursive --remote  --init
Submodule 'current_project_name/submodule_project_name' (ssh://git@gitlab.someserver.net:9931/someorg/submodule_project_name.git) registered for path 'current_project_name/submodule_project_name'
Cloning into '/builds/someorg/current_project_name/current_project_name/submodule_project_name'...
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
fatal: clone of 'ssh://git@gitlab.someserver.net:9931/someorg/submodule_project_name.git' into submodule path '/builds/someorg/current_project_name/current_project_name/submodule_project_name' failed
Failed to clone 'current_project_name/submodule_project_name'. Retry scheduled
Cloning into '/builds/someorg/current_project_name/current_project_name/submodule_project_name'...
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
fatal: clone of 'ssh://git@gitlab.someserver.net:9931/someorg/submodule_project_name.git' into submodule path '/builds/someorg/current_project_name/current_project_name/submodule_project_name' failed
Failed to clone 'current_project_name/submodule_project_name' a second time, aborting

Я вижу, что у CI есть разрешения на клонирование этого submodule_project_name, потому что, если я установлю GIT_SUBMODULE_STRATEGY, например, на recursive, CI удастся его вытянуть (но это не --remote, поэтомуне работает так, как я хочу).К сожалению, когда мой before_script пытается это сделать, я получаю сообщение об ошибке.Как я могу обойти это?

1 Ответ

1 голос
/ 31 мая 2019

I , упомянутый ранее , обновляющий файл ~/.ssh/.known_hosts, здесь .

Это не нужно, когда извлекает подмодули до сценария (это не то, что вы делаете с GIT_SUBMODULE_STRATEGY, установленным на NONE)

С dind (Docker In Docker), рассмотрите также этот поток , касающийся ssh-add для закрытых ключей, и .dockerini / .dockerenv SSH-директив.

OP d33tah подтверждает в комментариях :

Я фактически не добавил ни одного ключа, предполагая, что, поскольку значения по умолчанию Gitlab CI могут тянуть ключ, я должен быть в состоянии
Затем я обнаружил, что в документах говорится, что мне нужен ключ развертывания, и добавил один

Да: добавление открытого ключа на стороне Gitlab обязательно.

...