<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}"
}
}
}
}
}
