<aside> 📌
서브모듈을 인증을 우회하여 수동 업데이트로 수정
stage('Checkout with Submodules') {
steps {
script {
def (repoName, projectName) = parseProjectInfoFromRepoUrl(params.PRJ_URL)
env.BUILD_REPO_NAME = repoName
env.BUILD_PROJECT_NAME = projectName
try {
// 🔹 1. 메인 레포지토리 clone (submodule 제외)
checkout([
$class: 'GitSCM',
branches: [[name: "*/${params.BRANCH}"]],
userRemoteConfigs: [[
url: "${params.PRJ_URL}",
credentialsId: 'GITHUB_ACCESS_TOKEN'
]],
extensions: [
[$class: 'RelativeTargetDirectory', relativeTargetDir: "${repoName}"]
]
])
// 🔹 2. Submodule 인증 우회 및 수동 업데이트
withCredentials([string(credentialsId: 'GITHUB_ACCESS_TOKEN_STRING', variable: 'GITHUB_TOKEN')]) {
sh """
cd ${repoName}
git submodule init
git config submodule.SerpentOfTheEnd/Assets/GeekLib.url <https://${GITHUB_TOKEN}@github.com/Geekble-Game/GeekLib.git>
git submodule update --recursive
"""
}
} catch (e) {
echo "[ERROR] Git checkout 실패: ${e.getMessage()}"
currentBuild.description = 'PROJECT_CLONE_FAIL'
error("[ABORTED] Git checkout 실패로 인해 파이프라인 중단")
}
}
}
}