云服务器内容精选

  • 检视代码、合并分支 开发人员发起合并请求。 开发人员Chris完成代码开发,确认无误后,即可发起合并请求,将功能分支合并到master中。 进入代码仓库,选择“合并请求”页签,单击“新建”。 源分支选择“Feature-Store”,目标分支选择“master”,单击“下一步”。 参照表3编辑合并请求详情。 表3 合并请求配置 配置项 配置建议 标题 输入“添加门店网络列表”。 合并人 单击,在弹框中勾选“Maggie”,单击“确定”。 审核人 单击,在弹框中勾选“Maggie”,单击“确定”。 单击“新建合并请求”完成合并请求的创建。 项目经理评审并完成代码合入。 本文档中,合并请求的评审人与合并人均是项目经理Maggie。因此Maggie可评审合并请求内容,并在评审通过后完成分支合入。 进入代码仓库后,选择“合并请求”页签,可找到由开发人员Chris创建的合并请求。 单击该请求,查看合并请求详情。 可在页面中留下评审意见。单击审核门禁中“通过”完成审核。 单击“合入”,将分支合入“master”。 如果发起分支合并请求时勾选了“合并后删除源分支”,分支“Feature-Store”将在分支合并完成后被删除。
  • 开始批量迁移 执行如下命令,查看脚本参数。 python migrate_to_repo.py -h usage: migrate_to_repo.py [-h] [-p {SSH,HTTP,ssh,http}] [-m {API,FILE,api,file}] optional arguments: -h, --help show this help message and exit -p {SSH,HTTP,ssh,http}, --protocol {SSH,HTTP,ssh,http} protocol specified for clone or push -m {API,FILE,api,file}, --mode {API,FILE,api,file} import mode # 参数说明 # -p 协议,默认是SSH协议,可选为SSH/ssh/HTTP/http
  • 最佳实践汇总 表1 常用最佳实践 实践 描述 批量迁移GitLab内网仓库到CodeArts Repo CodeArts Repo现有迁仓能力只支持公网之间迁移,缺少客户内网自建代码托管平台往Repo迁移的快速方案,因此提供批量迁移内网代码托管平台仓库到Repo的脚本。 如何批量将外部仓库导入CodeArts Repo CodeArts Repo现有迁仓能力只支持公网之间迁移,缺少客户内网自建代码托管平台往Repo迁移的快速方案,因此提供批量迁移内网代码托管平台仓库到Repo的脚本。 HE2E DevOps实践之管理代码 本文以“DevOps全流程示例项目”为例,介绍如何在项目中进行代码开发。
  • 分布式版本控制系统 分布式版本控制系统的特点是每个客户端都是代码仓库的完整镜像,包括项目文件的变更历史。所有数据分布的存储在每个客户端,不存在中央服务器。可能有人会问,公司使用Git分布式存储工具,也有“中央服务器”啊?其实,这个所谓的“中央服务器”仅仅是用来方便管理多人协作,任何一台客户端都可以胜任它的工作,它和所有客户端没有本质区别,如下图所示。 常见的分布式版本控制系统为Git、Mercurial、Bazaar、Bitkeeper。 分布式版本控制系统的优点与缺点如下表所示。 表2 分布式版本控制系统描述 优点 缺点 版本库本地化,版本库的完整克隆,包括标签、分支、版本记录等。 支持离线提交,适合跨地域协同开发。 分支切换快速高效,创建和删除分支成本低。 学习成本高,不容易上手。 只能针对整个仓库创建分支,无法根据目录建立层次性的分支。
  • 响应示例 状态码: 200 OK { "result": { "id": 2111974340, "type": "DiffNote", "body": "回复内容", "author": { "id": 9124, "name": "CodeHub_beta_dev", "username": "c369c68f1ff84679b5a8ed904d8bff1c", "state": "active", "avatar_url": "", "email": "liujian@example.com", "name_cn": "CodeHub_beta_dev", "web_url": "https://test.com/c369c68f1ff84679b5a8ed904d8bff1c", "nick_name": "我是昵称", "tenant_name": "devcloud_codehub_l00314597_01" }, "created_at": "2024-07-30T10:47:54.000+08:00", "updated_at": "2024-07-30T10:47:54.000+08:00", "system": false, "noteable_id": 38517, "noteable_type": "MergeRequest", "resolvable": true, "is_reply": true, "noteable_iid": 18, "discussion_id": "996f57b8fdd5e62678b16f0ea4f91688405fa72f", "project": "sll_test00006/mr_test", "diff_file": "a.txt", "diff": "@@ -0,0 +1,0 @@\n+1\r\n", "archived": false, "review_categories": "分类", "review_categories_cn": "分类", "review_modules": "模块", "severity": "suggestion", "severity_cn": "建议", "assignee": { "id": 9124, "name": "CodeHub_beta_dev", "username": "c369c68f1ff84679b5a8ed904d8bff1c", "state": "active", "avatar_url": "", "email": "liujian@example.com", "name_cn": "CodeHub_beta_dev", "web_url": "https://test.com/c369c68f1ff84679b5a8ed904d8bff1c", "nick_name": "我是昵称", "tenant_name": "devcloud_codehub_l00314597_01" }, "proposer": { "id": 9124, "name": "CodeHub_beta_dev", "username": "c369c68f1ff84679b5a8ed904d8bff1c", "state": "active", "avatar_url": "", "email": "liujian@example.com", "name_cn": "CodeHub_beta_dev", "web_url": "https://test.com/c369c68f1ff84679b5a8ed904d8bff1c", "nick_name": "我是昵称", "tenant_name": "devcloud_codehub_l00314597_01" }, "position": { "base_sha": "a9ce1513d5185d5fe2bac52c597f204ce695c4be", "start_sha": "a9ce1513d5185d5fe2bac52c597f204ce695c4be", "head_sha": "53c75fa88dc4e7d0b68d108b7f1ee0a5c4564f44", "old_path": "a.txt", "new_path": "a.txt", "position_type": "text", "new_line": 1 }, "resolved": false, "is_outdated": false }, "status": "success" }
  • 错误码 状态码 错误码 错误信息 描述 处理措施 400 CH.00401999 'body': The body is out of max length (8000 characters). 检视意见内容超过8000字符 降低内容长度 400 CH.00401015 字符串不可包括表情包或生僻字等无法识别的字符。 unicode编码\u0000 - \uffff,不支持emoji表情、部分生僻字等特殊字符 删除特殊字符 404 CH.00406001 当前合并请求未找到。 MR信息未找到 刷新MR页面后重试。 404 CH.00406048 通过noteId未查询到检视意见。 关联repository_id、merge_request_iid和discussion_id未查询到检视意见 检查并修改传参。 404 CH.00406049 检视意见类型错误。 关联repository_id、merge_request_iid和discussion_id未查询到检视意见 检查并修改传参。 404 CH.00406050 检视意见不属于此commit或merge request。 关联repository_id、merge_request_iid和discussion_id未查询到检视意见 检查并修改传参。 405 CH.00406019 当前不允许在合并后新增检视意见,请改变设置后再进行操作。 设置不允许对已合并mr新增意见 修改合并请求设置。
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 result NoteDto object 参数解释: 返回新建检视意见的相关信息。 取值范围: 无。 status String 参数解释: 响应状态。 取值范围: success,表示接口调用成功。 error,表示接口调用失败。 表5 NoteDto 参数 参数类型 描述 id Integer 参数解释: 评论id,主评论和回复不共用。 取值范围: 最小值:1 最大值:2147483647 type String 参数解释: note类型。 取值范围: DiffNote:文件变更页提的需要解决的检视意见。 MergeRequestNote:详情页提的需要解决的检视意见。 null:详情页提的不需要解决的意见。 body String 参数解释: 检视意见内容。 取值范围: 长度限制:8000字符。 字符限制:unicode编码\u0000 - \uffff,不支持emoji表情、部分生僻字等特殊字符。 blank限制:不能为null或空字符串或全是空格。 attachment String 参数解释: 附件(废弃字段)。 取值范围: 无。 author UserBasicDto object 参数解释: 作者详细信息。 取值范围: 无。 created_at String 参数解释: 创建时间。 约束限制: 格式:yyyy-MM-ddTHH:mm:ss.SSS+08:00 updated_at String 参数解释: 更新时间。 约束限制: 格式:yyyy-MM-ddTHH:mm:ss.SSS+08:00 system Boolean 参数解释: 是否是系统生成的日志。 取值范围: true:系统创建的检视意见。 false:用户创建的检视意见。 noteable_id Integer 参数解释: MR的id。 取值范围: 最小值:1 最大值:2147483647 noteable_type String 参数解释: 意见类型。 取值范围: MergeRequest:MR或CR下提的意见(MR或CR下点提交记录,选择一次提交加检视意见,仍是MergeRequest类型) Commit:代码下或一次提交下提的意见 commit_id String 参数解释: 关联的提交id:noteable_type为Commit的检视意见的特有字段,为此次提交的sha值。 取值范围: 只能为数字和字母,长度为40字符。 resolvable Boolean 参数解释: 意见是否需要解决。 取值范围: true:可解决的检视意见。 false或null:不可解决的检视意见。 is_reply Boolean 参数解释: 是否是回复的评论。 取值范围: true:回复的评论。 false:主评论。 resolved_by UserBasicDto object 参数解释: 检视意见的解决人。 取值范围: 无。 noteable_iid Integer 参数解释: MR的iid,表示为该仓库第几个MR。 取值范围: 最小值:1 最大值:2147483647 discussion_id String 参数解释: 检视意见id,主评论和回复共用。 取值范围: 只能为数字和字母,长度为40字符。 project String 参数解释: 项目路径。 取值范围: 无。 diff_file String 参数解释: 变更文件路径。 取值范围: 无。 diff String 参数解释: 变更文件内容。 取值范围: 无。 archived Boolean 参数解释: 检视意见是否已归档,归档后不允许编辑删除回复解决该意见。 取值范围: true:检视意见已归档。 false或null:检视意见未归档。 review_categories String 参数解释: 检视意见分类的key。 自定义分类的review_categories、review_categories_cn一致。 取值范围: 无。 review_categories_cn String 参数解释: 检视意见分类的中文名。 自定义分类的review_categories、review_categories_cn一致。 取值范围: 无。 review_modules String 参数解释: 检视意见模块。 取值范围: 无。 severity String 参数解释: 严重程度,非建议级别意见指派人和MR/Commit作者不能点解决。 取值范围: suggestion:建议; minor:一般; major: 严重; fatal:致命。 severity_cn String 参数解释: 严重程度中文名。 取值范围: 建议 一般 严重 致命 file_path String 参数解释: 文件路径(弃用)。 取值范围: 无。 line String 参数解释: 行号(弃用)。 取值范围: 无。 assignee UserBasicDto object 参数解释: 指派人详细信息。 取值范围: 无。 proposer UserBasicDto object 参数解释: 检视人详细信息。 取值范围: 无。 position PositionDto object 参数解释: 代码位置信息:意见关联何处代码 。 取值范围: 无。 resolved Boolean 参数解释: 检视意见是否已解决。 取值范围: true:检视意见已解决。 false或null:检视意见未解决。 is_outdated Boolean 参数解释: 是否过时。 取值范围: true:基于最新提交的检视意见。 false或null:不是基于最新提交的检视意见 表6 UserBasicDto 参数 参数类型 描述 id Integer 参数解释: 用户id。 取值范围: 最小值:1 最大值:2147483647 name String 参数解释: 名字。 取值范围: 长度为[0,255]个字符。 username String 参数解释: 用户名。 取值范围: 长度为[0,255]个字符。 state String 参数解释: 状态。 取值范围: 长度为[0,255]个字符。 avatar_url String 参数解释: 获取头像的url。 取值范围: 无。 avatar_path String 参数解释: 获取头像的路径。 取值范围: 无。 email String 参数解释: 邮箱。 取值范围: 无。 name_cn String 参数解释: 中文名。 约束限制: 此字段已弃用,取值同username。 取值范围: 无。 web_url String 参数解释: 主页url。 取值范围: 无。 nick_name String 参数解释: 昵称。 取值范围: 无。 tenant_name String 参数解释: 租户名称。 取值范围: 无。 表7 PositionDto 参数 参数类型 描述 base_sha String 参数解释: 源分支base提交节点。 取值范围: 只能为数字和字母,长度为40字符。 start_sha String 参数解释: 源分支最新提交节点。 取值范围: 只能为数字和字母,长度为40字符。 head_sha String 参数解释: 目标分支最新提交节点。 取值范围: 只能为数字和字母,长度为40字符。 old_path String 参数解释: 修改前文件路径。 取值范围: 无。 new_path String 参数解释: 修改后文件路径。 取值范围: 无。 position_type String 参数解释: 变更类型。 取值范围: 无。 默认取值: text。 old_line Integer 参数解释: 修改前行号,小于等于0或为null,表示此行为新增行,即对比时位于右侧,绿色显示。 取值范围: -1-2147483647或为null。 new_line Integer 参数解释: 修改后行号。 小于等于0或为null,表示此行为删除行,即对比时位于左侧,红色显示。 取值范围: -1-2147483647或为null。
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 参数解释: 用户Token。通过调用 IAM 服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 约束限制: 必传。 取值范围: 字符串长度不少于1,不超过10万。 默认取值: 不涉及。 表3 请求Body参数 参数 是否必选 参数类型 描述 body 是 String 参数解释: 检视意见内容。 约束限制: 必传。 取值范围: 长度限制:8000字符。 字符限制:unicode编码\u0000 - \uffff,不支持emoji表情、部分生僻字等特殊字符。 blank限制:不能为null或空字符串或全是空格。
  • URI POST /v2/repositories/{repository_id}/merge_requests/{merge_request_iid}/discussions/{discussion_id}/notes 表1 路径参数 参数 是否必选 参数类型 描述 repository_id 是 Integer 参数解释: 仓库id。 约束限制: 必传。 取值范围: 最小值:1 最大值:2147483647 merge_request_iid 是 Integer 参数解释: 合并请求iid(仓库的第几个mr)。 约束限制: 必传。 取值范围: 最小值:1 最大值:2147483647 discussion_id 是 String 评论id
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 error Error object 参数解释: 响应错误。 result ProjectRepository object 参数解释: 响应结果。 status String 参数解释: 响应状态。 取值范围: success,表示接口调用成功。 fail,表示接口调用失败。 表5 Error 参数 参数类型 描述 code String 参数解释: 错误码。 取值范围: 请参见错误码。 message String 参数解释: 错误信息。 取值范围: 字符串。 表6 ProjectRepository 参数 参数类型 描述 projectUuid String 参数解释: 项目ID,获取方式请参见获取项目ID。 取值范围: 32位字符串。 repositoryUuid String 参数解释: 仓库UUID。 取值范围: 32位字符串。
  • 请求参数 表1 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 参数解释: 用户Token。通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 约束限制: 必传。 取值范围: 字符串长度不少于1,不超过10万。 默认取值: 不涉及。 表2 请求Body参数 参数 是否必选 参数类型 描述 import_members 否 Integer 参数解释: 是否导入项目成员。 约束限制: 不涉及。 取值范围: 0,不导入项目成员。 1,导入项目成员。 默认取值: 0 project_name 是 String 参数解释: 项目名称。 约束限制: 必传。 取值范围: 可以输入英文大小写字母、数字、连字符、下划线,且必须以字母开头。 默认取值: 不涉及。 repo_name 是 String 参数解释: 仓库名称。 约束限制: 必传。 取值范围: 以大小写字母、数字、下划线开头,可包含大小写字母、数字、中划线、下划线、英文句点,但不能以.git、.atom或.结尾。 长度为1-256。 默认取值: 0 type 否 String 参数解释: 项目类型,scrum。 约束限制: 不涉及。 取值范围: 默认取值: 0 visibility_level 否 Integer 参数解释: 仓库可见性。 约束限制: 不涉及。 取值范围: 私有仓库:仓库仅对仓库成员可见,仓库成员可读写和访问仓库,取值为0 公开仓库: 项目内成员只读仓库:仓库对项目内成员公开只读,并项目内成员可在项目下和代码组下的仓库列表中查看和搜索,取值为10 租户内成员只读仓库:仓库对租户内成员公开只读,并租户内成员可在项目下和代码组下的仓库列表中查看和搜索,取值为10 所有访客只读仓库:仓库对所有访客公开只读,并所有访客可在项目下和代码组下的仓库列表中查看和搜索,取值为20 默认取值: 0 external_project_info 否 ExternalKeyMessage object 参数解释: 第三方服务信息。 约束限制: 不涉及。 表3 ExternalKeyMessage 参数 是否必选 参数类型 描述 external_key_message 否 String 参数解释: 第三方保存在代码托管的关键信息。 约束限制: 不涉及。 取值范围: 字符串。 默认取值: 不涉及。 external_service 否 String 参数解释: 外部服务名称。 约束限制: 不涉及。 取值范围: 字符串。 默认取值: 不涉及。
  • 响应参数 状态码: 200 表3 响应Body参数 参数 参数类型 描述 error Error object 参数解释: 接口调用时,响应错误。 取值范围: 无。 result Webhook object 参数解释: 接口调用的响应结果。 取值范围: 无。 status String 参数解释: 调用此接口的响应状态。 取值范围: success,表示接口调用成功。 failed,表示接口调用失败。 表4 Error 参数 参数类型 描述 code String 参数解释: 调用此接口失败时返回的错误码。 取值范围: CH.000404,表示查询项目Webhook失败,您需要检查Webhook ID是否正确。 message String 参数解释: 调用此接口失败时返回的提示信息。
  • 响应示例 状态码: 200 OK { "result" : { "hooks" : [ { "id" : 2111600786, "project_id" : 2111615967, "created_at" : "2021-11-09 16:35:15", "enable_ssl_verification" : false, "push_events" : true, "tag_push_events" : false, "repository_update_events" : false, "merge_requests_events" : false, "issues_events" : false, "note_events" : false, "pipeline_events" : false, "wiki_page_events" : false } ] }, "status" : "success" }
  • URI DELETE /v1/projects/{project_uuid}/user-hooks/{hook_id} 表1 路径参数 参数 是否必选 参数类型 描述 project_uuid 是 String 参数解释: 项目ID,获取方式请参见获取项目ID。 约束限制: 不涉及。 取值范围: 只能由数字和字母组成,且长度为32个字符。 默认取值: 不涉及。 hook_id 是 String 参数解释: Webhook ID 约束限制: 不涉及。 取值范围: 只能由数字组成,且范围为0-2147483647。 默认取值: 不涉及。
  • 响应示例 状态码: 200 OK { "result" : { "id" : 5609, "project_id" : 453489, "created_at" : "2019-10-23 17:29:56", "enable_ssl_verification" : false, "push_events" : true, "tag_push_events" : false, "repository_update_events" : false, "merge_requests_events" : false, "issues_events" : false, "note_events" : false, "pipeline_events" : false, "wiki_page_events" : false, "build_events" : null }, "status" : "success" }