luhaowen 5 days ago
parent
commit
3b7bfafbc4
2 changed files with 33 additions and 39 deletions
  1. 19 39
      vars/feishuNotify.groovy
  2. 14 0
      vars/feishuStart.groovy

+ 19 - 39
vars/feishuNotify.groovy

@@ -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
-    )
 }

+ 14 - 0
vars/feishuStart.groovy

@@ -0,0 +1,14 @@
+def call(String webhook) {
+    def info = gatherCommonInfo()
+    new com.example.FeishuNotifier(this, webhook).send(
+        'START',
+        env.JOB_NAME,
+        env.BUILD_NUMBER,
+        info.buildUrl,
+        '0s',
+        info.branch,
+        info.commitMsg,
+        info.author,
+        info.commitTime
+    )
+}