<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 실패로 인해 파이프라인 중단")
            }
        }
    }
}