Merge branch 'fix-gitlab-ci-yml' into 'master'
Look for .gitlab-ci.yml only if checkout_sha is present Fixes https://dev.gitlab.org/gitlab/gitlabhq/issues/2396 cc @vsizov See merge request !818
This commit is contained in:
commit
5fa0248966
|
@ -40,10 +40,14 @@ class GitlabCiService < CiService
|
|||
def execute(data)
|
||||
return unless supported_events.include?(data[:object_kind])
|
||||
|
||||
ci_yaml_file = ci_yaml_file(data)
|
||||
sha = data[:checkout_sha]
|
||||
|
||||
if ci_yaml_file
|
||||
data.merge!(ci_yaml_file: ci_yaml_file)
|
||||
if sha.present?
|
||||
file = ci_yaml_file(sha)
|
||||
|
||||
if file && file.data
|
||||
data.merge!(ci_yaml_file: file.data)
|
||||
end
|
||||
end
|
||||
|
||||
service_hook.execute(data)
|
||||
|
@ -129,15 +133,15 @@ class GitlabCiService < CiService
|
|||
|
||||
private
|
||||
|
||||
def ci_yaml_file(data)
|
||||
ref = data[:checkout_sha]
|
||||
repo = project.repository
|
||||
commit = repo.commit(ref)
|
||||
blob = Gitlab::Git::Blob.find(repo, commit.id, ".gitlab-ci.yml")
|
||||
blob && blob.data
|
||||
def ci_yaml_file(sha)
|
||||
repository.blob_at(sha, '.gitlab-ci.yml')
|
||||
end
|
||||
|
||||
def fork_registration_path
|
||||
project_url.sub(/projects\/\d*/, "#{API_PREFIX}/forks")
|
||||
end
|
||||
|
||||
def repository
|
||||
project.repository
|
||||
end
|
||||
end
|
||||
|
|
|
@ -27,7 +27,7 @@ module Gitlab
|
|||
|
||||
# Get latest 20 commits ASC
|
||||
commits_limited = commits.last(20)
|
||||
|
||||
|
||||
# For performance purposes maximum 20 latest commits
|
||||
# will be passed as post receive hook data.
|
||||
commit_attrs = commits_limited.map(&:hook_attrs)
|
||||
|
@ -70,8 +70,11 @@ module Gitlab
|
|||
end
|
||||
|
||||
def checkout_sha(repository, newrev, ref)
|
||||
# Checkout sha is nil when we remove branch or tag
|
||||
return if Gitlab::Git.blank_ref?(newrev)
|
||||
|
||||
# Find sha for tag, except when it was deleted.
|
||||
if Gitlab::Git.tag_ref?(ref) && !Gitlab::Git.blank_ref?(newrev)
|
||||
if Gitlab::Git.tag_ref?(ref)
|
||||
tag_name = Gitlab::Git.ref_name(ref)
|
||||
tag = repository.find_tag(tag_name)
|
||||
|
||||
|
|
|
@ -58,7 +58,7 @@ describe GitlabCiService do
|
|||
service_hook = double
|
||||
service_hook.should_receive(:execute)
|
||||
@service.should_receive(:service_hook).and_return(service_hook)
|
||||
@service.should_receive(:ci_yaml_file).with(push_sample_data)
|
||||
@service.should_receive(:ci_yaml_file).with(push_sample_data[:checkout_sha])
|
||||
|
||||
@service.execute(push_sample_data)
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue