Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
67881c09c8
commit
ce5d2304a9
|
|
@ -60,17 +60,22 @@ export default {
|
|||
{
|
||||
key: 'name',
|
||||
label: s__('CiCatalogComponent|Parameters'),
|
||||
thClass: 'gl-w-2/5',
|
||||
},
|
||||
{
|
||||
key: 'description',
|
||||
label: s__('CiCatalogComponent|Description'),
|
||||
},
|
||||
{
|
||||
key: 'default',
|
||||
label: s__('CiCatalogComponent|Default Value'),
|
||||
thClass: 'gl-w-2/5',
|
||||
label: s__('CiCatalogComponent|Default value'),
|
||||
},
|
||||
{
|
||||
key: 'required',
|
||||
label: s__('CiCatalogComponent|Mandatory'),
|
||||
thClass: 'gl-w-1/5',
|
||||
},
|
||||
{
|
||||
key: 'type',
|
||||
label: s__('CiCatalogComponent|Type'),
|
||||
},
|
||||
],
|
||||
i18n: {
|
||||
|
|
|
|||
|
|
@ -12,8 +12,10 @@ query getCiCatalogResourceComponents($fullPath: ID!) {
|
|||
includePath
|
||||
inputs {
|
||||
name
|
||||
required
|
||||
default
|
||||
description
|
||||
required
|
||||
type
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
<script>
|
||||
import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
|
||||
import glAbilitiesMixin from '~/vue_shared/mixins/gl_abilities_mixin';
|
||||
import DiscussionFilter from './discussion_filter.vue';
|
||||
|
||||
export default {
|
||||
|
|
@ -10,7 +11,7 @@ export default {
|
|||
import('ee_component/notes/components/note_actions/ai_summarize_notes.vue'),
|
||||
MrDiscussionFilter: () => import('./mr_discussion_filter.vue'),
|
||||
},
|
||||
mixins: [glFeatureFlagsMixin()],
|
||||
mixins: [glAbilitiesMixin(), glFeatureFlagsMixin()],
|
||||
inject: {
|
||||
showTimelineViewToggle: {
|
||||
default: false,
|
||||
|
|
@ -38,7 +39,11 @@ export default {
|
|||
},
|
||||
computed: {
|
||||
showAiActions() {
|
||||
return this.resourceGlobalId && this.glFeatures.summarizeComments;
|
||||
return (
|
||||
this.resourceGlobalId &&
|
||||
this.glAbilities.summarizeComments &&
|
||||
this.glFeatures.summarizeComments
|
||||
);
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -14,6 +14,9 @@ class Packages::Conan::Metadatum < ApplicationRecord
|
|||
|
||||
validate :username_channel_none_values
|
||||
|
||||
validates :os, :architecture, :build_type, :compiler, :compiler_libcxx, :compiler_cppstd, length: { maximum: 32 }
|
||||
validates :compiler_version, length: { maximum: 16 }
|
||||
|
||||
def recipe
|
||||
"#{package.name}/#{package.version}@#{package_username}/#{package_channel}"
|
||||
end
|
||||
|
|
|
|||
|
|
@ -97,12 +97,13 @@
|
|||
= render ::Layouts::CrudComponent.new(_('Group members'),
|
||||
icon: 'user',
|
||||
count: @group.users_count) do |c|
|
||||
- c.with_actions do
|
||||
= render 'shared/members/manage_access_button', path: group_group_members_path(@group)
|
||||
- c.with_description do
|
||||
- direct_members_link = link_to('', help_page_path('user/project/members/index', anchor: 'membership-types'))
|
||||
- direct_members_message = s_('The number of direct members in the current group. Members in subgroups are not included. %{link_start}What is a direct member%{link_end}?')
|
||||
- if @group.root?
|
||||
.gl-text-sm.gl-text-secondary.gl-pt-3= safe_format(direct_members_message, tag_pair(direct_members_link, :link_start, :link_end))
|
||||
= safe_format(direct_members_message, tag_pair(direct_members_link, :link_start, :link_end))
|
||||
- c.with_actions do
|
||||
= render 'shared/members/manage_access_button', path: group_group_members_path(@group)
|
||||
- c.with_body do
|
||||
%ul.content-list.group-users-list.members-list
|
||||
= render partial: 'shared/members/member',
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@
|
|||
.commit-detail.flex-list.gl-display-flex.gl-justify-content-space-between.gl-align-items-center.gl-flex-grow-1.gl-min-w-0
|
||||
.commit-content{ data: { testid: 'commit-content' } }
|
||||
- if view_details && merge_request
|
||||
= link_to commit.title, project_commit_path(project, commit.id, merge_request_iid: merge_request.iid), class: ["commit-row-message item-title js-onboarding-commit-item", ("font-italic" if commit.message.empty?)]
|
||||
= link_to commit.title, project_commit_path(project, commit.id, merge_request_iid: merge_request.iid), class: ["commit-row-message item-title js-onboarding-commit-item", ("font-italic" if commit.message.empty?)], data: link_data_attrs
|
||||
- else
|
||||
= link_to_markdown_field(commit, :title, link, class: "commit-row-message item-title js-onboarding-commit-item #{'font-italic' if commit.message.empty?}", data: link_data_attrs)
|
||||
%span.commit-row-message.d-inline.d-sm-none
|
||||
|
|
|
|||
|
|
@ -11,7 +11,8 @@
|
|||
.section
|
||||
- if @scope == 'commits'
|
||||
%ul.content-list.commit-list
|
||||
= render partial: "search/results/commit", collection: @search_objects
|
||||
- @search_objects.each_with_index do |commit, index|
|
||||
= render partial: "search/results/commit", locals: { commit: commit, index: index }
|
||||
- else
|
||||
.search-results.js-search-results
|
||||
- if @scope == 'projects'
|
||||
|
|
@ -24,9 +25,11 @@
|
|||
%th= _('User')
|
||||
%th.text-right= _('Activity')
|
||||
%tbody
|
||||
= render_if_exists partial: "search/results/user", collection: @search_objects
|
||||
- @search_objects.each_with_index do |user, index|
|
||||
= render_if_exists partial: "search/results/user", locals: { user: user, index: index }
|
||||
- else
|
||||
= render_if_exists partial: "search/results/#{@scope.singularize}", collection: @search_objects
|
||||
- @search_objects.each_with_index do |result, index|
|
||||
= render_if_exists partial: "search/results/#{@scope.singularize}", locals: { result: result, index: index }
|
||||
|
||||
- if @scope != 'projects'
|
||||
= paginate_collection(@search_objects)
|
||||
|
|
|
|||
|
|
@ -1,8 +1,11 @@
|
|||
- blob = local_assigns.fetch(:result, nil)
|
||||
- project = blob.project
|
||||
- return unless project
|
||||
- project_repository_ref = repository_ref(project) || ''
|
||||
- blob_path = blob.path || ''
|
||||
- blob_link = project_blob_path(project, tree_join(project_repository_ref, blob_path))
|
||||
- blame_link = project_blame_path(project, tree_join(project_repository_ref, blob_path))
|
||||
- index = local_assigns.fetch(:index, nil)
|
||||
- position = index + 1
|
||||
|
||||
= render partial: 'search/results/blob_data', locals: { blob: blob, project: project, path: blob_path, blob_link: blob_link, blame_link: blame_link }
|
||||
= render partial: 'search/results/blob_data', locals: { blob: blob, project: project, path: blob_path, blob_link: blob_link, blame_link: blame_link, position: position }
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
.js-blob-result.gl-mt-3.gl-mb-5{ data: { testid: 'result-item-content' } }
|
||||
.file-holder.file-holder-top-border
|
||||
.js-file-title.file-title{ data: { testid: 'file-title-content' } }
|
||||
= link_to blob_link, data: {track_action: 'click_text', track_label: 'blob_path', track_property: 'search_result'} do
|
||||
= link_to blob_link, data: { event_tracking: 'click_search_result', event_label: @scope, event_value: position, event_property: @search_term } do
|
||||
= sprite_icon('document')
|
||||
%strong
|
||||
= search_blob_title(project, path)
|
||||
|
|
|
|||
|
|
@ -1 +1,4 @@
|
|||
= render 'projects/commits/commit', project: commit.project, commit: commit, ref: nil, show_project_name: @project.nil?, link_data_attrs: {track_action: 'click_text', track_label: 'commit_title', track_property: 'search_result'}
|
||||
- index = local_assigns.fetch(:index, nil)
|
||||
- position = index + 1
|
||||
|
||||
= render 'projects/commits/commit', project: commit.project, commit: commit, ref: nil, show_project_name: @project.nil?, link_data_attrs: { event_tracking: 'click_search_result', event_label: @scope, event_value: position, event_property: @search_term }
|
||||
|
|
|
|||
|
|
@ -1,9 +1,11 @@
|
|||
- position = local_assigns.fetch(:position, nil)
|
||||
|
||||
.search-result-row.row.gl-display-flex.gl-sm-flex-direction-row.gl-flex-direction-column.gl-mt-5{ class: 'gl-pb-5! gl-mb-0!' }
|
||||
.col-sm-9
|
||||
%span.gl-display-flex.gl-align-items-center
|
||||
= gl_badge_tag issuable_state_text(issuable), variant: issuable_state_to_badge_class(issuable), size: :sm
|
||||
= sprite_icon('eye-slash', css_class: 'gl-text-secondary gl-ml-2') if issuable.respond_to?(:confidential?) && issuable.confidential?
|
||||
= link_to issuable_path(issuable), data: { track_action: 'click_text', track_label: "#{issuable.class.name.downcase}_title", track_property: 'search_result' }, class: 'gl-w-full' do
|
||||
= link_to issuable_path(issuable), data: { event_tracking: 'click_search_result', event_label: @scope, event_value: position, event_property: @search_term }, class: 'gl-w-full' do
|
||||
%span.term.str-truncated.gl-font-bold.gl-ml-2= simple_search_highlight_and_truncate(issuable.title, @search_term)
|
||||
.gl-text-secondary.gl-mb-3.gl-mt-2.gl-font-sm
|
||||
= issuable_project_reference(issuable)
|
||||
|
|
|
|||
|
|
@ -1 +1,5 @@
|
|||
= render partial: 'search/results/issuable', object: issue
|
||||
- index = local_assigns.fetch(:index, nil)
|
||||
- issue = local_assigns.fetch(:result, nil)
|
||||
- position = index + 1
|
||||
|
||||
= render partial: 'search/results/issuable', object: issue, locals: { position: position }
|
||||
|
|
|
|||
|
|
@ -1 +1,5 @@
|
|||
= render partial: 'search/results/issuable', object: merge_request
|
||||
- index = local_assigns.fetch(:index, nil)
|
||||
- merge_request = local_assigns.fetch(:result, nil)
|
||||
- position = index + 1
|
||||
|
||||
= render partial: 'search/results/issuable', object: merge_request, locals: { position: position }
|
||||
|
|
|
|||
|
|
@ -1,5 +1,9 @@
|
|||
- index = local_assigns.fetch(:index, nil)
|
||||
- milestone = local_assigns.fetch(:result, nil)
|
||||
- position = index + 1
|
||||
|
||||
.search-result-row
|
||||
= link_to project_milestone_path(milestone.project, milestone), class: 'gl-font-bold gl-text-black-normal', data: {track_action: 'click_text', track_label: 'milestone_title', track_property: 'search_result'} do
|
||||
= link_to project_milestone_path(milestone.project, milestone), class: 'gl-font-bold gl-text-black-normal', data: { event_tracking: 'click_search_result', event_label: @scope, event_value: position, event_property: @search_term } do
|
||||
%span.term.str-truncated= simple_search_highlight_and_truncate(milestone.title, @search_term)
|
||||
|
||||
- if milestone.project_milestone?
|
||||
|
|
|
|||
|
|
@ -1,3 +1,6 @@
|
|||
- index = local_assigns.fetch(:index, nil)
|
||||
- note = local_assigns.fetch(:result, nil)
|
||||
- position = index + 1
|
||||
- project = note.project
|
||||
- note_url = Gitlab::UrlBuilder.build(note)
|
||||
- noteable_identifier = note.noteable.try(:iid) || note.noteable.try(:id)
|
||||
|
|
@ -19,7 +22,7 @@
|
|||
- else
|
||||
%span #{note.noteable_type.titleize} ##{noteable_identifier}
|
||||
·
|
||||
= link_to note.noteable.title, note_url, data: {track_action: 'click_text', track_label: 'noteable_title', track_property: 'search_result'}
|
||||
= link_to note.noteable.title, note_url, data: { event_tracking: 'click_search_result', event_label: @scope, event_value: position, event_property: @search_term }
|
||||
|
||||
.note-search-result
|
||||
.term
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
- index = local_assigns.fetch(:index, nil)
|
||||
- snippet_title = local_assigns.fetch(:result, nil)
|
||||
- position = index + 1
|
||||
|
||||
.search-result-row
|
||||
%h4
|
||||
= link_to gitlab_snippet_path(snippet_title) do
|
||||
= link_to gitlab_snippet_path(snippet_title), data: { event_tracking: 'click_search_result', event_label: @scope, event_value: position, event_property: @search_term } do
|
||||
= truncate(snippet_title.title, length: 60)
|
||||
= snippet_badge(snippet_title)
|
||||
%span.cgray.monospace.tiny.gl-float-right.term
|
||||
|
|
|
|||
|
|
@ -1,10 +1,13 @@
|
|||
- index = local_assigns.fetch(:index, nil)
|
||||
- position = index + 1
|
||||
|
||||
%tr
|
||||
%td{ data: { label: _('User') } }
|
||||
%div
|
||||
%div{ class: '!gl-inline-flex' }
|
||||
= render Pajamas::AvatarComponent.new(user, size: 32, alt: '')
|
||||
.gl-ml-3{ class: 'gl-text-left!' }
|
||||
= link_to user_path(user), class: 'gl-text-body' do
|
||||
= link_to user_path(user), class: 'gl-text-body', data: { event_tracking: 'click_search_result', event_label: @scope, event_value: position, event_property: @search_term } do
|
||||
.gl-display-inline-block.gl-font-bold= simple_search_highlight_and_truncate(user.name, @search_term)
|
||||
= user_status(user)
|
||||
%div{ class: 'gl-text-left!' }= simple_search_highlight_and_truncate(user.to_reference, @search_term)
|
||||
|
|
|
|||
|
|
@ -1,6 +1,10 @@
|
|||
- index = local_assigns.fetch(:index, nil)
|
||||
- wiki_blob = local_assigns.fetch(:result, nil)
|
||||
- position = index + 1
|
||||
|
||||
%div{ class: 'search-result-row gl-pb-3! gl-mt-5 gl-mb-0!' }
|
||||
%span.gl-display-flex.gl-align-items-center
|
||||
= link_to wiki_blob_link(wiki_blob), data: { track_action: 'click_text', track_label: "wiki_title", track_property: 'search_result' }, class: 'gl-w-full' do
|
||||
= link_to wiki_blob_link(wiki_blob), data: { event_tracking: 'click_search_result', event_label: @scope, event_value: position, event_property: @search_term }, class: 'gl-w-full' do
|
||||
%span.term.str-truncated.gl-font-bold= ::Wiki.canonicalize_filename(wiki_blob.path)
|
||||
.description.term.col-sm-10.gl-px-0
|
||||
= simple_search_highlight_and_truncate(wiki_blob.data, @search_term)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,25 @@
|
|||
---
|
||||
description: Which results are clicked on Global Search page
|
||||
internal_events: true
|
||||
action: click_search_result
|
||||
identifiers:
|
||||
- project
|
||||
- namespace
|
||||
- user
|
||||
additional_properties:
|
||||
label:
|
||||
description: search result scope
|
||||
value:
|
||||
description: result position
|
||||
property:
|
||||
description: search term
|
||||
product_group: global_search
|
||||
milestone: '17.2'
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156499
|
||||
distributions:
|
||||
- ce
|
||||
- ee
|
||||
tiers:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
name: summarize_notes_with_duo
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156650
|
||||
rollout_issue_url:
|
||||
milestone: '17.2'
|
||||
type: development
|
||||
group: group::project management
|
||||
default_enabled: false
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
key_path: redis_hll_counters.count_distinct_user_id_from_click_search_result_monthly
|
||||
description: Monthly count of unique users who clicked result on position 1
|
||||
product_group: global_search
|
||||
performance_indicator_type: []
|
||||
value_type: number
|
||||
status: active
|
||||
milestone: '17.2'
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156499
|
||||
time_frame: 28d
|
||||
data_source: internal_events
|
||||
data_category: optional
|
||||
distribution:
|
||||
- ce
|
||||
- ee
|
||||
tier:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
||||
events:
|
||||
- name: click_search_result
|
||||
unique: user.id
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
key_path: redis_hll_counters.count_distinct_user_id_from_click_search_result_weekly
|
||||
description: Weekly count of unique users who clicked result on position 1
|
||||
product_group: global_search
|
||||
performance_indicator_type: []
|
||||
value_type: number
|
||||
status: active
|
||||
milestone: '17.2'
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/156499
|
||||
time_frame: 7d
|
||||
data_source: internal_events
|
||||
data_category: optional
|
||||
distribution:
|
||||
- ce
|
||||
- ee
|
||||
tier:
|
||||
- free
|
||||
- premium
|
||||
- ultimate
|
||||
events:
|
||||
- name: click_search_result
|
||||
unique: user.id
|
||||
|
|
@ -10,5 +10,4 @@ milestone: '11.5'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
allow_cross_foreign_keys:
|
||||
- gitlab_main_clusterwide
|
||||
sharding_key:
|
||||
group_id: namespaces
|
||||
exempt_from_sharding: true # Table is scheduled for removal
|
||||
|
|
|
|||
|
|
@ -10,5 +10,4 @@ milestone: '10.2'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
allow_cross_foreign_keys:
|
||||
- gitlab_main_clusterwide
|
||||
sharding_key:
|
||||
project_id: projects
|
||||
exempt_from_sharding: true # Table is scheduled for removal
|
||||
|
|
@ -4,8 +4,8 @@ classes:
|
|||
- Clusters::Integrations::Prometheus
|
||||
feature_categories:
|
||||
- incident_management
|
||||
description: Persists information about prometheus cluster integration
|
||||
description: (Deprecated) Persists information about prometheus cluster integration
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/59091
|
||||
milestone: '13.11'
|
||||
gitlab_schema: gitlab_main
|
||||
sharding_key_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/465723
|
||||
exempt_from_sharding: true # Table is scheduled for removal
|
||||
|
|
|
|||
|
|
@ -10,12 +10,4 @@ milestone: '12.8'
|
|||
gitlab_schema: gitlab_main_cell
|
||||
allow_cross_foreign_keys:
|
||||
- gitlab_main_clusterwide
|
||||
desired_sharding_key:
|
||||
project_id:
|
||||
references: projects
|
||||
backfill_via:
|
||||
parent:
|
||||
foreign_key: deployment_id
|
||||
table: deployments
|
||||
sharding_key: project_id
|
||||
belongs_to: deployment
|
||||
exempt_from_sharding: true # Table is scheduled for removal
|
||||
|
|
|
|||
|
|
@ -8,4 +8,4 @@ description: TODO
|
|||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/27583
|
||||
milestone: '13.0'
|
||||
gitlab_schema: gitlab_main
|
||||
sharding_key_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/464344
|
||||
exempt_from_sharding: true # Table is scheduled for removal
|
||||
|
|
|
|||
|
|
@ -0,0 +1,41 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# See https://docs.gitlab.com/ee/development/migration_style_guide.html
|
||||
# for more information on how to write migrations for GitLab.
|
||||
|
||||
class AddExtraMetadataToPackagesConanMetadata < Gitlab::Database::Migration[2.2]
|
||||
disable_ddl_transaction!
|
||||
milestone '17.2'
|
||||
|
||||
def up
|
||||
with_lock_retries do
|
||||
add_column :packages_conan_metadata, :os, :text, if_not_exists: true
|
||||
add_column :packages_conan_metadata, :architecture, :text, if_not_exists: true
|
||||
add_column :packages_conan_metadata, :build_type, :text, if_not_exists: true
|
||||
add_column :packages_conan_metadata, :compiler, :text, if_not_exists: true
|
||||
add_column :packages_conan_metadata, :compiler_version, :text, if_not_exists: true
|
||||
add_column :packages_conan_metadata, :compiler_libcxx, :text, if_not_exists: true
|
||||
add_column :packages_conan_metadata, :compiler_cppstd, :text, if_not_exists: true
|
||||
end
|
||||
|
||||
add_text_limit :packages_conan_metadata, :os, 32
|
||||
add_text_limit :packages_conan_metadata, :architecture, 32
|
||||
add_text_limit :packages_conan_metadata, :build_type, 32
|
||||
add_text_limit :packages_conan_metadata, :compiler, 32
|
||||
add_text_limit :packages_conan_metadata, :compiler_version, 16
|
||||
add_text_limit :packages_conan_metadata, :compiler_libcxx, 32
|
||||
add_text_limit :packages_conan_metadata, :compiler_cppstd, 32
|
||||
end
|
||||
|
||||
def down
|
||||
with_lock_retries do
|
||||
remove_column :packages_conan_metadata, :os, if_exists: true
|
||||
remove_column :packages_conan_metadata, :architecture, if_exists: true
|
||||
remove_column :packages_conan_metadata, :build_type, if_exists: true
|
||||
remove_column :packages_conan_metadata, :compiler, if_exists: true
|
||||
remove_column :packages_conan_metadata, :compiler_version, if_exists: true
|
||||
remove_column :packages_conan_metadata, :compiler_libcxx, if_exists: true
|
||||
remove_column :packages_conan_metadata, :compiler_cppstd, if_exists: true
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1 @@
|
|||
bd8b523a2dc23b6d9950d634ea339b3f545bd1f9f3d70ec5ec9393bc35abe92c
|
||||
|
|
@ -14015,7 +14015,21 @@ CREATE TABLE packages_conan_metadata (
|
|||
updated_at timestamp with time zone NOT NULL,
|
||||
package_username character varying(255) NOT NULL,
|
||||
package_channel character varying(255) NOT NULL,
|
||||
project_id bigint
|
||||
project_id bigint,
|
||||
os text,
|
||||
architecture text,
|
||||
build_type text,
|
||||
compiler text,
|
||||
compiler_version text,
|
||||
compiler_libcxx text,
|
||||
compiler_cppstd text,
|
||||
CONSTRAINT check_15f3356ff2 CHECK ((char_length(architecture) <= 32)),
|
||||
CONSTRAINT check_3dc474bc51 CHECK ((char_length(compiler_version) <= 16)),
|
||||
CONSTRAINT check_52abd85dde CHECK ((char_length(compiler_libcxx) <= 32)),
|
||||
CONSTRAINT check_535bd0bf5b CHECK ((char_length(os) <= 32)),
|
||||
CONSTRAINT check_a0b998cb1b CHECK ((char_length(build_type) <= 32)),
|
||||
CONSTRAINT check_e57d0def27 CHECK ((char_length(compiler_cppstd) <= 32)),
|
||||
CONSTRAINT check_e7f03884b8 CHECK ((char_length(compiler) <= 32))
|
||||
);
|
||||
|
||||
CREATE SEQUENCE packages_conan_metadata_id_seq
|
||||
|
|
|
|||
|
|
@ -159,28 +159,6 @@ This field returns a [connection](#connections). It accepts the
|
|||
four standard [pagination arguments](#pagination-arguments):
|
||||
`before: String`, `after: String`, `first: Int`, and `last: Int`.
|
||||
|
||||
### `Query.blobSearch`
|
||||
|
||||
Find code visible to the current user.
|
||||
|
||||
DETAILS:
|
||||
**Introduced** in GitLab 17.2.
|
||||
**Status**: Experiment.
|
||||
|
||||
Returns [`BlobSearch`](#blobsearch).
|
||||
|
||||
#### Arguments
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="queryblobsearchchunkcount"></a>`chunkCount` **{warning-solid}** | [`Int`](#int) | **Introduced** in GitLab 17.2. **Status**: Experiment. Maximum chunks per file. |
|
||||
| <a id="queryblobsearchgroupid"></a>`groupId` **{warning-solid}** | [`GroupID`](#groupid) | **Introduced** in GitLab 17.2. **Status**: Experiment. Group to search in. |
|
||||
| <a id="queryblobsearchpage"></a>`page` **{warning-solid}** | [`Int`](#int) | **Introduced** in GitLab 17.2. **Status**: Experiment. Page number to fetch the results. |
|
||||
| <a id="queryblobsearchperpage"></a>`perPage` **{warning-solid}** | [`Int`](#int) | **Introduced** in GitLab 17.2. **Status**: Experiment. Number of results per page. |
|
||||
| <a id="queryblobsearchprojectid"></a>`projectId` **{warning-solid}** | [`ProjectID`](#projectid) | **Introduced** in GitLab 17.2. **Status**: Experiment. Project to search in. |
|
||||
| <a id="queryblobsearchrepositoryref"></a>`repositoryRef` **{warning-solid}** | [`String`](#string) | **Introduced** in GitLab 17.2. **Status**: Experiment. Repository reference to search in. |
|
||||
| <a id="queryblobsearchsearch"></a>`search` | [`String!`](#string) | Searched term. |
|
||||
|
||||
### `Query.boardList`
|
||||
|
||||
Find an issue board list.
|
||||
|
|
@ -17519,21 +17497,6 @@ An emoji awarded by a user.
|
|||
| <a id="blobwebpath"></a>`webPath` | [`String`](#string) | Web path of the blob. |
|
||||
| <a id="blobweburl"></a>`webUrl` | [`String`](#string) | Web URL of the blob. |
|
||||
|
||||
### `BlobSearch`
|
||||
|
||||
Full JSON structure of multi-match results in a single file.
|
||||
|
||||
#### Fields
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="blobsearchfilecount"></a>`fileCount` **{warning-solid}** | [`Int`](#int) | **Introduced** in GitLab 17.2. **Status**: Experiment. Total number of files with matches. |
|
||||
| <a id="blobsearchfiles"></a>`files` **{warning-solid}** | [`[SearchBlobFileType!]`](#searchblobfiletype) | **Introduced** in GitLab 17.2. **Status**: Experiment. List of files with matches. |
|
||||
| <a id="blobsearchmatchcount"></a>`matchCount` **{warning-solid}** | [`Int`](#int) | **Introduced** in GitLab 17.2. **Status**: Experiment. Total number of matches. |
|
||||
| <a id="blobsearchperpage"></a>`perPage` **{warning-solid}** | [`Int`](#int) | **Introduced** in GitLab 17.2. **Status**: Experiment. Total number of files per page. |
|
||||
| <a id="blobsearchsearchlevel"></a>`searchLevel` **{warning-solid}** | [`SearchLevel`](#searchlevel) | **Introduced** in GitLab 17.2. **Status**: Experiment. Level of search performed. |
|
||||
| <a id="blobsearchsearchtype"></a>`searchType` **{warning-solid}** | [`SearchType`](#searchtype) | **Introduced** in GitLab 17.2. **Status**: Experiment. Type of search performed. |
|
||||
|
||||
### `BlobViewer`
|
||||
|
||||
Represents how the blob content should be displayed.
|
||||
|
|
@ -30857,45 +30820,6 @@ Represents a resource scanned by a security scan.
|
|||
| <a id="scannedresourcerequestmethod"></a>`requestMethod` | [`String`](#string) | HTTP request method used to access the URL. |
|
||||
| <a id="scannedresourceurl"></a>`url` | [`String`](#string) | URL scanned by the scanner. |
|
||||
|
||||
### `SearchBlobChunk`
|
||||
|
||||
JSON structure of a matched chunk.
|
||||
|
||||
#### Fields
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="searchblobchunklines"></a>`lines` **{warning-solid}** | [`[SearchBlobLine!]`](#searchblobline) | **Introduced** in GitLab 17.2. **Status**: Experiment. Path of the file. |
|
||||
| <a id="searchblobchunkmatchcountinchunk"></a>`matchCountInChunk` **{warning-solid}** | [`Int`](#int) | **Introduced** in GitLab 17.2. **Status**: Experiment. Number of matches in the chunk. |
|
||||
|
||||
### `SearchBlobFileType`
|
||||
|
||||
JSON structure of a file with matches.
|
||||
|
||||
#### Fields
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="searchblobfiletypeblameurl"></a>`blameUrl` **{warning-solid}** | [`String`](#string) | **Introduced** in GitLab 17.2. **Status**: Experiment. Blame URL of the file. |
|
||||
| <a id="searchblobfiletypechunks"></a>`chunks` **{warning-solid}** | [`[SearchBlobChunk!]`](#searchblobchunk) | **Introduced** in GitLab 17.2. **Status**: Experiment. Maximum matches per file. |
|
||||
| <a id="searchblobfiletypefileurl"></a>`fileUrl` **{warning-solid}** | [`String`](#string) | **Introduced** in GitLab 17.2. **Status**: Experiment. URL of the file. |
|
||||
| <a id="searchblobfiletypematchcount"></a>`matchCount` **{warning-solid}** | [`Int`](#int) | **Introduced** in GitLab 17.2. **Status**: Experiment. Matches per file in maximum 50 chunks. |
|
||||
| <a id="searchblobfiletypematchcounttotal"></a>`matchCountTotal` **{warning-solid}** | [`Int`](#int) | **Introduced** in GitLab 17.2. **Status**: Experiment. Total number of matches per file. |
|
||||
| <a id="searchblobfiletypepath"></a>`path` **{warning-solid}** | [`String`](#string) | **Introduced** in GitLab 17.2. **Status**: Experiment. Path of the file. |
|
||||
| <a id="searchblobfiletypeprojectpath"></a>`projectPath` **{warning-solid}** | [`String`](#string) | **Introduced** in GitLab 17.2. **Status**: Experiment. Full path of the project. |
|
||||
|
||||
### `SearchBlobLine`
|
||||
|
||||
JSON structure of each line in a matched chunk.
|
||||
|
||||
#### Fields
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="searchbloblinelinenumber"></a>`lineNumber` **{warning-solid}** | [`Int`](#int) | **Introduced** in GitLab 17.2. **Status**: Experiment. Line number of the blob. |
|
||||
| <a id="searchbloblinerichtext"></a>`richText` **{warning-solid}** | [`String`](#string) | **Introduced** in GitLab 17.2. **Status**: Experiment. Rich text of the blob. |
|
||||
| <a id="searchbloblinetext"></a>`text` **{warning-solid}** | [`String`](#string) | **Introduced** in GitLab 17.2. **Status**: Experiment. Text content of the blob. |
|
||||
|
||||
### `SecurityPolicyValidationError`
|
||||
|
||||
Security policy validation error.
|
||||
|
|
@ -36017,26 +35941,6 @@ The status of the security scan.
|
|||
| <a id="scanstatusreport_error"></a>`REPORT_ERROR` | The report artifact provided by the CI build couldn't be parsed. |
|
||||
| <a id="scanstatussucceeded"></a>`SUCCEEDED` | The report has been successfully prepared. |
|
||||
|
||||
### `SearchLevel`
|
||||
|
||||
Level of search.
|
||||
|
||||
| Value | Description |
|
||||
| ----- | ----------- |
|
||||
| <a id="searchlevelglobal"></a>`GLOBAL` | Global search including all groups and projects. |
|
||||
| <a id="searchlevelgroup"></a>`GROUP` | Group search. |
|
||||
| <a id="searchlevelproject"></a>`PROJECT` | Project search. |
|
||||
|
||||
### `SearchType`
|
||||
|
||||
Type of search.
|
||||
|
||||
| Value | Description |
|
||||
| ----- | ----------- |
|
||||
| <a id="searchtypeadvanced"></a>`ADVANCED` | Advanced search. |
|
||||
| <a id="searchtypebasic"></a>`BASIC` | Basic search. |
|
||||
| <a id="searchtypezoekt"></a>`ZOEKT` | Exact code search. |
|
||||
|
||||
### `SecurityPolicyRelationType`
|
||||
|
||||
| Value | Description |
|
||||
|
|
|
|||
|
|
@ -4320,6 +4320,8 @@ In this example:
|
|||
|
||||
**Additional details**:
|
||||
|
||||
- In some cases you cannot use `/` or `./` in a CI/CD variable with `exists`.
|
||||
See [issue 386595](https://gitlab.com/gitlab-org/gitlab/-/issues/386595) for more details.
|
||||
- Glob patterns are interpreted with Ruby's [`File.fnmatch`](https://docs.ruby-lang.org/en/master/File.html#method-c-fnmatch)
|
||||
with the [flags](https://docs.ruby-lang.org/en/master/File/Constants.html#module-File::Constants-label-Filename+Globbing+Constants+-28File-3A-3AFNM_-2A-29)
|
||||
`File::FNM_PATHNAME | File::FNM_DOTMATCH | File::FNM_EXTGLOB`.
|
||||
|
|
@ -4376,6 +4378,11 @@ docker-build-2:
|
|||
|
||||
In this example, both jobs have the same behavior.
|
||||
|
||||
**Additional details**:
|
||||
|
||||
- In some cases you cannot use `/` or `./` in a CI/CD variable with `exists`.
|
||||
See [issue 386595](https://gitlab.com/gitlab-org/gitlab/-/issues/386595) for more details.
|
||||
|
||||
##### `rules:exists:project`
|
||||
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/386040) in GitLab 16.11 [with a flag](../../administration/feature_flags.md) named `ci_support_rules_exists_paths_and_project`. Disabled by default.
|
||||
|
|
|
|||
|
|
@ -433,16 +433,11 @@ policies from running.
|
|||
## Experimental features
|
||||
|
||||
DETAILS:
|
||||
**Status:** Experiment
|
||||
**Status:** Experiment has ended
|
||||
|
||||
These experimental features have limitations:
|
||||
This experiment has concluded and will not continue. After receiving feedback within this experiment, we will be focusing our efforts on a new policy type for enforcement of custom CI. The experiment will be removed in 17.3.
|
||||
|
||||
1. Enforcing pipeline execution using the pipeline execution action in projects
|
||||
without a `.gitlab-ci.yml` is not supported.
|
||||
1. The pipeline execution action cannot be used with a scheduled trigger type.
|
||||
|
||||
Have feedback on our experimental features? We'd love to hear it! Please share your thoughts in our
|
||||
[feedback issue](https://gitlab.com/gitlab-org/gitlab/-/issues/434425).
|
||||
Learn more about the [pipeline execution policy](pipeline_execution_policies.md).
|
||||
|
||||
### Pipeline execution policy action
|
||||
|
||||
|
|
|
|||
|
|
@ -11126,7 +11126,10 @@ msgstr ""
|
|||
msgid "CiCatalogComponent|Component details not available"
|
||||
msgstr ""
|
||||
|
||||
msgid "CiCatalogComponent|Default Value"
|
||||
msgid "CiCatalogComponent|Default value"
|
||||
msgstr ""
|
||||
|
||||
msgid "CiCatalogComponent|Description"
|
||||
msgstr ""
|
||||
|
||||
msgid "CiCatalogComponent|Inputs"
|
||||
|
|
@ -11144,6 +11147,9 @@ msgstr ""
|
|||
msgid "CiCatalogComponent|This tab displays auto-collected information about the components in the repository, but no information was found."
|
||||
msgstr ""
|
||||
|
||||
msgid "CiCatalogComponent|Type"
|
||||
msgstr ""
|
||||
|
||||
msgid "CiCatalog|All"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -54593,6 +54599,9 @@ msgstr ""
|
|||
msgid "This repository was last checked %{last_check_timestamp}. The check passed."
|
||||
msgstr ""
|
||||
|
||||
msgid "This resource has no comments to summarize"
|
||||
msgstr ""
|
||||
|
||||
msgid "This runner will only run on pipelines triggered on protected branches"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -21,8 +21,9 @@ module RuboCop
|
|||
# These namespaces are considered acceptable.
|
||||
# Note: Nested namespace like Foo::Bar are also supported.
|
||||
PERMITTED_NAMESPACES = %w[
|
||||
Search EE::Search API::Search EE::API::Search API::Admin::Search RuboCop::Cop::Search Types Resolvers
|
||||
API::Entities::Search::Zoekt API::Internal::Search::Zoekt
|
||||
Search EE::Search API::Search EE::API::Search API::Admin::Search RuboCop::Cop::Search
|
||||
API::Entities::Search::Zoekt
|
||||
API::Internal::Search::Zoekt
|
||||
Keeps
|
||||
].map { |x| x.split('::') }.freeze
|
||||
|
||||
|
|
|
|||
|
|
@ -136,7 +136,9 @@ describe('CiResourceComponents', () => {
|
|||
firstComponent.inputs.forEach((input) => {
|
||||
expect(findComponents().at(0).text()).toContain(input.name);
|
||||
expect(findComponents().at(0).text()).toContain(input.default);
|
||||
expect(findComponents().at(0).text()).toContain(input.description);
|
||||
expect(findComponents().at(0).text()).toContain('Yes');
|
||||
expect(findComponents().at(0).text()).toContain(input.type);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -6,7 +6,15 @@ const componentsDetailsMockData = {
|
|||
name: 'Ruby gal',
|
||||
description: 'This is a pretty amazing component that does EVERYTHING ruby.',
|
||||
includePath: 'gitlab.com/gitlab-org/ruby-gal@~latest',
|
||||
inputs: [{ name: 'version', default: '1.0.0', required: true }],
|
||||
inputs: [
|
||||
{
|
||||
name: 'version',
|
||||
default: '1.0.0',
|
||||
description: 'here is a test description',
|
||||
required: true,
|
||||
type: 'STRING',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
id: 'gid://gitlab/Ci::Component/2',
|
||||
|
|
@ -14,8 +22,27 @@ const componentsDetailsMockData = {
|
|||
description: 'Adds some spice to your life.',
|
||||
includePath: 'gitlab.com/gitlab-org/javascript-madness@~latest',
|
||||
inputs: [
|
||||
{ name: 'isFun', default: 'true', required: true },
|
||||
{ name: 'RandomNumber', default: '10', required: false },
|
||||
{
|
||||
name: 'isFun',
|
||||
default: 'true',
|
||||
description: 'this is a boolean',
|
||||
required: true,
|
||||
type: 'BOOLEAN',
|
||||
},
|
||||
{
|
||||
name: 'RandomNumber',
|
||||
default: '10',
|
||||
description: 'a number',
|
||||
required: false,
|
||||
type: 'NUMBER',
|
||||
},
|
||||
{
|
||||
name: 'RandomNumber',
|
||||
default: '10',
|
||||
description: 'another number',
|
||||
required: false,
|
||||
type: 'NUMBER',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
|
|
@ -23,7 +50,15 @@ const componentsDetailsMockData = {
|
|||
name: 'Go go go',
|
||||
description: 'When you write Go, you gotta go go go.',
|
||||
includePath: 'gitlab.com/gitlab-org/go-go-go@~latest',
|
||||
inputs: [{ name: 'version', default: '1.0.0', required: true }],
|
||||
inputs: [
|
||||
{
|
||||
name: 'version',
|
||||
default: '1.0.0',
|
||||
description: 'a version',
|
||||
required: true,
|
||||
type: 'STRING',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
};
|
||||
|
|
|
|||
|
|
@ -11,6 +11,8 @@ RSpec.describe Packages::Conan::Metadatum, type: :model, feature_category: :pack
|
|||
|
||||
describe 'validations' do
|
||||
let(:fifty_one_characters) { 'f_a' * 17 }
|
||||
let(:thirty_three_characters) { 'a' * 33 }
|
||||
let(:seventeen_characters) { 'a' * 17 }
|
||||
|
||||
it { is_expected.to validate_presence_of(:package) }
|
||||
it { is_expected.to validate_presence_of(:package_username) }
|
||||
|
|
@ -47,6 +49,41 @@ RSpec.describe Packages::Conan::Metadatum, type: :model, feature_category: :pack
|
|||
it { is_expected.not_to allow_value("my@channel").for(:package_channel) }
|
||||
end
|
||||
|
||||
describe '#architecture' do
|
||||
it { is_expected.to validate_length_of(:architecture).is_at_most(32) }
|
||||
it { is_expected.not_to allow_value(thirty_three_characters).for(:architecture) }
|
||||
end
|
||||
|
||||
describe '#os' do
|
||||
it { is_expected.to validate_length_of(:os).is_at_most(32) }
|
||||
it { is_expected.not_to allow_value(thirty_three_characters).for(:os) }
|
||||
end
|
||||
|
||||
describe '#build_type' do
|
||||
it { is_expected.to validate_length_of(:build_type).is_at_most(32) }
|
||||
it { is_expected.not_to allow_value(thirty_three_characters).for(:build_type) }
|
||||
end
|
||||
|
||||
describe '#compiler' do
|
||||
it { is_expected.to validate_length_of(:compiler).is_at_most(32) }
|
||||
it { is_expected.not_to allow_value(thirty_three_characters).for(:compiler) }
|
||||
end
|
||||
|
||||
describe '#compiler_libcxx' do
|
||||
it { is_expected.to validate_length_of(:compiler_libcxx).is_at_most(32) }
|
||||
it { is_expected.not_to allow_value(thirty_three_characters).for(:compiler_libcxx) }
|
||||
end
|
||||
|
||||
describe '#compiler_cppstd' do
|
||||
it { is_expected.to validate_length_of(:compiler_cppstd).is_at_most(32) }
|
||||
it { is_expected.not_to allow_value(thirty_three_characters).for(:compiler_cppstd) }
|
||||
end
|
||||
|
||||
describe '#compiler_version' do
|
||||
it { is_expected.to validate_length_of(:compiler_version).is_at_most(16) }
|
||||
it { is_expected.not_to allow_value(seventeen_characters).for(:compiler_version) }
|
||||
end
|
||||
|
||||
describe '#username_channel_none_values' do
|
||||
let_it_be(:package) { create(:conan_package) }
|
||||
|
||||
|
|
|
|||
|
|
@ -85,8 +85,8 @@ RSpec.describe 'search/_results', feature_category: :global_search do
|
|||
it 'renders the click text event tracking attributes' do
|
||||
render
|
||||
|
||||
expect(rendered).to have_selector('[data-track-action=click_text]')
|
||||
expect(rendered).to have_selector('[data-track-property=search_result]')
|
||||
expect(rendered).to have_selector('[data-event-tracking=click_search_result]')
|
||||
expect(rendered).to have_selector("[data-event-label=#{scope}]")
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -94,8 +94,8 @@ RSpec.describe 'search/_results', feature_category: :global_search do
|
|||
it 'does not render the click text event tracking attributes' do
|
||||
render
|
||||
|
||||
expect(rendered).not_to have_selector('[data-track-action=click_text]')
|
||||
expect(rendered).not_to have_selector('[data-track-property=search_result]')
|
||||
expect(rendered).not_to have_selector('[data-event-tracking=click_search_result]')
|
||||
expect(rendered).not_to have_selector("[data-event-label=#{scope}]")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -135,8 +135,8 @@ RSpec.describe 'search/_results', feature_category: :global_search do
|
|||
it 'renders the click text event tracking attributes' do
|
||||
render
|
||||
|
||||
expect(rendered).to have_selector('[data-track-action=click_text]')
|
||||
expect(rendered).to have_selector('[data-track-property=search_result]')
|
||||
expect(rendered).to have_selector('[data-event-tracking=click_search_result]')
|
||||
expect(rendered).to have_selector("[data-event-label=#{scope}]")
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -144,8 +144,8 @@ RSpec.describe 'search/_results', feature_category: :global_search do
|
|||
it 'does not render the click text event tracking attributes' do
|
||||
render
|
||||
|
||||
expect(rendered).not_to have_selector('[data-track-action=click_text]')
|
||||
expect(rendered).not_to have_selector('[data-track-property=search_result]')
|
||||
expect(rendered).not_to have_selector('[data-event-tracking=click_search_result]')
|
||||
expect(rendered).not_to have_selector("[data-event-label=#{scope}]")
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue