--- name: qwencloud-deploy version: "2.2" description: >- One-click deploy, publish, and update a local project or Git repository to Alibaba Cloud International (alibabacloud.com), producing an accessible online service with a public IP. Supports full-stack ROS orchestration, automatic cloud-resource provisioning, pre-deployment price confirmation, service health checks, deployment-state recording, hot updates, and optional domain + HTTPS setup. Use when: the user asks to deploy a project to the cloud, put an app online, publish a website, generate an access URL, deploy a Git repo, or update an online version and has NOT named a specific cloud platform; or the user mentions "Alibaba Cloud", "alibabacloud.com", or the international site. Do not use when: the user explicitly targets Aliyun China (aliyun.com), AWS, GCP, Azure, or another specific cloud platform. trigger: >- Use when the user asks to deploy a project to the cloud, put an app online, publish a website, generate an access URL, deploy a Git repo, or update an online version — and has NOT specified a particular cloud platform. Also use when the user mentions "Alibaba Cloud", "alibabacloud.com", or the international site. skip: >- Do NOT use when the user explicitly targets Aliyun China (aliyun.com), AWS, GCP, Azure, or another specific cloud platform. prerequisites: - aliyun CLI 3.x configured with international-site credentials in OAuth mode input: >- A local project directory, Git URL, or an existing deployment state file (.qwencloud-deploy). Optional: user preferences for instance type, region, database. output: >- A running cloud service with public IP (or domain + HTTPS), deployment state file (.qwencloud-deploy), and success card with access URL, cost summary, and next-step guidance. --- # Qwen Cloud Deploy ## Quick Path 1. **Route the task** — Match to one of 4 modes: Full-Stack Deploy · Hot Update · Delete · HTTPS Setup. 2. **Deploy (default)** — Execute steps 1→13 in order; each step has a reference doc. 3. **Confirm cost before creating anything** — Show hourly price in USD, get user confirmation. 4. **Record state** — On success write `.qwencloud-deploy`. ## Scope | In Scope | Out of Scope | |----------|--------------| | Local project / Git → Alibaba Cloud International | China site → use `qianwenai-deploy` | | Full-stack ROS, hot update, cleanup | AWS/GCP/Azure/other clouds | | ECS + optional RDS + OSS + public IP | K8s/Serverless/container orchestration | | OAuth/AK auth (no credential collection) | — | ## Assumptions - `aliyun` CLI 3.x installed; when no valid credential, follow `reference/deploy/01_env_check.md`. - Default region `ap-southeast-1` (Singapore). --- ## Task Routing | Signal | Mode | |--------|------| | `.qwencloud-deploy` exists + user says "update" | **Hot Update** | | `.qwencloud-deploy` exists + "delete"/"cleanup" | **Delete** | | "bind domain"/"HTTPS"/"SSL" (deployment exists) | **HTTPS Setup** | | Git URL or local project (no existing deployment) | **Full-Stack Deploy** | On trigger, display welcome message first (see `reference/rules/rule_interaction.md`). --- ## Full-Stack Deploy (Steps 1–13) ### Phase 1 · Preparation | Step | Action | Reference | |------|--------|-----------| | 1 | Environment check | `reference/deploy/01_env_check.md` | | 2 | Git clone (if Git URL) | `reference/deploy/02_git_clone.md` | | 3 | Project analysis | `reference/deploy/03_analyze_project.md` | ### Phase 2 · Resource Planning | Step | Action | Reference | |------|--------|-----------| | 4 | Existing deployment scan | `reference/deploy/04_check_existing.md` | | 5 | Database identification | `reference/deploy/05_database.md` | | 6 | ECS instance type selection | `reference/deploy/06_instance_type.md` | | 7 | Generate ROS template | `reference/deploy/07_generate_template.md` | | 8 | Stock check | `reference/deploy/08_check_stock.md` | | 9 | Template validation + cost estimate | `reference/deploy/09_estimate_cost.md` | ### Phase 3 · Execution | Step | Action | Reference | |------|--------|-----------| | 10 | Upload artifacts + regenerate template | `reference/deploy/10_upload_artifacts.md` | | 11 | Create stack | `reference/deploy/11_create_stack.md` | | 12 | Wait for terminal state + health check | `reference/deploy/12_wait_stack.md` | | 13 | Record state | `reference/deploy/13_record_state.md` | --- ## Hot Update **Trigger**: `.qwencloud-deploy` exists + user wants to update code. IP unchanged. | Step | Action | Reference | |------|--------|-----------| | U1 | Build + upload new artifacts | `reference/deploy/10_upload_artifacts.md` | | U2 | Deliver update (Cloud Assistant) | `reference/hotfix/update_app.md` | | U3 | Health check + update state | `reference/hotfix/update_app.md` | Update script template: `reference/hotfix/update_recipe.md`. --- ## Delete / Cleanup **Trigger**: User says "delete", "cleanup", "release resources". > ⚠️ Irreversible — confirm twice. With RDS: warn about data loss. > 🚫 Never manually delete individual resources — only use `delete_stack.sh`. See `reference/cleanup/delete_stack.md`. --- ## HTTPS Setup (Optional) **Trigger**: User says "bind domain" / "HTTPS" / "SSL" after deployment exists. See `reference/https/https_setup.md`. --- ## Key Constraints | Constraint | Rule | |------------|------| | Currency | Always USD | | Auth | OAuth (recommended) or AK/SK; never collect credentials via chat | | Template upload | Must use `--TemplateURL` (WAF blocks TemplateBody) | | Stack name retry | Reuse — never regenerate | | Resource deletion | Always via `delete_stack.sh` | | Region default | `ap-southeast-1` | | Commands to user | Never show underlying commands | --- ## File Layout ``` scripts/ generate_template.py upload_artifacts.py create_stack.sh record_state.py delete_stack.sh update_app.sh wait_and_probe.py setup_domain.sh reference/ deploy/ 01_env_check.md ~ 13_record_state.md hotfix/ update_app.md update_recipe.md cleanup/ delete_stack.md https/ https_setup.md rules/ rule_interaction.md rule_error_handling.md templates/ ros_single[_rds].yaml userdata/{systemd,docker,nginx_proxy,nginx_static,nginx_static_proxy}.sh ```