2016-08-12 3 views
8

У меня есть работа по строительству в Дженкинсе, созданная Github Organization plugin. Jenkinsfile для этой сборки проверяет код с помощью checkout scm, который хорош, так как он вычисляет правильную ветку/ревизию для проверки при создании PR-сгенерированных изменений или нажатия на главную ветвь.Оформить заказ подмодулей в Jenkins с плагином организации Github

Как я могу сделать это:

node { 
    checkout scm 
} 

Кассовые Подмодули?

ответ

3

Изменить его к этому:

node { 
    checkout scm 
    sh 'git submodule update --init' 
} 

Использование bat вместо sh если Дженкинс работает на Windows.

+0

Это работает для меня, но только если ключ SSH пользователя Дженкинс по умолчанию может прочитать все репозитории обновляются. На мой комментарий к другому ответу я не мог получить учетные данные, хранящиеся в Jenkins, для работы с подмодулями, даже если они работают для первичной проверки. Кроме того, поскольку у меня несколько подмодулей, ключ SSH не может быть ключом развертывания (который может быть связан только с одним репо), но должен быть связан с пользователем Github с соответствующими разрешениями. –

10

Решение с sh 'git submodule...' работает только для репозиториев без специальной аутентификации.

Мы используем следующее решения в нашем наборе вверх:

node { 
    checkout([ 
     $class: 'GitSCM', 
     branches: scm.branches, 
     doGenerateSubmoduleConfigurations: true, 
     extensions: scm.extensions + [[$class: 'SubmoduleOption', parentCredentials: true]], 
     userRemoteConfigs: scm.userRemoteConfigs 
    ]) 
} 
+0

Это говорит Дженкинсу о попытке «git subodule update», но я получаю «Permission denied (publickey)». Избавляет меня, потому что обновление подмодуля работает при настройке через пользовательский интерфейс. –

+0

Этот ответ, вероятно, исходит из этой статьи: https://support.cloudbees.com/hc/en-us/articles/226122247-How-to-Customize-Checkout-for-Pipeline-Multibranch –

+1

Другой способ найти этот синтаксис для использования генератора Snippet под синтаксисом трубопровода. В моем случае, который генерирует фрагмент, подобный, но несколько больший, чем выше, который, как представляется, адресует доступ к репозиторию, но также не работает. –