| 
					
				 | 
			
			
				@@ -1,27 +1,53 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #!/usr/bin/env groovy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.example.FeishuNotifier 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-def call(String webhookUrl, String status) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // 1. 采集常规信息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 公共采集逻辑 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+@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 branch     = env.brach ?: env.GIT_BRANCH ?: env.BRANCH_NAME ?: 'unknown' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    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 [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        duration : duration, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        commitMsg: commitMsg, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        author   : author, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        commitTime: commitTime, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        branch   : branch, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        buildUrl : buildUrl 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // 2. 把原始 BUILD_URL 改成走 Nginx 代理的 https 域名 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    def buildUrl = env.BUILD_URL.replace('http://68.79.46.88:8080', 'https://jenkins.adwebcloud.com') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 任务开始时调用 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+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 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // 3. 发送飞书消息 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+// 任务结束时调用(就是你现在的 call) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+def call(String webhookUrl, String status) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    def info = gatherCommonInfo() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     new FeishuNotifier(this, webhookUrl).send( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         status, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         env.JOB_NAME, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         env.BUILD_NUMBER, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        buildUrl,    
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        duration, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        branch, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        commitMsg, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        author, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        commitTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        info.buildUrl, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        info.duration, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        info.branch, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        info.commitMsg, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        info.author, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        info.commitTime 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |