自己动手开发一个Android持续集成工具-6

537 阅读2分钟

本系列代码地址 github

相关资料 gradle in action中英文对照版

回到目录

上一篇中,我们实现了总体流程。但略显粗糙。今天我们就对一些细节进行优化。

现在我们的工具发送到企业微信中的消息样式是这样的:

经过本次优化,我们发送到企业微信中的样式是这样的:

之所以改成这样,主要有以下几个原因:

  1. 看着漂亮:颜值就是战斗力
  2. 显得专业:毕竟是程序员,这个B还是得装一下的
  3. 方便:相关人员应该知道的信息都在这里了,下载地址,下载密码,发布的版本,发布的服务器环境等,一看便知,不需要再通知测试人员和其他相关人员了。

前两点纯属扯淡,第三点确实有必要。所以接下来我们来实现它。

我们找到“sendWeChatMessage” task,然后找到生成markdown消息的代码,如下:


def markdownText = """
#### 一个新的测试包已经上传
"""

改成如下:


        def markdownText = """

# 一个新的测试包已经上传 

 > - versionName: ${android.defaultConfig.versionName}
 
 > - versionCode: ${android.defaultConfig.versionCode}

 > - 服务器: 线上服务器

 > - 密码: 123456

 > - 下载地址: [https://www.pgyer.com/KIqO](https://www.pgyer.com/KIqO)

"""

“versionName”和“versionCode”这两个参数可以在“android.defaultConfig”中获取。“密码”和“下载地址”可从蒲公英获取。关键是这个服务器的参数,需要根据我们具体执行的是哪个task来确定。比如我们现在执行的是“publishReleaseRelease”这个任务,打的就是线上服务器的包。这就涉及到task之间共享数据。

stackoverflow上提供了两种方式,感兴趣的可以详细了解下。我们在这里直接使用全局变量的方式来实现。在build.gradle中定义一个变量“serverName”,如下:

......
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
//定义变量
def serverName = "默认服务器"
......

task publishReleaseRelease(dependsOn: "assembleRelease") {
    ......
    doLast {
        println "publishReleaseRelease doLast called......"
        serverName = "线上服务器"
    }

    finalizedBy(uploadPgyerByApi)
}

task sendWeChatMessage() {
    doLast {
    ......
 > - 服务器: ${serverName}
    ......
    }
}
......

这样我们在不同的任务中为“serverName”指定不同的服务器名就可以了。

然后别忘了,蒲公英上的更新说明和历史记录里我们也应该把对应的服务器信息记录下来,方便以后查找,如下图的两个位置:

同样的,我们利用上面的“serverName”参数,修改蒲公英上传时候的参数如下:

这样我们再上传的时候就会在蒲公英中记录下对应版本的服务器信息,如下:

好了,到这一步,我们的工具基本上就像那么一回事了,可以用了。