Edited at

jenkinsでgit submodule updateに失敗する場合の対応策

More than 1 year has passed since last update.


前提


  • Jenkins ver. 2.6

  • Git plugin 2.4.2

  • Git client plugin 1.19.5

  • gitリポジトリは、プライベートリポジトリ(ID/PWが必要)


現象

サブモジュールも取得したい時は、


Jenkinsのジョブのソースコード管理>GitからAdvanced sub-modules behavioursを追加しRecursively update submodulesをチェックする


とサブモジュールも更新しようとするが、サブモジュールのリポジトリが、プライベートリポジトリだと認証のエラーが出ます。


FATAL: Command "git submodule update --init --recursive" returned status code 1:

stdout:

stderr: Cloning into 'submodule_lib'...

fatal: Authentication failed for 'http://git.example.com/scm/projects/submodule_lib.git/'


みたいな感じ

まぁ、ID/PWが必要なんだろうけど…


対策


  1. URLにIDとPW入れる
    http://account:password@git.example.com/scm/projects/submodule_lib.git

  2. git pluginのバージョン上げる
    experimental pluginsからGit Pluginの3.0.0-beta2を入れるとUse credentials from default remote of parent repositoryというのが出るのでそれをチェックすると良いらしいけど試してません。。。

  3. .netrcを置く
    /var/lib/jenkinsに.netrcを作成


/var/lib/jenkins/.netrc

machine qiita.com

login test
password test

jenkinsのサービスを起動しているユーザーにオーナーを変更しておく

# chown jenkins:jenkins .netrc