Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
		
							parent
							
								
									6666461136
								
							
						
					
					
						commit
						a95f7ad8b8
					
				|  | @ -73,7 +73,6 @@ eslint-report.html | |||
| /.gitlab_workhorse_secret | ||||
| /.gitlab_pages_secret | ||||
| /.gitlab_kas_secret | ||||
| /.gitlab_suggested_reviewers_secret | ||||
| /webpack-report/ | ||||
| /crystalball/ | ||||
| /test_results/ | ||||
|  |  | |||
|  | @ -43,41 +43,36 @@ export default { | |||
| }; | ||||
| </script> | ||||
| <template> | ||||
|   <div class="gl-display-flex gl-align-items-start"> | ||||
|   <div class="timeline-event gl-display-grid"> | ||||
|     <div | ||||
|       class="gl-display-flex gl-align-items-center gl-justify-content-center gl-bg-white gl-text-gray-200 gl-border-gray-100 gl-border-1 gl-border-solid gl-rounded-full gl-mt-2 gl-mr-3 gl-w-8 gl-h-8 gl-p-3 gl-z-index-1" | ||||
|     > | ||||
|       <gl-icon :name="getEventIcon(action)" class="note-icon" /> | ||||
|     </div> | ||||
|     <div | ||||
|       class="timeline-event-note timeline-event-border gl-w-full gl-display-flex gl-flex-direction-row" | ||||
|       data-testid="event-text-container" | ||||
|     > | ||||
|       <div> | ||||
|         <strong class="gl-font-lg" data-testid="event-time"> | ||||
|           <gl-sprintf :message="$options.i18n.timeUTC"> | ||||
|             <template #time>{{ time }}</template> | ||||
|           </gl-sprintf> | ||||
|         </strong> | ||||
|         <div v-safe-html="noteHtml"></div> | ||||
|       </div> | ||||
|       <gl-dropdown | ||||
|         v-if="canUpdateTimelineEvent" | ||||
|         right | ||||
|         class="event-note-actions gl-ml-auto gl-align-self-start" | ||||
|         icon="ellipsis_v" | ||||
|         text-sr-only | ||||
|         :text="$options.i18n.moreActions" | ||||
|         category="tertiary" | ||||
|         no-caret | ||||
|       > | ||||
|         <gl-dropdown-item @click="$emit('edit')"> | ||||
|           {{ $options.i18n.edit }} | ||||
|         </gl-dropdown-item> | ||||
|         <gl-dropdown-item @click="$emit('delete')"> | ||||
|           {{ $options.i18n.delete }} | ||||
|         </gl-dropdown-item> | ||||
|       </gl-dropdown> | ||||
|     <div class="timeline-event-note timeline-event-border" data-testid="event-text-container"> | ||||
|       <strong class="gl-font-lg" data-testid="event-time"> | ||||
|         <gl-sprintf :message="$options.i18n.timeUTC"> | ||||
|           <template #time>{{ time }}</template> | ||||
|         </gl-sprintf> | ||||
|       </strong> | ||||
|       <div v-safe-html="noteHtml" class="md"></div> | ||||
|     </div> | ||||
|     <gl-dropdown | ||||
|       v-if="canUpdateTimelineEvent" | ||||
|       right | ||||
|       class="event-note-actions gl-ml-auto gl-align-self-start" | ||||
|       icon="ellipsis_v" | ||||
|       text-sr-only | ||||
|       :text="$options.i18n.moreActions" | ||||
|       category="tertiary" | ||||
|       no-caret | ||||
|     > | ||||
|       <gl-dropdown-item @click="$emit('edit')"> | ||||
|         {{ $options.i18n.edit }} | ||||
|       </gl-dropdown-item> | ||||
|       <gl-dropdown-item @click="$emit('delete')"> | ||||
|         {{ $options.i18n.delete }} | ||||
|       </gl-dropdown-item> | ||||
|     </gl-dropdown> | ||||
|   </div> | ||||
| </template> | ||||
|  |  | |||
|  | @ -39,7 +39,6 @@ export const stateAndPropsFromDataset = (dataset = {}) => { | |||
|   // HTML attributes are always strings, parse other types.
 | ||||
|   dataProps.hasMetrics = parseBoolean(dataProps.hasMetrics); | ||||
|   dataProps.customMetricsAvailable = parseBoolean(dataProps.customMetricsAvailable); | ||||
|   dataProps.prometheusAlertsAvailable = parseBoolean(dataProps.prometheusAlertsAvailable); | ||||
| 
 | ||||
|   return { | ||||
|     initState: { | ||||
|  |  | |||
|  | @ -1,9 +1,6 @@ | |||
| import groupsSelect from '~/groups_select'; | ||||
| import UserCallout from '~/user_callout'; | ||||
| import UsersSelect from '~/users_select'; | ||||
| 
 | ||||
| // eslint-disable-next-line no-new
 | ||||
| new UsersSelect(); | ||||
| groupsSelect(); | ||||
| 
 | ||||
| // eslint-disable-next-line no-new
 | ||||
|  |  | |||
|  | @ -4,13 +4,10 @@ | |||
|   .main-notes-list::before { | ||||
|     content: none; | ||||
|   } | ||||
| } | ||||
| 
 | ||||
|   .timeline-event-note { | ||||
|     p { | ||||
|       margin-bottom: 0; | ||||
|       font-size: 0.875rem; | ||||
|     } | ||||
|   } | ||||
| .timeline-event { | ||||
|   grid-template-columns: #{$gl-spacing-scale-9} minmax(0, 1fr) #{$gl-spacing-scale-7}; | ||||
| } | ||||
| 
 | ||||
| /** | ||||
|  |  | |||
|  | @ -329,6 +329,8 @@ $tabs-holder-z-index: 250; | |||
|       top: 0; | ||||
|       // !important is required to override inline styles of resizable sidebar | ||||
|       width: 100% !important; | ||||
|       // avoid sticky elements overlap header and other elements | ||||
|       z-index: 1; | ||||
|     } | ||||
| 
 | ||||
|     .tree-list-holder { | ||||
|  |  | |||
|  | @ -18,7 +18,6 @@ class RegistrationsController < Devise::RegistrationsController | |||
|   before_action :ensure_destroy_prerequisites_met, only: [:destroy] | ||||
|   before_action :init_preferred_language, only: :new | ||||
|   before_action :load_recaptcha, only: :new | ||||
|   before_action :set_invite_params, only: :new | ||||
|   before_action only: [:create] do | ||||
|     check_rate_limit!(:user_sign_up, scope: request.ip) | ||||
|   end | ||||
|  | @ -32,6 +31,7 @@ class RegistrationsController < Devise::RegistrationsController | |||
| 
 | ||||
|   def new | ||||
|     @resource = build_resource | ||||
|     set_invite_params | ||||
|   end | ||||
| 
 | ||||
|   def create | ||||
|  | @ -221,7 +221,9 @@ class RegistrationsController < Devise::RegistrationsController | |||
|   end | ||||
| 
 | ||||
|   def set_invite_params | ||||
|     @invite_email = ActionController::Base.helpers.sanitize(params[:invite_email]) | ||||
|     if resource.email.blank? && params[:invite_email].present? | ||||
|       resource.email = @invite_email = ActionController::Base.helpers.sanitize(params[:invite_email]) | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   def after_pending_invitations_hook | ||||
|  |  | |||
|  | @ -14,22 +14,10 @@ module HasUserType | |||
|     migration_bot: 7, | ||||
|     security_bot: 8, | ||||
|     automation_bot: 9, | ||||
|     admin_bot: 11, | ||||
|     suggested_reviewers_bot: 12 | ||||
|     admin_bot: 11 | ||||
|   }.with_indifferent_access.freeze | ||||
| 
 | ||||
|   BOT_USER_TYPES = %w[ | ||||
|     alert_bot | ||||
|     project_bot | ||||
|     support_bot | ||||
|     visual_review_bot | ||||
|     migration_bot | ||||
|     security_bot | ||||
|     automation_bot | ||||
|     admin_bot | ||||
|     suggested_reviewers_bot | ||||
|   ].freeze | ||||
| 
 | ||||
|   BOT_USER_TYPES = %w[alert_bot project_bot support_bot visual_review_bot migration_bot security_bot automation_bot admin_bot].freeze | ||||
|   NON_INTERNAL_USER_TYPES = %w[human project_bot service_user].freeze | ||||
|   INTERNAL_USER_TYPES = (USER_TYPES.keys - NON_INTERNAL_USER_TYPES).freeze | ||||
| 
 | ||||
|  |  | |||
|  | @ -76,7 +76,9 @@ | |||
|     %div | ||||
|       - if @user.new_record? | ||||
|         = f.submit _('Create user'), pajamas_button: true | ||||
|         = link_to _('Cancel'), admin_users_path, class: "gl-button btn btn-default btn-cancel" | ||||
|         = render Pajamas::ButtonComponent.new(href: admin_users_path) do | ||||
|           = _('Cancel') | ||||
|       - else | ||||
|         = f.submit _('Save changes'), pajamas_button: true | ||||
|         = link_to _('Cancel'), admin_user_path(@user), class: "gl-button btn btn-default btn-cancel" | ||||
|         = render Pajamas::ButtonComponent.new(href: admin_user_path(@user)) do | ||||
|           = _('Cancel') | ||||
|  |  | |||
|  | @ -44,7 +44,6 @@ | |||
|     .form-group | ||||
|       = f.label :email, class: "label-bold #{'gl-mb-1' if Feature.enabled?(:restyle_login_page, @project)}" | ||||
|       = f.email_field :email, | ||||
|         value: @invite_email, | ||||
|         class: 'form-control gl-form-input middle js-validate-email', | ||||
|         data: { qa_selector: 'new_user_email_field' }, | ||||
|         required: true, | ||||
|  |  | |||
|  | @ -24,10 +24,12 @@ | |||
|     %p | ||||
|       #{_('Status')}: #{current_user.two_factor_enabled? ? _('Enabled') : _('Disabled')} | ||||
|     - if current_user.two_factor_enabled? | ||||
|       = link_to _('Manage two-factor authentication'), profile_two_factor_auth_path, class: 'gl-button btn btn-confirm' | ||||
|       = render Pajamas::ButtonComponent.new(variant: :confirm, href: profile_two_factor_auth_path) do | ||||
|         = _('Manage two-factor authentication') | ||||
|     - else | ||||
|       .gl-mb-3 | ||||
|         = link_to _('Enable two-factor authentication'), profile_two_factor_auth_path, class: 'gl-button btn btn-confirm', data: { qa_selector: 'enable_2fa_button' } | ||||
|         = render Pajamas::ButtonComponent.new(variant: :confirm, href: profile_two_factor_auth_path, button_options: { data: { qa_selector: 'enable_2fa_button' }}) do | ||||
|           = _('Enable two-factor authentication') | ||||
|   .col-lg-12 | ||||
|     %hr | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,8 +0,0 @@ | |||
| --- | ||||
| name: suggested_reviewers_internal_api | ||||
| introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/105975 | ||||
| rollout_issue_url: | ||||
| milestone: '15.7' | ||||
| type: ops | ||||
| group: group::applied ml | ||||
| default_enabled: true | ||||
|  | @ -1266,11 +1266,6 @@ production: &base | |||
|     # The URL to the Kubernetes API proxy (used by GitLab users) | ||||
|     # external_k8s_proxy_url: https://localhost:8154 # default: nil | ||||
| 
 | ||||
|   gitlab_suggested_reviewers: | ||||
|     # File that contains the secret key for verifying access for gitlab-suggested-reviewers. | ||||
|     # Default is '.gitlab_suggested_reviewers_secret' relative to Rails.root (i.e. root of the GitLab app). | ||||
|     # secret_file: /home/git/gitlab/.gitlab_suggested_reviewers_secret | ||||
| 
 | ||||
|   ## GitLab Elasticsearch settings | ||||
|   elasticsearch: | ||||
|     indexer_path: /home/git/gitlab-elasticsearch-indexer/ | ||||
|  |  | |||
|  | @ -866,12 +866,6 @@ Settings.gitlab_kas['external_url'] ||= 'wss://kas.example.com' | |||
| Settings.gitlab_kas['internal_url'] ||= 'grpc://localhost:8153' | ||||
| # Settings.gitlab_kas['external_k8s_proxy_url'] ||= 'grpc://localhost:8154' # NOTE: Do not set a default until all distributions have been updated with a correct value | ||||
| 
 | ||||
| # | ||||
| # GitLab Suggested Reviewers | ||||
| # | ||||
| Settings['gitlab_suggested_reviewers'] ||= Settingslogic.new({}) | ||||
| Settings.gitlab_suggested_reviewers['secret_file'] ||= Rails.root.join('.gitlab_suggested_reviewers_secret') | ||||
| 
 | ||||
| # | ||||
| # Repositories | ||||
| # | ||||
|  |  | |||
|  | @ -1,5 +0,0 @@ | |||
| # frozen_string_literal: true | ||||
| 
 | ||||
| return unless Gitlab::Runtime.application? && Gitlab.com? && Gitlab.ee? | ||||
| 
 | ||||
| Gitlab::AppliedMl::SuggestedReviewers.ensure_secret! | ||||
|  | @ -84,6 +84,7 @@ backtraces | |||
| backtracing | ||||
| badging | ||||
| balancer | ||||
| balancer's | ||||
| Bamboo | ||||
| Bazel | ||||
| bcrypt | ||||
|  | @ -100,6 +101,7 @@ boolean | |||
| booleans | ||||
| Bootsnap | ||||
| bot | ||||
| bot's | ||||
| Bottlerocket | ||||
| browsable | ||||
| bugfix | ||||
|  | @ -179,6 +181,7 @@ Coinbase | |||
| colocate | ||||
| colocated | ||||
| colocating | ||||
| commit's | ||||
| CommonMark | ||||
| compilable | ||||
| composable | ||||
|  | @ -205,7 +208,7 @@ crosslinking | |||
| crosslinks | ||||
| Crossplane | ||||
| Crowdin | ||||
| Crypto | ||||
| crypto | ||||
| CSSComb | ||||
| CSV | ||||
| CSVs | ||||
|  | @ -586,6 +589,7 @@ nameserver | |||
| nameservers | ||||
| namespace | ||||
| namespaced | ||||
| namespace's | ||||
| namespaces | ||||
| namespacing | ||||
| namespacings | ||||
|  | @ -916,6 +920,7 @@ sublicensed | |||
| sublicenses | ||||
| sublicensing | ||||
| submodule | ||||
| submodule's | ||||
| subnet | ||||
| subnets | ||||
| subnetting | ||||
|  |  | |||
|  | @ -1,11 +0,0 @@ | |||
| --- | ||||
| redirect_to: 'downstream_pipelines.md' | ||||
| remove_date: '2022-11-30' | ||||
| --- | ||||
| 
 | ||||
| This document was moved to [another location](downstream_pipelines.md). | ||||
| 
 | ||||
| <!-- This redirect file can be deleted after <2022-11-30>. --> | ||||
| <!-- Redirects that point to other docs in the same project expire in three months. --> | ||||
| <!-- Redirects that point to docs in a different project or site (link is not relative and starts with `https:`) expire in one year. --> | ||||
| <!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html --> | ||||
|  | @ -1,11 +0,0 @@ | |||
| --- | ||||
| redirect_to: 'downstream_pipelines.md' | ||||
| remove_date: '2022-12-05' | ||||
| --- | ||||
| 
 | ||||
| This document was moved to [another location](downstream_pipelines.md). | ||||
| 
 | ||||
| <!-- This redirect file can be deleted after <2022-12-05>. --> | ||||
| <!-- Redirects that point to other docs in the same project expire in three months. --> | ||||
| <!-- Redirects that point to docs in a different project or site (link is not relative and starts with `https:`) expire in one year. --> | ||||
| <!-- Before deletion, see: https://docs.gitlab.com/ee/development/documentation/redirects.html --> | ||||
|  | @ -288,6 +288,7 @@ module API | |||
|         mount ::API::Unleash | ||||
|         mount ::API::UsageData | ||||
|         mount ::API::UsageDataNonSqlMetrics | ||||
|         mount ::API::UsageDataQueries | ||||
|         mount ::API::UserCounts | ||||
|         mount ::API::Wikis | ||||
| 
 | ||||
|  | @ -332,7 +333,6 @@ module API | |||
|       mount ::API::Todos | ||||
|       mount ::API::UsageData | ||||
|       mount ::API::UsageDataNonSqlMetrics | ||||
|       mount ::API::UsageDataQueries | ||||
|       mount ::API::Users | ||||
|       mount ::API::Ml::Mlflow | ||||
|     end | ||||
|  |  | |||
|  | @ -14,6 +14,12 @@ module API | |||
| 
 | ||||
|       desc 'Get raw SQL queries for usage data SQL metrics' do | ||||
|         detail 'This feature was introduced in GitLab 13.11.' | ||||
|         success code: 200 | ||||
|         failure [ | ||||
|           { code: 401, message: 'Unauthorized' }, | ||||
|           { code: 403, message: 'Forbidden' }, | ||||
|           { code: 404, message: 'Not Found' } | ||||
|         ] | ||||
|       end | ||||
| 
 | ||||
|       get 'queries' do | ||||
|  |  | |||
|  | @ -213,6 +213,7 @@ RSpec.describe 'Group or Project invitations', :aggregate_failures, feature_cate | |||
|             expect { fill_in_sign_up_form(new_user) }.not_to change { User.count } | ||||
|             expect(page).to have_content('prohibited this user from being saved') | ||||
|             expect(page).to have_current_path(user_registration_path, ignore_query: true) | ||||
|             expect(find_field('Email').value).to eq(group_invite.invite_email) | ||||
|           end | ||||
|         end | ||||
| 
 | ||||
|  |  | |||
|  | @ -282,7 +282,7 @@ RSpec.describe 'Signup', feature_category: :users do | |||
|         expect(page).to have_content("Email has already been taken") | ||||
|       end | ||||
| 
 | ||||
|       it 'does not redisplay the password' do | ||||
|       it 'redisplays all fields except password' do | ||||
|         create(:user, email: new_user.email) | ||||
|         visit new_user_registration_path | ||||
| 
 | ||||
|  | @ -291,6 +291,11 @@ RSpec.describe 'Signup', feature_category: :users do | |||
| 
 | ||||
|         expect(page).to have_current_path user_registration_path, ignore_query: true | ||||
|         expect(page.body).not_to match(/#{new_user.password}/) | ||||
| 
 | ||||
|         expect(find_field('First name').value).to eq(new_user.first_name) | ||||
|         expect(find_field('Last name').value).to eq(new_user.last_name) | ||||
|         expect(find_field('Username').value).to eq(new_user.username) | ||||
|         expect(find_field('Email').value).to eq(new_user.email) | ||||
|       end | ||||
|     end | ||||
| 
 | ||||
|  |  | |||
|  | @ -5,8 +5,7 @@ require 'spec_helper' | |||
| RSpec.describe User do | ||||
|   specify 'types consistency checks', :aggregate_failures do | ||||
|     expect(described_class::USER_TYPES.keys) | ||||
|       .to match_array(%w[human ghost alert_bot project_bot support_bot service_user security_bot visual_review_bot | ||||
|                          migration_bot automation_bot admin_bot suggested_reviewers_bot]) | ||||
|       .to match_array(%w[human ghost alert_bot project_bot support_bot service_user security_bot visual_review_bot migration_bot automation_bot admin_bot]) | ||||
|     expect(described_class::USER_TYPES).to include(*described_class::BOT_USER_TYPES) | ||||
|     expect(described_class::USER_TYPES).to include(*described_class::NON_INTERNAL_USER_TYPES) | ||||
|     expect(described_class::USER_TYPES).to include(*described_class::INTERNAL_USER_TYPES) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue