summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorValery Sizov <vsv2711@gmail.com>2015-05-21 15:15:31 +0300
committerValery Sizov <vsv2711@gmail.com>2015-06-02 16:46:01 +0300
commitb931c11e1b7acef5044e9c6a44145dd967196b99 (patch)
treea8de5ada48c9eb64f24dc07fc3b4c383595a8a20
parent1c328fa4d7c8c2c1e8717a6f35c5ae21272846e8 (diff)
downloadgitlab-ce-ci_yml_file.tar.gz
GitLab CI service sends gitlab-ci.yml fileci_yml_file
-rw-r--r--CHANGELOG1
-rw-r--r--app/models/project_services/gitlab_ci_service.rb14
-rw-r--r--spec/models/project_services/gitlab_ci_service_spec.rb15
3 files changed, 30 insertions, 0 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 870ab59afa5..dbc54021d40 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -39,6 +39,7 @@ v 7.12.0 (unreleased)
- Allow to configure a URL to show after sign out
- Add an option to automatically sign-in with an Omniauth provider
- Better performance for web editor (switched from satellites to rugged)
+ - GitLab CI service sends .gitlab-ci.yaml in each push call
v 7.11.4
- Fix missing bullets when creating lists
diff --git a/app/models/project_services/gitlab_ci_service.rb b/app/models/project_services/gitlab_ci_service.rb
index 949a4d7111b..a9354754686 100644
--- a/app/models/project_services/gitlab_ci_service.rb
+++ b/app/models/project_services/gitlab_ci_service.rb
@@ -40,6 +40,12 @@ class GitlabCiService < CiService
def execute(data)
return unless supported_events.include?(data[:object_kind])
+ ci_yaml_file = ci_yaml_file(data)
+
+ if ci_yaml_file
+ data.merge!(ci_yaml_file: ci_yaml_file)
+ end
+
service_hook.execute(data)
end
@@ -123,6 +129,14 @@ 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
+ end
+
def fork_registration_path
project_url.sub(/projects\/\d*/, "#{API_PREFIX}/forks")
end
diff --git a/spec/models/project_services/gitlab_ci_service_spec.rb b/spec/models/project_services/gitlab_ci_service_spec.rb
index e5bf9125313..ebd8b545aa7 100644
--- a/spec/models/project_services/gitlab_ci_service_spec.rb
+++ b/spec/models/project_services/gitlab_ci_service_spec.rb
@@ -48,6 +48,21 @@ describe GitlabCiService do
it { expect(@service.build_page("2ab7834c", 'master')).to eq("http://ci.gitlab.org/projects/2/refs/master/commits/2ab7834c")}
it { expect(@service.build_page("issue#2", 'master')).to eq("http://ci.gitlab.org/projects/2/refs/master/commits/issue%232")}
end
+
+ describe "execute" do
+ let(:user) { create(:user, username: 'username') }
+ let(:project) { create(:project, name: 'project') }
+ let(:push_sample_data) { Gitlab::PushDataBuilder.build_sample(project, user) }
+
+ it "calls ci_yaml_file" 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.execute(push_sample_data)
+ end
+ end
end
describe "Fork registration" do