Install
openclaw skills install @huaweiclouddev/huawei-cloud-deployment-task-managementHuawei Cloud CloudDeploy (CodeArts Deploy / 部署) management, execution, and failure analysis using the KooCLI hcloud command-line client. Covers deploy application listing and creation, deployment task listing/detail/creation, task start, task deletion, deployment failure root-cause analysis (agent offline, timeout, missing artifact, permission), and OBS artifact link verification. Query and Analyze actions run automatically (R3); Create/Start actions require preview and user confirmation (R2); Delete requires explicit confirmation (R1). Supports AK/SK credentials and local hcloud profile authentication. Triggers include: "CloudDeploy", "CodeArts Deploy", "部署", "deploy task", "deployment", "deployment task", "deploy application", "部署任务", "部署应用", "start deploy", "发布", "release", "artifact deployment", "制品部署", "deploy failure", "部署失败", "pipeline deployment", "CI/CD deployment".
openclaw skills install @huaweiclouddev/huawei-cloud-deployment-task-managementThis 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} --helpbefore 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.
| 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). |
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:
references/cli-installation-guide.mdreferences/cli-installation-guide.md, section "Authentication"), orHUAWEICLOUD_SDK_AK / HUAWEICLOUD_SDK_SK (or HUAWEI_ACCESS_KEY /
HUAWEI_SECRET_KEY) — hcloud auto-detects themCodeArts 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--cli-region={region} and --project_id={project_id}. The project must be a CodeArts
(DevCloud) project — an IAM project alone returns Deploy.00016902 项目不存在.| 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) |
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 output
Write-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. "确认删除").
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).
# 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=startTime
# 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.
# 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=20
Diagnose the latest failed record by checking, in order:
timeout status; check artifact size, task timeout config, and target host resources.artifact not found; verify the OBS bucket and object path configured in
the task (see huawei_analyze_clouddeploy_artifact).Deploy.00016902 (project not a CodeArts project), duplicate names,
template errors.# 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.
# 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
CheckIsDuplicateAppNamereturns "duplicate", choose another name.
# 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).
# 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 currently
runningon the same hosts (parallel conflict trap). Use--params.N.type=encryptfor secrets — never plaintext credentials in scripts.
# 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.
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.
| 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 |
| 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 |
| Parameter | Required | Type | Description |
|---|---|---|---|
--cli-region | Yes (auto) | string | Region where the API can be called |
--task_id | Yes | string | Deployment task ID |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| Parameter | Required | Type | Description |
|---|---|---|---|
--cli-region | Yes (auto) | string | Region where the API can be called |
--task_id | Yes | string | Deployment task ID |
This Skill integrates scripts/skill_quality_sdk.py for execution quality reporting. Every run
automatically reports trace_id, status (success/biz_fail/sys_fail/cancel), error code, cost, and
masked input/output to the operations console.
Python entry point: wrap main logic with the quality_context context 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.
| 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.
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 |
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