summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-03-06 21:12:45 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2023-03-06 21:12:45 +0000
commit8ec004d6d8d92f00d0598e94ede4d31ab1e8f18e (patch)
tree525dcb81832e5ad142cc1f2aeff2f38c51f80aa4 /app
parente22c3819ad2321a0cf825877fe3b60e41268c5b3 (diff)
downloadgitlab-ce-8ec004d6d8d92f00d0598e94ede4d31ab1e8f18e.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app')
-rw-r--r--app/assets/javascripts/environments/components/environment_form.vue2
-rw-r--r--app/assets/javascripts/related_issues/components/related_issues_block.vue2
-rw-r--r--app/assets/javascripts/security_configuration/components/app.vue2
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/components/states/ready_to_merge.vue61
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/i18n.js5
-rw-r--r--app/assets/javascripts/vue_merge_request_widget/mixins/ready_to_merge.js16
-rw-r--r--app/assets/javascripts/work_items/components/work_item_links/work_item_links.vue2
-rw-r--r--app/helpers/application_settings_helper.rb1
-rw-r--r--app/models/application_setting.rb4
-rw-r--r--app/models/application_setting_implementation.rb1
-rw-r--r--app/views/admin/application_settings/_outbound.html.haml6
-rw-r--r--app/views/projects/security/configuration/show.html.haml4
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,