| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Now this is more consistent with the rest of the app.
|
|\
| |
| |
| |
| |
| |
| | |
Post-merge improve of CI permissions
Improves code from !6409
See merge request !6432
|
| | |
|
| | |
|
|\ \
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Upgrade Sidekiq to 4.2.1, remove dependency on Sinatra
This updates Sidekiq to 4.2.1, which adds full support for Rails 5 by removing a dependency on Sinatra which was one of the remaining Rails 5 blockers.
Major things to check: Sidekiq still works, obviously. Also that the Web UI/Admin dashboard works and doesn't lose any functionality (based on my testing it works fine).
Working toward #14286.
Changelog: https://github.com/mperham/sidekiq/blob/921e939f995fbb5238975d4121d728b95be99ab5/Changes.md#421
See merge request !6349
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Changelog:
https://github.com/mperham/sidekiq/blob/921e939f995fbb5238975d4121d728b95be99ab5/Changes.md#421
Sinatra is no longer required and sidekiq uses a vanilla Rack app for
its Web UI now.
|
|\ \ \
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
Cycle Analytics: first iteration
## What does this MR do?
- Implement the first iteration of the "Cycle Analytics" feature.
## What are the relevant issue numbers?
- Closes #21170
## Screenshots
![cycle_analytics_screencast.gif](/uploads/d23c3c912caa6935fd47b53ca3a56b97/cycle_analytics.gif)
## Backend Tasks
- [x] Implementation
- [x] Phases
- [x] Issue (Tracker)
- [x] Plan (Board)
- [x] Code (IDE)
- [x] Test (CI)
- [x] Review (MR)
- [x] Staging (CD)
- [x] Production (Total)
- [x] Make heuristics more modular
- [x] Scope to project
- [x] Date range (30 days, 90 days)
- [x] Access restriction
- [x] Test
- [x] Find a better way to test these phases
- [x] Phases
- [x] Issue (Tracker)
- [x] Plan (Board)
- [x] Code (IDE)
- [x] Test (CI)
- [x] Review (MR)
- [x] Staging (CD)
- [x] Production (Total)
- [x] Test for "end case happens before start case"
- [x] Consolidate helper
- [x] Miniboss review
- [x] Performance testing with mock data
- [x] Improve performance
- [x] Pre-calculate "merge requests closing issues
- [x] Pre-calculate everything else
- [x] Test performance against 10k issues
- [x] Test all pre-calculation code
- [x] Ci::Pipeline -> build start/finish
- [x] Ci::Pipeline#merge_requests
- [x] Issue -> record default metrics after save
- [x] MergeRequest -> record default metrics after save
- [x] Deployment -> Update "first_deployed_to_production_at" for MR metrics
- [x] Git Push -> Update "first commit mention" for issue metrics
- [x] Merge request create/update/refresh -> Update "merge requests closing issues"
- [x] Remove `MergeRequestsClosingIssues` when necessary
- [x] Changes to unblock Fatih
- [x] Add summary data
- [x] `stats` should be array
- [x] Let `stats` be `null` if all `stats` are null
- [x] Indexes for "merge requests closing issues"
- [x] Test summary data
- [x] Scope everything to project
- [x] Find out why tests were passing
- [x] Filter should include issues/MRs which have made it to production within the range
- [x] Don't create duplicate `MergeRequestsClosingIssues`
- [x] Fix tests
- [x] MySQL median
- [x] Assign to Douwe for review
- [x] Fix conflicts
- [x] Implement suggestions from Yorick's review
- [x] Test on PG
- [x] Test on MySQL
- [x] Refactor
- [x] Cleanup
- [x] What happens if we have no data at all?
- [x] Extract common queries to methods / scopes
- [x] Remove unused queries
- [x] Downtime for foreign key migrations
- [x] Find a way around "if issue.metrics.present?" all over the place
- [x] Find a way around "if merge_request.metrics.present?" all over the place
- [x] Test migrations on a fresh database
- [x] MySQL
- [x] Pg
- [x] 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.
- [x] CHANGELOG
- [x] Implement suggestions from Douwe's review
- [x] First set of comments
- [x] Second set of comments
- [x] Third set of comments
- [x] Fourth set of comments
- [x] Make sure build is green
- [ ] Make issue for "polish"
- [ ] EE MR
See merge request !5986
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
- Pluralize summary titles
- Remove the `run_query` method - always return sql strings from the
`date_time_sql` methods
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
1. The spec tests that if:
- The merge request is merged
- The target branch is deployed to production
- The `first_deployed_to_production_at` metric is `nil` (for some reason)
- The target branch is deployed to production again
- The `first_deployed_to_production_at` metric stays as `nil` (and is
not overwritten).
2. Failure only on MySQL due to some datetime weirdness.
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
from a forked project.
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
`MergeRequestsClosingIssues`
- Instead of overriding `create` and `update` in `MergeRequests::BaseService`
- Get all merge request service specs passing
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
- Don't use `TableReferences` - using `.arel_table` is shorter!
- Move some database-related code to `Gitlab::Database`
- Remove the `MergeRequest#issues_closed` and
`Issue#closed_by_merge_requests` associations. They were either
shadowing or were too similar to existing methods. They are not being
used anywhere, so it's better to remove them to reduce confusion.
- Use Rails 3-style validations
- Index for `MergeRequest::Metrics#first_deployed_to_production_at`
- Only include `CycleAnalyticsHelpers::TestGeneration` for specs that
need it.
- Other minor refactorings.
|
| | | |
| | | |
| | | |
| | | | |
Helper methods are meant for views
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
And `scss_lint`
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
- Move things common to `Issue` and `MergeRequest` into `Issuable`
- Move more database-specific functions into `Gitlab::Database`
- Indentation changes and other minor refactorings.
|
| | | | |
|
| | | | |
|
| | | |
| | | |
| | | |
| | | | |
Incorrect syntax.
|
| | | |
| | | |
| | | |
| | | |
| | | | |
- Public projects - anyone can access
- Private projects - any member (guest level and above) can access
|
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
1. Change multiple updates to a single `update_all`
2. Use cascading deletes
3. Extract an average function for the database median.
4. Move database median to `lib/gitlab/database`
5. Use `delete_all` instead of `destroy_all`
6. Minor refactoring
|
| |\ \ \ |
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
1. Dispatch between the two strategies automatically based on the
current database type.
2. The MySQL version needs to run multiple statements, so the
`cycle_analytics` model is modified to support this.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
1. Add indexes to `CreateMergeRequestsClosingIssues` columns.
2. Remove an extraneous `check_if_open` check that is redundant now.
It would've been better to rebase this in, but that's not possible
because more people are working on this branch.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
A number of failures were introduced due to performance
improvements (like pre-calculating metrics).
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
1. Look for merge requests (and issues that they close) that have been
deployed to production in the last X days (where X is given by the
`from` parameter).
2. Cycle analytics queries only operate on this fitered set of merge
requests and issues.
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
- For cycle analytics.
- Instead, make each individual `value` `null`, since the titles and
descriptions are used by the frontend even when there is no data.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
1. Add `summary` section.
2. `stats` is `null` if no stats are present.
3. `stats` and `summary` are both arrays.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
- These are not being used anymore.
- Consolidate all issue metrics into a single migration.
- Consolidate all merge request metrics into a single migration.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
All the code that pre-calculates metrics for use in the cycle analytics
page.
- 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"
|
| | | | | |
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
1. Use a new format, with each stage having a `title`, `description`,
and `value.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
1. Use Arel for composable queries.
2. For a project with ~10k issues, the page loads in around 600ms.
Previously, a project with ~5k issues would have a ~20s page load
time.
|
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | | |
- The normal seed creates all the data for cycle analytics the "right"
way. It creates issues, merge requests, commits, branches,
deployments, etc. This is good, but too slow for perf testing.
Generating a 1000 sets of records this way takes more than an hour.
- When the `CYCLE_ANALYTICS_POPULATE_METRICS_DIRECTLY` environment
variable is passed in, the seed only creates issues and merge
requests. It then adds the `metrics` for each issue and
merge request directly, to save time.
- The seed now takes about 4 minutes to run for 1000 sets of records.
|
| | | | | |
|