summaryrefslogtreecommitdiff
path: root/app/services/create_commit_builds_service.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/create_commit_builds_service.rb')
-rw-r--r--app/services/create_commit_builds_service.rb28
1 files changed, 28 insertions, 0 deletions
diff --git a/app/services/create_commit_builds_service.rb b/app/services/create_commit_builds_service.rb
new file mode 100644
index 00000000000..759c334ebe9
--- /dev/null
+++ b/app/services/create_commit_builds_service.rb
@@ -0,0 +1,28 @@
+class CreateCommitBuildsService
+ def execute(project, user, params)
+ return false unless project.builds_enabled?
+
+ sha = params[:checkout_sha] || params[:after]
+ origin_ref = params[:ref]
+
+ unless origin_ref && sha.present?
+ return false
+ end
+
+ ref = Gitlab::Git.ref_name(origin_ref)
+
+ # Skip branch removal
+ if sha == Gitlab::Git::BLANK_SHA
+ return false
+ end
+
+ tag = Gitlab::Git.tag_ref?(origin_ref)
+ commit = project.ensure_ci_commit(sha)
+ unless commit.skip_ci?
+ commit.update_committed!
+ commit.create_builds(ref, tag, user)
+ end
+
+ commit
+ end
+end