文档首页/ 代码检查 CodeArts Check/ 最佳实践/ CodeArts Check通过调用API执行MR增量检查
更新时间:2025-01-16 GMT+08:00
分享

CodeArts Check通过调用API执行MR增量检查

应用场景

在用户实际的使用场景中,用户往往有构建自己的代码质量管控平台,集成代码检查及其他检查项的需求。并且在用户的应用场景中,MR合入过程中的质量监控是一个高频应用场景。

本示例介绍如何通过调用CodeArtsCheck API方式,执行MR增量代码检查并获取检查结果。通过调用CodeArtsCheck API可以不使用华为云前端,从而构建自己的全流程代码质量管控平台,同时也可以实现对非Codearts Repo代码仓的门禁级检查。本示例将以通用Git为例,进行方案介绍。

约束限制

  • 每个通用Git扩展点仅能对接单个代码仓地址,同时1个CodeArts项目下的扩展点数量限制为1000。
  • 示例仅介绍如何调用CodeArtsCheck API以实现执行MR增量代码检查并获取检查结果的功能,具体集成方式请用户根据实际业务场景选择。

前提准备

开通并授权使用代码检查服务授权使用代码检查服务。

操作流程

表1 操作流程

流程

说明

创建代码检查任务所属项目

为本实践新建项目。

新建通用Git服务扩展点

本实践检查第三方代码仓的代码质量,代码检查服务需通过CodeArts提供的扩展插件连接到第三方代码仓。

获取服务扩展点ID

获取服务扩展点ID,在使用API时需要填写。

创建MR检查任务并获取任务ID

创建代码检查任务并获取任务ID。

执行并查询MR任务状态

通过执行脚本,执行代码检查任务。

查询缺陷详情

通过API查询缺陷详情。

创建代码检查任务所属项目

  1. 使用华为云账号登录华为云控制台页面
  2. 单击页面左上角,在服务列表中选择开发与运维 > 软件开发生产线 CodeArts
  3. 单击“立即使用”,进入CodeArts服务首页。
  4. 在首页单击“新建项目”,选用“Scrum”项目模板。项目名称填写“Scrum01”,其他参数保持默认即可。
  5. 单击“确定”后,进入到“Scrum01”项目下。

新建通用Git服务扩展点

服务扩展点(Endpoint)是软件开发生产线的一种扩展插件,为软件开发生产线提供链接第三方代码仓的能力。

代码检查服务默认检查CodeArts Repo服务的代码质量,同时也可使用服务扩展点连接第三方代码仓库检查代码质量。

  1. 在项目下的CodeArts Check服务页面的导航栏选择设置 > 通用设置 > 服务扩展点管理
  2. 单击“新建服务扩展点”,在下拉列表中选择“通用Git”
  3. 在弹框中配置以下信息,单击“确定”

    表2 新建通用Git服务扩展点

    参数

    说明

    连接名称

    自定义,支持中文、英文、数字、“-”、“_”、“.”、空格,不超过256个字符。例如:Endpoint01。

    Git仓库Url

    输入待连接的Git仓库的https地址。

    用户名

    输入待连接的Git仓库的用户名,不超过300个字符。

    密码或Access Token

    输入待连接的Git仓库的密码,不超过300个字符。

获取服务扩展点ID

  1. 在服务扩展点详情页,按键盘“F12”,选择“Network”页签。
  2. 单击扩展点名称,其中“user_permission”为服务扩展点ID。

    图1 服务扩展点ID

创建MR检查任务并获取任务ID

  1. 以下为新建全量任务的请求示例。

    增量检查任务依赖于全量任务,所以需要先创建全量任务。
    CreateTask:POST /v2/{project_id}/task
    {
      "git_url": "https://codehub-dg-g.huawei.com/userID/CloudBuildTest01.git", #如果使用CodeArts Repo代码仓,需具备Repo仓的相关权限且需填写ssh地址
      "git_branch": "master",
      "language": [
        "JAVA"
      ],
      "task_type": "full", #任务类型
      "username": "zxxxw", #用户名,仅在三方仓场景下使用
      "access_token": "f2xxxb0", #密码或用户token,仅在三方仓场景下使用
      "endpoint_id": "fxxxxxsz" #服务扩展点ID
    }

  2. 新建全量任务的返回结果。响应值为全量任务的任务ID,即创建增量任务需要用到的“parent_task_id”

    创建全量任务后,可在华为云对应局点账号下的项目中,查看到新建的代码检查任务。

  3. 新建MR增量代码检查任务的请求示例。

    CreateTask:/v2/{project_id}/task
    {
      "git_url": "https://codehub-dg-g.huawei.com/userID/CloudBuildTest01.git",#如果使用CodeArts Repo代码仓,需具备Repo仓的相关权限且需填写ssh地址
      "git_branch": "master",
      "language": [
        "JAVA"
      ],
      "task_type": "inc", #任务类型
      "inc_config": {
        "parent_task_id": "8cxxx94", #全量任务id,增量任务挂载在全量任务下
        "git_source_branch": "dev003", #源分支
        "git_target_branch": "dev002", #目标分支
        "merge_id": "4", #MR编号,用于检查插件拉取增量代码
        "event_type": "merge_request", #事件类型,MR请求
        "action": "open", #状态,open为MR开启状态
        "title": "测试" #任务标题,根据需求填写
      }
    }

  4. 新建增量任务的返回结果。

    响应值为增量任务的任务ID,该ID在任务列表界面不可见,仅用于通过API接口创建、执行和查询MR任务的场景。

执行并查询MR任务状态

  1. 执行MR任务的请求示例。

    RunTask:POST /v2/tasks/{task_id}/run
    {
    }

  2. 执行MR任务的返回结果。

    响应值为MR任务对应的执行ID,也就是1个任务1次执行产生的1个job的ID。

  3. 轮询任务执行状态请求示例。

    ShowProgressDetail:GET /v2/tasks/{task_id}/progress

    “task_id”中填入MR任务ID以查询任务执行状态,任务状态0表示检查中,1表示检查失败,2表示检查成功,3表示任务中止。

  4. 轮询任务执行状态的返回结果。

查询缺陷详情

  1. 查询缺陷详情请求示例。

    ShowTaskDefects:GET /v2/tasks/{task_id}/defects-detail

    “task_id”中填入MR任务ID以查询缺陷详情,也可以通过其他接口查询概要等信息,更多使用方法参考API接口说明文档手册

  2. 查询缺陷详情的响应结果。

相关参考

相关文档

    OSZAR »