diff --git a/HuaweiCloud-obs-uploader.hpi b/HuaweiCloud-jenkins-plugins.hpi
similarity index 98%
rename from HuaweiCloud-obs-uploader.hpi
rename to HuaweiCloud-jenkins-plugins.hpi
index d63f888b3e2caa1a3b225f42d1322505926e676b..2db92d7a8229d91160019ab8da51870c01b865fe 100644
Binary files a/HuaweiCloud-obs-uploader.hpi and b/HuaweiCloud-jenkins-plugins.hpi differ
diff --git a/README.md b/README.md
index be98d5294c990523ae1c3a51efc5137f544feb02..1f27d3282c08bbd41c82cc3c4b1dafc28fbf171e 100644
--- a/README.md
+++ b/README.md
@@ -7,8 +7,8 @@
#### 下载源码&编译
```bash
-git clone https://gitee.com/HuaweiCloudDeveloper/obs-jenkins-plugins.git
-cd obs-jenkins-plugins
+git clone https://gitee.com/HuaweiCloudDeveloper/huaweicloud-jenkins-plugins.git
+cd huaweicloud-jenkins-plugins
mvn package -DskipTests
```
#### 上传插件
diff --git a/pom.xml b/pom.xml
index b133075e47b29f3d0d665688366e6e10561f900e..7d25f97bca85403eed28c05a655dab32fd178cc4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -8,7 +8,7 @@
io.jenkins.plugins
- HuaweiCloud-obs-uploader
+ HuaweiCloud-jenkins-plugins
${revision}${changelist}
hpi
TODO Plugin
diff --git a/src/main/java/com/huawei/jenkins/cloudpipeline/CodeArtsPipelineService.java b/src/main/java/com/huawei/jenkins/cloudpipeline/CodeArtsPipelineService.java
index fb89d115d54740cf7299e1f9e316bf8474600dbe..23a3826c0ba73f538bdda9ef73a822fb0a13d9d5 100644
--- a/src/main/java/com/huawei/jenkins/cloudpipeline/CodeArtsPipelineService.java
+++ b/src/main/java/com/huawei/jenkins/cloudpipeline/CodeArtsPipelineService.java
@@ -9,10 +9,17 @@ import com.huaweicloud.sdk.core.auth.ICredential;
import com.huaweicloud.sdk.core.exception.ConnectionException;
import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
import com.huaweicloud.sdk.core.exception.ServiceResponseException;
+import com.huaweicloud.sdk.smn.v2.SmnClient;
+import com.huaweicloud.sdk.smn.v2.model.PublishMessageRequest;
+import com.huaweicloud.sdk.smn.v2.model.PublishMessageRequestBody;
+import com.huaweicloud.sdk.smn.v2.model.PublishMessageResponse;
+import com.huaweicloud.sdk.smn.v2.region.SmnRegion;
import hudson.model.TaskListener;
import org.apache.commons.lang.StringUtils;
import java.io.Serializable;
+import java.text.SimpleDateFormat;
+import java.util.Date;
public class CodeArtsPipelineService implements Serializable {
@@ -34,16 +41,22 @@ public class CodeArtsPipelineService implements Serializable {
RunPipelineDTO body = new RunPipelineDTO();
request.withBody(body);
String status = "RUNNING";
+ ShowPipelineRunDetailResponse info = null;
try {
RunPipelineResponse response = client.runPipeline(request);
while (!status.equals("COMPLETED")&&!status.equals("FAILED")) {
- status = ShowPipelineRunDetail(client, listener, customInput);
+ info = ShowPipelineRunDetail(client, listener, customInput);
+ status = info.getStatus();
try {
Thread.currentThread().sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
+ //SMN消息通知
+ if(StringUtils.isNotBlank(customInput.getTopicUrn())){
+ publishMessage(customInput, info, listener);
+ }
} catch (ConnectionException e) {
e.printStackTrace();
} catch (RequestTimeoutException e) {
@@ -56,14 +69,13 @@ public class CodeArtsPipelineService implements Serializable {
}
- public static String ShowPipelineRunDetail(CloudPipelineClient client, TaskListener listener, CustomInput customInput) {
+ public static ShowPipelineRunDetailResponse ShowPipelineRunDetail(CloudPipelineClient client, TaskListener listener, CustomInput customInput) {
ShowPipelineRunDetailRequest request = new ShowPipelineRunDetailRequest();
request.withProjectId(customInput.getProject_id());
request.withPipelineId(customInput.getPipeline_id());
- String status = "RUNNING";
+ ShowPipelineRunDetailResponse response = null;
try {
- ShowPipelineRunDetailResponse response = client.showPipelineRunDetail(request);
- status = response.getStatus();
+ response = client.showPipelineRunDetail(request);
listener.getLogger().println("status:" + response.getStatus());
} catch (ConnectionException e) {
e.printStackTrace();
@@ -73,7 +85,7 @@ public class CodeArtsPipelineService implements Serializable {
e.printStackTrace();
listener.getLogger().println("ErrorMsg:" + e.getErrorMsg());
}
- return status;
+ return response;
}
private static void inputValidate(CustomInput customInput) {
@@ -90,7 +102,37 @@ public class CodeArtsPipelineService implements Serializable {
+ public static void publishMessage(CustomInput customInput, ShowPipelineRunDetailResponse info, TaskListener listener) {
+ ICredential auth = new BasicCredentials()
+ .withAk(customInput.getAk())
+ .withSk(customInput.getSk());
+ SmnClient client = SmnClient.newBuilder()
+ .withCredential(auth)
+ .withRegion(SmnRegion.valueOf(customInput.getRegion()))
+ .build();
+ PublishMessageRequest request = new PublishMessageRequest();
+ request.withTopicUrn(customInput.getTopicUrn());
+ PublishMessageRequestBody body = new PublishMessageRequestBody();
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ String message = "尊敬的华为云用户,您好:\n执行CodeArts pipeline的信息:";
+ message+="\nname:" + info.getName();
+ message+="\n开始时间:" + sdf.format(new Date(Long.parseLong(String.valueOf(info.getStartTime()))));
+ message+="\n结束时间:" + sdf.format(new Date(Long.parseLong(String.valueOf(info.getEndTime()))));
+ message+="\n结果:" + info.getStatus();
+ body.withMessage(message);
+ request.withBody(body);
+ try {
+ PublishMessageResponse response = client.publishMessage(request);
+ } catch (ConnectionException e) {
+ e.printStackTrace();
+ } catch (RequestTimeoutException e) {
+ e.printStackTrace();
+ } catch (ServiceResponseException e) {
+ e.printStackTrace();
+ listener.getLogger().println("SMN服务消息发生失败,错误信息:" + e.getErrorMsg());
+ }
+ }
diff --git a/src/main/java/com/huawei/jenkins/cloudpipeline/CodeArtsPipelineStep.java b/src/main/java/com/huawei/jenkins/cloudpipeline/CodeArtsPipelineStep.java
index a4cec48fc332c9a0ddd4f0e6c33fd0381bf2df31..dade73b1edfce15b36ccab852f3a5ffe4e0177bf 100644
--- a/src/main/java/com/huawei/jenkins/cloudpipeline/CodeArtsPipelineStep.java
+++ b/src/main/java/com/huawei/jenkins/cloudpipeline/CodeArtsPipelineStep.java
@@ -43,6 +43,8 @@ public class CodeArtsPipelineStep extends Step {
private String pipeline_id;
+ private String topicUrn;
+
public String getAk() {
return ak;
}
@@ -88,6 +90,15 @@ public class CodeArtsPipelineStep extends Step {
this.pipeline_id = pipeline_id;
}
+ public String getTopicUrn() {
+ return topicUrn;
+ }
+
+ @DataBoundSetter
+ public void setTopicUrn(String topicUrn) {
+ this.topicUrn = topicUrn;
+ }
+
@DataBoundConstructor
public CodeArtsPipelineStep(String region) {
this.region = region;
@@ -141,6 +152,7 @@ public class CodeArtsPipelineStep extends Step {
customInput.setRegion(step.getRegion());
customInput.setProject_id(step.getProject_id());
customInput.setPipeline_id(step.getPipeline_id());
+ customInput.setTopicUrn(step.getTopicUrn());
TaskListener listener = Execution.this.getContext().get(TaskListener.class);
return CodeArtsPipelineService.runPipeline(listener, customInput);
}
diff --git a/src/main/java/com/huawei/jenkins/cloudpipeline/CustomInput.java b/src/main/java/com/huawei/jenkins/cloudpipeline/CustomInput.java
index 7907b6549486eff2e0d957019c5828b0a946f2b5..d448bb45850252706742bead078fcec669f185d5 100644
--- a/src/main/java/com/huawei/jenkins/cloudpipeline/CustomInput.java
+++ b/src/main/java/com/huawei/jenkins/cloudpipeline/CustomInput.java
@@ -18,6 +18,8 @@ public class CustomInput implements Serializable {
private String pipeline_id;
+ private String topicUrn;
+
public String getAk() {
return ak;
}
@@ -57,4 +59,12 @@ public class CustomInput implements Serializable {
public void setPipeline_id(String pipeline_id) {
this.pipeline_id = pipeline_id;
}
+
+ public String getTopicUrn() {
+ return topicUrn;
+ }
+
+ public void setTopicUrn(String topicUrn) {
+ this.topicUrn = topicUrn;
+ }
}