Работа с Git-подмодулями в CI/CD
При работе с подмодулями Git в GitFlic CI/CD требуется их ручная инициализация и клонирование (например, для сборки или тестирования проекта с внешними зависимостями).
Для ознакомления с функционалом подмодулей в Git обратитесь к данной статье.
Клонирование подмодулей репозитория
Для клонирования подмодулей репозитория используйте git submodule update
:
git submodule update --init --recursive
Эта команда загрузит подмодули на те коммиты, которые были зафиксированы в основном репозитории.
Ускоренное клонирование
Если подмодулей много или репозитории большие, используйте --depth 1
для ускорения:
git submodule update --init --recursive --depth 1
Опция --depth 1
клонирует подмодули только с последним коммитом, без всей истории.
Это значительно экономит место и время при клонировании, особенно в CI/CD.
Клонирование на последние изменения из ветки
Чтобы при инициализации подмодули обновлялись не на зафиксированный коммит, а на последний коммит ветки, указанной в .gitmodules
, используйте команду:
git submodule update --init --recursive --remote
Без выполнения команды
git submodule update
подмодули не будут загружены!
Авторизация для приватных подмодулей
Если подмодуль приватный, то вам необходимо добавить в конвейер шаги для авторизации в Git.
Способ 1: Использование файла .netrc
В шаге конвейера добавьте следующие команды:
before_script:
- echo "machine gitflic.ru\nlogin $GITFLIC_USER\npassword $GITFLIC_TOKEN" > ~/.netrc
- chmod 600 ~/.netrc
$GITFLIC_USER_LOGIN
- предопределенная переменная, содержащая логин пользователя$GITFLIC_TOKEN
- пароль пользователя или токен развертывания репозитория
Обратите внимание: при использовании powershell агента на Windows, метод с
.netrc
не поддерживается. Для powershell агентов на Windows используйте 2 или 3 способ.
Способ 2: Настройка авторизации через git config
В шаге конвейера добавьте следующую команду:
before_script:
- git config --global url."https://$GITFLIC_USER:$GITFLIC_TOKEN@gitflic.ru/".insteadOf "https://gitflic.ru/"
После выполнения данной команды любые обращения к подмодулям, расположенным на gitflic.ru, будут автоматически использовать указанные авторизационные данные.
Способ 3: Использование SSH-ключей
-
Сгенерируйте SSH-ключ (если ещё не создан):
ssh-keygen -t ed25519 -C "powershell-runner"
-
В конвейере добавьте приватный ключ в переменные и используйте его для аутентификации:
before_script: - mkdir -p ~/.ssh - echo "$SSH_PRIVATE_KEY" > ~/.ssh/id_ed25519 - chmod 600 ~/.ssh/id_ed25519 - ssh-keyscan gitflic.ru >> ~/.ssh/known_hosts
Пример gitflic-ci.yaml
build:
stage: build
variables:
GITFLIC_TOKEN: <password_or_token>
before_script:
- echo "machine gitflic.ru\nlogin $GITFLIC_USER_LOGIN\npassword $GITFLIC_TOKEN" > ~/.netrc
- chmod 600 ~/.netrc
- git submodule update --init --recursive
script:
- ./build.sh