" } } 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] } // 릴리스 승인 링크 추가 "> " } } 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] } // 릴리스 승인 링크 추가 "> " } } 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] } // 릴리스 승인 링크 추가 ">
<aside> 📌
아래 두 값 Credentials Secret key로 등록 후 사용
9169785268081619261 ( MSG GAMES )4976145245432318604 ( 종말의 뱀 )
</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>"
}
} 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'), // 플레이스토어 개발자 ID
string(credentialsId: 'SE_PLAYSTORE_PROJECT_ID', variable: 'PRJ_ID') // 플레이스토어 프로젝트 ID
]) {
def releaseUrl = "<https://play.google.com/console/u/0/developers/${DEV_ID}/app/${PRJ_ID}/tracks/internal-testing?releaseType=defaultReleases>"
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"
"""
}
}