<aside> 🚫

빌드 실패 시, 성공 메세지 전송되는 오류 상황이 발생되어 수정함

<aside> ✏️

수정 내용: try - catch 문을 통한 error catch 생략됨

</aside>

stage('Build Unity Android') {
    when { expression { return !params.SKIP_BUILD } }
    options { timeout(time: 1, unit: 'HOURS') }
    steps {
        withCredentials([
            string(credentialsId: 'keystore_pass', variable: 'KEYSTORE_PASS'),
            string(credentialsId: 'key_alias', variable: 'KEY_ALIAS'),
            string(credentialsId: 'key_alias_pass', variable: 'KEY_ALIAS_PASS')
        ]) {
            script {
                def localBuildPath = "${params.BUILD_ROOT}/${env.DEFAULT_BUILD_PATH}"
                def outputDir = "${localBuildPath}/Builds/android"
                def logDir = "${localBuildPath}/Logs"
                def ext = (params.UNITY_BUILD_AAB) ? 'aab' : 'apk'
                def filePath = "${outputDir}/${env.BUILD_NAME}.${ext}"
                def logPath = "${env.LOG_DIR}/${env.BUILD_NAME}.log"

                def projectPath = "${env.WORKSPACE}/${env.BUILD_REPO_NAME}/${env.BUILD_PROJECT_NAME}"
                def keystorePath = "${projectPath}.keystore"

                // 환경변수 설정
                env.BUILD_OUTPUT_PATH = filePath
                env.BUILD_LOG_PATH = logPath

                try {
                    withEnv([
                        "UNITY_BUILD_PATH=${filePath}",
                        "UNITY_BUILD_AAB=${params.UNITY_BUILD_AAB}",
                        "KEYSTORE_PATH=${keystorePath}",
                        "KEYSTORE_PASS=${KEYSTORE_PASS}",   // 주의: env.XXX 사용 안함
                        "KEY_ALIAS=${KEY_ALIAS}",
                        "KEY_ALIAS_PASS=${KEY_ALIAS_PASS}"
                    ]) {
                        sh """
                            mkdir -p "${logDir}"

                            "${env.UNITY_PATH}" \
                              -batchmode \
                              -nographics \
                              -projectPath "${projectPath}" \
                              -executeMethod AndroidBuilder.BuildAndroid \
                              -quit \
                              -logFile "${logPath}" \
                              -buildTarget android
                        """
                    }

                    if (!fileExists(filePath)) {
                        error "[ERROR] Unity Build Output File not found: ${filePath}"
                    }

                } catch (err) {
                    currentBuild.description = "BUILD_FAILED"
                    env.BUILD_FAIL_LOG_URL = uploadToS3(logPath, "${env.DEFAULT_BUILD_PATH}/logs")
                    error "[BUILD ERROR] Unity 빌드 실패: ${err.message}"
                }
            }
        }
    }
}

테스트실

image.png