|
|
@@ -1,13 +1,25 @@
|
|
|
-#!/usr/bin/env groovy
|
|
|
-import com.example.FeishuNotifier
|
|
|
+def call(String webhook, String status) {
|
|
|
+ def info = gatherCommonInfo()
|
|
|
+ new com.example.FeishuNotifier(this, webhook).send(
|
|
|
+ status,
|
|
|
+ env.JOB_NAME,
|
|
|
+ env.BUILD_NUMBER,
|
|
|
+ info.buildUrl,
|
|
|
+ info.duration,
|
|
|
+ info.branch,
|
|
|
+ info.commitMsg,
|
|
|
+ info.author,
|
|
|
+ info.commitTime
|
|
|
+ )
|
|
|
+}
|
|
|
|
|
|
-// 公共采集逻辑
|
|
|
-@NonCPS
|
|
|
+// ========== 下面是 CPS 安全的采集逻辑 ==========
|
|
|
+@com.cloudbees.groovy.cps.NonCPS // 仅供内部流转,避免返回值被序列化
|
|
|
private Map gatherCommonInfo() {
|
|
|
def duration = currentBuild.durationString.replace(' and counting', '')
|
|
|
- def commitMsg = sh(returnStdout: true, script: "git log -1 --pretty=%B").trim()
|
|
|
- def author = sh(returnStdout: true, script: "git log -1 --pretty=%an").trim()
|
|
|
- def commitTime = sh(returnStdout: true, script: "git log -1 --pretty=%ci").trim()
|
|
|
+ def commitMsg = sh(returnStdout: true, script: 'git log -1 --pretty=%B').trim()
|
|
|
+ def author = sh(returnStdout: true, script: 'git log -1 --pretty=%an').trim()
|
|
|
+ def commitTime = sh(returnStdout: true, script: 'git log -1 --pretty=%ci').trim()
|
|
|
def branch = env.BRANCH_NAME ?: env.GIT_BRANCH ?: 'unknown'
|
|
|
def buildUrl = env.BUILD_URL.replace('http://68.79.46.88:8080', 'https://jenkins.adwebcloud.com')
|
|
|
return [
|
|
|
@@ -18,36 +30,4 @@ private Map gatherCommonInfo() {
|
|
|
branch : branch,
|
|
|
buildUrl : buildUrl
|
|
|
]
|
|
|
-}
|
|
|
-
|
|
|
-// 任务开始时调用
|
|
|
-def start(String webhookUrl) {
|
|
|
- def info = gatherCommonInfo()
|
|
|
- new FeishuNotifier(this, webhookUrl).send(
|
|
|
- 'START', // 自定义状态
|
|
|
- env.JOB_NAME,
|
|
|
- env.BUILD_NUMBER,
|
|
|
- info.buildUrl,
|
|
|
- '0s', // 刚开始,持续时间为 0
|
|
|
- info.branch,
|
|
|
- info.commitMsg,
|
|
|
- info.author,
|
|
|
- info.commitTime
|
|
|
- )
|
|
|
-}
|
|
|
-
|
|
|
-// 任务结束时调用(就是你现在的 call)
|
|
|
-def call(String webhookUrl, String status) {
|
|
|
- def info = gatherCommonInfo()
|
|
|
- new FeishuNotifier(this, webhookUrl).send(
|
|
|
- status,
|
|
|
- env.JOB_NAME,
|
|
|
- env.BUILD_NUMBER,
|
|
|
- info.buildUrl,
|
|
|
- info.duration,
|
|
|
- info.branch,
|
|
|
- info.commitMsg,
|
|
|
- info.author,
|
|
|
- info.commitTime
|
|
|
- )
|
|
|
}
|