diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index 58c69251824dce7af8af001cb5155af06588e9a5..a26cb7dd7ee845246005a86166e68f4baad44353 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -91,15 +91,14 @@ module Ci
       trigger_requests.any?
     end
 
-    def build_builds(user, trigger_request = nil)
+    def create_builds(user, trigger_request = nil)
+      ##
+      # We persist pipeline only if there are builds available
+      #
       return unless config_processor
 
       build_builds_for_stages(config_processor.stages, user,
-                              'success', trigger_request)
-    end
-
-    def create_builds(user, trigger_request = nil)
-      build_builds(user, trigger_request) && save
+                              'success', trigger_request) && save
     end
 
     def create_next_builds(build)
@@ -121,7 +120,6 @@ module Ci
       # and save pipeline if we have builds
       build_builds_for_stages(next_stages, build.user, prior_status,
                               build.trigger_request) && save
-
     end
 
     def retried
diff --git a/app/services/ci/create_builds_service.rb b/app/services/ci/create_builds_service.rb
index f7f73aff989874c660effc294e3603846ac46a29..b2882b23d317bbdfd3ef38986f4c1ef6dc6a08d9 100644
--- a/app/services/ci/create_builds_service.rb
+++ b/app/services/ci/create_builds_service.rb
@@ -22,7 +22,8 @@ module Ci
 
       # don't create the same build twice
       builds_attrs.reject! do |build_attrs|
-        @pipeline.builds.find_by(ref: @pipeline.ref, tag: @pipeline.tag,
+        @pipeline.builds.find_by(ref: @pipeline.ref,
+                                 tag: @pipeline.tag,
                                  trigger_request: trigger_request,
                                  name: build_attrs[:name])
       end
diff --git a/app/services/create_commit_builds_service.rb b/app/services/create_commit_builds_service.rb
index 668d0a86549bb60616b217b9ba6b51bde7b7f274..f947e8f452eafb64cd82380fd7249ab30c8298c6 100644
--- a/app/services/create_commit_builds_service.rb
+++ b/app/services/create_commit_builds_service.rb
@@ -42,7 +42,7 @@ class CreateCommitBuildsService
     ##
     # Skip creating pipeline object if there are no builds for it.
     #
-    unless @pipeline.build_builds(user)
+    unless @pipeline.create_builds(user)
       @pipeline.errors.add(:base, 'No builds created')
       return false
     end
diff --git a/spec/models/ci/pipeline_spec.rb b/spec/models/ci/pipeline_spec.rb
index 458013ad9f2dd06fd625d382606d1637fd9596de..34507cf508323b9ce13b95cbfd5bbf14b026d31b 100644
--- a/spec/models/ci/pipeline_spec.rb
+++ b/spec/models/ci/pipeline_spec.rb
@@ -260,12 +260,15 @@ describe Ci::Pipeline, models: true do
     end
 
     context 'when no builds created' do
+      let(:pipeline) { build(:ci_pipeline) }
+
       before do
         stub_ci_pipeline_yaml_file(YAML.dump(before_script: ['ls']))
       end
 
       it 'returns false' do
         expect(pipeline.create_builds(nil)).to be_falsey
+        expect(pipeline).not_to be_persisted
       end
     end
   end
diff --git a/spec/services/create_commit_builds_service_spec.rb b/spec/services/create_commit_builds_service_spec.rb
index 50ce9659c108cdf7df0b20ef988a99d878d8e4f0..deab242f45a577b63eaf69508876cb9f1b54b23e 100644
--- a/spec/services/create_commit_builds_service_spec.rb
+++ b/spec/services/create_commit_builds_service_spec.rb
@@ -184,6 +184,7 @@ describe CreateCommitBuildsService, services: true do
                                  before: '00000000',
                                  after: '31das312',
                                  commits: [{ message: 'some msg' }])
+
         expect(result).to be_falsey
         expect(Ci::Build.all).to be_empty
         expect(Ci::Pipeline.count).to eq(0)