按源仓库内容呈现,保留标题、案例、代码、表格、链接以及原文引用的演示图片。
Huawei Cloud CloudDeploy (CodeArts Deploy)
Overview
This skill operates Huawei Cloud CloudDeploy (CodeArts Deploy / 部署) through the hcloud CLI. CloudDeploy automates application deployment to ECS/BMS/CCI/Kubernetes and other targets, pulling artifacts (default source: OBS) and running deployment tasks created from templates. The skill covers:
| Category | Capabilities |
|---|---|
| Query | List deploy applications (huawei_list_clouddeploy_apps), list deployment tasks (huawei_list_clouddeploy_tasks), get task detail (huawei_get_clouddeploy_task) |
| Analyze | Deployment failure root cause (huawei_analyze_clouddeploy_failure — agent offline/timeout/missing artifact/permission), OBS artifact link verification (huawei_analyze_clouddeploy_artifact) |
| Manage | Create application (huawei_create_clouddeploy_app), create deployment task referencing an app (huawei_create_clouddeploy_task), start deployment (huawei_start_clouddeploy_task), delete deployment task (huawei_delete_clouddeploy_task) |
Always run `hcloud CodeArtsDeploy <Operation> --cli-region={region} --help` before constructing a command to discover the exact parameter names and required flags for the current KooCLI version. Do not answer from general knowledge — follow the procedures in this document.
Critical Warnings
| Trap | Why |
|---|---|
| Flyway SQL dialect mismatch (H2 dev → MySQL prod) | Spring Boot apps commonly develop with an H2 in-memory DB and deploy to RDS MySQL. Flyway migrations written with H2-specific syntax (DATEADD, CHARACTER_LENGTH, BOOLEAN) silently pass on H2 but fail on MySQL. Before deploying, audit V*__*.sql migration files: replace DATEADD with DATE_ADD, BOOLEAN with TINYINT(1), and drop characterEncoding=utf8mb4 from the Spring Boot datasource URL (RDS sets charset at instance level). Enable Flyway.validate-on-migrate=true in CI to catch dialect issues early. |
| Service name is `CodeArtsDeploy`, not `CloudDeploy` | hcloud CloudDeploy <op> reports "Unsupported service" (KooCLI 7.2.12). The real service name is CodeArtsDeploy (metadata directory codeartsdeploy). Always verify with hcloud CodeArtsDeploy ListAllApp --cli-region=cn-north-4 --help. |
| Deployment hosts need the agent installed | Target hosts (ECS/BMS/CCI) must have the CloudDeploy agent (ICAgent-style host agent) installed and online before a task can run. Check host status before starting a task — an offline agent is the #1 cause of "host offline / execution failed" results. |
| Task must reference an application | Create the deploy application first, then create the deployment task. A task without an application cannot be created or started (CreateDeployTaskByTemplate requires the app's project and template). |
| Artifact source defaults to OBS | Most deployment tasks pull artifacts from OBS buckets. Verify the bucket and object path exist and the service account has GetObject permission — otherwise the task fails at artifact download. |
| Parallel deployments may conflict | Multiple tasks deploying to the same host/group concurrently can conflict or deadlock. Use deployment groups, host locking, or serialized pipelines; check for an already running task before starting another. |
| Security baseline | Use IAM roles for deployment permissions, verify artifact integrity (checksum) before deploy, and never store plaintext credentials (AK/SK, DB passwords) in deployment scripts or task parameters (--params with type=encrypt exists for secrets). |
Triggers
Use this skill when the user asks about CloudDeploy / CodeArts Deploy operations, deployment task creation or management, artifact (OBS) configuration, or deployment failure troubleshooting.
Trigger phrases: "CloudDeploy", "CodeArts Deploy", "部署", "deploy task", "deployment", "deployment task", "deploy application", "部署任务", "部署应用", "start deploy", "发布", "release", "artifact deployment", "制品部署", "deploy failure", "部署失败", "pipeline deployment", "CI/CD deployment".
User utterance examples:
- "帮我创建一个部署应用/部署任务" (create a deploy application / deployment task)
- "启动/查看/删除这个部署任务" (start / view / delete this deployment task)
- "部署失败了,帮我分析一下原因" (deployment failed — analyze the root cause)
- "检查一下 OBS 上的制品是否存在" (verify whether the OBS artifact exists)
Prerequisites
- hcloud CLI installed and authenticated — see
references/cli-installation-guide.md - Authentication — one of:
- AK/SK credentials — configure the default hcloud profile with your access key and secret
key (see references/cli-installation-guide.md, section "Authentication"), or
- Environment variables
HUAWEICLOUD_SDK_AK/HUAWEICLOUD_SDK_SK(orHUAWEI_ACCESS_KEY/
HUAWEI_SECRET_KEY) — hcloud auto-detects them
- IAM permissions —
CodeArts Deploy ReadOnlyAccess(or equivalent read actions) for
query/analyze; CodeArts Deploy FullAccess (or the write actions listed in references/iam-policies.md) for create/start/delete — see references/iam-policies.md
- Region & project: all CodeArtsDeploy APIs are region/project scoped. Pass
--cli-region={region} and --project_id={project_id}. The project must be a CodeArts (DevCloud) project — an IAM project alone returns Deploy.00016902 项目不存在.
- Target hosts: CloudDeploy agent installed and online on every target host (see Critical
Warnings), and the OBS bucket/object for artifacts must exist in the same region.
Quality Reporting Environment Variables
| Environment Variable | Required | Description |
|---|---|---|
SKILL_QUALITY_ENDPOINT | No | Report endpoint, default https://skillsapi.developer.myhuaweicloud.com/api/quality/report |
SKILL_QUALITY_NAME | No | Skill name (default auto-detected) |
SKILL_QUALITY_DISABLE | No | Set to 1 to disable reporting (local debugging) |
SKILL_QUALITY_TIMEOUT | No | Report timeout seconds (default 3) |
Workflow
1. Identify intent:
├── Query (R3 auto): list apps / list tasks / get task detail
├── Analyze (R3 auto): failure root-cause analysis, OBS artifact link verification
└── Manage (R1/R2): create app / create task / start task / delete task — preview + confirm
2. Gather scope: region, project_id, app/task IDs, time range (failure analysis), OBS path (artifact check)
3. Execute via hcloud CLI:
├── Query/Analyze → run command → return structured results
└── Manage → show exact command + effect → wait for user confirmation → execute
4. Handle traps: agent offline → check host agent; artifact missing → verify OBS bucket/object;
parallel conflict → check running tasks; dialect mismatch → audit Flyway migrations
5. Report results (JSON), masking AK/SK-like values in outputWrite-operation rule: huawei_create_clouddeploy_app, huawei_create_clouddeploy_task, huawei_start_clouddeploy_task (R2) and huawei_delete_clouddeploy_task (R1) MUST NOT execute without an explicit user confirmation after the exact command and its effect are previewed. For delete (R1) the user must confirm a second time in plain words (e.g. "确认删除").
Core Commands
Service name is CodeArtsDeploy (KooCLI metadata directory codeartsdeploy; CloudDeploy is NOT accepted). Region parameter --cli-region={region} is required on every command. The --project_id is shown explicitly in examples; omit it only when your hcloud profile has a default project set. Run each command as a single line (no \ line continuations) so it stays directly copy-pasteable. Parameter names below were verified against hcloud CodeArtsDeploy <Operation> --help (KooCLI 7.2.12).
Query — Applications (R3, auto)
# List deploy applications in a project (page/size required; default size 1000)
hcloud CodeArtsDeploy ListAllApp --cli-region={region} --project_id={project_id} --page=1 --size=100
# Filter by status (abort|failed|not_started|pending|running|succeeded|timeout|not_executed)
hcloud CodeArtsDeploy ListAllApp --cli-region={region} --project_id={project_id} --page=1 --size=100 --states.1=failed --states.2=running
# Sort by name or start time (DESC|ASC)
hcloud CodeArtsDeploy ListAllApp --cli-region={region} --project_id={project_id} --page=1 --size=100 --sort_by=DESC --sort_name=startTimeQuery — Deployment Tasks (R3, auto)
# List deployment tasks (this legacy interface is maintained; ListAllApp is the new app-list API)
hcloud CodeArtsDeploy ListDeployTasks --cli-region={region} --project_id={project_id} --page=1 --size=50
# Get deployment task details by task ID
hcloud CodeArtsDeploy ShowDeployTaskDetail --cli-region={region} --task_id={task_id}ShowDeployTaskDetailis deprecated after 2024-09-30 (new equivalentShowAppDetailById), but is still maintained and is the operation confirmed forhuawei_get_clouddeploy_task.
Analyze — Deployment Failure Root Cause (R3, auto)
# Query historical execution records of a task in a date range (interval ≤ 30 days)
hcloud CodeArtsDeploy ListDeployTaskHistoryByDate --cli-region={region} --project_id={project_id} --id={task_id} --start_date=2026-09-01 --end_date=2026-09-08 --page=1 --size=20Diagnose the latest failed record by checking, in order:
- Agent offline / host not found — target host status in the execution log; verify the
CloudDeploy agent is installed and online on the host.
- Timeout —
timeoutstatus; check artifact size, task timeout config, and target host resources. - Artifact missing —
artifact not found; verify the OBS bucket and object path configured in
the task (see huawei_analyze_clouddeploy_artifact).
- Permission denied — verify IAM role/policy for the deployment account and host permissions.
- App-level errors — e.g.
Deploy.00016902(project not a CodeArts project), duplicate names,
template errors.
Analyze — OBS Artifact Link Verification (R3, auto)
# 1) Get the task detail and read the artifact configuration (bucket + object/package path)
hcloud CodeArtsDeploy ShowDeployTaskDetail --cli-region={region} --task_id={task_id}
# 2) Verify the OBS object exists (obsutil passthrough; configure first, see cli-installation-guide)
hcloud obs ls obs://{artifact_bucket}/{artifact_object_path}Expected results: task shows an OBS artifact source; ls returns the object. If the object is missing → advise re-uploading the artifact or fixing the task's artifact path; if access is denied → check the OBS bucket policy and the deployment account's GetObject permission.
Manage — Create Application (R2, preview + confirm)
# Pre-check that the application name is unique in the project (GET)
hcloud CodeArtsDeploy CheckIsDuplicateAppName --cli-region={region} --project_id={project_id} --name={app_name}
# Create the application (from template type; draft flag controls publish state)
hcloud CodeArtsDeploy CreateApp --cli-region={region} --project_id={project_id} --name={app_name} --create_type=template --is_draft=false [--description={description}]Preview before executing: show the exact command and the application to be created, then wait for user confirmation (R2). If CheckIsDuplicateAppName returns "duplicate", choose another name.Manage — Create Deployment Task (R2, preview + confirm)
# Create a deployment task from a template (task must reference an existing application/project)
hcloud CodeArtsDeploy CreateDeployTaskByTemplate --cli-region={region} --project_id={project_id} --project_name={project_name} --task_name={task_name} --template_id={template_id} [--configs.1.name={param_name} --configs.1.value={param_value} ...]Preview before executing: show the exact command and the task to be created, then wait for user confirmation (R2). The template determines the deployment steps; the application (project) must already exist (create it first with huawei_create_clouddeploy_app).Manage — Start Deployment (R2, preview + confirm)
# Start the deployment task (target hosts must have the agent online)
hcloud CodeArtsDeploy StartDeployTask --cli-region={region} --task_id={task_id}
# Start with dynamic parameters (type: text|host_group|encrypt|enum)
hcloud CodeArtsDeploy StartDeployTask --cli-region={region} --task_id={task_id} --params.1.key={param_name} --params.1.type=encrypt --params.1.value={param_value}Preview before executing: show the task, target hosts, and artifact source, then wait for user confirmation (R2). Check that no other task is currentlyrunningon the same hosts (parallel conflict trap). Use--params.N.type=encryptfor secrets — never plaintext credentials in scripts.
Manage — Delete Deployment Task (R1, preview + explicit confirm)
# Delete a deployment task by task ID
hcloud CodeArtsDeploy DeleteDeployTask --cli-region={region} --task_id={task_id}R1 delete operation: preview the exact command and the task being deleted, then require an explicit second confirmation (e.g. the user typing the task name or "确认删除") before execution. Deleting a task does not delete the application or the deployed resources.
Parameter Confirmation
All parameter names below were verified against hcloud CodeArtsDeploy <Operation> --help (KooCLI 7.2.12). Values in {} are placeholders — replace with real values. Do not invent parameter names — re-run --help if in doubt.
ListAllApp
| Parameter | Required | Type | Description | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
--cli-region | Yes (auto) | string | Region where the API can be called | |||||||
--project_id | Yes | string | CodeArts project ID | |||||||
--page | Yes | integer | Page number, ≥ 1 | |||||||
--size | Yes | integer | Items per page, default 1000 | |||||||
--group_id | No | string | Application group ID; no_grouped for ungrouped apps | |||||||
--sort_by | No | string | DESC or ASC, default DESC | |||||||
--sort_name | No | string | name or startTime | |||||||
--states.[N] | No | array\<string\> | abort\ | failed\ | not_started\ | pending\ | running\ | succeeded\ | timeout\ | not_executed |
ListDeployTasks
| Parameter | Required | Type | Description |
|---|---|---|---|
--cli-region | Yes (auto) | string | Region where the API can be called |
--project_id | Yes | string | CodeArts project ID |
--page | Yes | integer | Page number, ≥ 1 |
--size | Yes | integer | Items per page, ≤ 100 |
ShowDeployTaskDetail
| Parameter | Required | Type | Description |
|---|---|---|---|
--cli-region | Yes (auto) | string | Region where the API can be called |
--task_id | Yes | string | Deployment task ID |
ListDeployTaskHistoryByDate
| Parameter | Required | Type | Description |
|---|---|---|---|
--cli-region | Yes (auto) | string | Region where the API can be called |
--project_id | Yes | string | CodeArts project ID |
--id | Yes | string | Deployment task ID |
--start_date | Yes | string | Start time, yyyy-MM-dd |
--end_date | Yes | string | End time, yyyy-MM-dd; interval with start ≤ 30 days |
--page | Yes | integer | Page number, ≥ 1 |
--size | Yes | integer | Items per page, ≤ 100 |
CheckIsDuplicateAppName
| Parameter | Required | Type | Description |
|---|---|---|---|
--cli-region | Yes (auto) | string | Region where the API can be called |
--project_id | Yes | string | CodeArts project ID |
--name | Yes | string | Application name to check |
CreateApp
| Parameter | Required | Type | Description |
|---|---|---|---|
--cli-region | Yes (auto) | string | Region where the API can be called |
--project_id | Yes | string | CodeArts project ID |
--name | Yes | string | Application name |
--create_type | Yes | string | template |
--is_draft | Yes | boolean | Create as draft (true) or published (false) |
--description | No | string | Application description |
--group_id | No | string | Application group ID |
--arrange_infos.[N].* | No | object | Application arrangement/steps definition |
--trigger.* | No | object | Trigger source restrictions (trigger_source: 0 = all, 1 = pipeline only) |
--slave_cluster_id | No | string | Custom slave resource pool ID |
CreateDeployTaskByTemplate
| Parameter | Required | Type | Description | |||
|---|---|---|---|---|---|---|
--cli-region | Yes (auto) | string | Region where the API can be called | |||
--project_id | Yes | string | CodeArts project ID | |||
--project_name | Yes | string | Project name | |||
--task_name | Yes | string | Task (application) name | |||
--template_id | Yes | string | Deployment template ID | |||
--configs.[N].name | No | string | Deployment parameter name | |||
--configs.[N].value | No | string | Deployment parameter value | |||
--configs.[N].type | No | string | text\ | host_group\ | enum\ | encrypt (mandatory if name is set) |
--configs.[N].static_status | No | integer | 1 = cannot change during deployment, 0 = can change | |||
--configs.[N].limits.[N].* | No | object | Enumerated value optional parameters | |||
--configs.[N].task_id | No | string | Auto-generated after app creation | |||
--slave_cluster_id | No | string | Custom slave resource pool ID |
StartDeployTask
| Parameter | Required | Type | Description | |||
|---|---|---|---|---|---|---|
--cli-region | Yes (auto) | string | Region where the API can be called | |||
--task_id | Yes | string | Deployment task ID | |||
--params.[N].key | No | string | Parameter name passed during deployment | |||
--params.[N].type | No | string | text\ | host_group\ | encrypt\ | enum (mandatory for dynamic params) |
--params.[N].value | No | string | Parameter value | |||
--record_id | No | string | Deployment record ID (rollback to previous deployment) | |||
--trigger_source | No | string | 0 = no limit, 1 = pipeline-only trigger |
DeleteDeployTask
| Parameter | Required | Type | Description |
|---|---|---|---|
--cli-region | Yes (auto) | string | Region where the API can be called |
--task_id | Yes | string | Deployment task ID |
Quality Reporting
This Skill integrates scripts/skill_quality_sdk.py for execution quality reporting. Every run automatically reports traceid, status (success/bizfail/sys_fail/cancel), error code, cost, and masked input/output to the operations console.
Integration
- Python entry point: wrap main logic with the
quality_contextcontext manager:
from skill_quality_sdk import quality_context, QualityError
with quality_context(skill_name="huawei-cloud-deployment-task-management", skill_version="1.0.0") as q:
q.input = {"action": "huawei_list_clouddeploy_apps", "region": "cn-north-4"}
result = run_hcloud_command(...)
q.output = result- CLI-only Skill: the SDK is vendored in
scripts/for future Python wrapper use.
Error Code Convention
| Prefix | Category | Examples |
|---|---|---|
| U | User input | U01 missing param, U03 no data found |
| C | Configuration | C01 missing AK/SK/env, C02 missing project_id |
| N | Network | N01 timeout, N02 connection refused |
| B | Code bug | B01 null pointer, B04 version mismatch |
| P | Platform | P01 scheduler error, P02 resource insufficient |
Reporting is non-blocking and fails silently — it never interrupts the Skill main flow. Disable via SKILL_QUALITY_DISABLE=1 for local testing.
KooCLI Command Format Standard
The generic invocation shape is hcloud <service> <Operation> --cli-region=<region> [--key=value ...] — this is a format description only: <...> and [--key=value] are placeholders, never executed verbatim.
| Feature | Rule | Example |
|---|---|---|
| Service name | CodeArtsDeploy (metadata directory codeartsdeploy; CloudDeploy is NOT supported) | hcloud CodeArtsDeploy ListAllApp --cli-region=cn-north-4 |
| Operation name | PascalCase | ListAllApp, StartDeployTask |
| Region parameter | --cli-region=<value> always included | --cli-region=cn-north-4 |
| Simple parameter | --key=value | --project_id=xxx |
| Indexed parameter | --key.N=value | --states.1=failed, --params.1.key=xxx |
| Nested parameter | --parent.child=value | --configs.1.type=encrypt |
| Verification | Run --help first; parameter names come from --help output only | hcloud CodeArtsDeploy CreateApp --cli-region=cn-north-4 --help |
Reference Documents
references/iam-policies.md— Least-privilege IAM policies for CloudDeployreferences/cli-installation-guide.md— hcloud CLI installation and AK/SK/profile authentication (incl. OBS artifact check setup)references/verification-method.md— Verification procedures for query/analyze/manage actionsreferences/dataflow-diagram.md— Mermaid data flow diagramsreferences/acceptance-criteria.md— Acceptance criteria for this skill

