" } if (env.BUILD_FASTLANE_LOG_URL) { logLinks << "<${env.BUILD_FASTLANE_LOG_URL}|🛠️ ${env.BUILD_NAME}_fastlane_deploy.log>" } } else { if (env.BUILD_FAIL_LOG_URL) { logLinks << "<${env.BUILD_FAIL_LOG_URL}|🧾 ${env.BUILD_NAME}_build.log>" } if (env.BUILD_FASTLANE_LOG_URL) { logLinks << "<${env.BUILD_FASTLANE_LOG_URL}|🛠️ ${env.BUILD_NAME}_fastlane_deploy.log>" } } if (logLink"> " } if (env.BUILD_FASTLANE_LOG_URL) { logLinks << "<${env.BUILD_FASTLANE_LOG_URL}|🛠️ ${env.BUILD_NAME}_fastlane_deploy.log>" } } else { if (env.BUILD_FAIL_LOG_URL) { logLinks << "<${env.BUILD_FAIL_LOG_URL}|🧾 ${env.BUILD_NAME}_build.log>" } if (env.BUILD_FASTLANE_LOG_URL) { logLinks << "<${env.BUILD_FASTLANE_LOG_URL}|🛠️ ${env.BUILD_NAME}_fastlane_deploy.log>" } } if (logLink"> " } if (env.BUILD_FASTLANE_LOG_URL) { logLinks << "<${env.BUILD_FASTLANE_LOG_URL}|🛠️ ${env.BUILD_NAME}_fastlane_deploy.log>" } } else { if (env.BUILD_FAIL_LOG_URL) { logLinks << "<${env.BUILD_FAIL_LOG_URL}|🧾 ${env.BUILD_NAME}_build.log>" } if (env.BUILD_FASTLANE_LOG_URL) { logLinks << "<${env.BUILD_FASTLANE_LOG_URL}|🛠️ ${env.BUILD_NAME}_fastlane_deploy.log>" } } if (logLink">
<aside> 📌
def sendSlack(String status, String color) {
def slackTitle = getSlackTitle(status)
def fields = [
["title": "Project", "value": "${env.BUILD_PROJECT_NAME}", "short": true],
["title": "Branch", "value": "${params.BRANCH}", "short": true],
["title": "Job", "value": "${env.JOB_NAME} #${env.BUILD_NUMBER}", "short": true]
]
def logLinks = []
if (status == "SUCCESS") {
if (env.BUILD_S3_URL) {
logLinks << "<${env.BUILD_S3_URL}|📦 ${env.BUILD_NAME}.aab>"
}
if (env.BUILD_FASTLANE_LOG_URL) {
logLinks << "<${env.BUILD_FASTLANE_LOG_URL}|🛠️ ${env.BUILD_NAME}_fastlane_deploy.log>"
}
} else {
if (env.BUILD_FAIL_LOG_URL) {
logLinks << "<${env.BUILD_FAIL_LOG_URL}|🧾 ${env.BUILD_NAME}_build.log>"
}
if (env.BUILD_FASTLANE_LOG_URL) {
logLinks << "<${env.BUILD_FASTLANE_LOG_URL}|🛠️ ${env.BUILD_NAME}_fastlane_deploy.log>"
}
}
if (logLinks) {
fields << ["title": (status == "SUCCESS") ? "Artifacts" : "Logs", "value": logLinks.join("\n"), "short": false]
}
// 릴리스 승인 링크 추가
if (status == "SUCCESS" && params.RELEASE_STATUS == 'draft') {
withCredentials([string(credentialsId: 'PLAYSTORE_DEVELOPER_ID', variable: 'DEV_ID')]) {
def releaseUrl = "<https://play.google.com/console/u/0/developers/${DEV_ID}/app-list>"
fields << [
"title": "릴리스 승인 페이지",
"value": "<${releaseUrl}|Google Play Console로 이동하기>\n(앱 선택 후 내부 테스트 릴리즈 승인 필요)",
"short": false
]
}
}
def payload = [
text: "${slackTitle}",
attachments: [[color: "${color}", fields: fields]]
]
def curlBody = groovy.json.JsonOutput.toJson(payload)
withCredentials([string(credentialsId: 'TEST_SLACK_URL', variable: 'SLACK_URL')]) {
sh """
curl -X POST -H 'Content-type: application/json' --data '${curlBody}' "$SLACK_URL"
"""
}
}