Skip to content

Commit

Permalink
perf: 优化获取用户的策略
Browse files Browse the repository at this point in the history
  • Loading branch information
liuweiGL committed Jan 14, 2023
1 parent 96daf9f commit 48b19a6
Showing 1 changed file with 32 additions and 16 deletions.
48 changes: 32 additions & 16 deletions src/main/java/io/jenkins/plugins/DingTalkRunListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -104,33 +104,37 @@ private BuildStatusEnum getBuildStatus(NoticeOccasionEnum noticeOccasion) {
}
}

private void log(TaskListener listener, String formatMsg, Object... args) {
DingTalkGlobalConfig globalConfig = DingTalkGlobalConfig.getInstance();
boolean verbose = globalConfig.isVerbose();
if (verbose) {
// Logger.line(listener, LineType.START);
Logger.debug(listener, "[钉钉插件]" + formatMsg, args);
// Logger.line(listener, LineType.END);
}
}

/**
* @see <a
* href="https://github.com/jenkinsci/build-user-vars-plugin/blob/master/src/main/java/org/jenkinsci/plugins/builduser/BuildUser.java">...</a>
*/
private Map<String, String> getUser(Run<?, ?> run, TaskListener listener) {
UserIdCause userIdCause = run.getCause(UserIdCause.class);
// 执行人信息
User user = null;
String executorName = null;
String executorMobile = null;

UserIdCause userIdCause = run.getCause(UserIdCause.class);
if (userIdCause != null && userIdCause.getUserId() != null) {
user = User.getById(userIdCause.getUserId(), false);
}

if (user == null) {
RemoteCause remoteCause = run.getCause(RemoteCause.class);
UpstreamCause streamCause = run.getCause(UpstreamCause.class);
if (remoteCause != null) {
executorName = "remote " + remoteCause.getAddr();
} else if (streamCause != null) {
executorName = "project " + streamCause.getUpstreamProject();
executorName = String.format("%s %s", remoteCause.getAddr(), remoteCause.getNote());
} else {
UpstreamCause upstreamCause = run.getCause(UpstreamCause.class);
if (upstreamCause != null) {
Job<?, ?> job = Jenkins.get()
.getItemByFullName(upstreamCause.getUpstreamProject(), Job.class);
if (job != null) {
Run<?, ?> upstream = job.getBuildByNumber(upstreamCause.getUpstreamBuild());
if (upstream != null) {
return getUser(run, listener);
}
}
executorName = upstreamCause.getUpstreamProject();
}
}
if (executorName == null) {
log(listener, "未获取到构建人信息,将尝试从构建信息中模糊匹配。");
Expand Down Expand Up @@ -176,6 +180,18 @@ private boolean skip(TaskListener listener, NoticeOccasionEnum noticeOccasion,
return true;
}


private void log(TaskListener listener, String formatMsg, Object... args) {
DingTalkGlobalConfig globalConfig = DingTalkGlobalConfig.getInstance();
boolean verbose = globalConfig.isVerbose();
if (verbose) {
// Logger.line(listener, LineType.START);
Logger.debug(listener, "[钉钉插件]" + formatMsg, args);
// Logger.line(listener, LineType.END);
}
}


private void send(Run<?, ?> run, TaskListener listener, NoticeOccasionEnum noticeOccasion) {
Job<?, ?> job = run.getParent();
DingTalkJobProperty property = job.getProperty(DingTalkJobProperty.class);
Expand Down

0 comments on commit 48b19a6

Please sign in to comment.