web-dev-qa-db-ja.com

JenkinsおよびGitのスパースチェックアウト

Gitには大きなリポジトリがあります。プロジェクトからサブフォルダーを1つだけチェックアウトするジョブをJenkinsで作成するにはどうすればよいですか?

54
Pavel Chuchuva

Jenkins Gitプラグイン サポートスパースチェックアウトgit-plugin 2.1.0以降(2014年4月)。この機能を使用するには、git> = 1.7.0が必要です。 「追加の動作」->「スパースチェックアウトパス」の下にあります。

screenshot

参照:Jira issue JENKINS-21809

Gitの スパースチェックアウト 機能を使用できます。 Gitは引き続きリポジトリ全体をローカルディスクに複製することに注意してください。ただし、圧縮されているため、それほど悪くはありません。

  1. Jenkinsで新しいジョブを作成し、ソースコード管理セクションでGitリポジトリを設定します。
  2. プロジェクトをビルドします。これにより、リポジトリ全体がローカルディスクに複製されます。
  3. プロジェクトのワークスペースフォルダーを開き、.gitフォルダー以外のすべてを削除します。
  4. プロジェクトのワークスペースフォルダーのGitシェルを開きます。スパースチェックアウトを有効にします。

    git config core.sparsecheckout true
    
  5. 作業ツリーを更新します。

    git read-tree -mu HEAD
    
  6. .git/infoフォルダーにsparse-checkoutファイルを作成します。そのファイルにチェックアウトするサブフォルダーへのパスを追加します(末尾のスラッシュに注意してください):

    folder/to/include/
    
  7. プロジェクトを再度ビルドします。今回は、ワークスペースフォルダーに表示されるサブフォルダーは1つだけです。

23
Pavel Chuchuva

あなただけを使用するカスタムステップを持つことができます

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

これはすべて、あなたがジェンキンスをどれだけよく知っているかにかかっています。

1
Adam Dymitruk