|
- class Ci::BuildsController < Ci::BaseController
- include RepositoriesHelper
- include Devopsable
-
- before_action :load_repo
- before_action :find_cloud_account, except: [:index, :show]
-
- def index
- scope = @repo.builds
-
- scope = Ci::Builds::ListQuery.call(@repo, params)
-
- @total_count = scope.map(&:build_id).size
- @builds = paginate scope
- end
-
- def show
- @build = @repo.builds.includes(stages: [:steps]).find_by(build_number: params[:build])
- end
-
- def restart
- result = Ci::Drone::API.new(@cloud_account.drone_token, @cloud_account.drone_url, @repo.repo_namespace, @repo.repo_name, number: params[:build]).restart
-
- render json: result
- end
-
- def stop
- result = Ci::Drone::API.new(@cloud_account.drone_token, @cloud_account.drone_url, @repo.repo_namespace, @repo.repo_name, number: params[:build]).stop
- render json: result
- end
-
- def logs
- result = Ci::Drone::API.new(@cloud_account.drone_token, @cloud_account.drone_url, @repo.repo_namespace, @repo.repo_name, build: params[:build], stage: params[:stage], step: params[:step]).logs
-
- render json: result
- end
-
- private
- def find_cloud_account
- @cloud_account = current_user.ci_cloud_account
- end
-
- def load_ci_user
- begin
- @ci_user = Ci::User.find_by(user_login: params[:owner])
- rescue
- render_not_found
- end
- end
- end
|