App上架:Jenkins Plugin
Worktile应用市场迎来新成员Jenkins Plugin。
Jenkins是一个开源的构建工具,它提供了数百个插件,使世界各地的开发人员能够可靠地构建,测试和部署软件。这次Worktile应用市场中上架的Jenkins是Jenkins的插件之一,对应着Jenkins官方插件市场中的Worktile Plugin,它可以将Jenkins的构建、部署记录同步到Worktile中。
我们先来看一下使用效果:
在一个工作项的开发面板中,有两个区域:构建和部署。构建区域由若干条构建记录组成,每一条构建记录由构建名、构建号、概述和构建时长组成。部署区域由若干条部署记录组成,每一条部署记录由环境名、部署装填、版本号和部署时长组成。通过安装配置Worktile Plugin,这些数据将被同步到Worktile中,并自动和相关的工作项关联,在点击这些数据时,可以跳转到Jenkins的相关页面查看源数据。
配置方式
首先,进入Worktile研发版的“后台管理”->“应用管理”->“自定义应用”页面。新建应用,输入应用名“Jenkins Plugin”,鉴权方式选择“Client Credentials”,将“DevOps:构建”和“DevOps:发布”的权限设置为“读写”,点击确定。在列表中拷贝ClientId和Secret备用。
然后,进入您的Jenkins -> “Manage Jenkins” -> “Manage Plugins” -> “Available” 页面,搜索插件“Worktile”并安装,重启Jenkins。进入Jenkins -> “Manage Jenkins” -> “Configure System”页面,找到“Worktile application”节点,安装如下进行配置:
Endpoint: https://open.worktile.com
Client ID: {您刚拷贝的ClientId}
Client Secret: {您刚拷贝的Secret}
Secret不能直接拷贝使用,需要通过Jenkins凭据的方式使用,只需点击"Add"->"Jenkins",Kind选择"Secret text",将您的Secret拷贝到Secret中,点击"Add"即可。
使用方式
对于Pipeline类型的Job,您可以在您的Jenkinsfile中使用如下方式发送构建数据:
node {
try {
// your scripts
}catch(e) {
// your scripts
}
finally{
// 安装插件后的内置全局函数,在指定时机将构建记录发送到Worktile中
worktileBuildRecord(
// 字符串类型,它允许您提供一个正则表达式,匹配执行日志中的一行
overviewPattern: "^JENKINS",
// 布尔类型,为true时,函数内报错会导致Jenkins Job执行失败
failOnError: false
)
}
}
您可以在您的Jenkinsfile中使用如下方式发送部署数据:
node {
try {
// your scripts
}catch(e) {
// your scripts
}
finally{
// 安装插件后的内置全局函数,在指定时机将部署记录发送到Worktile中
worktileDeployRecord(
// 字符串类型,本次部署的部署名,推荐使用git tag,通过环境变量传值
releaseName: "release-${BUILD_ID}",
// 环境名称,例如test,beta,production等
environmentName: "your-release-env-name",
// 环境地址
releaseURL: "your-release-url",
// 布尔类型,为true时,函数内报错会导致Jenkins Job执行失败
failOnError: false
)
}
对于更多说明和freestyle类型的Job,您可以参考详细说明
关联工作项
正常情况下,一次构建记录或部署记录只会和部分工作项关联,这取决于您的Jenkins Job的触发原因。
当Jenkins Job由一次git push触发时,此次push中所有的commits提及的工作项将自动和此次Job运行时发送的构建记录和部署记录关联。例如:
一个git push中包含三个commits:
feat(scope): #PLM-110 add something
feat(scope): #PLM-111 #PLM-112 add something
feat(scope): #PLM-113 add something
由这个push触发的Jenkins Job中包含如下命令:
worktileBuildRecord(
overviewPattern: "^JENKINS",
failOnError: false
)
worktileDeployRecord(
releaseName: "release-${BUILD_ID}",
environmentName: "test",
releaseURL: "https://plugins.jenkins.io/",
failOnError: false
)
那么编号为#PLM-110, #PLM-111, #PLM-112, #PLM-113的工作项中都会分别出现一条构建记录和一条部署记录。
当Jenkins Job由一次git tag触发时,此次tag和上一个tag之间所有的commits提及的工作项将自动和此次Job运行时发送的构建记录和部署记录关联。例如:
feat(scope): #PLM-110 add something (git tag v1.0.1)
feat(scope): #PLM-111 #PLM-112 add something
feat(scope): #PLM-113 add something (git tag v1.0.0)
当v1.0.1触发Jenkins Job运行时,那么编号为#PLM-110, #PLM-111, #PLM-112的工作项中都会分别出现一条构建记录和一条部署记录。
插件开源
最后,因为这个插件是开源的,所以对于插件的建议可以通过pull request的方式提交到 https://github.com/jenkinsci/worktile-plugin。也可以将代码fork到个人仓库中,重新编译生成插件,然后通过手动安装插件的方式安装修改后的插件。