2020-07-22 14:28:54 +08:00
|
|
|
class DevOps::BuildsController < ApplicationController
|
2020-07-22 11:18:02 +08:00
|
|
|
include RepositoriesHelper
|
|
|
|
|
|
2020-07-21 17:08:07 +08:00
|
|
|
before_action :require_login
|
2020-07-22 14:28:54 +08:00
|
|
|
before_action :find_project
|
2020-07-22 15:16:01 +08:00
|
|
|
before_action :devops_authorize!
|
2020-07-15 09:43:30 +08:00
|
|
|
|
|
|
|
|
def index
|
2020-07-22 14:28:54 +08:00
|
|
|
cloud_account = @project.dev_ops_cloud_account
|
|
|
|
|
result = DevOps::Drone::API.new(cloud_account.drone_token, cloud_account.drone_url, @project.owner.login, @project.identifier).builds
|
2020-07-15 16:53:38 +08:00
|
|
|
|
|
|
|
|
render json: result
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def detail
|
2020-07-22 14:28:54 +08:00
|
|
|
cloud_account = @project.dev_ops_cloud_account
|
|
|
|
|
result = DevOps::Drone::API.new(cloud_account.drone_token, cloud_account.drone_url, @project.owner.login, @project.identifier, number: params[:number]).build
|
2020-07-15 16:53:38 +08:00
|
|
|
|
|
|
|
|
render json: result
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def restart
|
2020-07-22 14:28:54 +08:00
|
|
|
cloud_account = @project.dev_ops_cloud_account
|
|
|
|
|
result = DevOps::Drone::API.new(cloud_account.drone_token, cloud_account.drone_url, @project.owner.login, @project.identifier, number: params[:number]).restart
|
2020-07-15 16:53:38 +08:00
|
|
|
|
|
|
|
|
render json: result
|
2020-07-15 09:43:30 +08:00
|
|
|
end
|
|
|
|
|
|
2020-07-15 16:53:38 +08:00
|
|
|
def delete
|
2020-07-22 14:28:54 +08:00
|
|
|
cloud_account = @project.dev_ops_cloud_account
|
|
|
|
|
result = DevOps::Drone::API.new(cloud_account.drone_token, cloud_account.drone_url, @project.owner.login, @project.identifier, number: params[:number]).stop
|
2020-07-15 16:53:38 +08:00
|
|
|
render json: result
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def logs
|
2020-07-22 14:28:54 +08:00
|
|
|
cloud_account = @project.dev_ops_cloud_account
|
|
|
|
|
result = DevOps::Drone::API.new(cloud_account.drone_token, cloud_account.drone_url, @project.owner.login, @project.identifier, build: params[:number], stage: params[:stage], step: params[:step]).logs
|
2020-07-15 16:53:38 +08:00
|
|
|
|
|
|
|
|
render json: result
|
2020-07-15 09:43:30 +08:00
|
|
|
end
|
|
|
|
|
|
2020-07-22 11:18:02 +08:00
|
|
|
# get .trustie-pipeline.yml file
|
|
|
|
|
def get_trustie_pipeline
|
|
|
|
|
file_path_uri = URI.parse('.trustie-pipeline.yml')
|
2020-07-22 14:28:54 +08:00
|
|
|
interactor = Repositories::EntriesInteractor.call(@project.owner, @project.identifier, file_path_uri, ref: params[:ref] || "master")
|
2020-07-22 11:18:02 +08:00
|
|
|
if interactor.success?
|
|
|
|
|
file = interactor.result
|
|
|
|
|
return render json: {} if file[:status]
|
|
|
|
|
|
2020-07-24 15:35:43 +08:00
|
|
|
json = {name: file['name'], path: file['path'], sha: file['sha'], content: render_decode64_content(file['content'])}
|
2020-07-22 11:18:02 +08:00
|
|
|
render json: json
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
2020-07-15 09:43:30 +08:00
|
|
|
private
|
2020-07-22 14:28:54 +08:00
|
|
|
def find_project
|
|
|
|
|
@project = Project.find params[:project_id]
|
2020-07-15 09:43:30 +08:00
|
|
|
end
|
|
|
|
|
end
|