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

1,900 阅读2分钟

本系列代码地址 github

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

回到目录

上一篇,我们已实现了应用的打包和上传这个流程。这一篇我们接着来实现apk上传成功后发送消息到钉钉或者企业微信这个功能。

不失一般性,我们用企业微信来实现这个功能。

企业微信提供群机器人的功能,在终端某个群组添加机器人之后,可以获取到webhook地址,然后开发者用户按以下说明构造post data向这个地址发起HTTP POST 请求,即可实现给该群组发送消息。下面举个简单的例子.具体的使用方式大家可以看官方文档。

我们现在企业微信中创建一个群,把开发人员和相关测试人员等添加到这个群里。

添加一个群机器人。企业微信如何添加群机器人

把机器人的webhook地址记录下来。

接下来我们创建发送消息的任务,代码如下:


task sendWeChatMessage(){
    group "publish"
    doLast{
        def robotUrl = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=bece9001-ab3e-44f2-913e-5560a9633de2"

        def markdownText = """
#### 一个新的测试包已经上传
"""
        def builder = new JsonBuilder({
            msgtype "markdown"
            markdown {
                content markdownText
            }
        })


        URL url = new URL(robotUrl)
        URLConnection connection = url.openConnection()
        connection.setDoInput(true)
        connection.setDoOutput(true)
        connection.setUseCaches(false)
        connection.setRequestMethod("POST")
        connection.setRequestProperty("Content-Type", "application/json")

        connection.connect()

        OutputStream outStream = connection.getOutputStream()

        outStream.write(builder.toString().getBytes())

        InputStream inStream = connection.getInputStream()

        Scanner scanner = new Scanner(inStream)

        while (scanner.hasNextLine()) {
            println scanner.nextLine()
        }
        outStream.close()
        inStream.close()
    }
}

我们执行测试下这个任务,对应的群里会收到消息,如下:

接下来,我们就把这个任务和前面完成的流程串起来。

我们在build.gradle中添加如下代码:


uploadPgyerByApi.finalizedBy(sendWeChatMessage)

这句代码的意思是在“uploadPgyerByApi” task 执行完成后执行“sendWeChatMessage” task。

然后我们再执行“publishReleaseRelease” task,发现已经完整执行了三个步骤:

  1. 打包应用apk
  2. 上传应用到蒲公英
  3. 发送消息到企业微信群里,通知相关如愿

发送消息到钉钉等其他支持聊天机器人的功能是一样的,感兴趣的可以自己实现以下。

但我们现在的实现还比较粗糙,下一遍,我们还会对其进行优化。