Fix creation of Ci::Commit object which can lead to pending, failed in some scenarios
This commit is contained in:
parent
86b22b4f15
commit
b876993677
3 changed files with 24 additions and 10 deletions
|
@ -8,6 +8,7 @@ v 8.8.0 (unreleased)
|
|||
- Toggle sign-up confirmation emails in application settings
|
||||
- Project#open_branches has been cleaned up and no longer loads entire records into memory.
|
||||
- Escape HTML in commit titles in system note messages
|
||||
- Fix creation of Ci::Commit object which can lead to pending, failed in some scenarios
|
||||
- Improve multiple branch push performance by memoizing permission checking
|
||||
- Log to application.log when an admin starts and stops impersonating a user
|
||||
- Changing the confidentiality of an issue now creates a new system note (Alex Moore-Niemi)
|
||||
|
|
|
@ -18,19 +18,16 @@ class CreateCommitBuildsService
|
|||
return false
|
||||
end
|
||||
|
||||
commit = project.ci_commit(sha, ref)
|
||||
unless commit
|
||||
commit = project.ci_commits.new(sha: sha, ref: ref, before_sha: before_sha, tag: tag)
|
||||
commit = Ci::Commit.new(project: project, sha: sha, ref: ref, before_sha: before_sha, tag: tag)
|
||||
|
||||
# Skip creating ci_commit when no gitlab-ci.yml is found
|
||||
unless commit.ci_yaml_file
|
||||
return false
|
||||
end
|
||||
|
||||
# Create a new ci_commit
|
||||
commit.save!
|
||||
# Skip creating ci_commit when no gitlab-ci.yml is found
|
||||
unless commit.ci_yaml_file
|
||||
return false
|
||||
end
|
||||
|
||||
# Create a new ci_commit
|
||||
commit.save!
|
||||
|
||||
# Skip creating builds for commits that have [ci skip]
|
||||
unless commit.skip_ci?
|
||||
# Create builds for commit
|
||||
|
|
|
@ -48,6 +48,22 @@ describe PostReceive do
|
|||
PostReceive.new.perform(pwd(project), key_id, base64_changes)
|
||||
end
|
||||
end
|
||||
|
||||
context "gitlab-ci.yml" do
|
||||
subject { PostReceive.new.perform(pwd(project), key_id, base64_changes) }
|
||||
|
||||
context "creates a Ci::Commit for every change" do
|
||||
before { stub_ci_commit_to_return_yaml_file }
|
||||
|
||||
it { expect{ subject }.to change{ Ci::Commit.count }.by(2) }
|
||||
end
|
||||
|
||||
context "does not create a Ci::Commit" do
|
||||
before { stub_ci_commit_yaml_file(nil) }
|
||||
|
||||
it { expect{ subject }.to_not change{ Ci::Commit.count } }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
context "webhook" do
|
||||
|
|
Loading…
Reference in a new issue