summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2015-08-21 14:48:47 +0100
committerRobert Speicher <rspeicher@gmail.com>2015-08-21 10:12:37 -0700
commit48626249acbfde1e9ff0f47a80637e46e3c545a2 (patch)
tree438a4314f076e7e2faa23ead1d6e219cd703b0ef
parenta913424a9150eada8819787901a108714dca1ed5 (diff)
downloadgitlab-ci-48626249acbfde1e9ff0f47a80637e46e3c545a2.tar.gz
Retrigger builds with [ci skip]
-rw-r--r--app/models/commit.rb7
-rw-r--r--spec/models/commit_spec.rb15
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