diff options
Diffstat (limited to 'app/controllers/projects/builds_controller.rb')
-rw-r--r-- | app/controllers/projects/builds_controller.rb | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/app/controllers/projects/builds_controller.rb b/app/controllers/projects/builds_controller.rb index 9e89296e71d..8ca6e02dab8 100644 --- a/app/controllers/projects/builds_controller.rb +++ b/app/controllers/projects/builds_controller.rb @@ -1,10 +1,12 @@ class Projects::BuildsController < Projects::ApplicationController before_action :build, except: [:index, :cancel_all] - before_action :authorize_read_build!, except: [:cancel, :cancel_all, :retry] before_action :authorize_update_build!, except: [:index, :show, :status] + layout 'project' - layout "project" + # Skip authentication for status badge only + skip_before_action :authenticate_user!, :reject_blocked!, :project, + :repository, :authorize_manage_builds!, :build, only: [:badge] def index @scope = params[:scope] @@ -24,7 +26,6 @@ class Projects::BuildsController < Projects::ApplicationController def cancel_all @project.builds.running_or_pending.each(&:cancel) - redirect_to namespace_project_builds_path(project.namespace, project) end @@ -47,7 +48,6 @@ class Projects::BuildsController < Projects::ApplicationController end build = Ci::Build.retry(@build) - redirect_to build_path(build) end @@ -57,10 +57,15 @@ class Projects::BuildsController < Projects::ApplicationController def cancel @build.cancel - redirect_to build_path(@build) end + def badge + project = Project.find_with_namespace("#{params[:namespace_id]}/#{params[:project_id]}") + image = Ci::ImageForBuildService.new.execute(project, ref: params[:ref]) + send_file(image.path, filename: image.name, disposition: 'inline', type: 'image/svg+xml') + end + private def build |