集成码云功能简介 分享链接

作者:刚哥 最后编辑:薛才杰 于 2019-09-25 14:03:04 浏览量:4190
摘要:禅道专业版提供了集成码云的功能。通过集成可以使用码云账号登录禅道,把码云的仓库和禅道的项目关联,用户在码云提交的信息可以同步到禅道的历史记录中。

禅道专业版提供了集成码云的功能。通过集成可以使用码云账号登录禅道,把码云的仓库和禅道的项目关联,用户在码云提交的信息可以同步到禅道的历史记录中。下面给大家介绍具体的功能:

一、禅道集成码云

1、登录禅道后找到 后台=>码云集成,在这个页面上有集成码云需要用到的所有信息,如下图所示:

Client ID、Client Secret 和 回调地址用于码云的OAuth登录以及API调用,代号、密钥和请求入口用于码云向禅道验证任务有效性及同步信息。

2、在码云的个人设置页面找到第三方应用,新建一个应用,在应用回调地址中填入上一步获取的回调地址,勾选应用需要用户赋予的权限,创建应用。如图:

3、创建应用后,打开应用可以看到码云生成的Client ID和Client Secret,把这两项的值填到第一步的禅道码云集成页面中,然后保存。

二、OAuth登录及API调用

1、登录

集成完成后在禅道登录页面会显示一个码云的图标,点击即可使用码云账号登录禅道,如图所示:

第一次登录的时候需要把码云账号和禅道账号进行绑定,这里需要输入禅道的用户名和密码,绑定完成后自动跳转到系统首页,如图所示:

2、解绑

绑定码云账号之后,可以通过禅道右上角的个人用户菜单里的个人档案页面解绑,如图所示:

3、关联码云仓库

绑定账号之后,在禅道中新建或者编辑项目时,即可和码云中的仓库关联,如图所示:

三、码云集成禅道

1、签名机制

码云需要将禅道集成码云页面所展示的代号、密钥及请求入口配置到自己的程序中,对请求进行签名再发送给禅道。请求的格式为/api.php?m=moduleName&f=methodName&params=params&code=code&token=token

其中 m=moduleName&f=methodName&params=params 部分为数据请求参数,根据实际的需求进行设置。code为代号,需要和上文中的代号保持一致。token为数字签名,其算法为请求参数中除去token的部分 md5,得到的结果和密钥相加,再进行 md5。

举例说明,码云接入代号为 gitee,密钥为 427c579384224abf9570779d82969d1e,请求验证id为1的任务,其 token 计算过程如下:

$key   = '427c579384224abf9570779d82969d1e';
$query = 'm=task&f=verify&id=1&code=gitee';
$token = md5(md5($query) . $key);

算得 token = fc4146db409e96d141c2bd277942fa69,请求 API 为 /api.php?m=task&f=verify&id=1&code=gitee&token=fc4146db409e96d141c2bd277942fa69。

2、API

禅道现在开放了一个接口给码云,用来验证任务的有效性以及同步信息,下面是简介:

2.1、验证任务

GET  /api.php?m=task&f=verify&repo={repo}&task={task}&code={code}&token={token}

名称 类型 必须/可选 说明
repo string 必须 仓库路径,项目的full_name,格式为 {owner}/{path}。
task int 必须 任务ID。
code string 必须 禅道中配置的代号。
token string 必须 根据上文签名机制计算出的token。

2.2、同步信息

POST /api.php?m=task&f=verify&repo={repo}&task={task}&code={code}&token={token}

名称 类型 必须/可选 说明
repo string 必须 仓库路径,项目的full_name,格式为 {owner}/{path}。
task int 必须 任务ID。
code string 必须 禅道中配置的代号。
token string 必须 根据上文签名机制计算出的token。
commit string 必须

JSON格式的同步信息,在下面有详细介绍。

commit的内容如下:

{

    "commit":

    {

        "userID":123456, //本次提交的用户ID

        "userName":"可曾记起爱", //本次提交的用户姓名

        "sha":"0cceddb7b", //本次提交的sha值

        "message":"Fix bugs.", //本次提交的注释信息

        "files":[ //本次提交的文件

            {

                "path":"/module/a.php", //文件路径

                "status":"modified", //文件状态

                "viewUrl":"https://gitee.com/superfireware_admin/qbit/blob/master/module/a.php", //文件浏览URL

                "diffUrl":"https://gitee.com/superfireware_admin/qbit/commit/0cceddb7bc5bd6e44f7c716c61609c00d60871f8#diff-0" //文件diff URL

            },

            {

                "path":"/module/b.php",

                "status":"removed",

                "viewUrl":"https://gitee.com/superfireware_admin/qbit/blob/master/module/b.php",

                "diffUrl":"https://gitee.com/superfireware_admin/qbit/commit/0cceddb7bc5bd6e44f7c716c61609c00d60871f8#diff-1"

            },

            {

                "path":"/module/c.php",

                "status":"added",

                "viewUrl":"https://gitee.com/superfireware_admin/qbit/blob/master/module/c.php",

                "diffUrl":"https://gitee.com/superfireware_admin/qbit/commit/0cceddb7bc5bd6e44f7c716c61609c00d60871f8#diff-2"

            }

        ]

    }

}

四、测试

禅道在线测试地址:http://gitee.test.zentao.net/task-test.html

测试帐号:gitee    密码:giteeZENTAO~!@#