#git #jenkins #jenkins-pipeline #git-submodules
#git #дженкинс #дженкинс-конвейер #git-подмодули
Вопрос:
У меня есть проект, размещенный в корпоративном экземпляре GitHub. Проект ссылается на вспомогательный модуль в том же экземпляре.
-
Для доступа к основному проекту я настроил «deploy_key_1» в репозитории Github.
-
Для доступа к проекту подмодуля я настроил «deploy_key_2» в репозитории Github.
Примечание: я не могу использовать один и тот же ключ развертывания на GitHub Enterprise: ключ уже используется
Задание Дженкинса определяется как многоотраслевой конвейер, и я использую checkout
команду в файле Jenkins:
checkout([
$class: 'GitSCM',
branches: scm.branches,
doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
extensions: [[$class: 'SubmoduleOption', disableSubmodules: false, parentCredentials: false, recursiveSubmodules: true, reference: '', trackingSubmodules: false]],
userRemoteConfigs: scm.userRemoteConfigs
])
Я попробовал оба варианта: Set parentCredentials: true
и parentCredentials: false
, но оба приводят к этой ошибке при выполнении задания:
хадсон.исключение plugins.git.GitException: команда «обновление подмодуля git -инициализация — рекурсивный my-submodule» вернула код состояния 1: стандартный вывод: stderr: клонирование в ‘/ private/tmp/workspace/project_develop/my-submodule’… git@github.mycompany.com : В разрешении отказано (publickey). фатальный: не удалось прочитать из удаленного репозитория.
Пожалуйста, убедитесь, что у вас правильные права доступа и репозиторий существует. фатальный: клонирование ‘git@github.mycompany.de:myorga/my-submodule.git ‘ в путь к подмодулю ‘/private/tmp/workspace/project_develop/my-submodule’ сбой Не удалось клонировать ‘my-submodule’. Повторите попытку запланированного клонирования в ‘/private/tmp/workspace/project_develop/my-submodule’… git@github.mycompany.de : В разрешении отказано (publickey). фатальный: не удалось прочитать из удаленного репозитория.
Пожалуйста, убедитесь, что у вас правильные права доступа
Оба ключа развертывания доступны в Jenkins. Итак, как я могу проверить подмодули? Как я могу указать checkout
команде использовать определенный credentials-id
при извлечении подмодуля?
Ответ №1:
Я думаю, что это слишком далеко от конфигурации git, и слишком много вариантов использования edge для SCM, чтобы поддерживать это.
Что касается опций с GitSCM submoduleCfg
, но это позволяет вам делать только то, что задает имя и ветвь подмодуля.
package hudson.plugins.git;
public class SubmoduleConfig implements java.io.Serializable {
private static final long serialVersionUID = 1L;
String submoduleName;
String[] branches;
Если вы перейдете от использования ключа к учетным данным, вы можете обновить конфигурацию своего подмодуля с помощью жестко заданного пользователя / пароля.
git submodule init
git config submodule.my_submodule.url "https://username:password@url/my_submodule.git"
git submodule update
Комментарии:
1. Хорошо, я надеялся, что это более распространенный вариант использования и уже предоставлен
checkout
. У меня был такой же взглядSubmoduleConfig
. Я думаю, это было бы правильным местом для внесения изменений.2. @Christopher забавно, что вы отредактировали мой ответ вместо того, чтобы комментировать его.
3. Да, я подумал, что другим людям будет проще увидеть решение прямо в ответе, а не выбирать его из комментариев. 🙂 Еще раз спасибо за вашу помощь здесь!
4. Рад помочь, если решение работает, вы не возражаете принять ответ?