# 部署插件简介

DeployKit 是一款运行于云端 IDE 的部署插件，支持多种框架一键部署至腾讯云。便于帮助开发者快速部署项目到腾讯云，避免了部署过程中开发者需要深入了解部署细节的问题，使得开发者专注于业务代码逻辑的实现即可。

目前支持两种部署方式，分别为 COS 静态网站资源部署（适用于大部分的前端项目）和 TKE 容器化部署（适用于所有项目）。开发者可自行根据不同需求来配置 `deploy.yml` 文件来指定不同的部署方式及部署配置。 云端 IDE 提供的常用模板项目已有部分默认提供了可直接部署的 deploy.yml 配置文件，欢迎体验使用。

### 云端 IDE 已默认附带 deploy.yml 配置的模板项目列表

> * React(create-react-app)

> * React(UmiJS)

> * Vue(vue-cli-service）

> * Vite

> * Angular

> * Svelte

> * Preact

> * Ember

其他还未默认附带 deploy.yml 配置的模板项目暂时无法直接部署，目前需要开发者根据文档自行配置后方可部署，后续将会进一步支持和优化，敬请期待。

## 部署插件使用前的准备

部署到腾讯云需要 `已实名认证` 的腾讯云账号。如果没有腾讯云账号，需[注册账号](https://cloud.tencent.com/register)。

## 使用说明

### 打开部署页面

- 单击左侧菜单栏 **“火箭”** 图标，打开部署插件页面，插件会根据项目内置的 **deploy.yml** 来显示当前可部署的配置信息，点击 `立即部署` 即可进入部署状态。

![image1](https://cloudcache.tencent-cloud.com/qcloud/ui/static/static_source_business/5a915622-1126-4382-9cef-010d9f4df543.png)

![image2](https://cloudcache.tencent-cloud.com/qcloud/ui/static/static_source_business/41f7c665-6ac8-4b8d-9ef8-48c036b83bbd.png)

### 成功部署

- 部署进程完成后，点击 **“访问”** 即可打开外部链接访问部署成功后的内容。

![image3](https://cloudcache.tencent-cloud.com/qcloud/ui/static/static_source_business/8fd4305a-4f98-4f37-ac02-bf32736d0ec3.png)


### 切换部署环境

- 点击部署页面右上角的 **“环境”** 图标，即可切换所需部署的环境。

![image4](https://cloudcache.tencent-cloud.com/qcloud/ui/static/static_source_business/11ba1857-e7b6-4a41-b80b-19db7b48dc1e.png)

### 刷新部署信息或配置信息

- 点击部署页面右上角的 **“刷新”** 图标，即可刷新部署信息或最新的 deploy.yml 配置信息。

![image5](https://cloudcache.tencent-cloud.com/qcloud/ui/static/static_source_business/b7d34f18-985e-42d8-9e77-91db2e77721d.png)

### 自定义部署环境及配置

- 打开项目内 `deploy.yml` 文件，按照规范修改环境部署配置、构建步骤、构建产物目录等。其中 **action** 项内容为内置操作，不可修改。

![image6](https://cloudcache.tencent-cloud.com/qcloud/ui/static/static_source_business/80ed28ba-6f82-429d-90cc-ff07f925e979.png)


## deploy.yml 全部配置解析

```yml
# deploy.yml

project: react-helloworld                # 必填，项目名称
environments:							 # 必填，不同环境下的配置
  dev:									 # 必填，环境名称
    description: 开发环境				  # 必填，环境名称描述，可与环境名称相同
    services:							 # 必填，项目下需要部署的服务项
      website:							 # 必填，服务名称
        version: 0.0.1					 # 必填，版本号	
        runtime: tcloud-cos				 # 必填，部署运行方式，目前提供了 tcloud-cos 和 tcloud-tke 两种部署方式。常规前端项目推荐以 COS 静态网站资源部署方式访问，则选用 tcloud-cos；其他较为复杂的项目部署推荐选用 tcloud-tke 方式。
        jobs:							 # 必填，部署过程需要执行的操作项
          build:						 # 可选，构建项目，用于部署前的准备工作
            steps:						 # 执行的各项步骤
              - run: yarn install		 # 运行的命令
              - run: yarn build			
              - action: tcloud-actions/deploykit-cos-package-task@v1    # 执行 COS 部署方式的打包任务，不可自定义
                with:					 # 执行任务时的附加变量
                  dist: ./build/		 # 指定构建产物的目录
          deploy:						 # 必填，部署时需要执行的操作项
            needs: build				 # 可选，指定执行该项的前提操作项，以便按指定顺序执行任务
            steps:						 # 执行的各项步骤
              - action: tcloud-actions/deploykit-cos-deploy-task@v1	    # 执行 COS 部署方式的部署任务，不可自定义
	 # 多服务的不同部署方式
	  kafka:					         	
        version: 0.0.1
        runtime: tcloud-tke
        jobs:
          deploy:
            steps:
              - action: tcloud-actions/deploykit-tke-helm-deploy-task@v1   # 指定 TKE 部署方式的部署任务，不可自定义
                with:
                  name: kafka											   # 必填，实例名称
                  chart: ./kafka/kafka-17.1.0.tgz						   # 必填，指定 helm chart 路径
                  values: ./kafka/values.yml							   # 可选，使用 values 替换 helm chart 里的值
	  worker:
        version: 0.0.1
        runtime: tcloud-tke
        jobs:
          deploy:
            steps:
              - action: tcloud-actions/deploykit-tke-helm-deploy-task@v1
                with:
                  name: worker
                  chart: ./worker/chart
                  dockerfile: ./worker/Dockerfile						   # 可选，指定 docker file 的路径
                  dockerContext: ./worker								   # 可选，指定 docker context 的路径

```

配置详细解析：

| 参数名称       | 必选 | 类型                      |     默认值      | 描述              |
| -------------- | :--: | :------------------------ | :-------------: | :---------------- |
| project |  是  | string | 无  | 项目名称  |
| environments  |  是  | object |  无  | 不同环境的部署配置 |
| description  |  是  | string | 无 | 环境名称及描述  |
| services  |  是  | object | 无 | 部署的各项服务 |
| version |  是  |  string | 无 |  指定部署服务的版本号  |
| runtime |  是  |  string  | 无 |   部署运行方式，目前提供了 tcloud-cos 和 tcloud-tke 两种部署方式。常规前端项目推荐以 COS 静态网站资源部署方式访问，则选用 tcloud-cos；其他较为复杂的项目部署推荐选用 tcloud-tke 方式。以下简称为 COS 和 TKE 部署方式。  |
| jobs  |  是  | object | 无 | 部署过程需要执行的操作项 |
| need |  否  |  string | 无 |  指定执行该项的前提操作项，以便按指定顺序执行任务  |
| steps |  是  |  object[] | 无 |  执行部署操作项的各项步骤  |
| action |  是  |  string | 无 |  不同部署方式和步骤所的任务，不可自定义。可选项请参考示例。  |
| with |  否  |  string | 无 |  执行任务时的附加操作与变量  |
| dist |  否  |  string | 无 |  指定构建产物的目录（指定部署方式为 COS 时生效）  |
| name |  否  |  string | 无 |  部署实例的名称（指定部署方式为 TKE 时生效，且为必填）  |
| chart |  否  |  string | 无 |  指定 helm chart 路径（指定部署方式为 TKE 时生效，且为必填）  |
| values |  否  |  string | 无 |  使用 values.yml 替换 helm chart 里的值（指定部署方式为 TKE 时生效）  |
| dockerfile |  否  |  string | 无 |  指定 docker file 的路径（指定部署方式为 TKE 时生效）  |
| dockerContext |  否  |  string | 无 |  指定 docker context 的路径（指定部署方式为 TKE 时生效）  |

## 部署插件常见问题处理

当无法成功进行一键部署的时候，并且排除不是账号或平台限制所导致的，可根据终端 `输出` 的内容进行排查。
