Gitに大きなリポジトリがあります。プロジェクトからサブフォルダーを1つだけチェックアウトするジョブをJenkinsで作成するにはどうすればよいですか?
3 に答える
Jenkins Gitプラグインは、git-plugin 2.1.0(2014年4月)以降、スパースチェックアウトをサポートしています。この機能にはgit>=1.7.0が必要です。これは、「追加の動作」->「スパースチェックアウトパス」の下にあります。
参照:Jiraの問題JENKINS-21809
Gitのスパースチェックアウト機能を使用できます。Gitは引き続きリポジトリ全体をローカルディスクに複製することに注意してください。ただし、圧縮されているため、それほど悪くはありません。
- Jenkinsで新しいジョブを作成し、[ソースコード管理]セクションでGitリポジトリを設定します。
- プロジェクトをビルドします。これにより、リポジトリ全体がローカルディスクに複製されます。
- プロジェクトのワークスペースフォルダーを開き、.gitフォルダーを除くすべてを削除します。
プロジェクトのワークスペースフォルダーのGitシェルを開きます。スパースチェックアウトを有効にします。
git config core.sparsecheckout true
作業ツリーの更新:
git read-tree -mu HEAD
sparse-checkout
.git/infoフォルダーにファイルを作成します。次のように、チェックアウトするサブフォルダーへのパスをそのファイルに追加します(末尾のスラッシュに注意してください)。folder/to/include/
プロジェクトを再ビルドします。今回は、1つのサブフォルダーのみがワークスペースフォルダーに表示されます。
使用するだけのカスタムステップを作成できます
git checkout your-branch -- the/desired/path anthother/desired/path
クリアするにはrm -rf
、作業フォルダだけを使用して再作成しますmkdir workingdir
。これには、上記のコマンドのgitレベルでこのオプションを指定する必要があります。
git --working-dir="/path/to/workingdir" checkout your-branch -- the/desired/path anthother/desired/path
これはすべて、Jenkinsをどれだけよく知っているかによって異なります。