diff --git a/app/controllers/projects/cycle_analytics/events_controller.rb b/app/controllers/projects/cycle_analytics/events_controller.rb index 77b49d6c4b97bf098463982797bd29ef7ff7a46f..cc75dc247d3afa5930368474c42ff5f537f2b3bc 100644 --- a/app/controllers/projects/cycle_analytics/events_controller.rb +++ b/app/controllers/projects/cycle_analytics/events_controller.rb @@ -2,6 +2,7 @@ class Projects::CycleAnalytics::EventsController < Projects::ApplicationControll include CycleAnalyticsParams before_action :authorize_read_cycle_analytics! + before_action :authorize_read_builds!, only: [:test, :staging] def issue render_events(events.issue_events) @@ -16,7 +17,7 @@ class Projects::CycleAnalytics::EventsController < Projects::ApplicationControll end def test - @opts = { from: start_date(events_params), branch: events_params[:branch_name] } + @options = { from: start_date(events_params), branch: events_params[:branch_name] } render_events(events.test_events) end @@ -47,12 +48,12 @@ class Projects::CycleAnalytics::EventsController < Projects::ApplicationControll end def options - @opts ||= { from: start_date(events_params) } + @options ||= { from: start_date(events_params) } end def events_params return {} unless params[:events].present? - { start_date: params[:events][:start_date], branch_name: params[:events][:branch_name] } + params[:events].slice(:start_date, :branch_name) end end diff --git a/app/models/merge_request/metrics.rb b/app/models/merge_request/metrics.rb index 7d19943769ee1f7e892170697b94cee8a2ba5520..cdc408738be573d4e74efad2805397f585bb6ce4 100644 --- a/app/models/merge_request/metrics.rb +++ b/app/models/merge_request/metrics.rb @@ -1,6 +1,6 @@ class MergeRequest::Metrics < ActiveRecord::Base belongs_to :merge_request - belongs_to :pipeline, class_name: 'Ci::Pipeline', foreign_key: :ci_commit_id + belongs_to :pipeline, class_name: 'Ci::Pipeline', foreign_key: :pipeline_id def record! if merge_request.merged? && self.merged_at.blank? diff --git a/app/workers/pipeline_metrics_worker.rb b/app/workers/pipeline_metrics_worker.rb index cca39761d8f9dc0c413d26d10852ac2daf3d74fb..070943f1ecc956e3e6f899fd23b91b2f7b0afed7 100644 --- a/app/workers/pipeline_metrics_worker.rb +++ b/app/workers/pipeline_metrics_worker.rb @@ -12,11 +12,11 @@ class PipelineMetricsWorker private def update_metrics_for_active_pipeline(pipeline) - metrics(pipeline).update_all(latest_build_started_at: pipeline.started_at, latest_build_finished_at: nil, ci_commit_id: pipeline.id) + metrics(pipeline).update_all(latest_build_started_at: pipeline.started_at, latest_build_finished_at: nil, pipeline_id: pipeline.id) end def update_metrics_for_succeeded_pipeline(pipeline) - metrics(pipeline).update_all(latest_build_started_at: pipeline.started_at, latest_build_finished_at: pipeline.finished_at, ci_commit_id: pipeline.id) + metrics(pipeline).update_all(latest_build_started_at: pipeline.started_at, latest_build_finished_at: pipeline.finished_at, pipeline_id: pipeline.id) end def metrics(pipeline) diff --git a/db/migrate/20161020083353_add_pipeline_id_to_merge_request_metrics.rb b/db/migrate/20161020083353_add_pipeline_id_to_merge_request_metrics.rb index a47e1ae7f6adfd0a110acf9698b6bbc3111563ea..507d576d0bca435b9f6c3fde8ab6c84e2e8fcce7 100644 --- a/db/migrate/20161020083353_add_pipeline_id_to_merge_request_metrics.rb +++ b/db/migrate/20161020083353_add_pipeline_id_to_merge_request_metrics.rb @@ -24,6 +24,8 @@ class AddPipelineIdToMergeRequestMetrics < ActiveRecord::Migration # disable_ddl_transaction! def change - add_reference :merge_request_metrics, :ci_commit, index: true, foreign_key: { on_delete: :cascade } + add_column :merge_request_metrics, :pipeline_id, :integer + add_index :merge_request_metrics, :pipeline_id + add_foreign_key :merge_request_metrics, :ci_commits, column: :pipeline_id, on_delete: :cascade end end diff --git a/db/schema.rb b/db/schema.rb index 5baa82e10583044039b9aa16c7e3372d4be92d78..983e1c90682f6852134b0b4bfdf521cc526e7e55 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -634,12 +634,12 @@ ActiveRecord::Schema.define(version: 20161109150329) do t.datetime "merged_at" t.datetime "created_at", null: false t.datetime "updated_at", null: false - t.integer "ci_commit_id" + t.integer "pipeline_id" end - add_index "merge_request_metrics", ["ci_commit_id"], name: "index_merge_request_metrics_on_ci_commit_id", using: :btree add_index "merge_request_metrics", ["first_deployed_to_production_at"], name: "index_merge_request_metrics_on_first_deployed_to_production_at", using: :btree add_index "merge_request_metrics", ["merge_request_id"], name: "index_merge_request_metrics", using: :btree + add_index "merge_request_metrics", ["pipeline_id"], name: "index_merge_request_metrics_on_pipeline_id", using: :btree create_table "merge_requests", force: :cascade do |t| t.string "target_branch", null: false @@ -1246,7 +1246,7 @@ ActiveRecord::Schema.define(version: 20161109150329) do add_foreign_key "labels", "namespaces", column: "group_id", on_delete: :cascade add_foreign_key "lists", "boards" add_foreign_key "lists", "labels" - add_foreign_key "merge_request_metrics", "ci_commits", on_delete: :cascade + add_foreign_key "merge_request_metrics", "ci_commits", column: "pipeline_id", on_delete: :cascade add_foreign_key "merge_request_metrics", "merge_requests", on_delete: :cascade add_foreign_key "merge_requests_closing_issues", "issues", on_delete: :cascade add_foreign_key "merge_requests_closing_issues", "merge_requests", on_delete: :cascade diff --git a/lib/gitlab/cycle_analytics/events_fetcher.rb b/lib/gitlab/cycle_analytics/events_fetcher.rb index c12fdd58a4716470c26be7d3c25779a7f0e48c9b..d19ce6e0f6f486ed83d52135bca8ed52dad1d7c0 100644 --- a/lib/gitlab/cycle_analytics/events_fetcher.rb +++ b/lib/gitlab/cycle_analytics/events_fetcher.rb @@ -20,7 +20,7 @@ module Gitlab end def test_custom_query(base_query) - base_query.join(build_table).on(mr_metrics_table[:ci_commit_id].eq(build_table[:commit_id])) + base_query.join(build_table).on(mr_metrics_table[:pipeline_id].eq(build_table[:commit_id])) end alias_method :staging_custom_query, :test_custom_query