diff options
author | Douwe Maan <douwe@gitlab.com> | 2016-10-13 12:31:24 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2016-10-13 12:31:24 +0000 |
commit | d3a48fec53cb6f3422c7aaa3ada9da1c7944c41d (patch) | |
tree | 6e9e88c5168122ec882148ed4f049e04351eddae /app | |
parent | 88568b8c4f33cbae8156878a61557d2720809d76 (diff) | |
parent | 9521736ebc062ba6f693da389f895061ac7a8b3a (diff) | |
download | gitlab-ce-d3a48fec53cb6f3422c7aaa3ada9da1c7944c41d.tar.gz |
Merge branch 'feature/cycle-analytics-2-backend' into 'master'
Implement second iteration of cycle analytics - Change in data measurement
Part of https://gitlab.com/gitlab-org/gitlab-ce/issues/22458
Measure everything that happened in the given time range, not only what's been pushed to production. With the exception of the staging and production stages.
- [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
- [x] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)
- Tests
- [x] Added for this feature/bug
- [x] All builds are passing
- [x] Conform by the [merge request performance guides](http://docs.gitlab.com/ce/development/merge_request_performance_guidelines.html)
- [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if it does - rebase it please)
- [ ] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)
See merge request !6798
Diffstat (limited to 'app')
-rw-r--r-- | app/models/cycle_analytics.rb | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/app/models/cycle_analytics.rb b/app/models/cycle_analytics.rb index be295487fd2..8ed4a56b19b 100644 --- a/app/models/cycle_analytics.rb +++ b/app/models/cycle_analytics.rb @@ -2,6 +2,8 @@ class CycleAnalytics include Gitlab::Database::Median include Gitlab::Database::DateTime + DEPLOYMENT_METRIC_STAGES = %i[production staging] + def initialize(project, from:) @project = project @from = from @@ -66,7 +68,7 @@ class CycleAnalytics # cycle analytics stage. interval_query = Arel::Nodes::As.new( cte_table, - subtract_datetimes(base_query, end_time_attrs, start_time_attrs, name.to_s)) + subtract_datetimes(base_query_for(name), end_time_attrs, start_time_attrs, name.to_s)) median_datetime(cte_table, interval_query, name) end @@ -75,7 +77,7 @@ class CycleAnalytics # closes the given issue) with issue and merge request metrics included. The metrics # are loaded with an inner join, so issues / merge requests without metrics are # automatically excluded. - def base_query + def base_query_for(name) arel_table = MergeRequestsClosingIssues.arel_table # Load issues @@ -91,7 +93,11 @@ class CycleAnalytics join(MergeRequest::Metrics.arel_table). on(MergeRequest.arel_table[:id].eq(MergeRequest::Metrics.arel_table[:merge_request_id])) - # Limit to merge requests that have been deployed to production after `@from` - query.where(MergeRequest::Metrics.arel_table[:first_deployed_to_production_at].gteq(@from)) + if DEPLOYMENT_METRIC_STAGES.include?(name) + # Limit to merge requests that have been deployed to production after `@from` + query.where(MergeRequest::Metrics.arel_table[:first_deployed_to_production_at].gteq(@from)) + end + + query end end |