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 : "通过", FAILURE : "失败", UNSTABLE: "不稳定", ABORTED : "已中止" ][buildStatus] ?: "未知状态" 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.XSH_FEISHU_WEBHOOK, requestBody: groovy.json.JsonOutput.toJson(payload), validResponseCodes: '200:299' ) } }