| @@ -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 | |||
| @@ -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 | |||
| @@ -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 | |||
| @@ -0,0 +1,2 @@ | |||
| json.id secret['id'] | |||
| json.name secret['name'] | |||
| @@ -0,0 +1,3 @@ | |||
| json.array! @secrets do |secret| | |||
| json.partial! "/ci/secrets/index", secret: secret | |||
| end | |||
| @@ -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 | |||