2016-08-12 7 views
8

私はGithub Organization pluginによって作成されたJenkinsでビルドジョブを持っています。このビルドのJenkinsfileは、checkout scmを使用してコードをチェックアウトします。これは、PRトリガー変更またはマスターブランチへのプッシュのいずれかをビルドするときに正しいブランチ/リビジョンをチェックアウトするためのものです。Github組織プラグインを使用したJenkinsのチェックアウトサブモジュール

node { 
    checkout scm 
} 

チェックアウトサブモジュール:

は、どのように私はこのことができますか?

答えて

3

これに変更し、それを:

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

使用bat代わりshのジェンキンスは、Windows上で実行されている場合。

+0

をこれは私のために動作しますが、ジェンキンスユーザーのデフォルトのSSH鍵が更新されているレポのすべてを読むことができる場合にのみ。他の答えに対する私のコメントによれば、Jenkinsに保管されている資格情報をサブモジュールのために働かせることはできませんでした。また、複数のサブモジュールがあるため、SSHキーはデプロイキー(1つのリポジトリにのみ関連付けることができます)ではなく、適切な権限を持つ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

それはJenkinsに 'git submodule update'を試みるように指示しますが、私は' Permission denied(publickey) 'を取得します。 UIを介して設定されたときにサブモジュールの更新が機能するように私を驚かせる。 –

+0

この回答はおそらくこの記事から来ます:https://support.cloudbees.com/hc/en-us/articles/226122247-How-to-Customize-Checkout-for-Pipeline-Multibranch –

+1

この構文を見つける別の方法は次のとおりです。パイプライン構文のスニペットジェネレータを使用します。私の場合は、リポジトリのアクセスに対処するように見えるが、上記よりやや大きいスニペットを生成しますが、動作しません。 –

関連する問題