summaryrefslogtreecommitdiff
path: root/app/services/ci/play_build_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/ci/play_build_service.rb')
-rw-r--r--app/services/ci/play_build_service.rb17
1 files changed, 17 insertions, 0 deletions
diff --git a/app/services/ci/play_build_service.rb b/app/services/ci/play_build_service.rb
new file mode 100644
index 00000000000..e24f48c2d16
--- /dev/null
+++ b/app/services/ci/play_build_service.rb
@@ -0,0 +1,17 @@
+module Ci
+ class PlayBuildService < ::BaseService
+ def execute(build)
+ unless can?(current_user, :update_build, build)
+ raise Gitlab::Access::AccessDeniedError
+ end
+
+ # Try to enqueue the build, otherwise create a duplicate.
+ #
+ if build.enqueue
+ build.tap { |action| action.update(user: current_user) }
+ else
+ Ci::Build.retry(build, current_user)
+ end
+ end
+ end
+end