summaryrefslogtreecommitdiff
path: root/app/controllers/projects/builds_controller.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/controllers/projects/builds_controller.rb')
-rw-r--r--app/controllers/projects/builds_controller.rb15
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