diff options
author | Kamil Trzcinski <ayufan@ayufan.eu> | 2015-08-21 14:48:47 +0100 |
---|---|---|
committer | Robert Speicher <rspeicher@gmail.com> | 2015-08-21 10:12:37 -0700 |
commit | 48626249acbfde1e9ff0f47a80637e46e3c545a2 (patch) | |
tree | 438a4314f076e7e2faa23ead1d6e219cd703b0ef | |
parent | a913424a9150eada8819787901a108714dca1ed5 (diff) | |
download | gitlab-ci-48626249acbfde1e9ff0f47a80637e46e3c545a2.tar.gz |
Retrigger builds with [ci skip]
-rw-r--r-- | app/models/commit.rb | 7 | ||||
-rw-r--r-- | spec/models/commit_spec.rb | 15 |
2 files changed, 19 insertions, 3 deletions
diff --git a/app/models/commit.rb b/app/models/commit.rb index 6195090..8b1def5 100644 --- a/app/models/commit.rb +++ b/app/models/commit.rb @@ -102,7 +102,7 @@ class Commit < ActiveRecord::Base end def create_builds_for_stage(stage, trigger_request) - return if skip_ci? + return if skip_ci? && trigger_request.blank? return unless config_processor builds_attrs = config_processor.builds_for_stage_and_ref(stage, ref, tag) @@ -121,7 +121,7 @@ class Commit < ActiveRecord::Base end def create_next_builds(trigger_request) - return if skip_ci? + return if skip_ci? && trigger_request.blank? return unless config_processor stages = builds.where(trigger_request: trigger_request).group_by(&:stage) @@ -132,7 +132,7 @@ class Commit < ActiveRecord::Base end def create_builds(trigger_request = nil) - return if skip_ci? + return if skip_ci? && trigger_request.blank? return unless config_processor config_processor.stages.any? do |stage| @@ -244,6 +244,7 @@ class Commit < ActiveRecord::Base end def skip_ci? + return if builds.any? commits = push_data[:commits] commits.present? && commits.last[:message] =~ /(\[ci skip\])/ end diff --git a/spec/models/commit_spec.rb b/spec/models/commit_spec.rb index e1a8172..6f644d2 100644 --- a/spec/models/commit_spec.rb +++ b/spec/models/commit_spec.rb @@ -196,6 +196,21 @@ describe Commit do commit.builds.reload commit.builds.size.should == 4 end + + context 'for [ci skip]' do + before do + commit.push_data[:commits][0][:message] = 'skip this commit [ci skip]' + commit.save + end + + it 'rebuilds commit' do + commit.status.should == 'skipped' + commit.create_builds(trigger_request).should be_true + commit.builds.reload + commit.builds.size.should == 2 + commit.status.should == 'pending' + end + end end end |