jenkins钉钉插件自定义

有时我们根据业务的需要,可能要在jenkins集成项目之后,在钉钉通知消息的时候,能区分是测试环境还是正式环境打包

1、下载钉钉源码:https://github.com/jenkinsci/dingding-notifications-plugin

本地克隆之后,用Idea打开

2、目录结构:

jenkins钉钉插件自定义_第1张图片

a、修改config.jelly,增加如下代码到:


    

jenkins钉钉插件自定义_第2张图片

b、DingdingNotifier类,增加:

public String envType;

jenkins钉钉插件自定义_第3张图片

c、DingdingServiceImpl类,

private String envType;
private EnvVars env;

jenkins钉钉插件自定义_第4张图片

@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);
    }
}

jenkins钉钉插件自定义_第5张图片

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

会在编译文件夹下生成:

jenkins钉钉插件自定义_第6张图片

4、切换到jenkins页面,清除钉钉之前的插件,

jenkins钉钉插件自定义_第7张图片

 

上传自定义插件,找到刚打包好的文件夹

jenkins钉钉插件自定义_第8张图片

上传成功之后需要重启jenkins才能生效,关闭窗口,切换到jenkins目录执行:java -jar jenkins.war --httpPort=8080

5、jenkins构建:

jenkins钉钉插件自定义_第9张图片

打包类型根据实际情况填入测试环境,还是正式环境,打包成功之后如下图:

jenkins钉钉插件自定义_第10张图片

参考:

https://blog.csdn.net/u011541946/article/details/78634786

https://blog.csdn.net/u011541946/article/details/78779921

你可能感兴趣的:(jenkins钉钉插件自定义)