| 
					
				 | 
			
			
				@@ -1,28 +1,22 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 #!/usr/bin/env groovy 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-/** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * 在 pipeline 的开始 & 结束各调用一次即可: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * onBuildEvent('start') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- * onBuildEvent('end') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 def call(String phase) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // 从 Jenkins 环境变量里取值 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 先读凭据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    String webhook = credentials('feishu-webhook') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 组装卡片(同上,略) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     String jobName = env.JOB_NAME 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     String buildNum = env.BUILD_NUMBER 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    String branch = env.GIT_BRANCH ?: 'unknown' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    String result = currentBuild.currentResult ?: 'UNKNOWN' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    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' ? '开始' : '结束'}通知" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            title: [ tag: "plain_text", content: "Jenkins ${phase == 'start' ? '开始' : '结束'}通知" ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             template: headerColor 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ], 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         elements: [ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -41,7 +35,6 @@ def call(String phase) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    // 只读取 webhook 凭据,不处理 secret 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    String webhook = credentials('feishu-webhook') 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    // 把真正的 url 传进去 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     feishu.send(webhook, card) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 } 
			 |