diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2015-06-02 17:26:19 +0200 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2015-06-02 17:26:19 +0200 |
commit | d85a7437a5651a93fc20d9bf7f183293151adb77 (patch) | |
tree | ad55a27b9b05e38fbbdcec072036bdd68662560e | |
parent | c4cb563e986e9082228e7732f0f6554997f6fa33 (diff) | |
parent | be56144a3d08836bebb49865749aae8e26d74d1a (diff) | |
download | gitlab-ce-d85a7437a5651a93fc20d9bf7f183293151adb77.tar.gz |
Merge branch 'master' of gitlab.com:gitlab-org/gitlab-ce
-rw-r--r-- | CHANGELOG | 1 | ||||
-rw-r--r-- | app/models/project_services/gitlab_ci_service.rb | 14 | ||||
-rw-r--r-- | spec/models/project_services/gitlab_ci_service_spec.rb | 15 |
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 |