Add vars/notifyLark.groovy

This commit is contained in:
2026-02-09 14:31:57 +08:00
parent b56db8589d
commit 104c360725

58
vars/notifyLark.groovy Normal file
View File

@@ -0,0 +1,58 @@
def call(Map args = [:]) {
// ===== 参数 =====
def publishEnvs = args.publishEnvs ?: 'production'
def branchName = args.branchName ?: (env.BRANCH_NAME ?: 'unknown')
// ===== Jenkins 内建上下文 =====
def buildStatus = currentBuild.currentResult ?: 'UNKNOWN'
def buildNumber = env.BUILD_NUMBER
def buildUrl = env.BUILD_URL
def jobName = env.JOB_NAME
def triggerBy = env.BUILD_USER ?: 'unknown'
// ===== 状态标签 =====
def statusTag = [
SUCCESS : "<text_tag color='turquoise'>通过</text_tag>",
FAILURE : "<text_tag color='red'>失败</text_tag>",
UNSTABLE: "<text_tag color='orange'>不稳定</text_tag>",
ABORTED : "<text_tag color='neutral'>已中止</text_tag>"
][buildStatus] ?: "<text_tag color='neutral'>未知状态</text_tag>"
def commitDiff = "[查看变更记录](${buildUrl}changes)"
// ===== 凭证 =====
withCredentials([
string(credentialsId: 'FEISHU_WEBHOOK', variable: 'FEISHU_WEBHOOK')
]) {
def payload = [
msg_type: 'interactive',
card: [
type: 'template',
data: [
template_id: 'AAq2iv39m3lv5',
template_version_name: '1.0.5',
template_variable: [
build_title : jobName,
status_tag : statusTag,
build_number: buildNumber,
publish_envs: publishEnvs,
commit_diff : commitDiff,
build_branch: branchName,
trigger_by : triggerBy,
build_url : [ url: buildUrl ]
]
]
]
]
httpRequest(
httpMode: 'POST',
contentType: 'APPLICATION_JSON',
url: env.FEISHU_WEBHOOK,
requestBody: groovy.json.JsonOutput.toJson(payload),
validResponseCodes: '200:299'
)
}
}