Примечания:
gitlab.com/group/project
с помощью SSH ключей..gitmodules
Если вы работаете с Git подмодулями, ваш проект, скорее всего, будет иметь файл
с именем .gitmodules
.
Рассмотрим следующий пример:
https://gitlab.com/secret-group/my-project
.git@gitlab.com:secret-group/my-project.git
.https://gitlab.com/group/project
, который вы хотите
включить как подмодуль.Если вы используете GitLab 8.12+ и ваш подмодуль находится на том же сервере GitLab,
вы должны обновить свой файл .gitmodules
, чтобы использовать относительные URL.
Так как Git позволяет использовать относительные URL для конфигурации .gitmodules
,
это легко позволяет вам использовать HTTP(S) для клонирования всех ваших CI-заданий и SSH
для всех ваших локальных клонов. Файл .gitmodules
будет выглядеть следующим образом:```ini
[submodule "project"]
path = project
url = ../../group/project.git
Вышеуказанная конфигурация будет инструктировать Git автоматически определять URL,
который должен быть использован при клонировании исходного кода. Независимо от того,
используете ли вы HTTP(S) или SSH, Git будет использовать тот же канал, и это позволит
всем вашим CI-заданиям использовать HTTP(S) (потому что GitLab CI использует только HTTP(S)
для клонирования ваших исходных кодов), и все ваши локальные клонирования продолжат использовать SSH.
Для всех других подмодулей, которые не находятся на том же сервере GitLab, используйте полный
URL протокола HTTP(S):
```ini
[submodule "project-x"]
path = project-x
url = https://gitserver.com/group/project-x.git
После правильной настройки файла .gitmodules
вы можете перейти к
настройке вашего .gitlab-ci.yml
.
Чтобы сделать подмодули корректно работающими с вашими CI-заданиями, вам нужно выполнить несколько шагов:1. Сначала убедитесь, что вы используете относительные URL для подмодулей, расположенных на том же сервере GitLab.
Затем, если вы используете gitlab-ci-multi-runner
версии 1.10 и выше, вы можете установить переменную GIT_SUBMODULE_STRATEGY
на значение normal
или recursive
, чтобы указать запускающему выполнить получение ваших подмодулей перед выполнением задания:
variables:
GIT_SUBMODULE_STRATEGY: recursive
Подробнее о переменной GIT_SUBMODULE_STRATEGY
см. в справочнике .gitlab-ci.yml
.1. Если вы используете более старую версию gitlab-ci-multi-runner
, то используйте git submodule sync/update
в before_script
:
before_script:
- git submodule sync --recursive
- git submodule update --init --recursive
--recursive
следует использовать либо в обоих, либо ни в одном из команд (sync/update
) в зависимости от того, имеются ли у вас рекурсивные подмодули.
Основание для установки sync
и update
в before_script
заключается в том, как работают Git подмодули. На свежем рабочем пространстве запускающего Git устанавливает URL подмодуля, включая токен, в .git/config
(или .git/modules/<submodule>/config
) на основе .gitmodules
и текущего URL удаленного репозитория. В последующих заданиях на том же запускающем, .git/config
кэшируется и уже содержит полный URL для подмодуля, соответствующий предыдущему заданию, и токен от предыдущего задания. Команда sync
позволяет принудительно обновить полный URL.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )