#!/usr/bin/env groovy /** * 在 pipeline 的开始 & 结束各调用一次即可: * onBuildEvent('start') * onBuildEvent('end') */ def call(String phase) { // 从 Jenkins 环境变量里取值 String jobName = env.JOB_NAME String buildNum = env.BUILD_NUMBER String branch = env.GIT_BRANCH ?: 'unknown' String result = currentBuild.currentResult ?: 'UNKNOWN' String buildUrl = env.BUILD_URL String duration = phase == 'end' ? "${currentBuild.durationString}" : '-' // 颜色 & 图标随结果变化 String headerColor = phase == 'start' ? 'blue' : (result == 'SUCCESS' ? 'green' : 'red') String headerIcon = phase == 'start' ? 'rocket' : (result == 'SUCCESS' ? 'check_circle' : 'error') def card = [ header: [ title: [ tag: "plain_text", content: "Jenkins ${phase == 'start' ? '开始' : '结束'}通知" ], template: headerColor ], elements: [ [ tag: "div", text: [ tag: "lark_md", content: "**项目:** ${jobName}\n" + "**分支:** ${branch}\n" + "**构建:** #${buildNum}\n" + "**结果:** ${result}\n" + "**耗时:** ${duration}\n" + "**链接:** [查看详情](${buildUrl})" ] ] ] ] // 只读取 webhook 凭据,不处理 secret String webhook = credentials('feishu-webhook') feishu.send(webhook, card) }