はじめに
Github上のリポジトリ内にある特定のフォルダだけを取得したいと考え、実現した方法を残します。
前提条件
JenkinsのPipeline: SCM Stepプラグインをインストールしてあること。
https://plugins.jenkins.io/workflow-scm-step/
方法
以下はgit clone
操作をしている箇所の抜粋です。
クローンしたいフォルダ名を以下の<特定フォルダ名>
箇所に置換します。
.groovy
stage('Clone specific folder') {
steps {
script {
echo "Clone specific folder"
// リモートリポジトリ内の特定フォルダをローカルにクローンする
dir(path: "${env.WORKSPACE}\\<リモートリポジトリ名>"){
try {
checkout([$class: 'GitSCM',
branches: [[name: "<ブランチ名>"]],
doGenerateSubmoduleConfigurations: false,
extensions: [
[$class: 'SparseCheckoutPaths',
sparseCheckoutPaths:[[$class:'SparseCheckoutPath',
path:'<特定フォルダ名>/']]]
],
submoduleCfg: [],
userRemoteConfigs: [
[credentialsId: "<Jenkinsで設定した認証情報>",
url: "<リモートリポジトリURL>"
]
]
])
} catch (Exception e) {
printMessage(e)
currentBuild.result = 'FAILURE'
}
}
}
}
}
結果
特定フォルダのみクローンされる。
※このとき、特定フォルダまでのパスも同時にクローンされるイメージ。
動作上で気を付ける点
対象のリモートリポジトリURL内に特定フォルダ名が複数存在する場合、全てがクローン対象となること
※特定フォルダ名だけを取得するという動作としては認識通りですが、使用する際は注意が必要かも。
参考サイト