Я запускаю локальный экземпляр Gitlab на моем сервере, который я нахожусь в процессе настройки для поддержки CI для моего проекта. Я использую собственный образ докера, который основан на Ubuntu 18.04 LTS и доступен на сервере.
В проекте используется субмодуль, который я изначально добавил, используя его URL-адрес Github SSH. Это работало нормально до сегодняшнего дня, когда я понял, что шаг git submodule update
не выполнялся из-за отсутствия разрешений, так как ключ SSH отсутствовал в контейнере. Чтение многих замечательных постов здесь и в других местах заставило меня принять решение переключить URL подмодуля на HTTPS, чтобы избежать возни с SSH-ключами. Вот как выглядит файл .gitmodules
:
[submodule "externals/translation-server"]
path = externals/translation-server
url = https://github.com/zotero/translation-server.git
Однако всякий раз, когда запускается gitlab, он все еще пытается клонировать подмодуль из его старого SSH URL:
$ git submodule update --init --remote --merge
Cloning into '/builds/com/prj/externals/translation-server'...
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 'git@github.com:zotero/translation-server.git' into submodule path '/builds/com/prj/externals/translation-server' failed
Failed to clone 'externals/translation-server'. Retry scheduled
Cloning into '/builds/com/prj/externals/translation-server'...
Host key verification failed.
fatal: Could not read from remote repository.
Когда я запускаю docker-контейнер и выполняю шаги, предпринятые gitlab runner вручную, все работает правильно:
# docker run -i -t -v`pwd`:/builds/com/prj docker-image /bin/bash
root@fcc6b0d990ad:/# cd /builds/com/prj/
root@fcc6b0d990ad:/builds/com/prj# git submodule update --init --recursive --remote --merge
Cloning into '/builds/com/prj/externals/translation-server/modules/zotero'...
Submodule path 'externals/translation-server/modules/zotero': checked out '42782f73fbddc1a44d9b655ad4c715de05b07345'
Чтобы проверить теорию, что с Gitlab или бегуном что-то не так, я создал тестовое хранилище, а затем:
Затем я наблюдал за выполнением задания и ... оно работало, как и ожидалось: модуль был извлечен из URL-адреса HTTPS, и никаких ошибок не произошло.
Возможно, бегун gitlab использует какое-то кэширование, которое переопределяет HTTP-адрес модуля в .gitmodules
? Что еще я могу сделать для дальнейшего изучения этой проблемы?
Я был бы очень признателен за помощь в диагностике этого.