From 53c5d535ed95398082c29c8ddd88266c5db20d06 Mon Sep 17 00:00:00 2001 From: Andrew Fontaine Date: Tue, 16 Aug 2022 15:37:25 -0400 Subject: [PATCH] Add a toggle to enable or disable releases As part of splitting out the operations toggle, releases need their own toggle. Note that the operations toggle will remain until the split is complete. Also no changelog entry as this is still behind a feature flag. --- .../permissions/components/settings_panel.vue | 27 +++++++++++++++++++ app/helpers/projects_helper.rb | 3 ++- locale/gitlab.pot | 6 +++++ .../components/settings_panel_spec.js | 20 ++++++++++++++ 4 files changed, 55 insertions(+), 1 deletion(-) diff --git a/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue b/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue index 0e02863bb9f6bf..da6fb77525808a 100644 --- a/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue +++ b/app/assets/javascripts/pages/projects/shared/permissions/components/settings_panel.vue @@ -49,6 +49,10 @@ export default { ciCdLabel: __('CI/CD'), repositoryLabel: s__('ProjectSettings|Repository'), requirementsLabel: s__('ProjectSettings|Requirements'), + releasesLabel: s__('ProjectSettings|Releases'), + releasesHelpText: s__( + 'ProjectSettings|Combine git tags with release notes, release evidence, and assets to create a release.', + ), securityAndComplianceLabel: s__('ProjectSettings|Security & Compliance'), snippetsLabel: s__('ProjectSettings|Snippets'), wikiLabel: s__('ProjectSettings|Wiki'), @@ -145,6 +149,11 @@ export default { required: false, default: '', }, + releasesHelpPath: { + type: String, + required: false, + default: '', + }, lfsHelpPath: { type: String, required: false, @@ -229,6 +238,7 @@ export default { operationsAccessLevel: featureAccessLevel.EVERYONE, environmentsAccessLevel: featureAccessLevel.EVERYONE, featureFlagsAccessLevel: featureAccessLevel.PROJECT_MEMBERS, + releasesAccessLevel: featureAccessLevel.EVERYONE, containerRegistryAccessLevel: featureAccessLevel.EVERYONE, warnAboutPotentiallyUnwantedCharacters: true, lfsEnabled: true, @@ -409,6 +419,10 @@ export default { featureAccessLevel.PROJECT_MEMBERS, this.featureFlagsAccessLevel, ); + this.releasesAccessLevel = Math.min( + featureAccessLevel.PROJECT_MEMBERS, + this.releasesAccessLevel, + ); this.containerRegistryAccessLevel = Math.min( featureAccessLevel.PROJECT_MEMBERS, this.containerRegistryAccessLevel, @@ -921,6 +935,19 @@ export default { name="project[project_feature_attributes][feature_flags_access_level]" /> + + + diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb index a65dd6703f28a4..b140184f6fd998 100644 --- a/app/helpers/projects_helper.rb +++ b/app/helpers/projects_helper.rb @@ -391,7 +391,8 @@ def project_permissions_panel_data(project) issuesHelpPath: help_page_path('user/project/issues/index'), membersPagePath: project_project_members_path(project), environmentsHelpPath: help_page_path('ci/environments/index'), - featureFlagsHelpPath: help_page_path('operations/feature_flags') + featureFlagsHelpPath: help_page_path('operations/feature_flags'), + releasesHelpPath: help_page_path('user/project/releases/index') } end diff --git a/locale/gitlab.pot b/locale/gitlab.pot index fea9aa2529ce04..82f92931d322e5 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -30799,6 +30799,9 @@ msgstr "" msgid "ProjectSettings|Choose your merge method, options, checks, and squash options." msgstr "" +msgid "ProjectSettings|Combine git tags with release notes, release evidence, and assets to create a release." +msgstr "" + msgid "ProjectSettings|Configure your project resources and monitor their health." msgstr "" @@ -30994,6 +30997,9 @@ msgstr "" msgid "ProjectSettings|Public" msgstr "" +msgid "ProjectSettings|Releases" +msgstr "" + msgid "ProjectSettings|Repository" msgstr "" diff --git a/spec/frontend/pages/projects/shared/permissions/components/settings_panel_spec.js b/spec/frontend/pages/projects/shared/permissions/components/settings_panel_spec.js index b65f2c8020d861..b64d3297acc0ed 100644 --- a/spec/frontend/pages/projects/shared/permissions/components/settings_panel_spec.js +++ b/spec/frontend/pages/projects/shared/permissions/components/settings_panel_spec.js @@ -129,6 +129,7 @@ describe('Settings Panel', () => { const findConfirmDangerButton = () => wrapper.findComponent(ConfirmDanger); const findEnvironmentsSettings = () => wrapper.findComponent({ ref: 'environments-settings' }); const findFeatureFlagsSettings = () => wrapper.findComponent({ ref: 'feature-flags-settings' }); + const findReleasesSettings = () => wrapper.findComponent({ ref: 'environments-settings' }); afterEach(() => { wrapper.destroy(); @@ -825,4 +826,23 @@ describe('Settings Panel', () => { }); }); }); + + describe('Releases', () => { + describe('with feature flag', () => { + it('should show the releases toggle', () => { + wrapper = mountComponent({ + glFeatures: { splitOperationsVisibilityPermissions: true }, + }); + + expect(findReleasesSettings().exists()).toBe(true); + }); + }); + describe('without feature flag', () => { + it('should not show the releases toggle', () => { + wrapper = mountComponent({}); + + expect(findReleasesSettings().exists()).toBe(false); + }); + }); + }); }); -- GitLab