diff options
-rw-r--r-- | app/models/build.rb | 5 | ||||
-rw-r--r-- | app/models/commit.rb | 8 | ||||
-rw-r--r-- | app/services/create_commit_service.rb | 4 | ||||
-rw-r--r-- | spec/models/commit_spec.rb | 28 | ||||
-rw-r--r-- | spec/services/create_commit_service_spec.rb | 13 |
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 |