diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index cd6ead4ded2991dffcabf564058708cf338eb978..4e6ccf48c68cf63f43026be550448053179a1ab4 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -237,8 +237,9 @@ module Ci
       self.started_at = statuses.started_at
       self.finished_at = statuses.finished_at
       self.duration = statuses.latest.duration
-      save
-      execute_hooks
+      saved = save
+      execute_hooks if saved && !skip_ci?
+      saved
     end
 
     def execute_hooks