Как оформить подмодуль git с другим ключом развертывания в декларативном конвейере - PullRequest
1 голос
/ 10 апреля 2019

У меня есть проект, размещенный в экземпляре Enterprise GitHub.Проект ссылается на субмодуль в том же экземпляре.

  • Для доступа к основному проекту я настроил «DeployKey_1» в репозитории Github.

  • Для доступа к проекту подмодуля я настроил «DeployKey_2» в репозитории Github.

Примечание: я не могу использовать то же развертываниеключ на GitHub Enterprise: ключ уже используется

Задание Jenkins определено как многоотраслевой конвейер, и я использую команду checkout в Jenkinsfile:

checkout([
    $class: 'GitSCM',
    branches: scm.branches,
    doGenerateSubmoduleConfigurations: scm.doGenerateSubmoduleConfigurations,
    extensions: [[$class: 'SubmoduleOption', disableSubmodules: false, parentCredentials: false, recursiveSubmodules: true, reference: '', trackingSubmodules: false]],
    userRemoteConfigs: scm.userRemoteConfigs
])

Я попробовал оба варианта: установить parentCredentials: true и parentCredentials: false, но оба приводят к этой ошибке при выполнении задания:

hudson.plugins.git.GitException: Command "git submodule update -init --recursive my-submodule "вернул код состояния 1: stdout: stderr: клонирование в '/ private / tmp / workspace / project_develop / my-submodule' ... git@github.mycompany.com: разрешение отклонено (publickey).Неустранимый: Не удалось прочитать из удаленного хранилища.

Пожалуйста, убедитесь, что у вас есть правильные права доступа, и хранилище существует.fatal: клон '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 Ответ

1 голос
/ 10 апреля 2019

Я думаю, что это слишком далеко от конфигурации git, и слишком много возможностей использования 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...