有时我们根据业务的需要,可能要在jenkins集成项目之后,在钉钉通知消息的时候,能区分是测试环境还是正式环境打包
1、下载钉钉源码:
https://github.com/jenkinsci/dingding-notifications-plugin
本地克隆之后,用Idea打开
2、目录结构:
a、修改config.jelly,增加如下代码到:
<f:entry title="打包类型" field="envType" description="自动获取参数化构建,表示打包环境.">
<f:textbox />
</f:entry>
b、
DingdingNotifier类,增加:
public String envType;
c、DingdingServiceImpl类,
private String envType;
private EnvVars env;
@Override
public void success() throws IOException, InterruptedException {
String pic = "http://icons.iconarchive.com/icons/paomedia/small-n-flat/1024/sign-check-icon.png";
String title = String.format("%s%s构建成功,本次打包环境:%s", build.getProject().getDisplayName(), build.getDisplayName(),getEnvType());
String content = String.format("项目[%s%s]构建成功, summary:%s, duration:%s", build.getProject().getDisplayName(), build.getDisplayName(), build.getBuildStatusSummary().message, build.getDurationString());
String link = getBuildUrl();
logger.info(link);
if (onSuccess) {
logger.info("send link msg from " + listener.toString());
sendLinkMessage(link, content, title, pic);
}
}
public String getEnvType() throws IOException, InterruptedException {
env = build.getEnvironment(listener);
return env.expand(envType);
}
其实就是把DingdingServiceImpl类中,实现接口的函数中的title内容改写
d、JobListener类,try-catch一下,刚抛出的异常
3、打包
首先确保,maven已经添加到环境变量中,切换到项目路径,cmd窗口运行,执行:mvn package
会在编译文件夹下生成:
4、切换到jenkins页面,清除钉钉之前的插件,
上传自定义插件,找到刚打包好的文件夹
上传成功之后需要重启jenkins才能生效,关闭窗口,切换到jenkins目录执行:java -jar jenkins.war –httpPort=8080
5、jenkins构建:
打包类型根据实际情况填入测试环境,还是正式环境,打包成功之后如下图:
参考: