diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-03-06 21:12:45 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-03-06 21:12:45 +0000 |
commit | 8ec004d6d8d92f00d0598e94ede4d31ab1e8f18e (patch) | |
tree | 525dcb81832e5ad142cc1f2aeff2f38c51f80aa4 /app | |
parent | e22c3819ad2321a0cf825877fe3b60e41268c5b3 (diff) | |
download | gitlab-ce-8ec004d6d8d92f00d0598e94ede4d31ab1e8f18e.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
12 files changed, 44 insertions, 62 deletions
diff --git a/app/assets/javascripts/environments/components/environment_form.vue b/app/assets/javascripts/environments/components/environment_form.vue index ee5d95ae6f0..62ceb66d803 100644 --- a/app/assets/javascripts/environments/components/environment_form.vue +++ b/app/assets/javascripts/environments/components/environment_form.vue @@ -17,7 +17,7 @@ export default { GlLink, GlSprintf, }, - inject: ['protectedEnvironmentSettingsPath'], + inject: { protectedEnvironmentSettingsPath: { default: '' } }, props: { environment: { required: true, diff --git a/app/assets/javascripts/related_issues/components/related_issues_block.vue b/app/assets/javascripts/related_issues/components/related_issues_block.vue index 4aebaa86932..1fb1c5837b2 100644 --- a/app/assets/javascripts/related_issues/components/related_issues_block.vue +++ b/app/assets/javascripts/related_issues/components/related_issues_block.vue @@ -278,7 +278,7 @@ export default { /> </template> <div v-if="!shouldShowTokenBody && !isFormVisible" data-testid="related-items-empty"> - <p class="gl-my-5 gl-px-5"> + <p class="gl-my-5 gl-px-5 gl-text-gray-500"> {{ emptyStateMessage }} <gl-link v-if="hasHelpPath" diff --git a/app/assets/javascripts/security_configuration/components/app.vue b/app/assets/javascripts/security_configuration/components/app.vue index 3ebd21609a6..e96f71981e5 100644 --- a/app/assets/javascripts/security_configuration/components/app.vue +++ b/app/assets/javascripts/security_configuration/components/app.vue @@ -26,7 +26,7 @@ export const i18n = { scanner will not be reflected as such until the pipeline has been successfully executed and it has generated valid artifacts.`, ), - securityConfiguration: __('Security Configuration'), + securityConfiguration: __('Security configuration'), vulnerabilityManagement: s__('SecurityConfiguration|Vulnerability Management'), securityTraining: s__('SecurityConfiguration|Security training'), securityTrainingDescription: s__( diff --git a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue index 00e346bb8c8..bb8990a48b1 100644 --- a/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue +++ b/app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue @@ -10,7 +10,6 @@ import { GlLink, GlTooltipDirective, GlSkeletonLoader, - GlPopover, } from '@gitlab/ui'; import { isEmpty } from 'lodash'; import readyToMergeMixin from 'ee_else_ce/vue_merge_request_widget/mixins/ready_to_merge'; @@ -26,6 +25,7 @@ import { convertToGraphQLId } from '~/graphql_shared/utils'; import readyToMergeSubscription from '~/vue_merge_request_widget/queries/states/ready_to_merge.subscription.graphql'; import { AUTO_MERGE_STRATEGIES, + WARNING, MT_MERGE_STRATEGY, PIPELINE_FAILED_STATE, STATE_MACHINE, @@ -40,6 +40,7 @@ import CommitMessageDropdown from './commit_message_dropdown.vue'; import SquashBeforeMerge from './squash_before_merge.vue'; import MergeFailedPipelineConfirmationDialog from './merge_failed_pipeline_confirmation_dialog.vue'; +const PIPELINE_RUNNING_STATE = 'running'; const PIPELINE_PENDING_STATE = 'pending'; const PIPELINE_SUCCESS_STATE = 'success'; @@ -129,8 +130,9 @@ export default { GlDropdownItem, GlFormCheckbox, GlSkeletonLoader, - GlPopover, MergeFailedPipelineConfirmationDialog, + MergeTrainHelperIcon: () => + import('ee_component/vue_merge_request_widget/components/merge_train_helper_icon.vue'), MergeImmediatelyConfirmationDialog: () => import( 'ee_component/vue_merge_request_widget/components/merge_immediately_confirmation_dialog.vue' @@ -239,6 +241,22 @@ export default { return PIPELINE_SUCCESS_STATE; }, + iconClass() { + if (this.shouldRenderMergeTrainHelperIcon && !this.mr.preventMerge) { + return PIPELINE_RUNNING_STATE; + } + + if ( + this.status === PIPELINE_FAILED_STATE || + !this.commitMessage.length || + !this.isMergeAllowed || + this.mr.preventMerge + ) { + return WARNING; + } + + return PIPELINE_SUCCESS_STATE; + }, mergeButtonText() { if (this.isMergingImmediately) { return __('Merge in progress'); @@ -288,12 +306,6 @@ export default { !this.mr.autoMergeEnabled ); }, - showAutoMergeHelperText() { - return ( - !(this.status === PIPELINE_FAILED_STATE || this.isPipelineFailed) && - this.isAutoMergeAvailable - ); - }, sourceBranchDeletedText() { const isPreMerge = this.mr.state !== 'merged'; @@ -478,7 +490,6 @@ export default { sourceDivergedFromTargetText: s__('mrWidget|The source branch is %{link} the target branch'), divergedCommits: (count) => n__('%d commit behind', '%d commits behind', count), }, - mergeStrategyPopoverId: 'mergeStrategyPopover', }; </script> @@ -659,37 +670,7 @@ export default { @cancel="isPipelineFailedModalVisibleNormalMerge = false" /> </gl-button-group> - <template v-if="showAutoMergeHelperText"> - <div - class="gl-ml-4 gl-text-gray-500 gl-font-sm" - data-testid="auto-merge-helper-text" - data-qa-selector="auto_merge_helper_text" - > - {{ autoMergeHelperText }} - </div> - <gl-icon - :id="$options.mergeStrategyPopoverId" - class="gl-ml-2 gl-text-blue-500" - name="question-o" - data-testid="auto-merge-helper-icon" - /> - <gl-popover :target="$options.mergeStrategyPopoverId" :css-classes="['gl-font-sm']"> - <template #title> - {{ autoMergePopoverSettings.title }} - </template> - <gl-sprintf :message="autoMergePopoverSettings.bodyText"> - <template #link="{ content }"> - <gl-link - :href="autoMergePopoverSettings.helpLink" - target="_blank" - class="gl-font-sm" - > - {{ content }} - </gl-link> - </template> - </gl-sprintf> - </gl-popover> - </template> + <merge-train-helper-icon v-if="shouldRenderMergeTrainHelperIcon" class="gl-mx-3" /> </template> <div v-else diff --git a/app/assets/javascripts/vue_merge_request_widget/i18n.js b/app/assets/javascripts/vue_merge_request_widget/i18n.js index fa00b89d414..5ca56074031 100644 --- a/app/assets/javascripts/vue_merge_request_widget/i18n.js +++ b/app/assets/javascripts/vue_merge_request_widget/i18n.js @@ -21,6 +21,11 @@ export const I18N_SHA_MISMATCH = { actionButtonLabel: __('Review changes'), }; +export const MERGE_TRAIN_BUTTON_TEXT = { + failed: __('Start merge train...'), + passed: __('Start merge train'), +}; + export const MR_WIDGET_CLOSED_REOPEN = __('Reopen'); export const MR_WIDGET_CLOSED_REOPENING = __('Reopening...'); export const MR_WIDGET_CLOSED_RELOADING = __('Refreshing...'); diff --git a/app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js b/app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js index 48c9ec9c944..d964b4bacac 100644 --- a/app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js +++ b/app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js @@ -1,4 +1,3 @@ -import { helpPagePath } from '~/helpers/help_page_helper'; import { __ } from '~/locale'; export const MERGE_DISABLED_TEXT = __('You can only merge once the items above are resolved.'); @@ -33,26 +32,17 @@ export default { }, autoMergeText() { // MWPS is currently the only auto merge strategy available in CE - return __('Set auto-merge'); - }, - autoMergeHelperText() { return __('Merge when pipeline succeeds'); }, - autoMergePopoverSettings() { - return { - helpLink: helpPagePath('/user/project/merge_requests/merge_when_pipeline_succeeds.html'), - bodyText: __( - 'When the pipeline for this merge request succeeds, it will %{linkStart}automatically merge%{linkEnd}.', - ), - title: __('Merge when pipeline succeeds'), - }; - }, shouldShowMergeImmediatelyDropdown() { return this.isPipelineActive && !this.stateData.onlyAllowMergeIfPipelineSucceeds; }, isMergeImmediatelyDangerous() { return false; }, + shouldRenderMergeTrainHelperIcon() { + return false; + }, pipelineId() { return this.pipeline.id; }, diff --git a/app/assets/javascripts/work_items/components/work_item_links/work_item_links.vue b/app/assets/javascripts/work_items/components/work_item_links/work_item_links.vue index e2956c18678..696f198fb0c 100644 --- a/app/assets/javascripts/work_items/components/work_item_links/work_item_links.vue +++ b/app/assets/javascripts/work_items/components/work_item_links/work_item_links.vue @@ -338,7 +338,7 @@ export default { <template v-else> <div v-if="isChildrenEmpty && !isShownAddForm && !error" data-testid="links-empty"> - <p class="gl-mb-3"> + <p class="gl-mb-3 gl-text-gray-500"> {{ $options.i18n.emptyStateMessage }} </p> </div> diff --git a/app/helpers/application_settings_helper.rb b/app/helpers/application_settings_helper.rb index adb99a523c2..dd5f4f17ee2 100644 --- a/app/helpers/application_settings_helper.rb +++ b/app/helpers/application_settings_helper.rb @@ -250,6 +250,7 @@ module ApplicationSettingsHelper :default_snippet_visibility, :default_syntax_highlighting_theme, :delete_inactive_projects, + :deny_all_requests_except_allowed, :disable_admin_oauth_scopes, :disable_feed_token, :disabled_oauth_sign_in_sources, diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb index 7219374fe2a..0f33b0541dc 100644 --- a/app/models/application_setting.rb +++ b/app/models/application_setting.rb @@ -423,6 +423,10 @@ class ApplicationSetting < MainClusterwide::ApplicationRecord allow_nil: false, inclusion: { in: [true, false], message: N_('must be a boolean value') } + validates :deny_all_requests_except_allowed, + allow_nil: false, + inclusion: { in: [true, false], message: N_('must be a boolean value') } + Gitlab::SSHPublicKey.supported_types.each do |type| validates :"#{type}_key_restriction", presence: true, key_restriction: { type: type } end diff --git a/app/models/application_setting_implementation.rb b/app/models/application_setting_implementation.rb index 4e2ec0d4ecd..a8ffa70a797 100644 --- a/app/models/application_setting_implementation.rb +++ b/app/models/application_setting_implementation.rb @@ -60,6 +60,7 @@ module ApplicationSettingImplementation default_project_visibility: Settings.gitlab.default_projects_features['visibility_level'], default_projects_limit: Settings.gitlab['default_projects_limit'], default_snippet_visibility: Settings.gitlab.default_projects_features['visibility_level'], + deny_all_requests_except_allowed: false, diff_max_patch_bytes: Gitlab::Git::Diff::DEFAULT_MAX_PATCH_BYTES, diff_max_files: Commit::DEFAULT_MAX_DIFF_FILES_SETTING, diff_max_lines: Commit::DEFAULT_MAX_DIFF_LINES_SETTING, diff --git a/app/views/admin/application_settings/_outbound.html.haml b/app/views/admin/application_settings/_outbound.html.haml index 566bcc5b8e0..f36e8d51b40 100644 --- a/app/views/admin/application_settings/_outbound.html.haml +++ b/app/views/admin/application_settings/_outbound.html.haml @@ -1,12 +1,12 @@ -- deny_all_requests = Feature.enabled?(:deny_all_requests) && @application_setting.deny_all_requests +- deny_all_requests = Feature.enabled?(:deny_all_requests_except_allowed) && @application_setting.deny_all_requests_except_allowed = gitlab_ui_form_for @application_setting, url: network_admin_application_settings_path(anchor: 'js-outbound-settings'), html: { class: 'fieldset-form' } do |f| = form_errors(@application_setting) %fieldset .form-group - - if Feature.enabled?(:deny_all_requests) - = f.gitlab_ui_checkbox_component :deny_all_requests, + - if Feature.enabled?(:deny_all_requests_except_allowed) + = f.gitlab_ui_checkbox_component :deny_all_requests_except_allowed, s_('OutboundRequests|Block all requests, except for IP addresses, IP ranges, and domain names defined in the allowlist'), checkbox_options: { class: 'js-deny-all-requests' } = render Pajamas::AlertComponent.new(variant: :warning, diff --git a/app/views/projects/security/configuration/show.html.haml b/app/views/projects/security/configuration/show.html.haml index 4b82f74d035..2904fb81afe 100644 --- a/app/views/projects/security/configuration/show.html.haml +++ b/app/views/projects/security/configuration/show.html.haml @@ -1,5 +1,5 @@ -- breadcrumb_title _("Security Configuration") -- page_title _("Security Configuration") +- breadcrumb_title _("Security configuration") +- page_title _("Security configuration") - @content_class = "limit-container-width" unless fluid_layout #js-security-configuration{ data: { **@configuration.to_html_data_attribute, |