华为云用户手册

  • 云服务权限说明 在统一身份认证服务为用户或用户组基于企业项目授予相应的云服务权限,实现基于企业项目对云服务权限的管理,目前企业项目管理支持的云服务详见企业项目管理支持的云服务, 各云服务的策略权限说明请参见系统权限。 当这些云服务与暂时不支持企业项目管理的云服务存在关联业务时,这部分关联业务需要依赖其他权限才能成功操作。云服务依赖策略的配置方法主要分为以下两种: 在统一身份认证服务中为用户组添加云服务系统策略,具体操作请参见创建用户组并授权。 如果系统策略不满足授权要求,您还可以在统一身份认证服务中创建自定义策略,并通过给用户组授予自定义策略来进行精细的访问控制,自定义策略是对系统策略的扩展和补充,具体操作请参见创建自定义策略。 父主题: 权限说明
  • 文档修订记录 文档修订记录累积了每次文档更新的说明。最新版本的文档包含以前所有文档版本的更新内容。 修订记录 发布日期 第三十一次正式发布,本次变更说明如下: 新增查询流水线日志接口。 2023-12-06 第三十次正式发布,本次变更说明如下: 新增如下接口: 规则管理。 租户级策略管理。 租户级开源治理策略管理。 项目级策略管理。 项目级开源治理策略管理。 扩展插件管理。 2023-11-21 第二十九次正式发布,本次变更说明如下: 新增分组管理相关接口。 2023-11-13 第二十八次正式发布,本次变更说明如下: 创建流水线接口参数类型修改。 2023-11-08 第二十七次正式发布,本次变更说明如下: 新增接口:创建流水线、重试运行流水线、通过人工审核、驳回人工审核。 获取流水线列表/获取项目下流水线执行状况接口新增“project_name”参数。 2023-11-02 第二十六次正式发布,本次变更说明如下: 获取流水线列表/获取项目下流水线执行状况接口参数类型更新。 基于模板创建流水线接口新增variables参数。 2023-10-27 第二十五次正式发布,本次变更说明如下: 获取流水线列表/获取项目下流水线执行状况接口请求描述优化。 2023-10-08 第二十四次正式发布,本次变更说明如下: 优化参数描述。 2023-9-26 第二十三次正式发布,本次变更说明如下: 优化请求示例描述。 2023-6-16 第二十二次正式发布,本次变更说明如下: 删除X-Language请求参数。 2023-05-19 第二十一次正式发布,本次变更说明如下: 查询模板列表接口请求参数更新。 2023-05-08 第二十次正式发布,本次变更说明如下: 接口参数描述优化。 2023-05-05 第十九次正式发布,本次变更说明如下: 新增模板管理相关接口。 新增基于模板创建流水线接口。 2023-04-21 第十八次正式发布,本次变更说明如下: 批量获取流水线状态接口功能介绍优化。 获取流水线状态/获取流水线执行详情接口功能介绍优化。 2023-04-04 第十七次正式发布,本次变更说明如下: 更新接口请求示例和响应示例。 2023-03-07 第十六次正式发布,本次变更说明如下: 新增流水线管理相关接口。 新增八个错误码。 2023-02-24 第十五次正式发布,本次变更说明如下: 下线四个接口:创建流水线、编辑流水线、执行流水线和Webhook触发流水线。 2022-11-21 第十四次正式发布,本次变更说明如下: 新增接口:创建流水线、编辑流水线、执行流水线和Webhook触发流水线。 2022-11-08 第十三次正式发布,本次变更说明如下: 下线资源池管理相关接口:register注册Slave接口和Agent状态查询。 2022-09-20 第十二次正式发布,本次变更说明如下: 补充接口请求示例和响应示例。 2022-09-13 第十一次正式发布,本次变更说明如下: 查询模板列表接口新增待下线标记。 查询模板详情接口新增待下线标记。 基于模板快速创建流水线及流水线内任务接口新增待下线标记。 检查流水线创建状态接口新增待下线标记。 2022-05-18 第十次正式发布,本次变更说明如下: 更新批量获取流水线状态接口响应参数。 更新获取流水线状态接口响应参数。 更新获取项目下流水线执行状况接口响应参数。 2021-03-16 第九次正式发布,本次变更说明如下: 更新基于模板快速创建流水线及流水线内任务接口请求参数。 更新批量获取流水线状态接口请求参数。 2021-09-27 第八次正式发布,本次变更说明如下: 新增获取流水线列表接口。 更新查询模板列表接口响应参数。 更新查询模板详情接口响应参数。 更新基于模板快速创建流水线及流水线内任务接口请求参数及响应参数。 2021-07-27 第七次正式发布,本次变更说明如下: 更新查询模板列表接口响应参数。 更新查询模板详情接口响应参数。 更新基于模板快速创建流水线及流水线内任务接口请求参数。 2021-06-22 第六次正式发布,本次变更说明如下: 新增批量获取流水线状态接口。 新增获取项目下流水线执行状况接口。 更新查询模板详情接口响应参数。 2021-05-27 第五次正式发布,本次变更说明如下: 更新基于模板快速创建流水线及流水线内任务接口,请求示例新增flow、workflow、states参数。 2020-12-31 第五次正式发布,本次变更说明如下: 更新查询模板列表接口,优化响应参数region描述信息。 更新查询模板详情接口,去掉响应参数template_url。 2020-12-01 第四次正式发布,本次变更说明如下: 新增应用示例。 更新接口,并增加历史API。 更新启动流水线接口,并将旧接口保存至历史API。 更新获取流水线状态接口,并将旧接口保存至历史API。 2020-09-02 第三次正式发布,本次变更说明如下: 新增查询模板列表接口。 新增查询模板详情接口。 新增基于模板快速创建流水线及流水线内任务接口。 新增检查流水线创建状态接口。 新增删除流水线接口。 更新启动流水线接口。 更新获取流水线状态接口。 2020-07-24 第二次正式发布,本次变更说明如下: 切换新模板,新增如下接口。 新增启动流水线接口。 新增停止流水线接口。 新增获取流水线状态接口。 新增接口:register注册Slave接口(已下线)。 新增接口:Agent状态查询(已下线)。 2020-06-20 第一次正式发布。 2020-03-03
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 offset Integer 偏移 limit Integer 大小 total Integer 总数 data Array of PluginBasicVO objects 结果集 表5 PluginBasicVO 参数 参数类型 描述 plugin_name String 插件名 display_name String 展示名 version String 版本 version_description String 版本说明 description String 描述 version_attribution String 版本属性 unique_id String 唯一ID op_user String 操作人 op_time String 操作时间 plugin_composition_type String 组合类型 plugin_attribution String 属性 workspace_id String 租户ID business_type String 业务类型 business_type_display_name String 业务类型展示名 maintainers String 维护者 icon_url String 图标URL refer_count Integer 引用次数 usage_count Integer 使用次数 runtime_attribution String 运行属性 active Integer 是否激活 状态码: 400 表6 响应Body参数 参数 参数类型 描述 error_msg String 错误信息 error_code String 错误码
  • 响应示例 状态码: 200 OK { "offset" : 0, "limit" : 1, "total" : 1, "data" : [ { "plugin_name" : "fff", "display_name" : "hhjk", "version" : "0.0.1", "version_description" : "", "description" : "", "version_attribution" : "formal", "unique_id" : "d4d18039ac4248b68d38aca463a0c35a", "op_user" : "devcloud_devcloud_h00485561_01", "op_time" : "1699931374000", "plugin_composition_type" : "multi", "plugin_attribution" : "custom", "workspace_id" : "ce8df55870164338a72d7e828a966a2a", "business_type" : "Normal", "business_type_display_name" : "通用", "maintainers" : "[\"847a5317086c41798469d0868535943a\"]", "icon_url" : "", "refer_count" : null, "usage_count" : null, "runtime_attribution" : "agent", "active" : 1 } ] }
  • 请求示例 POST https://{endpoint}/v2/ce8df55870164338a72d7e828a966a2a/tenant/rule-sets/create { "name" : "创建策略-20231020171008", "rules" : [ { "id" : "425eba0deaf04596a74cf7967d7fc04d", "is_valid" : true } ] }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 name 是 String 规则集名称 rules 是 Array of RequestRuleInstance objects 规则集合 表4 RequestRuleInstance 参数 是否必选 参数类型 描述 id 否 String 规则实例ID is_valid 否 Boolean 规则实例状态
  • 请求示例 启动流水线。 指定运行的分支为”master”,参数为”key:val”。 POST https://{endpoint}/v5/54f90b75fc1447b1b65e8d3a9f77923d/api/pipelines/e5460d1d403146a1935c2d4b68ef506c/run { "sources" : [ { "type" : "code", "params" : { "git_type" : "codehub", "codehub_id" : "2111699716", "default_branch" : "test-lbdsb11", "git_url" : "https://example.com/clsyz00001/111.git", "build_params" : { "build_type" : "branch", "event_type" : "Manual", "target_branch" : "test-lbdsb11" } } } ], "description" : "运行描述", "variables" : [ { "name" : "key", "value" : "val" } ], "choose_jobs" : [ "16772939480734f4abbc4-b3b9-4235-82c2-46559434cbd4" ] }
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 sources 否 Array of sources objects 使用的源 description 否 String 运行描述 variables 否 Array of variables objects 使用的自定义参数 choose_jobs 否 Array of strings 选择的任务 choose_stages 否 Array of strings 选择的阶段 表4 sources 参数 是否必选 参数类型 描述 type 是 String 源类型 params 否 params object 源参数 表5 params 参数 是否必选 参数类型 描述 git_type 是 String 代码仓类型 alias 否 String 代码仓别名 codehub_id 否 String Repo代码仓ID default_branch 否 String 默认分支 git_url 是 String git仓库https地址 endpoint_id 否 String 扩展点ID build_params 否 build_params object 具体构建参数 表6 build_params 参数 是否必选 参数类型 描述 build_type 是 String 分支还是tag触发 target_branch 否 String 运行分支 tag 否 String 运行tag event_type 否 String 触发事件类型 表7 variables 参数 是否必选 参数类型 描述 name 是 String 参数名 value 是 String 参数值
  • 响应示例 状态码: 200 OK { "b9fc8fb6d9194536ac66dd74c2212126" : { "publisher_unique_id" : "b9fc8fb6d9194536ac66dd74c2212126", "user_id" : "847a5317086c41798469d0868535943a", "tenant_id" : "ce8df55870164338a72d7e828a966a2a", "description" : "这是描述", "logo_url" : "/api/v1/ce8df55870164338a72d7e828a966a2a/common/get-plugin-icon?object_key=default-cfb6036d13404631a04a5e7f3a5899b2-kubernetes.png-ce8df55870164338a72d7e828a966a2a&icon_type=publish", "website" : "https://tinydesign.cloudbu.huawei.com/rp/team/ptnixbayoz", "support_url" : "5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555", "source_url" : "", "en_name" : "kejiyouxiangongsi", "name" : "杭州XXX科技有限公司", "auth_status" : "accept", "is_delete" : 0, "last_update_user_name" : "devcloud_devcloud_h00485561_01", "last_update_user_id" : "847a5317086c41798469d0868535943a", "last_update_time" : "2023-02-21T09:22:34.528" } }
  • 请求示例 POST https://{endpoint}/v3/templates/task { "flow" : { "initial" : { "state_3" : "always" }, "state_3" : { "state_4" : "always" }, "state_4" : { "state_5" : "always", "Task_1" : "always", "Task_2" : "always" }, "state_5" : { "final" : "always" } }, "states" : { "initial" : { "type" : "stage", "name" : "initial", "module_or_template_id" : null, "module_or_template_name" : null, "display_name" : "Initial", "dsl_method" : "initial", "parameters" : { "display" : "hidden" }, "params" : null, "is_manual_mxecution" : false, "execution_mode" : "parallel" }, "state_3" : { "type" : "stage", "name" : "state_3", "module_or_template_id" : null, "module_or_template_name" : null, "display_name" : "Source", "dsl_method" : "source", "parameters" : null, "params" : null, "is_manual_execution" : false, "execution_mode" : "parallel" }, "Task_1" : { "type" : "task", "name" : "Task_1", "module_or_template_id" : "00012", "module_or_template_name" : "Maven", "display_name" : "Build_Task", "dsl_method" : "buildJob", "parameters" : { "__repository__" : { "repo_name" : "fdfdfdf", "url" : "git@example.com:CloudPipelineTest-Copy00001/fdfdfdf.git" } }, "params" : null, "is_manual_execution" : false, "execution_mode" : null, "job_parameter_palidate" : true, "is_show_code_hub_url" : false, "is_execute" : true, "job_id" : "00012", "job_name" : "Maven", "project_id" : "4719b59466624abfbae0f83c3ce3a0dc" }, "Task_2" : { "type" : "task", "name" : "Task_2", "module_or_template_id" : "d7dffaefb6d94c63a09cf141668356c7", "module_or_template_name" : "codecheck_template", "display_name" : "Code_Check_Task", "dsl_method" : "codeCheck", "parameters" : { "language" : { "disable" : null, "name" : "Java", "display_name" : "Java", "id" : "782aade71ffb4ab780303555eb2e4825", "language" : "java" }, "codeBranch" : "master", "__repository__" : { "repo_name" : "fdfdfdf", "url" : "git@example.com:CloudPipelineTest-Copy00001/fdfdfdf.git" } }, "params" : null, "is_manual_execution" : false, "execution_mode" : null, "job_parameter_palidate" : true, "is_show_code_hub_url" : false, "is_execute" : true, "job_id" : "d7dffaefb6d94c63a09cf141668356c7", "job_name" : "codecheck_template", "project_id" : "4719b59466624abfbae0f83c3ce3a0dc" }, "state_4" : { "type" : "stage", "name" : "state_4", "module_or_template_id" : null, "module_or_template_name" : null, "display_name" : "Build_and_Check", "dsl_method" : "build", "parameters" : null, "params" : null, "is_manual_mxecution" : false, "execution_mode" : "parallel" }, "state_5" : { "type" : "stage", "name" : "state_5", "module_or_template_id" : null, "module_or_template_name" : null, "display_name" : "Release", "dsl_method" : "release", "parameters" : null, "params" : null, "is_manual_mxecution" : false, "execution_mode" : "parallel" }, "final" : { "type" : "stage", "name" : "final", "module_or_template_id" : null, "module_or_template_name" : null, "display_name" : "Final", "dsl_method" : "final", "parameters" : null, "params" : null, "is_manual_mxecution" : false, "execution_mode" : "parallel" } }, "workflow" : { "parameter" : [ { "name" : "serviceName", "value" : "pipeline-20201229165622", "description" : "this is a text type param", "paramtype" : "normalparam", "display_name" : null, "isStatic" : true, "isDefault" : true, "constraints" : null }, { "name" : "releaseVersion", "value" : "1.0.0", "description" : "this is a growth type param", "paramtype" : "growthparam", "display_name" : null, "isStatic" : false, "isDefault" : true, "constraints" : null } ], "source" : [ { "scmType" : "codehub", "codeHubName" : "fdfdfdf", "hookFlag" : false, "branches" : [ ], "defaultBranch" : "master", "branch" : "", "codeHubId" : "5224040", "gitUrl" : "git@example.com:CloudPipelineTest-Copy00001/fdfdfdf.git", "webUrl" : "https://example.com/codehub/project/bc97c4d99c7d4f98bb6cd104a77fddd6/codehub/140000127/home", "branchList" : [ "master" ] } ], "name" : "pipeline-123123", "description" : "", "project_id" : "bc97c4d99c7d4f98bb6cd104a77fddd6", "project_name" : "CloudPipelineTest-Copy" }, "changeInfo" : null }
  • 响应示例 状态码: 200 OK { "id" : "25adfa6784124cfc9b9274ceaecf9957", "pipeline_id" : "98b6ea1536374df883bcc3b129bca4e9", "manifest_version" : "3.0", "name" : "子流水线qqq", "description" : null, "is_publish" : false, "executor_id" : "847a5317086c41798469d0868535943a", "executor_name" : "beta环境账号", "status" : "COMPLETED", "trigger_type" : "Manual", "run_number" : 1, "start_time" : 1674207197000, "end_time" : 1674207197000, "stages" : [ { "id" : "aac8063fbf084eec9722c77ece6dd283", "category" : null, "name" : "阶段_1", "identifier" : "0", "run_always" : false, "parallel" : null, "is_select" : true, "sequence" : 0, "depends_on" : [ ], "condition" : null, "status" : "COMPLETED", "start_time" : 1674207197000, "end_time" : 1674207197000, "pre" : [ { "name" : null, "task" : "official_devcloud_autoTrigger", "business_type" : null, "inputs" : null, "sequence" : 0, "official_task_version" : null, "identifier" : null, "multi_step_editable" : 0, "id" : "5a03bdb6ad2848ac972ba21744627a8c", "endpoint_ids" : null, "last_dispatch_id" : "6b3fa4c664844f33abc02053ddd76f62", "status" : "COMPLETED", "message" : null, "start_time" : 1674207197000, "end_time" : 1674207197000 } ], "post" : [ ], "jobs" : [ { "id" : "1cde6a3815164cd18d0fa4038f876e46", "category" : null, "sequence" : 0, "async" : null, "name" : "新建任务", "identifier" : "1674207161661b4a41d77-a478-4538-870b-ffb589c1af06", "depends_on" : [ ], "condition" : null, "resource" : null, "is_select" : true, "timeout" : "", "last_dispatch_id" : null, "status" : "COMPLETED", "message" : "not found steps", "start_time" : 1674207197000, "end_time" : 1674207197000, "steps" : [ ] } ] } ], "domain_id" : "ce8df55870164338a72d7e828a966a2a", "project_id" : "6428c2e2b4b64affa14ec80896695c49", "region" : "region01", "component_id" : "", "language" : "zh-cn", "sources" : [ { "type" : "code", "params" : { "git_type" : "codehub", "git_url" : "https://example.com/clsyz00001/aaaaa.git", "ssh_git_url" : "git@example.com:clsyz00001/aaaaa.git", "web_url" : "", "repo_name" : "aaaaa", "default_branch" : "master", "endpoint_id" : "", "codehub_id" : "2111677704", "alias" : "", "build_params" : { "action" : null, "build_type" : "branch", "commit_id" : "990ea057751d299f5575aac25bf97e88a60b461e", "event_type" : "Manual", "merge_id" : null, "message" : "新建文件 Dockerfile", "source_branch" : null, "tag" : null, "target_branch" : "master", "codehub_id" : "2111677704" } } } ], "artifacts" : null, "subject_id" : "25adfa6784124cfc9b9274ceaecf9957" }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 id String 流水线运行实例ID pipeline_id String 流水线ID manifest_version String 流水线版本 name String 流水线名称 description String 运行描述 is_publish Boolean 是否为变更流水线 executor_id String 运行人ID executor_name String 运行人名称 status String 状态 trigger_type String 触发类型 run_number Integer 运行序号 start_time Long 开始时间 end_time Long 结束时间 stages Array of StageRun objects 阶段信息 domain_id String 租户ID project_id String 项目ID region String 局点 component_id String 组件ID language String 语言 sources Array of RunPipelineSource objects 运行源信息 artifacts Array of PackageInfo objects 流水线运行产物 subject_id String 流水线运行实例ID group_id String 分组ID group_name String 分组名称 detail_url String 详情页地址 current_system_time String 当前系统时间 表5 StageRun 参数 参数类型 描述 id String 阶段ID category String 阶段类型 name String 阶段名称 identifier String 唯一标识 run_always Boolean 是否总是运行 parallel String 是否并行 is_select Boolean 是否选中 sequence Integer 序列号 depends_on Array of strings 依赖 condition String 运行条件 status String 状态 start_time Long 开始时间 end_time Long 结束时间 pre Array of StepRun objects 阶段准入 post Array of StepRun objects 阶段准出 jobs Array of JobRun objects 任务 表6 JobRun 参数 参数类型 描述 id String 任务ID category String 任务类型 sequence Integer 序列号 async String 是否异步 name String 任务名称 identifier String 任务唯一标识 depends_on Array of strings 依赖 condition String 运行条件 resource String 执行资源 is_select Boolean 是否选中 timeout String 任务超时设置 last_dispatch_id String 任务上次下发ID status String 状态 message String 错误信息 start_time Long 开始时间 end_time Long 结束时间 steps Array of StepRun objects 步骤 exec_id String 任务执行ID 表7 StepRun 参数 参数类型 描述 name String 步骤名称 task String 步骤插件 business_type String 插件业务类型 inputs Array of inputs objects 输入参数 sequence Integer 序列号 official_task_version String 官方插件版本号 identifier String 唯一标识符 multi_step_editable Integer 是否可编辑 id String 步骤ID endpoint_ids String 扩展点 last_dispatch_id String 上次下发任务ID status String 状态 message String 错误消息 start_time Long 开始时间 end_time Long 结束时间 表8 inputs 参数 参数类型 描述 key String 输入参数名 value Object 输入参数值 表9 RunPipelineSource 参数 参数类型 描述 type String 源类型 params params object 源参数 表10 params 参数 参数类型 描述 git_type String 代码仓类型 git_url String 代码仓https地址 ssh_git_url String 代码仓ssh地址 web_url String 代码仓页面地址 repo_name String 代码仓名 default_branch String 默认分支 endpoint_id String 扩展点ID codehub_id String Repo代码仓ID alias String 代码仓别名 build_params build_params object 构建参数 表11 build_params 参数 参数类型 描述 action String 合并请求事件类型 build_type String 基于分支还是tag运行 commit_id String 代码仓提交ID event_type String 运行事件类型 merge_id String 合并请求ID message String 代码仓提交信息 source_branch String 源分支 tag String 标签 target_branch String 目标分支 codehub_id String Repo代码仓ID source_codehub_id String 源Repo代码仓ID source_codehub_url String 源Repo代码仓地址 source_codehub_http_url String 源Repo代码仓http地址 表12 PackageInfo 参数 参数类型 描述 name String 产物名 packageType String 产物类型 version String 产物版本号 downloadUrl String 产物下载地址
  • URI GET /v5/{project_id}/api/pipelines/{pipeline_id}/pipeline-runs/detail 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID pipeline_id 是 String 流水线ID 表2 Query参数 参数 是否必选 参数类型 描述 pipeline_run_id 否 String 流水线运行实例ID
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 [数组元素] Array of PipelineLatestRun objects OK 表5 PipelineLatestRun 参数 参数类型 描述 pipeline_id String 流水线ID pipeline_run_id String 流水线运行实例ID executor_id String 执行人ID executor_name String 执行人名称 stage_status_list Array of stage_status_list objects 阶段状态信息 status String 流水线状态 run_number Integer 运行序号 trigger_type String 触发类型 build_params build_params object 运行构建参数 artifact_params artifact_params object 运行制品源参数 start_time Long 开始时间 end_time Long 结束时间 modify_url String 修改页地址 detail_url String 详情页地址 表6 stage_status_list 参数 参数类型 描述 name String 阶段名 sequence Integer 阶段序列号 status String 阶段状态 start_time String 阶段开始时间 end_time String 阶段结束时间 表7 build_params 参数 参数类型 描述 action String 合并请求的事件类型 build_type String 基于分支还是tag触发 commit_id String 代码库提交ID event_type String 触发的事件类型 merge_id String 合并请求的ID message String 代码库提交信息 source_branch String 合并请求的源分支 tag String 标签 target_branch String 目标分支 codehub_id String Repo代码仓ID git_url String 代码仓https地址 source_codehub_id String 源Repo代码仓ID source_codehub_url String 源Repo代码仓地址 source_codehub_http_url String 源Repo代码仓http地址 表8 artifact_params 参数 参数类型 描述 version String 包版本 branch_filter String 过滤分支 package_name String 包名称 organization String docker组织信息
  • 响应示例 状态码: 200 OK [ { "pipeline_id" : "d19799d619424b2bb2625ec2d93ea087", "pipeline_run_id" : "ad6b7f66283a45be9c1f82b06c831e59", "executor_id" : "847a5317086c41798469d0868535943a", "executor_name" : "beta环境账号", "stage_status_list" : [ { "name" : "阶段_1", "sequence" : 0, "status" : "FAILED", "start_time" : "2023-03-04 16:48:09", "end_time" : "2023-03-04 16:50:11" } ], "status" : "FAILED", "run_number" : 2, "trigger_type" : "Manual", "build_params" : { "action" : null, "build_type" : "branch", "commit_id" : "fc93c34f906aeb1cc031e3f6f8b2baeac078ae4b", "event_type" : "Manual", "merge_id" : null, "message" : "init", "source_branch" : null, "tag" : null, "target_branch" : "test-lbdsb11", "codehub_id" : "2111699716", "git_url" : "https://example.com/clsyz00001/111.git" }, "artifact_params" : null, "start_time" : 1677919688000, "end_time" : 1677919811000 } ]
  • 请求参数 表3 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表4 请求Body参数 参数 是否必选 参数类型 描述 name 是 String 流水线名称 description 否 String 流水线描述 is_publish 是 Boolean 是否为变更流水线 sources 是 Array of CodeSource objects 流水线源 variables 否 Array of variables objects 流水线参数 表5 CodeSource 参数 是否必选 参数类型 描述 type 否 String 流水线源类型 params 否 params object 流水线源参数 表6 params 参数 是否必选 参数类型 描述 git_type 否 String git类型 codehub_id 否 String Repo代码仓ID endpoint_id 否 String 扩展点id default_branch 否 String 默认分支 git_url 否 String git链接 ssh_git_url 否 String ssh_git链接 web_url 否 String 网页url repo_name 否 String 流水线源名称 alias 否 String 代码仓别名。别名仅支持输入大小写英文字母、数字、“_”,至多128个字符 表7 variables 参数 是否必选 参数类型 描述 name 否 String 参数名称 sequence 否 Integer 参数序号 type 否 String 参数类型 value 否 String 参数值 is_secret 否 Boolean 是否私密参数 description 否 String 描述 is_runtime 否 Boolean 是否运行时设置 is_reset 否 Boolean 是否重置 latest_value 否 String 最后一次参数值 limits 否 Array of strings 枚举值
  • URI POST /v5/{project_id}/api/pipeline-templates/{template_id}/create-pipeline 表1 路径参数 参数 是否必选 参数类型 描述 project_id 是 String 项目ID template_id 是 String 模板ID 表2 Query参数 参数 是否必选 参数类型 描述 component_id 否 String 微服务id
  • 请求示例 基于模板创建流水线。 指定创建的流水线名称为”新建流水线-2023041516464511”,代码仓为”test001.git”,默认分支为”master”。 POST https://{endpoint}/v5/54f90b75fc1447b1b65e8d3a9f77923d/api/pipeline-templates/434d660a96de423a935a0571c2223bca/create-pipeline { "name" : "新建流水线-2023041516464511", "description" : "", "is_publish" : false, "sources" : [ { "type" : "code", "params" : { "git_type" : "codehub", "codehub_id" : "2111717853", "endpoint_id" : "", "default_branch" : "master", "git_url" : "https://example.com/cjrTest00002/test001.git", "ssh_git_url" : "git@example.com:cjrTest00002/test001.git", "web_url" : "", "repo_name" : "test001", "alias" : "" } } ] }
  • 请求示例 获取流水线执行记录。 指定查询的起始偏移量为0,数量为10,开始时间戳为1677513600000,结束时间戳为1678118399000,并按照开始时间降序排序。 POST https://{endpoint}/v5/54f90b75fc1447b1b65e8d3a9f77923d/api/pipelines/e5460d1d403146a1935c2d4b68ef506c/pipeline-runs/list { "offset" : 0, "limit" : 10, "status" : [ "COMPLETED", "RUNNING", "FAILED", "CANCELED", "PAUSED", "SUSPEND", "QUEUED" ], "sort_key" : "start_time", "sort_dir" : "DESC", "start_time" : 1677513600000, "end_time" : 1678118399000 }
  • 响应示例 状态码: 200 OK { "offset" : 0, "limit" : 10, "total" : 1, "pipeline_runs" : [ { "pipeline_id" : "24949d4f4453495f8e5a76f993af7f43", "pipeline_run_id" : "ddb7532cb0e948f2af7bb4397fc19864", "executor_id" : "847a5317086c41798469d0868535943a", "executor_name" : "beta环境账号", "stage_status_list" : [ { "name" : "阶段_1", "sequence" : 0, "status" : "COMPLETED", "start_time" : "2023-03-06 10:04:46", "end_time" : "2023-03-06 10:04:46" } ], "status" : "COMPLETED", "run_number" : 11, "trigger_type" : "Manual", "build_params" : { "action" : null, "build_type" : "branch", "commit_id" : "990ea057751d299f5575aac25bf97e88a60b461e", "event_type" : "Manual", "merge_id" : null, "message" : "新建文件 Dockerfile", "source_branch" : null, "tag" : null, "target_branch" : "cloud_pipeline_release_1674026917209", "codehub_id" : "2111677704", "git_url" : "https://example.com/clsyz00001/aaaaa.git" }, "artifact_params" : null, "start_time" : 1678066487000, "end_time" : 1678066488000 } ] }
  • 响应参数 状态码: 200 表4 响应Body参数 参数 参数类型 描述 offset Integer 起始偏移 limit Integer 查询大小 total Integer 总数 pipeline_runs Array of pipeline_runs objects 流水线运行信息 表5 pipeline_runs 参数 参数类型 描述 pipeline_id String 流水线ID pipeline_run_id String 流水线运行实例ID executor_id String 执行人ID executor_name String 执行人名称 stage_status_list Array of stage_status_list objects 阶段信息 status String 状态 run_number Integer 运行序号 trigger_type String 触发类型 build_params build_params object 构建参数 artifact_params artifact_params object 制品源参数 start_time Long 开始时间 end_time Long 结束时间 detail_url String 详情页地址 modify_url String 修改页地址 表6 stage_status_list 参数 参数类型 描述 name String 阶段名称 sequence Integer 序列号 status String 状态 start_time String 开始时间 end_time String 结束时间 id String 阶段ID 表7 build_params 参数 参数类型 描述 action String 合并请求事件类型 build_type String 基于分支还是tag触发 commit_id String 代码仓提交ID event_type String 运行事件类型 merge_id String 合并请求ID message String 代码仓提交信息 source_branch String 源分支 tag String 标签 target_branch String 目标分支 codehub_id String Repo代码仓ID git_url String 代码仓https地址 source_codehub_id String 源Repo代码仓ID source_codehub_url String 源Repo代码仓地址 source_codehub_http_url String 源Repo代码仓http地址 表8 artifact_params 参数 参数类型 描述 version String 包版本 branch_filter String 过滤分支 package_name String 包名称 organization String docker组织
  • 请求参数 表2 请求Header参数 参数 是否必选 参数类型 描述 X-Auth-Token 是 String 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 表3 请求Body参数 参数 是否必选 参数类型 描述 status 否 Array of strings 状态 start_time 否 String 开始时间 end_time 否 String 结束时间 offset 否 Long 起始偏移 limit 否 Long 查询大小 sort_key 否 String 排序字段名称 sort_dir 否 String 排序规则
  • 新建提交规则 仓库管理员和仓库所有者可针对仓库某一分支新建提交规则,每个分支只能设置一条提交规则。 提交规则的优先匹配机制: 1、目标分支优先匹配已配置的提交规则; 2、精准匹配不到时,以模糊匹配到的第一条规则为准; 3、模糊匹配不到后以default规则为准。 表2 字段说明 字段 说明 规则名称 必填,新建提交规则的名称,限制200个字符。 分支规则 必填,下拉选择分支或者创建一个正则表达式,限制500个字符。 提交规则 非必填。 提交信息:提交信息默认为空,不会对提交信息校验,任何提交信息都可以提交,限制500个字符。 例如:设置Commit message的格式规则: TraceNo:(REQ[0-9]{1,9})(.|\n|.\n)Author:.*(.|\n|.\n)Description:.* 设置符合规范Commit message: TraceNo:REQ1234567 Author:**** Description:testpushfile 设置不符合规范Commit message: new files commit提交信息负面匹配规则:提交信息负面匹配规则默认为空,不会对提交信息校验,任何提交信息都可以提交,限制500个字符。 例如:设置Commit message的格式规则: TraceNo:(REQ[0-9]{1,9})(.|\n|.\n)Author:.*(.|\n|.\n)Description:.* 提交人:提交人默认为空,不会对提交人校验,任何人都可以提交,限制200个字符。 提交人可通过“git config -l”查看user.name的值,并通过“git config --global user.name”设置user.name的值。 例如: 设置提交人规则:([a-z][A-Z]{3})([0-9]{1,9}) 提交人邮箱地址:提交人邮箱地址默认为空,不会对提交人邮箱地址校验,任何邮箱地址都可以提交,限制200个字符。 提交人可通过“git config -l”查看user.email的值,并通过“git config --global user.email”设置邮箱。 例如: 设置提交人邮箱规则:@huawei.com$ 文件基本属性规则 非必填。 禁止提交的文件名称:禁止提交的文件名称规则默认为空,不会对文件名校验,任何文件都可以提交,建议正则编写时使用规范的正则语句进行匹配,文件名禁用规则处默认会根据规则校验文件所属路径,限制2000个字符。 例如: 设置禁止提交的文件名称规则:(\.jar|\.exe)$ 单文件大小限制(MB):单文件推送大小(不含LFS)上限与您所购买的套餐规格一致,具体可查看约束与限制。 体验版/基础版:文件大小上限为200,表示添加或更新文件大小超过200MB,推送将被拒绝。管理员可以在0~200范围内修改值。 专业版/企业版:文件大小上限为300,表示添加或更新文件大小超过300MB,推送将被拒绝。管理员可以在0~300范围内修改值。 当用户变更套餐且配置的提交规则不变时,系统自动修改为当前套餐单文件大小限制。 二进制规则 非必填。 二进制规则默认不勾选,表示二进制文件默认可以上传【需满足单文件不超过上面设置的文件大小上限】。当“禁止新增二进制文件”被勾选时,“允许修改二进制文件”、“二进制文件白名单”、“特权用户”才生效。”允许修改二进制文件“勾选后,提交文件为modify状态的二进制文件不会拦截,可直接上传。二进制文件可以直接删除,不会进行二进制检查。 禁止新增二进制文件(对特权用户无效)。 允许修改二进制文件(对特权用户无效)。 二进制文件白名单(可直接入库的文件,限制2000个字符)。 特权用户(特权用户上限为50人)。 规则生效时间 非必填。 在生效日期之后创建的所有提交都必须与hook设置相匹配才能被推送。如果此字段为空,则无论提交日期如何,都将检查所有提交。 不推荐将二进制文件存放至代码托管仓库,会影响代码仓的性能和稳定性。 表3 常见正则表达式示例 规则 示例 单个a或b或c字符 [abc] 非a或b或c的字符 [^abc] 在a到z范围内的小写英语字母字符 [a-z] 在a到z范围外的字符 [^a-z] 在a到z或A到Z范围内的大小写英语字母字符 [a-zA-Z] 任意单个字符 . 选择 - 匹配 a 或 b a|b 任意空白字符 \s 非空白字符 \S 阿拉伯数字字符 \d 非阿拉伯数字字符 \D 字母、数字或下划线的字符 \w 非字母、数字或下划线的字符 \W 匹配括号中的内容(不捕获) (?:...) 匹配并捕获括号中的内容 (...) 零个或一个a a? 零个或更多a a* 一个及以上a a+ 三个a a{3} 三个a以上 a{3,} 3到6个a a{3,6} 文本开头 ^ 文本末尾 $ 单词边界 \b 非单词边界 \B 换行符 \n 回车符 \r 制表符 \t 空字符 \0
  • 使用SSH协议在Git Bash客户端克隆代码 本节内容描述如何使用Git Bash客户端克隆代码托管服务的仓库到本地环境中。 下载并安装Git Bash客户端。 设置SSH密钥。 获取仓库地址。(没有仓库?如何新建仓库?) 在仓库主页中,单击“克隆/下载”按钮,获取SSH地址,通过这个地址,可以在本地计算机连接代码托管仓库。 如果您未配置SSH密钥,你可单击上图中“SSH密钥管理”链接进行配置,详情请参考SSH密钥。 您可在代码托管服务仓库列表中“仓库地址”下获取SSH地址。 打开Git Bash客户端。 在本地计算机上新建一个文件夹用于存放代码仓库,在空白处单击鼠标右键,打开Git Bash客户端。 克隆仓库时会自动初始化,无需执行init命令。 输入如下命令,克隆代码托管仓库。 git clone 仓库地址 命令中“仓库地址”即3中获取的SSH地址。 如果您是第一次克隆仓库,会询问您是否信任远程仓库,输入“yes”即可。 执行成功后,您会看到多出一个与您在代码托管服务新建的仓库同名的文件夹,并且其中有一个隐藏的.git文件夹,则说明克隆仓库成功。 此时您位于仓库上层目录,执行如下命令,进入仓库目录。 cd 仓库名称 进入仓库目录,可以看到此时Git默认为您定位到master分支。 客户端在git clone代码仓库时失败的原因排查: 确保您的网络可以访问代码托管服务。 请在git客户端使用如下测试命令验证网络连通性。 ssh -vT git@**********.com 如果返回内容含有“Could not resolve hostname **********.com: Name or service not known”,则您的网络被限制,无法访问代码托管服务,请求助您本地所属网络管理员。 请检查建立的SSH密钥配对关系,必要时重新生成密钥并到代码托管控制台进行配置。 只有开启IP白名单的机器才可以在Git客户端克隆。
  • 使用SSH协议在TortoiseGit客户端克隆代码 本节内容描述如何使用TortoiseGit客户端克隆代码托管服务的仓库到本地环境中。 下载并安装TortoiseGit客户端。 获取仓库地址。(没有仓库?如何新建仓库?) 在仓库主页中,单击“克隆/下载”按钮,获取SSH地址,通过这个地址,可以在本地计算机连接代码托管仓库。 您可在代码托管服务仓库列表中“仓库地址”下获取SSH地址。 进入您的本地仓库目录下,右键选择“Git克隆”菜单选项,如下图所示。 在弹出的窗口中将上述复制的SSH地址粘贴到URL输入框中,勾选“加载Putty密钥”并选择私钥文件,最后单击“确定”,如下图所示。 单击“确定”之后即开始克隆仓库,如果您是第一次克隆TortoiseGit客户端会询问您是否信任远程仓库,单击“是”即可。 克隆用时受仓库大小影响,克隆的动作如下图所示。
  • 查看仓库详情 在仓库列表中单击仓库名称可进入该仓库的详情页面,代码托管服务提供了丰富的控制台操作,详情如下。 表1 页签说明 功能页签 功能说明 仓库首页 用于展示仓库的容量、提交次数、分支数量、标签数量、成员数量、LFS使用量、创建时间、创建者、可见范围、仓库状态、readme文件、语言、语言占比等信息。 代码 文件列表:支持新建文件、新建目录、新建子模块、上传文件、在线修改文件、修改追溯和查看提交历史等操作。 提交:支持查看提交记录及仓库网络图。 分支:支持在控制台管理分支。 Tags:支持在控制台管理标签。 对比:支持通过对比查看分支之间或标签版本之间发生的代码变化。 合并请求 支持在控制台管理分支的合并请求。 评审记录 支持查看合并请求的评审记录与Commit的评审记录。 关联工作项 所关联工作项的列表,其可设置与需求管理中工作项的联动,提升效率。 仓库统计 仓库提交记录的可视化图表,主要展现了代码贡献度等信息。 动态 支持查看仓库动态信息。 成员 仓库成员管理页面,支持一键从项目同步成员,也可以单独调整某个成员的权限。 设置 此仓库的设置入口,只有仓库管理员和仓库创建者可以看到此页签并进行设置。 另外仓库详情页框架上还提供以下功能的快捷入口: 设置构建:新建编译构建任务入口。 IDE Online:可使用IDE Online打开代码(目前免费体验,仅支持北京一、北京四及大连局点)。 关注:单击可关注该仓库,关注的仓库会在仓库列表置顶。 Fork:会显示目前仓库有几个Fork出的仓库,单击弹出新建-Fork页面。 克隆/下载:可获取仓库的SSH地址、HTTPS地址,也可以直接下载代码压缩包。 代码托管“吸顶”功能,当用户的仓库界面长度大于窗口长度,向下滑动鼠标滚轮后,仓库页签置顶,下图中红框位置被折叠,便于查看仓库信息,向上滑动鼠标滚轮后,界面恢复。 父主题: 使用代码托管仓库
  • 如何使用标签找回历史版本 当您要查看某个标签指向版本的代码时,可以将其检出到工作区。由于被检出的版本仅隶属于标签,而不属于任何分支,因此该代码可以编辑,但是不能add、commit。您可以基于工作区新建一条分支,在此分支上修改代码,并将此分支合入主干。具体的操作步骤如下所示。 通过标签检出历史版本。 git checkout V2.0.0 #将被标签为 V2.0.0 的版本检出到工作区 基于当前的工作区新建一条分支并切换到其中。 git switch -c forFixV2.0.0 #新建一条名为 forFixV2.0.0 的分支,并切换到其中 (可选)如果修改了新建的分支的内容,需要将修改内容提交到该分支的版本库中。 git add . #将修改添加到新分支的暂存区 git commit -m "fix bug for V2.0.0" #将修改内容存入该分支的版本库 切换到master分支,并将新建立的分支合入(本示例中为 forFixV2.0.0 分支)。 git checkout master #切换到master分支 git merge forFixV2.0.0 #将基于历史版本的修改 合入到master分支 以上命令旨在帮助您理解通过标签找回历史版本的过程原理,请根据原理自行裁剪增补Git命令以完成您在特定场景下需要的操作,不建议全流程直接复制使用。
  • 在控制台管理标签 在控制台的标签列表中,可查看该远程仓库中的全量标签并进行如下操作。 单击“标签名”,跳转到该标签对应版本的文件列表。 单击“提交号”,跳转到该次提交(commit)的详情页面。 单击,可下载tar.gz或zip格式的被标签版本的文件包。 单击,可以将此标签从代码托管仓库删除(想从本地删除请clone、pull或本地手动-d删除)。 若仓库设置IP白名单,则只有IP白名单内的机器才可以在界面下载仓库源码,若仓库没有设置IP白名单,则均可在界面下载仓库源码。 在控制台创建分支时,您可以选择基于某个标签去创建分支。 在控制台中,单击“代码”页签,单击目标文件的“文件名称”,单击文件的“对比”页签,可在该文件的提交记录之间做差异对比。
  • Webhook简介 开发人员可在 Webhook 界面配置第三方系统的 URL,并根据项目需求订阅代码托管仓库的分支推送(push)、标签推送(tag push)等事件。当订阅事件发生时,可通过Webhook向第三方系统的URL发送 POST请求,用以触发自己系统(第三方系统)的相关操作,例如:触发自己系统(第三方系统)界面的通知弹窗;或触发自己系统(第三方系统)的构建、更新镜像、部署等操作。 若您需要用发送邮件作为仓库变化的通知方式,可通过配置“基本设置”中的“通知设置”实现。
  • 基于Git分支的经典工作模式 在基于分支的代码管理工作模式中,“Git-Flow”在业界被更多人认可,同时也被广泛应用,如果您的团队目前还没有更好的工作模式,可以先从尝试使用“Git-Flow”开始。 Git-Flow是一种基于Git的代码管理工作模式,它提供了一组分支使用建议,可以帮助团队提高效率、减少代码冲突,其具备以下特性。 并行开发:支持多个特性与bug修复并行开发,因其可以同时在不同分支中进行,所以在代码写作时互不受影响。 团队协作:多人开发过程中,每条分支(可以理解为每个子团队)的开发内容可以被单独记录、合并到项目版本中,当出现问题时还可被精确检出并单独修改而不影响主版本的其它代码。 灵活调整:通过HotFix分支的使用,支持各种紧急修复的情况,而不会对主版本以及各个团队的子项目产生干扰影响。 表1 Git-Flow工作模式中分支的使用建议 分支名 Master Develop Feature_1\2... Release HotFix_1\2... 说明 核心分支,配合标签,用于归档历史版本,要保证其中的版本都是可用的。 开发主分支,用于平时开发的主分支,应永远是功能最新最全的分支。 新特性开发分支,用于开发某个新特性,可以几条并行存在,每条对应一个或一组新特性。 发布分支,用于检出某个要发布的版本。 快速修复分支,用于当现网版本发现bug时,拉出来单独用于修复这些bug的分支。 有效性 长期存在 长期存在 临时 长期存在 临时 何时被创建 项目仓库建立之初 在master分支被创建之后 收到新特性任务时,基于develop分支创建 当正在开发的新特性任务被拆分成出子任务时,基于对应的父feature分支创建 项目首次发布前,基于develop分支创建 当master、bug版本中发现问题时,基于对应版本(一般是master分支)创建 何时直接在此分支上开发 从不 一般不建议 当被创建出来,开始开发新特性时 从不 当被建立出来时 何时被其它分支合入 项目版本封版时,被develop或release分支合入 已发布版本中发现的bug被修复后,被对应的hotfix分支合入 新特性开发完成后,feature分支合入到此分支 当项目启动开发一个新版本时,被上一次历史发布版本(release、或master)合入 子feature分支开发、测试完成后,会合入到父feature分支 当需要发布一个版本时,被develop分支合入 - 何时合入到其它分支 - 当要发布版本时,合入到release分支 当需要归档版本时合入到master分支 当该分支上的新特性开发、测试完成时,合入到develop分支 当完成一次版本发布,将该版本归档时,合入到master分支 当要基于某一个发布版本,开始开发一个新版本时,合入到develop分支,起到初始化版本的作用 当其对应的bug修复任务完成时,会将其作为修复补丁合入master、develop分支 何时结束生命周期 - - 其对应的特性已经验收(发布、稳定)后 - 其对应的bug修复,已经验收(发布、稳定)后 另外在使用Git-Flow工作模式时,业界普遍遵循如下规则: 所有开发分支从develop分支拉取。 所有hotfix分支从master分支拉取。 所有在master分支上的提交都必须要有标签,方便回滚。 只要有合并到master分支的操作,都需要和develop分支合并,保证同步。 master分支和develop分支是主要分支,并且都是唯一的,其它派生分支每个类型可以同时存在多个。
共100000条