summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValery Sizov <vsv2711@gmail.com>2015-04-01 15:23:01 +0300
committerValery Sizov <vsv2711@gmail.com>2015-04-01 15:23:01 +0300
commitedfe6539b4c39caaffce119b8d716e94c86c9169 (patch)
treebb62b6078d993efda8ee615f2c692fe89e1910ff
parent2378f2c8cb0cdd9538c0336a359deadf52255adc (diff)
downloadgitlab-ci-deploy_without_tests.tar.gz
refactoring of deploy job creationdeploy_without_tests
-rw-r--r--app/models/build.rb5
-rw-r--r--app/models/commit.rb8
-rw-r--r--app/services/create_commit_service.rb4
-rw-r--r--spec/models/commit_spec.rb28
-rw-r--r--spec/services/create_commit_service_spec.rb13
5 files changed, 24 insertions, 34 deletions
diff --git a/app/models/build.rb b/app/models/build.rb
index 0cecc19..fa0cb8f 100644
--- a/app/models/build.rb
+++ b/app/models/build.rb
@@ -118,7 +118,10 @@ class Build < ActiveRecord::Base
WebHookService.new.build_end(build)
end
- build.commit.create_deploy_builds(build.ref)
+ if build.commit.success? && !build.job.deploy?
+ build.commit.create_deploy_builds(build.ref)
+ end
+
project.execute_services(build)
if project.coverage_enabled?
diff --git a/app/models/commit.rb b/app/models/commit.rb
index 32bd334..5f1aa92 100644
--- a/app/models/commit.rb
+++ b/app/models/commit.rb
@@ -137,11 +137,9 @@ class Commit < ActiveRecord::Base
end
def create_deploy_builds(ref)
- if builds.empty? || (success? && !last_build.job.deploy?)
- project.jobs.deploy.active.each do |job|
- if job.run_for_ref?(ref)
- create_build_from_job(job)
- end
+ project.jobs.deploy.active.each do |job|
+ if job.run_for_ref?(ref)
+ create_build_from_job(job)
end
end
end
diff --git a/app/services/create_commit_service.rb b/app/services/create_commit_service.rb
index 9c8906f..1d1d3dc 100644
--- a/app/services/create_commit_service.rb
+++ b/app/services/create_commit_service.rb
@@ -48,7 +48,9 @@ class CreateCommitService
commit.create_builds
end
- commit.create_deploy_builds(ref)
+ if commit.builds.empty?
+ commit.create_deploy_builds(ref)
+ end
commit
end
diff --git a/spec/models/commit_spec.rb b/spec/models/commit_spec.rb
index 78be635..d4a516b 100644
--- a/spec/models/commit_spec.rb
+++ b/spec/models/commit_spec.rb
@@ -159,7 +159,7 @@ describe Commit do
end
describe "create_deploy_builds" do
- it "creates deploy build for projects without test jobs" do
+ it "creates deploy build" do
FactoryGirl.create :job, job_type: :deploy, project: project
project.reload
@@ -168,31 +168,5 @@ describe Commit do
commit.builds.size.should == 1
end
-
- it "creates new build for deploy if all jobs succeed" do
- job = FactoryGirl.create :job, project: project
- job1 = FactoryGirl.create :job, project: project
- FactoryGirl.create :job, job_type: :deploy, project: project
- FactoryGirl.create :build, commit: commit, status: :success, job: job
- FactoryGirl.create :build, commit: commit, status: :success, job: job1
- project.reload
-
- commit.create_deploy_builds(commit.ref)
-
- commit.builds.size.should == 3
- end
-
- it "does not create deploy build if one job failed" do
- job = FactoryGirl.create :job, project: project
- job1 = FactoryGirl.create :job, project: project
- FactoryGirl.create :job, job_type: :deploy, project: project
- FactoryGirl.create :build, commit: commit, status: :failed, job: job
- FactoryGirl.create :build, commit: commit, status: :success, job: job1
- project.reload
-
- commit.create_deploy_builds(commit.ref)
-
- commit.builds.size.should == 2
- end
end
end
diff --git a/spec/services/create_commit_service_spec.rb b/spec/services/create_commit_service_spec.rb
index d8f404e..725ea08 100644
--- a/spec/services/create_commit_service_spec.rb
+++ b/spec/services/create_commit_service_spec.rb
@@ -20,5 +20,18 @@ describe CreateCommitService do
it { should be_false }
end
+
+ context "deploy builds" do
+ it "calls create_deploy_builds if there are no builds" do
+ project.jobs.destroy_all
+ Commit.any_instance.should_receive(:create_deploy_builds)
+ service.execute(project, ref: 'refs/heads/master', before: '00000000', after: '31das312')
+ end
+
+ it "does not call create_deploy_builds if there is build" do
+ Commit.any_instance.should_not_receive(:create_deploy_builds)
+ service.execute(project, ref: 'refs/heads/master', before: '00000000', after: '31das312')
+ end
+ end
end
end