Add group_id to daily coverage data
Ref: #293825 (closed)
This is Step #1
to refactor our daily coverage data finder.
What does this MR do?
This MR adds a new column to our existing ci_daily_build_group_report_result
table.
It includes the following items:
-
New group_id
column -
Adds foreign key associated to it -
Persist group_id
when generating daily coverage
Why are doing this?
In order to aggregate the daily coverage data at the group level, we decided to introduce a new foreign key to our model which will simplify how we fetch data at the group level
This will make it easier to query the data available on this page:
Database Review
Column addition
Migration output
$ bin/rails db:migrate
== 20210204212850 AddGroupIdToCiDailyBuildGroupReportResults: migrating =======
-- add_column(:ci_daily_build_group_report_results, :group_id, :bigint)
-> 0.0012s
== 20210204212850 AddGroupIdToCiDailyBuildGroupReportResults: migrated (0.0013s)
Migration rollback
== 20210204212850 AddGroupIdToCiDailyBuildGroupReportResults: reverting =======
-- remove_column(:ci_daily_build_group_report_results, :group_id, :bigint)
-> 0.0008s
== 20210204212850 AddGroupIdToCiDailyBuildGroupReportResults: reverted (0.0027s)
Foreign key creation
Migration output
== 20210208144134 AddIndexGroupIdToCiDailyBuildGroupReportResults: migrating ==
-- transaction_open?()
-> 0.0000s
-- index_exists?(:ci_daily_build_group_report_results, :group_id, {:name=>"index_ci_daily_build_group_report_results_on_group_id", :algorithm=>:concurrently})
-> 0.0025s
-- execute("SET statement_timeout TO 0")
-> 0.0005s
-- add_index(:ci_daily_build_group_report_results, :group_id, {:name=>"index_ci_daily_build_group_report_results_on_group_id", :algorithm=>:concurrently})
-> 0.0047s
-- execute("RESET ALL")
-> 0.0005s
-- transaction_open?()
-> 0.0000s
-- foreign_keys(:ci_daily_build_group_report_results)
-> 0.0024s
-- execute("ALTER TABLE ci_daily_build_group_report_results\nADD CONSTRAINT fk_fd1858fefd\nFOREIGN KEY (group_id)\nREFERENCES namespaces (id)\nON DELETE CASCADE\nNOT VALID;\n")
-> 0.0016s
-- execute("ALTER TABLE ci_daily_build_group_report_results VALIDATE CONSTRAINT fk_fd1858fefd;")
-> 0.0022s
== 20210208144134 AddIndexGroupIdToCiDailyBuildGroupReportResults: migrated (0.0224s)
Migration rollback
== 20210208144134 AddIndexGroupIdToCiDailyBuildGroupReportResults: reverting ==
-- foreign_keys(:ci_daily_build_group_report_results)
-> 0.0047s
-- remove_foreign_key(:ci_daily_build_group_report_results, {:column=>:group_id})
-> 0.0047s
-- transaction_open?()
-> 0.0000s
-- indexes(:ci_daily_build_group_report_results)
-> 0.0032s
-- execute("SET statement_timeout TO 0")
-> 0.0002s
-- remove_index(:ci_daily_build_group_report_results, {:algorithm=>:concurrently, :name=>"index_ci_daily_build_group_report_results_on_group_id"})
-> 0.0046s
-- execute("RESET ALL")
-> 0.0002s
== 20210208144134 AddIndexGroupIdToCiDailyBuildGroupReportResults: reverted (0.0182s)
Does this MR meet the acceptance criteria?
Conformity
-
Changelog entry - [-] Documentation (if required)
-
Code review guidelines - [-] Merge request performance guidelines
-
Style guides -
Database guides - [-] Separation of EE specific content
Availability and Testing
- [-] Review and add/update tests for this feature/bug. Consider all test levels. See the Test Planning Process.
- [-] Tested in all supported browsers
- [-] Informed Infrastructure department of a default or new setting change, if applicable per definition of done
Security
If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:
- [-] Label as security and @ mention
@gitlab-com/gl-security/appsec
- [-] The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
- [-] Security reports checked/validated by a reviewer from the AppSec team
Edited by Max Orefice