2016-08-12 11 views

Odpowiedz

3

zmienić go na to:

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

Zastosowanie bat zamiast sh jeśli Jenkins jest uruchomiony w systemie Windows.

+0

Działa to dla mnie, ale tylko wtedy, gdy domyślny klucz SSH użytkownika Jenkins może czytać wszystkie repo aktualizowany. Za mój komentarz do drugiej odpowiedzi nie mogłem uzyskać poświadczeń przechowywanych w Jenkins, aby pracować nad podmodulami, mimo że pracują dla pierwotnego zamówienia. Ponadto, ponieważ mam wiele submodułów, klucz SSH nie może być kluczem wdrożenia (który może być powiązany tylko z jednym repozytorium), ale musi być powiązany z użytkownikiem Github z odpowiednimi uprawnieniami. –

10

Rozwiązanie z sh 'git submodule...' działa tylko dla Repositorys bez specjalnego uwierzytelnienia.

Używamy następujące rozwiązanie w naszej konfigurowaniu:

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

To mówi Jenkinsowi, aby spróbował 'git submodule update', ale otrzymuję' Permission denied (publickey) '. Beats mnie, dlaczego jak aktualizacja modułu działa po skonfigurowaniu za pośrednictwem interfejsu użytkownika. –

+0

Ta odpowiedź prawdopodobnie pochodzi z tego artykułu: https://support.cloudbees.com/hc/en-us/articles/226122247-How-to-customize-Checkout-for-Pipeline-Multibranch –

+1

Innym sposobem na znalezienie tej składni jest używać Generatora wycinków w składni potoku. W moim przypadku generuje on fragment podobny do, ale nieco większy niż powyższy, który wydaje się adresować dostęp do repozytorium, ale także nie działa. –

Powiązane problemy