summaryrefslogtreecommitdiff
path: root/app/services
diff options
context:
space:
mode:
authorGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-04-12 11:46:24 +0200
committerGrzegorz Bizon <grzesiek.bizon@gmail.com>2017-04-12 11:46:24 +0200
commit6c6bc400d1d8a96f6e443788cd0b2c14addd88e3 (patch)
tree81dd71fad366f25a7fa92638f50d9dc1ccf04835 /app/services
parentb09465f38d66d7ff6074843177bcdb7d72caf07f (diff)
downloadgitlab-ce-6c6bc400d1d8a96f6e443788cd0b2c14addd88e3.tar.gz
Move code for playing an action to separate service
Diffstat (limited to 'app/services')
-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..c9ed45408f2
--- /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, :play_build, build)
+ raise Gitlab::Access::AccessDeniedError
+ end
+
+ # Try to enqueue thebuild, 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