Restrict pipeline cancellation by role
What does this MR do and why?
What?
Allows the user to update which roles are allowed to cancel pipelines [:developer, :maintainer, :no_one]
via the internal api, project controller (yet to be hooked up to the front end). Code in the project policy prevents users from canceling base on the role.
Why?
As part of implementing issue #20207 (closed)
What is not included
- Public REST api
- Graphql api
- Front end changes
Database
Migration output:
up:
▶ rake db:migrate
WARNING: This version of GitLab depends on gitlab-shell 14.29.0, but you're running 14.28.0. Please update gitlab-shell.
main: == [advisory_lock_connection] object_id: 179980, pg_backend_pid: 13759
main: == 20231024212214 AddPipelineCancelRoleRestrictionEnum: migrating =============
main: -- add_column(:project_ci_cd_settings, :restrict_pipeline_cancellation_role, :integer, {:limit=>2, :default=>0, :null=>false})
main: -> 0.0089s
main: == 20231024212214 AddPipelineCancelRoleRestrictionEnum: migrated (0.0146s) ====
main: == [advisory_lock_connection] object_id: 179980, pg_backend_pid: 13759
ci: == [advisory_lock_connection] object_id: 180240, pg_backend_pid: 13761
ci: == 20231024212214 AddPipelineCancelRoleRestrictionEnum: migrating =============
ci: -- add_column(:project_ci_cd_settings, :restrict_pipeline_cancellation_role, :integer, {:limit=>2, :default=>0, :null=>false})
ci: -> 0.0017s
ci: == 20231024212214 AddPipelineCancelRoleRestrictionEnum: migrated (0.0131s) ====
ci: == [advisory_lock_connection] object_id: 180240, pg_backend_pid: 13761
down:
▶ rake db:rollback:ci VERSION=20231024212214
WARNING: This version of GitLab depends on gitlab-shell 14.29.0, but you're running 14.28.0. Please update gitlab-shell.
ci: == [advisory_lock_connection] object_id: 179620, pg_backend_pid: 15846
ci: == 20231024212214 AddPipelineCancelRoleRestrictionEnum: reverting =============
ci: -- remove_column(:project_ci_cd_settings, :restrict_pipeline_cancellation_role)
ci: -> 0.0070s
ci: == 20231024212214 AddPipelineCancelRoleRestrictionEnum: reverted (0.0173s) ====
ci: == [advisory_lock_connection] object_id: 179620, pg_backend_pid: 15846