Deployment Approvals data model
What does this MR do and why?
This is the first MR working towards an MVC for the new Deployment Approvals feature. See #343864 (closed) for context.
This MR introduces the deployment_approvals
feature flag. Rollout issue: #347342 (closed).
See !73340 (closed) to get an idea of how this data model will be used.
Migration output
db:migrate
:
== 20211119194024 AddRequiredApprovalCountToProtectedEnvironments: migrating ==
-- add_column(:protected_environments, :required_approval_count, :integer, {:default=>0, :null=>false})
-> 0.0027s
== 20211119194024 AddRequiredApprovalCountToProtectedEnvironments: migrated (0.0028s)
== 20211119195201 CreateDeploymentApprovals: migrating ========================
-- create_table(:deployment_approvals, {})
-> 0.0064s
== 20211119195201 CreateDeploymentApprovals: migrated (0.0064s) ===============
== 20211123181236 AddUserForeignKeyToDeploymentApprovals: migrating ===========
-- transaction_open?()
-> 0.0000s
-- foreign_keys(:deployment_approvals)
-> 0.0022s
-- transaction_open?()
-> 0.0000s
-- execute("ALTER TABLE deployment_approvals\nADD CONSTRAINT fk_0f58311058\nFOREIGN KEY (user_id)\nREFERENCES users (id)\nON DELETE CASCADE\nNOT VALID;\n")
-> 0.0015s
-- execute("ALTER TABLE deployment_approvals VALIDATE CONSTRAINT fk_0f58311058;")
-> 0.0089s
== 20211123181236 AddUserForeignKeyToDeploymentApprovals: migrated (0.0164s) ==
== 20211202041233 AddDeploymentForeignKeyToDeploymentApprovals: migrating =====
-- transaction_open?()
-> 0.0000s
-- foreign_keys(:deployment_approvals)
-> 0.0019s
-- transaction_open?()
-> 0.0000s
-- execute("ALTER TABLE deployment_approvals\nADD CONSTRAINT fk_2d060dfc73\nFOREIGN KEY (deployment_id)\nREFERENCES deployments (id)\nON DELETE CASCADE\nNOT VALID;\n")
-> 0.0016s
-- execute("ALTER TABLE deployment_approvals VALIDATE CONSTRAINT fk_2d060dfc73;")
-> 0.0162s
== 20211202041233 AddDeploymentForeignKeyToDeploymentApprovals: migrated (0.0232s)
== 20211207165508 AddProtectedEnvironmentsRequiredApprovalCountCheckConstraint: migrating
-- transaction_open?()
-> 0.0000s
-- current_schema()
-> 0.0002s
-- transaction_open?()
-> 0.0000s
-- execute("ALTER TABLE protected_environments\nADD CONSTRAINT protected_environments_required_approval_count_positive\nCHECK ( required_approval_count >= 0 )\nNOT VALID;\n")
-> 0.0007s
-- current_schema()
-> 0.0002s
-- execute("ALTER TABLE protected_environments VALIDATE CONSTRAINT protected_environments_required_approval_count_positive;")
-> 0.0016s
== 20211207165508 AddProtectedEnvironmentsRequiredApprovalCountCheckConstraint: migrated (0.0080s)
db:rollback
:
== 20211207165508 AddProtectedEnvironmentsRequiredApprovalCountCheckConstraint: reverting
-- transaction_open?()
-> 0.0000s
-- transaction_open?()
-> 0.0000s
-- execute("ALTER TABLE protected_environments\nDROP CONSTRAINT IF EXISTS protected_environments_required_approval_count_positive\n")
-> 0.0015s
== 20211207165508 AddProtectedEnvironmentsRequiredApprovalCountCheckConstraint: reverted (0.0169s)
== 20211202041233 AddDeploymentForeignKeyToDeploymentApprovals: reverting =====
-- transaction_open?()
-> 0.0000s
-- remove_foreign_key(:deployment_approvals, :deployments)
-> 0.0055s
== 20211202041233 AddDeploymentForeignKeyToDeploymentApprovals: reverted (0.0102s)
== 20211123181236 AddUserForeignKeyToDeploymentApprovals: reverting ===========
-- transaction_open?()
-> 0.0000s
-- remove_foreign_key(:deployment_approvals, :users)
-> 0.0039s
== 20211123181236 AddUserForeignKeyToDeploymentApprovals: reverted (0.0089s) ==
== 20211119195201 CreateDeploymentApprovals: reverting ========================
-- drop_table(:deployment_approvals, {})
-> 0.0035s
== 20211119195201 CreateDeploymentApprovals: reverted (0.0036s) ===============
== 20211119194024 AddRequiredApprovalCountToProtectedEnvironments: reverting ==
-- remove_column(:protected_environments, :required_approval_count, :integer, {:default=>0, :null=>false})
-> 0.0029s
== 20211119194024 AddRequiredApprovalCountToProtectedEnvironments: reverted (0.0030s)
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Merge request reports
Activity
changed milestone to %14.6
added grouprelease [DEPRECATED] label
assigned to @ali-gitlab
mentioned in issue #343864 (closed)
- A deleted user
added database databasereview pending labels
1 Warning This merge request is quite big (530 lines changed), please consider splitting it into multiple merge requests. Reviewer roulette
Changes that require review have been detected!
Please refer to the table below for assigning reviewers and maintainers suggested by Danger in the specified category:
Category Reviewer Maintainer backend Piotr Skorupa ( @pskorupa
) (UTC+1, 6 hours ahead of@ali-gitlab
)Fabio Pitino ( @fabiopitino
) (UTC+0, 5 hours ahead of@ali-gitlab
)database Dylan Griffith ( @DylanGriffith
) (UTC+11, 16 hours ahead of@ali-gitlab
)Krasimir Angelov ( @krasio
) (UTC+13, 18 hours ahead of@ali-gitlab
)~migration No reviewer available No maintainer available To spread load more evenly across eligible reviewers, Danger has picked a candidate for each review slot, based on their timezone. Feel free to override these selections if you think someone else would be better-suited or use the GitLab Review Workload Dashboard to find other available reviewers.
To read more on how to use the reviewer roulette, please take a look at the Engineering workflow and code review guidelines. Please consider assigning a reviewer or maintainer who is a domain expert in the area of the merge request.
Once you've decided who will review this merge request, assign them as a reviewer! Danger does not automatically notify them for you.
If needed, you can retry the
danger-review
job that generated this comment.Generated by
DangerSetting label(s) ~"devops::release" sectionops based on ~"group::release".
added devopsrelease [DEPRECATED] sectionops labels
- A deleted user
added backend label
added 20 commits
Toggle commit listAllure report
allure-report-publisher
generated test report for c4d5ac49!review-qa-smoke:
test report
package-and-qa: test reportadded typefeature label
added 298 commits
-
a447f188...1e0635ab - 282 commits from branch
master
- bda969df - WIP
- a85318aa - WIP
- 9176b0b9 - Fix migration
- eb90f69c - Add unqiue index
- c7b48484 - Fix state machine method override warning
- b3fa1179 - Attempt to fix test
- 8418715d - Remove unrelated schema change
- 819b57a7 - Fix schema
- 82a18f9b - Fix failing tests
- 4696de05 - Update schema
- c6d55eca - Test ee/environment
- 32c97561 - User association
- 002a0f52 - Test deployment
- 7248de9e - Test environment
- 1f4f24b8 - Test association
- 6389a013 - Add delegation
Toggle commit list-
a447f188...1e0635ab - 282 commits from branch
added 2 commits
added 32 commits
-
22e658a3...d155b6d5 - 12 commits from branch
master
- 097176e0 - WIP
- fc88c011 - WIP
- 2ac26f8c - Fix migration
- 90faaa3d - Add unqiue index
- 1c1ef96c - Fix state machine method override warning
- 9b7a3415 - Attempt to fix test
- 8bd63f8b - Remove unrelated schema change
- 33c9c99d - Fix schema
- 3641b355 - Fix failing tests
- 83ab92e4 - Update schema
- 03c33976 - Test ee/environment
- e7675c3b - User association
- a76e09c0 - Test deployment
- 5e9b03b8 - Test environment
- 56919195 - Test association
- 102a9a29 - Add delegation
- 277b8c5b - Move delegation to EE
- 09771b28 - Add ability to update status to blocked
- 3b601188 - Add sync_status_with
- 2eefe51c - Add required_approval_count
Toggle commit list-
22e658a3...d155b6d5 - 12 commits from branch
added 2 commits
marked the checklist item I have evaluated the MR acceptance checklist for this MR. as completed
- Resolved by Shinya Maeda
requested review from @bala.kumar and @morefice
Database migrations
Migrations included in this change have been executed on gitlab.com data for testing purposes. For details, please see the migration testing pipeline (limited access).
Migration Type Total runtime Result DB size change 20211119194024 - AddRequiredApprovalCountToProtectedEnvironments Regular 1.4 s +0.00 B 20211119195201 - CreateDeploymentApprovals Regular 1.3 s +32.00 KiB 20211123181236 - AddUserForeignKeyToDeploymentApprovals Regular 1.6 s +0.00 B 20211202041233 - AddDeploymentForeignKeyToDeploymentApprovals Regular 1.4 s +0.00 B 20211207165508 - AddProtectedEnvironmentsRequiredApprovalCountCheckConstraint Regular 1.6 s +0.00 B Runtime Histogram for all migrations
Query Runtime Count 0 seconds - 0.01 seconds 0 0.01 seconds - 0.1 seconds 9 0.1 seconds - 1 second 2 1 second - 5 minutes 0 5 minutes + 0 Migration: 20211119194024 - AddRequiredApprovalCountToProtectedEnvironments
- Type: Regular
- Duration: 1.4 s
- Database size change: +0.00 B
Query Calls Total Time Max Time Mean Time Rows ALTER TABLE "protected_environments" ADD "required_approval_count" integer DEFAULT 0 NOT NULL /*application:test,db_config_name:main*/
1 21.7 ms 21.7 ms 21.7 ms 0 SELECT $1::regtype::oid
1 0.0 ms 0.0 ms 0.0 ms 1 Histogram for AddRequiredApprovalCountToProtectedEnvironments
Query Runtime Count 0 seconds - 0.01 seconds 0 0.01 seconds - 0.1 seconds 2 0.1 seconds - 1 second 0 1 second - 5 minutes 0 5 minutes + 0 Migration: 20211119195201 - CreateDeploymentApprovals
- Type: Regular
- Duration: 1.3 s
- Database size change: +32.00 KiB
Query Calls Total Time Max Time Mean Time Rows CREATE TABLE "deployment_approvals" ("id" bigserial primary key, "deployment_id" bigint NOT NULL, "user_id" bigint NOT NULL, "created_at" timestamptz NOT NULL, "updated_at" timestamptz NOT NULL, "status" smallint NOT NULL) /*application:test,db_config_name:main*/
1 67.8 ms 67.8 ms 67.8 ms 0 CREATE UNIQUE INDEX "index_deployment_approvals_on_deployment_id_and_user_id" ON "deployment_approvals" ("deployment_id", "user_id") /*application:test,db_config_name:main*/
1 1.9 ms 1.9 ms 1.9 ms 0 CREATE INDEX "index_deployment_approvals_on_user_id" ON "deployment_approvals" ("user_id") /*application:test,db_config_name:main*/
1 0.9 ms 0.9 ms 0.9 ms 0 Histogram for CreateDeploymentApprovals
Query Runtime Count 0 seconds - 0.01 seconds 0 0.01 seconds - 0.1 seconds 2 0.1 seconds - 1 second 1 1 second - 5 minutes 0 5 minutes + 0 Migration: 20211123181236 - AddUserForeignKeyToDeploymentApprovals
- Type: Regular
- Duration: 1.6 s
- Database size change: +0.00 B
Query Calls Total Time Max Time Mean Time Rows ALTER TABLE deployment_approvals ADD CONSTRAINT fk_0f58311058 FOREIGN KEY (user_id) REFERENCES users (id) ON DELETE CASCADE NOT VALID
1 24.2 ms 24.2 ms 24.2 ms 0 ALTER TABLE deployment_approvals VALIDATE CONSTRAINT fk_0f58311058
1 18.0 ms 18.0 ms 18.0 ms 0 Histogram for AddUserForeignKeyToDeploymentApprovals
Query Runtime Count 0 seconds - 0.01 seconds 0 0.01 seconds - 0.1 seconds 2 0.1 seconds - 1 second 0 1 second - 5 minutes 0 5 minutes + 0 Migration: 20211202041233 - AddDeploymentForeignKeyToDeploymentApprovals
- Type: Regular
- Duration: 1.4 s
- Database size change: +0.00 B
Query Calls Total Time Max Time Mean Time Rows ALTER TABLE deployment_approvals VALIDATE CONSTRAINT fk_2d060dfc73
1 30.2 ms 30.2 ms 30.2 ms 0 ALTER TABLE deployment_approvals ADD CONSTRAINT fk_2d060dfc73 FOREIGN KEY (deployment_id) REFERENCES deployments (id) ON DELETE CASCADE NOT VALID
1 14.3 ms 14.3 ms 14.3 ms 0 Histogram for AddDeploymentForeignKeyToDeploymentApprovals
Query Runtime Count 0 seconds - 0.01 seconds 0 0.01 seconds - 0.1 seconds 2 0.1 seconds - 1 second 0 1 second - 5 minutes 0 5 minutes + 0 Migration: 20211207165508 - AddProtectedEnvironmentsRequiredApprovalCountCheckConstraint
- Type: Regular
- Duration: 1.6 s
- Database size change: +0.00 B
Query Calls Total Time Max Time Mean Time Rows ALTER TABLE protected_environments VALIDATE CONSTRAINT protected_environments_required_approval_count_positive
1 77.4 ms 77.4 ms 77.4 ms 0 ALTER TABLE protected_environments ADD CONSTRAINT protected_environments_required_approval_count_positive CHECK ( required_approval_count >= 0 ) NOT VALID
1 3.2 ms 3.2 ms 3.2 ms 0 Histogram for AddProtectedEnvironmentsRequiredApprovalCountCheckConstraint
Query Runtime Count 0 seconds - 0.01 seconds 0 0.01 seconds - 0.1 seconds 1 0.1 seconds - 1 second 1 1 second - 5 minutes 0 5 minutes + 0
Other migrations pending on GitLab.com
Migration Type Total runtime Result DB size change Clone Details
Clone ID Clone Created At Clone Data Timestamp Expected Removal Time database-testing-927686
2021-12-08 00:25:49 UTC 2021-12-07 23:59:56 UTC 2021-12-08 12:28:04 +0000 Artifacts
Brought to you by gitlab-org/database-team/gitlab-com-database-testing. Epic
- A deleted user
added database-testing-automation label
- Resolved by Max Orefice
- Resolved by Alishan Ladhani
- Resolved by Alishan Ladhani
Thanks, could you post the migration output as described in our documentation please?
Back to you
removed review request for @morefice
added 151 commits
-
e99eedde...f02f3651 - 150 commits from branch
master
- c0557831 - Create data model for Deployment Approvals
-
e99eedde...f02f3651 - 150 commits from branch