diff options
4 files changed, 37 insertions, 5 deletions
diff --git a/app/assets/javascripts/merge_request.js.coffee b/app/assets/javascripts/merge_request.js.coffee index 59e53b69e3d..1c391c61bba 100644 --- a/app/assets/javascripts/merge_request.js.coffee +++ b/app/assets/javascripts/merge_request.js.coffee @@ -40,6 +40,8 @@ class MergeRequest if @opts.ci_enable $.get @opts.url_to_ci_check, (data) => this.showCiState data.status + if data.coverage + this.showCiCoverage data.coverage , 'json' bindEvents: -> @@ -102,7 +104,11 @@ class MergeRequest when "running", "pending" $('.mr-state-widget').addClass("panel-warning") - + showCiCoverage: (coverage) -> + cov_html = $('<span>') + cov_html.addClass('ci-coverage') + cov_html.text('Coverage ' + coverage + '%') + $('.ci_widget:visible').append(cov_html) loadDiff: (event) -> $.ajax diff --git a/app/assets/stylesheets/sections/merge_requests.scss b/app/assets/stylesheets/sections/merge_requests.scss index 3db6da2a9f9..acaad519778 100644 --- a/app/assets/stylesheets/sections/merge_requests.scss +++ b/app/assets/stylesheets/sections/merge_requests.scss @@ -113,6 +113,10 @@ margin-bottom: 0; } } + + .ci-coverage { + float: right; + } } .merge-request-show-labels .label { diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb index 2667cc7a4f7..16bb3a5476e 100644 --- a/app/controllers/projects/merge_requests_controller.rb +++ b/app/controllers/projects/merge_requests_controller.rb @@ -150,8 +150,17 @@ class Projects::MergeRequestsController < Projects::ApplicationController end def ci_status - status = @merge_request.source_project.ci_service.commit_status(merge_request.last_commit.sha) - response = {status: status} + ci_service = @merge_request.source_project.ci_service + status = ci_service.commit_status(merge_request.last_commit.sha) + + if ci_service.respond_to?(:commit_coverage) + coverage = ci_service.commit_coverage(merge_request.last_commit.sha) + end + + response = { + status: status, + coverage: coverage + } render json: response end diff --git a/app/models/project_services/gitlab_ci_service.rb b/app/models/project_services/gitlab_ci_service.rb index 0f327e75289..4a19ca2f655 100644 --- a/app/models/project_services/gitlab_ci_service.rb +++ b/app/models/project_services/gitlab_ci_service.rb @@ -31,8 +31,13 @@ class GitlabCiService < CiService project_url + "/builds/#{sha}/status.json?token=#{token}" end - def commit_status sha - response = HTTParty.get(commit_status_path(sha), verify: false) + def get_ci_build(sha) + @ci_builds ||= {} + @ci_builds[sha] ||= HTTParty.get(commit_status_path(sha), verify: false) + end + + def commit_status(sha) + response = get_ci_build(sha) if response.code == 200 and response["status"] response["status"] @@ -41,6 +46,14 @@ class GitlabCiService < CiService end end + def commit_coverage(sha) + response = get_ci_build(sha) + + if response.code == 200 and response["coverage"] + response["coverage"] + end + end + def build_page sha project_url + "/builds/#{sha}" end |