返回

Jenkins集成编译获取代码提交记录及钉钉通知实现全流程自动化构建与通知

后端

背景

在现代软件开发中,持续交付已成为主流实践,它强调代码更改的频繁交付和自动化。Jenkins是实现持续交付的常用工具,它可以帮助团队自动化构建、测试和部署过程。

为了进一步提高持续交付效率,我们需要在Jenkins集成编译完成后,向项目组钉钉群推送编译和打包通知。然而,项目组同学还希望从通知中快速了解代码变更内容。这提出了一个新的需求:将代码提交记录集成到钉钉通知中。

Jenkins集成编译

Jenkins通过调用钩子URL来启动编译,钩子URL是Jenkins提供的一个特殊URL,当代码提交到版本控制系统(例如Git)时,触发Jenkins执行构建任务。

在Jenkins中配置钩子URL时,我们需要选择触发器。对于此需求,我们选择“GitHub hook trigger for GITScm polling”。配置完成后,每次代码提交到版本控制系统时,都会触发Jenkins执行构建任务。

获取代码提交记录

为了从钉钉通知中获取代码提交记录,我们需要使用Jenkins的Git插件。该插件提供了一个“获取提交日志”构建步骤,该步骤可以提取触发构建的提交记录。

在构建步骤中,我们可以使用如下Groovy脚本来提取提交记录:

import hudson.model.*

def changelog = ""
def build = Thread.currentThread().executable

for (change in build.changeSets) {
    for (entry in change.items) {
        changelog += "Commit: ${entry.commitId}\n"
        changelog += "Author: ${entry.author}\n"
        changelog += "Message: ${entry.msg}\n\n"
    }
}

return changelog

此脚本将获取所有提交记录,包括提交ID、作者和提交消息。

钉钉通知

我们使用钉钉机器人API发送通知。钉钉机器人API提供了一个Webhook URL,我们可以向该URL发送消息。

在Jenkins中,我们可以使用钉钉通知插件来发送通知。该插件提供了一个“钉钉通知”构建步骤,该步骤可以向钉钉群发送消息。

在构建步骤中,我们可以使用如下Groovy脚本来发送通知:

import hudson.model.*

def webhookURL = "https://oapi.dingtalk.com/robot/send?access_token=YOUR_ACCESS_TOKEN"
def changelog = build.getChangeLog(10)
def message = "**编译通知** \n\n" +
    "项目:${build.projectName}\n" +
    "分支:${build.branch}\n" +
    "构建号:${build.number}\n" +
    "状态:${build.result}\n" +
    "\n**代码变更记录** \n\n" +
    changelog

def body = [
    "msgtype": "markdown",
    "markdown": [
        "title": "编译通知",
        "text": message
    ]
]

def response = new URL(webhookURL).openConnection()
response.setRequestMethod("POST")
response.setRequestProperty("Content-Type", "application/json")
response.outputStream.write(body.toString().getBytes())
response.outputStream.close()

此脚本将发送一个Markdown格式的通知,其中包含编译状态、代码变更记录等信息。

全流程自动化构建与通知

通过以上配置,我们可以实现Jenkins集成编译,获取代码提交记录,并向钉钉群发送通知的全流程自动化构建与通知。

当代码提交到版本控制系统时,Jenkins将自动触发构建任务。构建完成后,Jenkins将提取代码提交记录,并发送通知到钉钉群。项目组同学可以通过钉钉通知快速了解编译状态和代码变更内容,从而提高测试效率。

总结

本文介绍了如何在Jenkins集成编译后获取代码提交记录并发送钉钉通知。这可以帮助项目组实现全流程自动化构建与通知,从而提高持续交付效率。