起因
公司使用syncd搭建的發佈系統,在有時候需要發佈的時候需要進行一系列繁瑣的操作才能發佈代碼。思考如何命令行一鍵快速發佈。
研究
通過抓公司頁面得到發佈的關鍵接口。
- 登錄
api/login
參數
參數名 | 備註 |
---|---|
username | |
password | md5 |
返回
type ResData struct {
Code int `json:"code"`
Data Data `json:"data"`
Message string `json:"message"`
}
type Data struct {
Token string `json:"token"`
}
- 查看空間列表
api/project/space/list
參數名 | 備註 |
---|---|
token | login返回 |
offset: | 分頁 |
limit: | 個數 |
type ResData struct {
Code int `json:"code"`
Data Data `json:"data"`
Message string `json:"message"`
}
type List struct {
ID int `json:"id"`
Name string `json:"name"`
Description string `json:"description"`
Ctime int `json:"ctime"`
}
type Data struct {
List []List `json:"list"`
Total int `json:"total"`
}
- 查看項目列表
api/project/list
參數
參數名 | 備註 |
---|---|
spaceId | 空間ID |
offset: | 分頁 |
limit: | 每頁條數 |
token | login返回 |
type ResData struct {
Code int `json:"code"`
Data Data `json:"data"`
Message string `json:"message"`
}
type List struct {
ID int `json:"id"`
Name string `json:"name"`
NeedAudit int `json:"need_audit"`
Status int `json:"status"`
}
type Data struct {
List []List `json:"list"`
Total int `json:"total"`
}
- 查看所有項目列表
api/deploy/apply/project/all
參數名 | 備註 |
---|---|
token | login返回 |
type ResData []struct {
ProjectID int `json:"project_id"`
ProjectName string `json:"project_name"`
SpaceID int `json:"space_id"`
SpaceName string `json:"space_name"`
}
- 構建任務
api/deploy/build/start
參數
參數名 | 備註 |
---|---|
id | 項目ID |
- 查看構建狀態
api/deploy/build/status
參數
參數名 | 備註 |
---|---|
id | 項目ID |
返回
map[string]interface{}
status 解釋
BUILD_STATUS_INIT = 0
BUILD_STATUS_RUNNING = 1
BUILD_STATUS_DONE = 2
BUILD_STATUS_ERROR = 3
- 部署任務
api/deploy/deploy/start
參數
參數名 | 備註 |
---|---|
id | 項目ID |
- 部署狀態
api/deploy/deploy/status
參數
參數名 | 備註 |
---|---|
id | 項目ID |
status 解釋
DEPLOY_STATUS_NONE = 0
DEPLOY_STATUS_START = 1
DEPLOY_STATUS_SUCCESS = 2
DEPLOY_STATUS_FAILED = 3
所以根據以上寫出代碼
代碼放在github了
github地址:syncd-console
1.做了項目名模糊查詢
2.未做回滾功能
效果