Skip to content

Cycle Analytics: first iteration

Timothy Andrew requested to merge 21170-cycle-analytics into master

What does this MR do?

  • Implement the first iteration of the "Cycle Analytics" feature.

What are the relevant issue numbers?

Does this MR have an associated MR on Gitlab EE?

  • gitlab-org/gitlab-ee!748

Screenshots

cycle_analytics_screencast.gif

Backend Tasks

  • Implementation
    • Phases
      • Issue (Tracker)
      • Plan (Board)
      • Code (IDE)
      • Test (CI)
      • Review (MR)
      • Staging (CD)
      • Production (Total)
    • Make heuristics more modular
    • Scope to project
    • Date range (30 days, 90 days)
    • Access restriction
  • Test
    • Find a better way to test these phases
    • Phases
      • Issue (Tracker)
      • Plan (Board)
      • Code (IDE)
      • Test (CI)
      • Review (MR)
      • Staging (CD)
      • Production (Total)
    • Test for "end case happens before start case"
    • Consolidate helper
  • Miniboss review
  • Performance testing with mock data
  • Improve performance
    • Pre-calculate "merge requests closing issues
    • Pre-calculate everything else
  • Test performance against 10k issues
  • Test all pre-calculation code
    • Ci::Pipeline -> build start/finish
    • Ci::Pipeline#merge_requests
    • Issue -> record default metrics after save
    • MergeRequest -> record default metrics after save
    • Deployment -> Update "first_deployed_to_production_at" for MR metrics
    • Git Push -> Update "first commit mention" for issue metrics
    • Merge request create/update/refresh -> Update "merge requests closing issues"
  • Remove MergeRequestsClosingIssues when necessary
  • Changes to unblock Fatih
    • Add summary data
    • stats should be array
    • Let stats be null if all stats are null
  • Indexes for "merge requests closing issues"
  • Test summary data
  • Scope everything to project
    • Find out why tests were passing
  • Filter should include issues/MRs which have made it to production within the range
  • Don't create duplicate MergeRequestsClosingIssues
  • Fix tests
  • MySQL median
  • Assign to Douwe for review
  • Fix conflicts
  • Implement suggestions from Yorick's review
    • Test on PG
    • Test on MySQL
  • Refactor
    • Cleanup
      • What happens if we have no data at all?
      • Extract common queries to methods / scopes
    • Remove unused queries
    • Downtime for foreign key migrations
    • Find a way around "if issue.metrics.present?" all over the place
    • Find a way around "if merge_request.metrics.present?" all over the place
    • Test migrations on a fresh database
      • MySQL
      • Pg
  • Access issues
    • While the project is public and the visibility is set to "Everyone with access", you cannot visit the cycle analytics page when signed out.
  • CHANGELOG
  • Implement suggestions from Douwe's review
    • First set of comments
    • Second set of comments
    • Third set of comments
    • Fourth set of comments
  • Make sure build is green
  • Wait for merge
  • EE MR

Merge request reports