# devops-cli 帮助文档
**安装：**

  离线安装  
```
cd devops-cli
npm install && npm install -g
```
  在线安装  
```
npm install -g primeton-devops-cli
```

**devops-cli 工具提供以下命令：**

- [login](#login)
- [logout](#logout)
- [list](#list)
- [project](#project)
- [build](#build)
- [release](#release)
- [get](#get)

### **[login](#login)**
登录

**命令:**
```
devops login <devops_url> [options]
```

**参数（必填）**  
* devops_url, DevOps平台后端地址。

**options**
* -u, --user <user_name>, 用户名(必填).
* -p, --password <user_passwd>, 密码(必填).

**示例:**
```
devops login http://127.0.0.1:8080 -u ****** -p ******
```

### **[logout](#logout)**
登出

**命令:**
```
devops logout
```

**示例:**
```
devops logout
```

### **[list](#list)**
查询列表

**命令:**
```
devops list <devops_resource> [options]
```

**参数（必填）**  
* devops_resource, project:项目,builddefs(bds):构建定义,buildinstances(bis):构建实例,releasedefs(rds):发布定义.

**options**
* -p, --project <projectCode>, 项目Code,可通过查询项目命令获取,查询构建定义和发布定义时可以指定用以过滤,查询构建实例时必须指定.
* -d, --def-name <definitionName>, 构建定义名称，可通过查询构建定义命令获取，查询构建实例时必须指定具体构建定义的名称.
* -l, --label <labelName>, 查询构建定义或发布定义时可以根据label过滤,多个label用','号分隔.

**示例:**
```
// 查询所有项目
devops list project
```
```
// 查询所有构建定义
devops list bds
```
```
// 查询项目(SDYX)下的所有构建定义
devops list bds -p SDYX
```
```
// 查询项目(SDYX)下有指定标签(test)的构建定义
devops list bds -p SDYX -l test
```
```
// 查询所有发布定义
devops list rds
```
```
// 查询项目(SDYX)下的所有发布定义
devops list rds -p SDYX
```
```
// 查询项目(SDYX)下有指定标签(test)的发布定义
devops list rds -p SDYX -l test
```
```
// 查询项目(SDYX)下指定构建定义(test-cli)的所有构建实例
devops list bis -p SDYX -d test-cli
```

### **[project](#project)**
配置默认项目

**命令:**
```
devops project <project_code>
```

**参数（必填）**  
* project_code, 项目Code,可以通过查询项目命令获取.

**示例:**
```
// 配置默认的项目(SDYX),其他命令若不指定-p命令,则默认使用-p SDYX.
devops project SDYX
```

### **[build](#build)**
构建

**命令:**
```
devops build <definition_name> [options]
```

**参数（必填）**  
* definition_name, 构建定义名称,可通过查询命令获取.

**options**
* -p, --project <projectCode>, 项目Code,若不指定则使用默认项目.
* -c, --console, 控制台等待构建定义执行，打印进度条并等待返回结果.
* -e, --extra-vars <extra_vars>, 构建定义执行参数,可通过查询构建定义命令获取.

**示例:**
```
// 执行默认项目的构建定义(test-cli),若不指定-p则必须配置默认项目。
devops build test-cli
```
```
// 执行指定项目(TEST)的构建定义(test-cli)。
devops build test-cli -p TEST
```
```
// 执行默认项目的构建定义(test-cli),并实时返回进度，等待执行完成返回结果。
devops build test-cli -c
```
```
// 执行默认项目的构建定义(test-cli),使用变量{"buildParams":{"test1":"aa","test2":"bb"}}。
devops build test-cli -e '{"buildParams":{"test1":"aa","test2":"bb"}}'
```

### **[release](#release)**
发布

**命令:**
```
devops release <definition_name> [options]
```

**参数（必填）**  
* definition_name, 发布定义名称,可通过查询命令获取.

**options**
* -p, --project <projectCode>, 项目Code,若不指定则使用默认项目.
* -c, --console, 控制台等待发布定义执行，打印进度条并等待返回结果.
* -e, --extra-vars <extra_vars>, 发布定义执行参数,可通过查询发布定义命令获取.

**示例:**
```
// 执行默认项目的发布定义(test-cli),若不指定-p则必须配置默认项目。
devops release test-cli
```
```
// 执行指定项目(TEST)的发布定义(test-cli)。
devops release test-cli -p TEST
```
```
// 执行默认项目的发布定义(test-cli),并实时返回进度，等待执行完成返回结果。
devops release test-cli -c
```
```
// 执行默认项目的发布定义(test-cli),使用变量{"releaseParams":{"test":{"test2":"aa","test3":"bb"},"Global":{"test1":"cc"}}}。
devops release test-cli -e '{"releaseParams":{"test":{"test2":"aa","test3":"bb"},"Global":{"test1":"cc"}}}'
```

### **[get](#get)**
查询单个详情

**命令:**
```
devops get <devops_resource> <resource_name> [options]
```

**参数（必填）**  
* devops_resource, buildinstance(bi):构建实例,releaseinstance(ri):发布实例.
* resource_name, 构建实例或发布实例的名称,执行构建或部署是会返回该名称.

**options**
* -p, --project <projectCode>, 项目Code,若不指定则使用默认项目.
* -d, --def-name <definitionName>, 构建定义或发布定义的名称(必填).

**示例:**
```
// 查询默认项目下发布定义(test-cli)的发布实例(test-cli.12_20200330095445)详情。
devops get ri test-cli.12_20200330095445 -d test-cli
```
```
// 查询默认项目下构建定义(test-cli)的构建实例(202003221315-37405-1-1054)详情。
devops get bi 202003221315-37405-1-1054 -d test-cli
```


## 完整示例

- 首先登录DevOps平台
```
devops login http://10.15.15.147:18080 -u sysadmin -p ********
```
<img src="image/login.jpg" alt="登录" />  

- 查看项目列表
```
devops list project
```
<img src="image/list-project.jpg" alt="查看项目列表" />  

- 设置默认项目为DevOps示例项目(SDYX)
```
devops project SDYX
```

- 查看项目下的构建定义列表,根据demo标签过滤
```
devops list bds -l demo
```
<img src="image/list-bds.jpg" alt="查看构建定义列表" />

- 执行构建定义
```
devops build test-cli -e '{"buildParams":{"test1":"test2","test2":"test4"}}'
```
<img src="image/build.jpg" alt="执行构建定义" />

- 查询构建结果(构建实例)
```
devops get bi 202004021440-37885-1-1057 -d test-cli
```
<img src="image/get-bi.jpg" alt="查看构建实例" />

- 查看项目下的发布定义列表,根据demo标签过滤
```
devops list rds -l demo
```
<img src="image/list-rds.jpg" alt="查看发布定义列表" />

- 执行发布定义
```
devops release test-cli -e '{"releaseParams":{"test":{"test2":"aa","test3":"bb"},"Global":{"test1":"cc"}}}'
```
<img src="image/release.jpg" alt="执行发布定义" />

- 查询发布结果(发布实例)
```
devops get ri test-cli.15_20200402145220 -d test-cli
```
<img src="image/get-ri.jpg" alt="查看发布实例" />