59 lines
1.7 KiB
Groovy
59 lines
1.7 KiB
Groovy
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'
|
|
)
|
|
}
|
|
}
|