Jenkinsのプロジェクトにサブモジュールがあります。サブモジュールを再帰的に更新する高度な設定を有効にしました。
ビルドを実行すると、ワークスペースにサブモジュールのファイルがあることがわかります。問題は、サブモジュールの最初のリビジョンのようです。変更をプッシュする(GitHubでホストされるリポジトリ)Jenkinsは、適切な変更を取得するためにサブモジュールを更新しないようです。誰もこれを見たことがありますか?
私は解決策を見つけたようです:
次のシェルコマンドを実行するビルドステップを追加しました。
git submodule foreach git checkout master
git submodule foreach git pull
Jenkins Git plugin 2. には「サブモジュールの動作を進める」ことに注意してください。これにより、サブモジュールの適切な更新が保証されます。
Advanced sub-modules behavior
> "Path of the reference repo to use during submodule update
"このフィールドに対して、サブモジュールgit urlを追加します。
認証の問題については、「親リポジトリのデフォルトのリモートから資格情報を使用する」オプションがあります
ここで JENKINS-20941 で見られます:
Gitリポジトリが常にサブモジュールの特定のリビジョンを参照していることを知っていますか? Jenkinsはリビジョンを自動的に変更しません。
サブモジュールの新しいリビジョンを使用する場合は、ローカルGitリポジトリでこれを行う必要があります。
cd submoduledir
git pull
cd ..
git add submoduledir
git commit -m 'Updated to latest revision of submoduledir'
git Push # Go and watch Jenkins build with the new revision of the submodule
このようにすると、Jenkinsはビルド中にサブモジュールのまったく同じリビジョンをチェックアウトします。 Jenkinsは、サブモジュールのどのリビジョンを使用するかを独自に決定しません。これは、GitサブモジュールとSVN外部の基本的な違いです。
サブモジュールに関する適切なリファレンスを読むことをお勧めします。 http://progit.org/book/ch6-6.html 。
最後にこれを行う方法を見つけましたが、それは簡単です。
資格情報を使用した最初のクローンは正常に機能しますが、後続のsubmodule
クローン作成は資格情報が正しくないため失敗します。
Source Code Management >> Additional Behaviours >> Advanced sub-modules behaviours
_:クレデンシャルエラーが発生します。git submodule update --init
_セクションの_Execute Shell
_も資格情報エラーで失敗します。_jenkins-1.574
_を使用しています。
Build Environment >> SSH Agent
_ボックスをチェックします。Source Code Management
_セクションで選択したものと同じです)_Execute Shell
_セクションのサブモジュールを更新します
_git submodule sync
git submodule update --init --recursive
_
これがスクリーンショットです
Jenkins Gitモジュールを使用している場合は、「ビルド前にワークスペースを消去」に設定できます。これにより、常に正しいサブモジュールが取得されます。