功能日记

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到个人仓库中,重新编译生成插件,然后通过手动安装插件的方式安装修改后的插件。