Browse Source

参数管理

tags/v3.0.1
victor 5 years ago
parent
commit
cb90dc1f51
6 changed files with 205 additions and 2 deletions
  1. +125
    -2
      api_document.md
  2. +49
    -0
      app/controllers/ci/secrets_controller.rb
  3. +20
    -0
      app/libs/ci/drone/api.rb
  4. +2
    -0
      app/views/ci/secrets/_index.json.jbuilder
  5. +3
    -0
      app/views/ci/secrets/index.json.jbuilder
  6. +6
    -0
      config/routes.rb

+ 125
- 2
api_document.md View File

@@ -1,4 +1,3 @@
---


# API文档
@@ -19,7 +18,6 @@


### API接口
---

#### 用户注册(通过其他平台)
```
@@ -4830,9 +4828,134 @@ curl --location --request DELETE 'http://localhost:3000/api/ci/templates/10'

------

#### 参数列表查询

```
GET /api/ci/secrets/secrets?owner={owner}&repo={repo}
```

*示例*

```bash
curl --location --request GET 'http://localhost:3000/api/ci/secrets?owner=test&repo=test'
```

*请求参数说明:*

| 参数名 | 必选 | 类型 | 说明 |
| ------ | ---- | ------ | ---------- |
| owner | 是 | string | 仓库所有人 |
| repo | 是 | string | 仓库名 |

*返回参数说明:*

| 参数名 | 类型 | 说明 |
| ------ | ------ | ------ |
| name | string | 参数名 |
| data | string | 参数值 |
| repo | string | 仓库 |

返回值

```json
[
{
"id": 1,
"name": "test",
"data": "test",
"repo": "test"
}
]

```

------

#### 参数新增/更新

```
POST /api/ci/secrets?owner={owner}&repo={repo}
```

*示例*

```bash
curl --location --request POST 'http://localhost:3000/api/ci/secrets?owner=test&repo=test' \
--data-raw ' {
"name": "ip",
"data": "1.1.1.1",
"id": 21
}'
```

*请求参数说明:*

| 参数名 | 必选 | 类型 | 说明 |
| ------ | ---- | ------ | ------------ |
| owner | 是 | string | 仓库拥有者 |
| repo | 是 | string | 仓库名 |
| name | 是 | string | 参数名 |
| data | 是 | string | 参数值 |
| id | 否 | int | id,更新时传 |

*返回参数说明:*

| 参数名 | 类型 | 说明 |
| ------- | ------ | ------------ |
| status | int | 状态码 0成功 |
| message | string | 消息 |

返回值

```json
{
"status": 0,
"message": "success"
}
```

------

#### 参数删除

```
DELETE /api/ci/secrets/{id}/{name}?owner={owner}&repo={repo}
```

*示例*

```bash
curl --location --request DELETE 'http://localhost:3000/api/ci/secrets/1/p2?owner=victor&repo=trustieTest' \
```

*请求参数说明:*

| 参数名 | 必选 | 类型 | 说明 |
| ------ | ---- | ------ | ------ |
| name | 是 | string | 参数名 |
| id | 是 | int | 参数id |

*返回参数说明:*

| 参数名 | 类型 | 说明 |
| ------- | ------ | ------------ |
| status | int | 状态码 0成功 |
| message | string | 返回消息 |

返回值

```json
{
"status": 0,
"message": "success"
}
```

------




#### 解除CI服务器绑定
```
DELETE /api/users/ci/cloud_account/unbind


+ 49
- 0
app/controllers/ci/secrets_controller.rb View File

@@ -0,0 +1,49 @@
class Ci::SecretsController < Ci::BaseController

before_action :load_repo

# 参数列表
def index
cloud_account = current_user.ci_cloud_account
result = Ci::Drone::API.new(@ci_user.user_hash, cloud_account.drone_url, params[:owner], params[:repo], nil).secrets
@secrets = result
end

#新增、更新参数
def create
cloud_account = current_user.ci_cloud_account
options = {
name: params[:name],
data: params[:data]
}
id = params[:id]
if id
result = Ci::Drone::API.new(@ci_user.user_hash, cloud_account.drone_url, params[:owner], params[:repo], options).update_secret
if result["id"]
render_ok
else
render_error(result["message"])
end
else
result = Ci::Drone::API.new(@ci_user.user_hash, cloud_account.drone_url, params[:owner], params[:repo], options).create_secret
if result["id"]
render_ok
else
render_error(result["message"])
end
end
end

#删除参数
def destroy
name = params[:name]
if !name.blank?
cloud_account = current_user.ci_cloud_account
Ci::Drone::API.new(@ci_user.user_hash, cloud_account.drone_url, params[:owner], params[:repo], {name: name}).delete_secret
render_ok
else
render_error("参数名不能为空")
end
end

end

+ 20
- 0
app/libs/ci/drone/api.rb View File

@@ -85,4 +85,24 @@ class Ci::Drone::API < Ci::Drone::Request
post(endpoint, "/api/users", {login: options[:login], email: options[:email], avatar_url:options[:avatar_url],active:true, drone_token: options[:token]})
end

# Creates a secret.
def create_secret
post(endpoint, "/api/repos/#{owner}/#{repo}/secrets", {name: options[:name], data: options[:data], pull_request:true, drone_token: drone_token})
end

# Update a secret.
def update_secret
patch(endpoint, "/api/repos/#{owner}/#{repo}/secrets/#{options[:name]}", { data: options[:data], pull_request:true, drone_token: drone_token})
end

# list of secrets.
def secrets
get(endpoint, "/api/repos/#{owner}/#{repo}/secrets", drone_token: drone_token)
end

# delete secret.
def delete_secret
delete(endpoint, "/api/repos/#{owner}/#{repo}/secrets/#{options[:name]}", drone_token: drone_token)
end

end

+ 2
- 0
app/views/ci/secrets/_index.json.jbuilder View File

@@ -0,0 +1,2 @@
json.id secret['id']
json.name secret['name']

+ 3
- 0
app/views/ci/secrets/index.json.jbuilder View File

@@ -0,0 +1,3 @@
json.array! @secrets do |secret|
json.partial! "/ci/secrets/index", secret: secret
end

+ 6
- 0
config/routes.rb View File

@@ -39,6 +39,12 @@ Rails.application.routes.draw do
end
end
resources :secrets do
member do
delete :destroy, :path => ":name", to: 'secrets#destroy'
end
end
resources :pipelines do
collection do
get :list


Loading…
Cancel
Save