Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2023-06-15 00:07:23 +00:00
parent beabc7d164
commit afd8f58f2d
109 changed files with 1036 additions and 491 deletions

View File

@ -25,7 +25,7 @@ gem 'responders', '~> 3.0'
gem 'sprockets', '~> 3.7.0'
gem 'view_component', '~> 2.82.0'
gem 'view_component', '~> 3.1.0'
# Supported DBs
gem 'pg', '~> 1.5.3'

View File

@ -673,7 +673,7 @@
{"name":"validates_hostname","version":"1.0.11","platform":"ruby","checksum":"d506bae0342ec14c920eb319e057fc1886c321a59b85b4b6e966ee4b88fab8c3"},
{"name":"version_gem","version":"1.1.0","platform":"ruby","checksum":"6b009518020db57f51ec7b410213fae2bf692baea9f1b51770db97fbc93d9a80"},
{"name":"version_sorter","version":"2.3.0","platform":"ruby","checksum":"2147f2a1a3804fbb8f60d268b7d7c1ec717e6dd727ffe2c165b4e05e82efe1da"},
{"name":"view_component","version":"2.82.0","platform":"ruby","checksum":"c8b69561e19d8f9c4ba8c16df7f3bf2a5f0bba439dd25a597948e118f6bc9baf"},
{"name":"view_component","version":"3.1.0","platform":"ruby","checksum":"ead1ba472aca31fa9811e513da9b803b45ef555b717574d7bf0dda39ae880e54"},
{"name":"virtus","version":"2.0.0","platform":"ruby","checksum":"8841dae4eb7fcc097320ba5ea516bf1839e5d056c61ee27138aa4bddd6e3d1c2"},
{"name":"vmstat","version":"2.3.0","platform":"ruby","checksum":"ab5446a3e3bd0a9cdb9d9ac69a0bbd119c4f161d945a0846a519dd7018af656d"},
{"name":"warden","version":"1.2.9","platform":"ruby","checksum":"46684f885d35a69dbb883deabf85a222c8e427a957804719e143005df7a1efd0"},

View File

@ -1608,7 +1608,7 @@ GEM
activesupport (>= 3.0)
version_gem (1.1.0)
version_sorter (2.3.0)
view_component (2.82.0)
view_component (3.1.0)
activesupport (>= 5.2.0, < 8.0)
concurrent-ruby (~> 1.0)
method_source (~> 1.0)
@ -1963,7 +1963,7 @@ DEPENDENCIES
valid_email (~> 0.1)
validates_hostname (~> 1.0.11)
version_sorter (~> 2.3)
view_component (~> 2.82.0)
view_component (~> 3.1.0)
vmstat (~> 2.3.0)
warning (~> 1.3.0)
webauthn (~> 3.0)

View File

@ -25,7 +25,7 @@ import syntaxHighlight from '~/syntax_highlight';
import CommentTypeDropdown from '~/notes/components/comment_type_dropdown.vue';
import * as constants from '~/notes/constants';
import { confirmAction } from '~/lib/utils/confirm_via_gl_modal/confirm_via_gl_modal';
import { COMMENT_FORM } from '~/notes/i18n';
import { COMMENT_FORM, UPDATE_COMMENT_FORM } from '~/notes/i18n';
import Autosave from './autosave';
import loadAwardsHandler from './awards_handler';
import { defaultAutocompleteConfig } from './gfm_auto_complete';
@ -708,11 +708,16 @@ export default class Notes {
});
}
updateNoteError() {
createAlert({
message: __(
'Your comment could not be updated! Please check your network connection and try again.',
),
updateNoteError(error, $editingNote) {
const serverErrorMessage = error?.response?.data?.errors;
const alertMessage = serverErrorMessage
? sprintf(UPDATE_COMMENT_FORM.error, { reason: serverErrorMessage }, false)
: UPDATE_COMMENT_FORM.defaultError;
return this.addAlert({
message: alertMessage,
parent: $editingNote.get(0),
});
}
@ -794,6 +799,8 @@ export default class Notes {
const $note = $target.closest('.note');
const $currentlyEditing = $('.note.is-editing:visible');
this.clearAlertWrapper();
if ($currentlyEditing.length) {
const isEditAllowed = this.checkContentToAllowEditing($currentlyEditing);
@ -1860,14 +1867,14 @@ export default class Notes {
// Submission successful! render final note element
this.updateNote(data, $editingNote);
})
.catch(() => {
.catch((error) => {
$editingNote.addClass('is-editing fade-in-full').removeClass('being-posted fade-in-half');
// Submission failed, revert back to original note
$noteBodyText.html(escape(cachedNoteBodyText));
$editingNote.removeClass('being-posted fade-in');
$noteBodyText.html(cachedNoteBodyText);
$editingNote.find('.gl-spinner').remove();
// Show Flash message about failure
this.updateNoteError();
this.updateNoteError(error, $editingNote);
});
return $closeBtn.text($closeBtn.data('originalText'));

View File

@ -248,7 +248,7 @@ export default {
size="small"
:disabled="removeDisabled"
class="js-issue-item-remove-button gl-mr-2"
data-qa-selector="remove_related_issue_button"
data-testid="remove_related_issue_button"
:title="__('Remove')"
:aria-label="__('Remove')"
@click="onRemoveRequest"

View File

@ -340,7 +340,6 @@ export default {
class="gl-sm-display-none! w-100"
block
:text="dropdownText"
data-qa-selector="issue_actions_dropdown"
data-testid="mobile-dropdown"
:loading="isToggleStateButtonLoading"
>
@ -364,7 +363,7 @@ export default {
</gl-dropdown-item>
<gl-dropdown-item
v-if="showToggleIssueStateButton"
:data-qa-selector="`mobile_${qaSelector}`"
:data-testid="`mobile_${qaSelector}`"
@click="toggleIssueState"
>
{{ buttonText }}
@ -434,7 +433,7 @@ export default {
class="gl-display-none gl-sm-display-inline-flex!"
:data-qa-selector="qaSelector"
:loading="isToggleStateButtonLoading"
data-testid="toggle-button"
data-testid="toggle-issue-state-button"
@click="toggleIssueState"
>
{{ buttonText }}
@ -447,7 +446,6 @@ export default {
class="gl-display-none gl-sm-display-inline-flex!"
icon="ellipsis_v"
category="tertiary"
data-qa-selector="issue_actions_ellipsis_dropdown"
:text="dropdownText"
:text-sr-only="true"
:title="dropdownText"
@ -510,7 +508,7 @@ export default {
<gl-dropdown-item
v-gl-modal="$options.deleteModalId"
variant="danger"
data-qa-selector="delete_issue_button"
data-testid="delete_issue_button"
@click="track('click_dropdown')"
>
{{ deleteButtonText }}

View File

@ -60,7 +60,6 @@ export default {
'issue-realtime-trigger-pulse': pulseAnimation,
}"
class="title gl-font-size-h-display"
data-qa-selector="title_content"
data-testid="issue-title"
dir="auto"
></h1>

View File

@ -18,6 +18,7 @@ import eventHub from '../event_hub';
import noteable from '../mixins/noteable';
import resolvable from '../mixins/resolvable';
import { renderMarkdown } from '../utils';
import { UPDATE_COMMENT_FORM } from '../i18n';
import {
getStartLineNumber,
getEndLineNumber,
@ -113,6 +114,7 @@ export default {
isResolving: false,
commentLineStart: {},
resolveAsThread: true,
oldContent: this.note.note_html,
};
},
computed: {
@ -293,7 +295,7 @@ export default {
updateSuccess() {
this.isEditing = false;
this.isRequesting = false;
this.oldContent = null;
this.oldContent = this.note.note_html;
renderGFM(this.$refs.noteBody.$el);
this.$emit('updateSuccess');
},
@ -341,7 +343,6 @@ export default {
// https://gitlab.com/gitlab-org/gitlab/-/issues/298827
if (!isEmpty(position)) data.note.note.position = JSON.stringify(position);
this.isRequesting = true;
this.oldContent = this.note.note_html;
// eslint-disable-next-line vue/no-mutating-props
this.note.note_html = renderMarkdown(noteText);
@ -350,8 +351,8 @@ export default {
this.updateSuccess();
callback();
})
.catch((response) => {
if (response.status === HTTP_STATUS_GONE) {
.catch((e) => {
if (e.status === HTTP_STATUS_GONE) {
this.removeNote(this.note);
this.updateSuccess();
callback();
@ -360,17 +361,22 @@ export default {
this.isEditing = true;
this.setSelectedCommentPositionHover();
this.$nextTick(() => {
this.handleUpdateError(response); // The 'response' parameter is being used in JH, don't remove it
this.recoverNoteContent(noteText);
this.handleUpdateError(e); // The 'e' parameter is being used in JH, don't remove it
this.recoverNoteContent();
callback();
});
}
});
},
handleUpdateError() {
const msg = __('Something went wrong while editing your comment. Please try again.');
handleUpdateError(e) {
const serverErrorMessage = e?.response?.data?.errors;
const alertMessage = serverErrorMessage
? sprintf(UPDATE_COMMENT_FORM.error, { reason: serverErrorMessage.toLowerCase() }, false)
: UPDATE_COMMENT_FORM.defaultError;
createAlert({
message: msg,
message: alertMessage,
parent: this.$el,
});
},
@ -391,22 +397,14 @@ export default {
});
if (!confirmed) return;
}
if (this.oldContent) {
// eslint-disable-next-line vue/no-mutating-props
this.note.note_html = this.oldContent;
this.oldContent = null;
}
this.recoverNoteContent();
this.isEditing = false;
this.$emit('cancelForm');
}),
recoverNoteContent(noteText) {
// we need to do this to prevent noteForm inconsistent content warning
// this is something we intentionally do so we need to recover the content
// eslint-disable-next-line vue/no-mutating-props
this.note.note = noteText;
const { noteBody } = this.$refs;
if (noteBody) {
noteBody.note.note = noteText;
recoverNoteContent() {
if (this.oldContent) {
// eslint-disable-next-line vue/no-mutating-props
this.note.note_html = this.oldContent;
}
},
getLineClasses(lineNumber) {

View File

@ -55,3 +55,8 @@ export const EDITED_TEXT = {
actionWithAuthor: __('%{actionText} %{actionDetail} %{timeago} by %{author}'),
actionWithoutAuthor: __('%{actionText} %{actionDetail}'),
};
export const UPDATE_COMMENT_FORM = {
error: __('Your comment could not be updated because %{reason}.'),
defaultError: __('Something went wrong while editing your comment. Please try again.'),
};

View File

@ -218,7 +218,7 @@ export default {
type="submit"
size="small"
class="gl-mr-2"
data-qa-selector="add_issue_button"
data-testid="add_issue_button"
>
{{ __('Add') }}
</gl-button>

View File

@ -217,7 +217,7 @@ export default {
:aria-label="inputPlaceholder"
type="text"
class="gl-w-full gl-border-none gl-outline-0"
data-qa-selector="add_issue_field"
data-testid="add_issue_field"
autocomplete="off"
@input="onInput"
@focus="onFocus"

View File

@ -220,7 +220,6 @@ export default {
<gl-button
v-if="canAdmin"
size="small"
data-qa-selector="related_issues_plus_button"
data-testid="related-issues-plus-button"
:aria-label="addIssuableButtonText"
class="gl-ml-3"

View File

@ -104,7 +104,7 @@ export default {
{{ heading }}
</h4>
<div class="related-issues-token-body" :class="{ 'sortable-container': canReorder }">
<div v-if="isFetching" class="gl-mb-2" data-qa-selector="related_issues_loading_placeholder">
<div v-if="isFetching" class="gl-mb-2" data-testid="related_issues_loading_placeholder">
<gl-loading-icon
ref="loadingIcon"
size="sm"
@ -146,7 +146,7 @@ export default {
:locked-message="issue.lockedMessage"
:work-item-type="issue.type"
event-namespace="relatedIssue"
data-qa-selector="related_issuable_content"
data-testid="related_issuable_content"
class="gl-mx-n2"
@relatedIssueRemoveRequest="$emit('relatedIssueRemoveRequest', $event)"
/>

View File

@ -157,7 +157,6 @@ export default {
:data-track-action="tracking.event"
:data-track-label="tracking.label"
:data-track-property="tracking.property"
data-qa-selector="edit_link"
@keyup.esc="toggle"
@click="toggle"
>

View File

@ -2,8 +2,6 @@
module Diffs
class BaseComponent < ViewComponent::Base
warn_on_deprecated_slot_setter
# To make converting the partials to components easier,
# we delegate all missing methods to the helpers,
# where they probably are.

View File

@ -2,8 +2,6 @@
module Layouts
class HorizontalSectionComponent < ViewComponent::Base
warn_on_deprecated_slot_setter
# @param [Boolean] border
# @param [Hash] options
def initialize(border: true, options: {})

View File

@ -2,8 +2,6 @@
module Pajamas
class Component < ViewComponent::Base
warn_on_deprecated_slot_setter
private
# Filter a given a value against a list of allowed values

View File

@ -80,10 +80,16 @@ module NotesActions
return
end
prepare_notes_for_rendering([@note])
respond_to do |format|
format.json { render json: note_json(@note) }
format.json do
if @note.errors.present?
render json: { errors: @note.errors.full_messages.to_sentence }, status: :unprocessable_entity
else
prepare_notes_for_rendering([@note])
render json: note_json(@note)
end
end
format.html { redirect_back_or_default }
end
end

View File

@ -0,0 +1,50 @@
# frozen_string_literal: true
# Groups::EnvironmentsScopesFinder
#
# Arguments:
# group
# params:
# search: string
#
module Groups
class EnvironmentScopesFinder
DEFAULT_ENVIRONMENT_SCOPES_LIMIT = 100
def initialize(group:, params: {})
@group = group
@params = params
end
EnvironmentScope = Struct.new(:name)
def execute
variables = group.variables
variables = by_name(variables)
variables = by_search(variables)
variables = variables.limit(DEFAULT_ENVIRONMENT_SCOPES_LIMIT)
environment_scope_names = variables.environment_scope_names
environment_scope_names.map { |environment_scope| EnvironmentScope.new(environment_scope) }
end
private
attr_reader :group, :params
def by_name(group_variables)
if params[:name].present?
group_variables.by_environment_scope(params[:name])
else
group_variables
end
end
def by_search(group_variables)
if params[:search].present?
group_variables.for_environment_scope_like(params[:search])
else
group_variables
end
end
end
end

View File

@ -103,13 +103,11 @@ class GroupsFinder < UnionFinder
end
# rubocop: enable CodeReuse/ActiveRecord
# rubocop: disable CodeReuse/ActiveRecord
def by_search(groups)
return groups unless params[:search].present?
groups.search(params[:search], include_parents: params[:parent].blank?)
end
# rubocop: enable CodeReuse/ActiveRecord
def owned_groups
current_user&.owned_groups || Group.none

View File

@ -0,0 +1,23 @@
# frozen_string_literal: true
module Resolvers
class GroupEnvironmentScopesResolver < BaseResolver
type Types::Ci::GroupEnvironmentScopeType.connection_type, null: true
alias_method :group, :object
argument :name, GraphQL::Types::String,
required: false,
description: 'Name of the environment scope.'
argument :search, GraphQL::Types::String,
required: false,
description: 'Search query for environment scope name.'
def resolve(**args)
return unless group.present?
::Groups::EnvironmentScopesFinder.new(group: group, params: args).execute
end
end
end

View File

@ -0,0 +1,10 @@
# frozen_string_literal: true
module Types
module Ci
# rubocop: disable Graphql/AuthorizeTypes
class GroupEnvironmentScopeConnectionType < GraphQL::Types::Relay::BaseConnection
end
# rubocop: enable Graphql/AuthorizeTypes
end
end

View File

@ -0,0 +1,18 @@
# frozen_string_literal: true
module Types
module Ci
# rubocop: disable Graphql/AuthorizeTypes
class GroupEnvironmentScopeType < BaseObject
graphql_name 'CiGroupEnvironmentScope'
description 'Ci/CD environment scope for a group.'
connection_type_class(Types::Ci::GroupEnvironmentScopeConnectionType)
field :name, GraphQL::Types::String,
null: true,
description: 'Scope name defininig the enviromnments that can use the variable.'
end
# rubocop: enable Graphql/AuthorizeTypes
end
end

View File

@ -83,6 +83,12 @@ module Types
description: 'Merge requests for projects in this group.',
resolver: Resolvers::GroupMergeRequestsResolver
field :environment_scopes,
Types::Ci::GroupEnvironmentScopeType.connection_type,
description: 'Environment scopes of the group.',
null: true,
resolver: Resolvers::GroupEnvironmentScopesResolver
field :milestones,
description: 'Milestones of the group.',
extras: [:lookahead],

View File

@ -23,6 +23,19 @@ module Ci
scope :by_environment_scope, -> (environment_scope) { where(environment_scope: environment_scope) }
scope :for_groups, ->(group_ids) { where(group_id: group_ids) }
scope :for_environment_scope_like, -> (query) do
top_level = 'LOWER(ci_group_variables.environment_scope) LIKE LOWER(?) || \'%\''
search_like = "%#{sanitize_sql_like(query)}%"
where(top_level, search_like)
end
scope :environment_scope_names, -> do
group(:environment_scope)
.order(:environment_scope)
.pluck(:environment_scope)
end
self.limit_name = 'group_ci_variables'
self.limit_scope = :group

View File

@ -9,6 +9,8 @@ module Notes
note.assign_attributes(params)
return note unless note.valid?
track_note_edit_usage_for_issues(note) if note.for_issue?
track_note_edit_usage_for_merge_requests(note) if note.for_merge_request?
@ -23,11 +25,7 @@ module Notes
note.note = content
end
if note.note_changed?
note.assign_attributes(last_edited_at: Time.current, updated_by: current_user)
note.check_for_spam(action: :update, user: current_user) unless only_commands
end
update_note(note, only_commands)
note.save
unless only_commands || note.for_personal_snippet?
@ -56,6 +54,13 @@ module Notes
private
def update_note(note, only_commands)
return unless note.note_changed?
note.assign_attributes(last_edited_at: Time.current, updated_by: current_user)
note.check_for_spam(action: :update, user: current_user) unless only_commands
end
def delete_note(note, message)
# We must add the error after we call #save because errors are reset
# when #save is called

View File

@ -46,7 +46,7 @@
.js-sidebar-milestone-widget-root{ data: { can_edit: can_edit_issuable.to_s, project_path: issuable_sidebar[:project_full_path], issue_iid: issuable_sidebar[:iid] } }
- if in_group_context_with_iterations
.block.gl-collapse-empty{ data: { qa_selector: 'iteration_container', testid: 'iteration_container' } }<
.block.gl-collapse-empty{ data: { testid: 'iteration_container' } }<
= render_if_exists 'shared/issuable/iteration_select', can_edit: can_edit_issuable.to_s, group_path: @project.group.full_path, project_path: issuable_sidebar[:project_full_path], issue_iid: issuable_sidebar[:iid], issuable_type: issuable_type
- if issuable_sidebar[:show_crm_contacts]

View File

@ -2,6 +2,7 @@
= form_tag '#', method: :put, class: 'edit-note common-note-form js-quick-submit' do
= hidden_field_tag :target_id, '', class: 'js-form-target-id'
= hidden_field_tag :target_type, '', class: 'js-form-target-type'
.flash-container
= render layout: 'shared/md_preview', locals: { url: preview_markdown_path(project), referenced_users: true } do
= render 'shared/zen', attr: 'note[note]', classes: 'note-textarea js-note-text js-task-list-field', qa_selector: 'edit_note_field', placeholder: _("Write a comment or drag your files here…")
= render 'shared/notes/hints'

View File

@ -96,53 +96,8 @@ ensure these processes are close to 100% as possible during active use.
If the **secondary** site is still replicating data from the **primary** site,
follow these steps to avoid unnecessary data loss:
1. Until a [read-only mode](https://gitlab.com/gitlab-org/gitlab/-/issues/14609)
is implemented, updates must be prevented from happening manually to the
**primary**. Your **secondary** site still needs read-only
access to the **primary** site during the maintenance window:
1. At the scheduled time, using your cloud provider or your site's firewall, block
all HTTP, HTTPS and SSH traffic to/from the **primary** site, **except** for your IP and
the **secondary** site's IP.
For instance, you can run the following commands on the **primary** site:
```shell
sudo iptables -A INPUT -p tcp -s <secondary_site_ip> --destination-port 22 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <your_ip> --destination-port 22 -j ACCEPT
sudo iptables -A INPUT --destination-port 22 -j REJECT
sudo iptables -A INPUT -p tcp -s <secondary_site_ip> --destination-port 80 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <your_ip> --destination-port 80 -j ACCEPT
sudo iptables -A INPUT --tcp-dport 80 -j REJECT
sudo iptables -A INPUT -p tcp -s <secondary_site_ip> --destination-port 443 -j ACCEPT
sudo iptables -A INPUT -p tcp -s <your_ip> --destination-port 443 -j ACCEPT
sudo iptables -A INPUT --tcp-dport 443 -j REJECT
```
From this point, users are unable to view their data or make changes on the
**primary** site. They are also unable to sign in to the **secondary** site.
However, existing sessions must work for the remainder of the maintenance period, and
so public data is accessible throughout.
1. Verify the **primary** site is blocked to HTTP traffic by visiting it in browser via
another IP. The server should refuse connection.
1. Verify the **primary** site is blocked to Git over SSH traffic by attempting to pull an
existing Git repository with an SSH remote URL. The server should refuse
connection.
1. On the **primary** site:
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. On the left sidebar, select **Monitoring > Background Jobs**.
1. On the Sidekiq dashboard, select **Cron**.
1. Select `Disable All` to disable any non-Geo periodic background jobs.
1. Select `Enable` for the `geo_sidekiq_cron_config_worker` cron job.
This job re-enables several other cron jobs that are essential for planned
failover to complete successfully.
1. Enable [maintenance mode](../../../maintenance_mode/index.md) on the **primary** site,
and make sure to stop any [background jobs](../../../maintenance_mode/index.md#background-jobs).
1. Finish replicating and verifying all data:
WARNING:

View File

@ -7892,6 +7892,29 @@ The edge type for [`CiGroup`](#cigroup).
| <a id="cigroupedgecursor"></a>`cursor` | [`String!`](#string) | A cursor for use in pagination. |
| <a id="cigroupedgenode"></a>`node` | [`CiGroup`](#cigroup) | The item at the end of the edge. |
#### `CiGroupEnvironmentScopeConnection`
The connection type for [`CiGroupEnvironmentScope`](#cigroupenvironmentscope).
##### Fields
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="cigroupenvironmentscopeconnectionedges"></a>`edges` | [`[CiGroupEnvironmentScopeEdge]`](#cigroupenvironmentscopeedge) | A list of edges. |
| <a id="cigroupenvironmentscopeconnectionnodes"></a>`nodes` | [`[CiGroupEnvironmentScope]`](#cigroupenvironmentscope) | A list of nodes. |
| <a id="cigroupenvironmentscopeconnectionpageinfo"></a>`pageInfo` | [`PageInfo!`](#pageinfo) | Information to aid in pagination. |
#### `CiGroupEnvironmentScopeEdge`
The edge type for [`CiGroupEnvironmentScope`](#cigroupenvironmentscope).
##### Fields
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="cigroupenvironmentscopeedgecursor"></a>`cursor` | [`String!`](#string) | A cursor for use in pagination. |
| <a id="cigroupenvironmentscopeedgenode"></a>`node` | [`CiGroupEnvironmentScope`](#cigroupenvironmentscope) | The item at the end of the edge. |
#### `CiGroupVariableConnection`
The connection type for [`CiGroupVariable`](#cigroupvariable).
@ -12839,6 +12862,16 @@ Represents a deployment freeze window of a project.
| <a id="cigroupname"></a>`name` | [`String`](#string) | Name of the job group. |
| <a id="cigroupsize"></a>`size` | [`Int`](#int) | Size of the group. |
### `CiGroupEnvironmentScope`
Ci/CD environment scope for a group.
#### Fields
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="cigroupenvironmentscopename"></a>`name` | [`String`](#string) | Scope name defininig the enviromnments that can use the variable. |
### `CiGroupVariable`
CI/CD variables for a group.
@ -15986,6 +16019,23 @@ four standard [pagination arguments](#connection-pagination-arguments):
| <a id="groupdescendantgroupsowned"></a>`owned` | [`Boolean`](#boolean) | Limit result to groups owned by authenticated user. |
| <a id="groupdescendantgroupssearch"></a>`search` | [`String`](#string) | Search query for group name or group full path. |
##### `Group.environmentScopes`
Environment scopes of the group.
Returns [`CiGroupEnvironmentScopeConnection`](#cigroupenvironmentscopeconnection).
This field returns a [connection](#connections). It accepts the
four standard [pagination arguments](#connection-pagination-arguments):
`before: String`, `after: String`, `first: Int`, `last: Int`.
###### Arguments
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="groupenvironmentscopesname"></a>`name` | [`String`](#string) | Name of the environment scope. |
| <a id="groupenvironmentscopessearch"></a>`search` | [`String`](#string) | Search query for environment scope name. |
##### `Group.epic`
Find a single epic.

View File

@ -557,8 +557,8 @@ and should only be disabled in an environment where all users with Developer rol
To use the same cache for all branches:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand **General pipelines**.
1. Clear the **Use separate caches for protected branches** checkbox.
1. Select **Save changes**.
@ -654,8 +654,8 @@ The next time the pipeline runs, the cache is stored in a different location.
You can clear the cache in the GitLab UI:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **CI/CD > Pipelines**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. On the left sidebar, select **Build > Pipelines**.
1. In the upper-right corner, select **Clear runner caches**.
On the next commit, your CI/CD jobs use a new cache.

View File

@ -15,7 +15,8 @@ GitLab CI/CD can be used with Bitbucket Cloud by:
To use GitLab CI/CD with a Bitbucket Cloud repository:
1. In GitLab, create a project:
1. In GitLab, on the top bar, select **Main menu > Projects > View all projects**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **View all your projects**.
1. On the right of the page, select **New project**.
1. Select **Run CI/CD for external repository**.
1. Select **Repository by URL**.

View File

@ -34,7 +34,8 @@ repositories:
`repo` and `admin:repo_hook` so that GitLab can access your project,
update commit statuses, and create a web hook to notify GitLab of new commits.
1. In GitLab, create a project:
1. In GitLab, on the top bar, select **Main menu > Projects > View all projects**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **View all your projects**.
1. On the right of the page, select **New project**.
1. Select **Run CI/CD for external repository**.
1. Select **GitHub**.
@ -62,8 +63,9 @@ To manually enable GitLab CI/CD for your repository:
1. Enter a **Token description** and update the scope to allow
`repo` so that GitLab can access your project and update commit statuses.
1. In GitLab, create a project:
1. In GitLab, on the top bar, select **Main menu > Projects > View all projects**.
1. On the right of the page, select **New project**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **View all your projects**.
1. Select **New project**.
1. Select **Run CI/CD for external repository** and **Repository by URL**.
1. In the **Git repository URL** field, enter the HTTPS URL for your GitHub repository.
If your project is private, use the personal access token you just created for authentication.

View File

@ -24,8 +24,9 @@ snippets disabled. These features
To connect to an external repository:
1. In GitLab, on the top bar, select **Main menu > Projects > View all projects**.
1. On the right of the page, select **New project**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **View all your projects**.
1. Select **New project**.
1. Select **Run CI/CD for external repository**.
1. Select **GitHub** or **Repository by URL**.
1. Complete the fields.

View File

@ -192,7 +192,7 @@ so other users can discover it.
To mark a project as a catalog resource:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. On the left sidebar, select **Settings > General**.
1. Expand **Visibility, project features, permissions**.
1. Scroll down to **CI/CD Catalog resource** and select the toggle to mark the project as a catalog resource.

View File

@ -30,8 +30,8 @@ When you disable GitLab CI/CD:
To disable GitLab CI/CD in your project:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > General**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > General**.
1. Expand **Visibility, project features, permissions**.
1. In the **Repository** section, turn off **CI/CD**.
1. Select **Save changes**.
@ -40,8 +40,8 @@ To disable GitLab CI/CD in your project:
To enable GitLab CI/CD in your project:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > General**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > General**.
1. Expand **Visibility, project features, permissions**.
1. In the **Repository** section, turn on **CI/CD**.
1. Select **Save changes**.

View File

@ -137,8 +137,8 @@ create a new approval rule for each entity allowed to deploy to the environment.
To migrate with the UI:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand **Protected environments**.
1. From the **Environment** list, select your environment.
1. For each entity allowed to deploy to the environment:
@ -170,8 +170,8 @@ require `Administrator` to approve every deployment job in `Production`.
By default, the user who triggers a deployment pipeline can't also approve the deployment job.
To allow self-approval of a deployment job:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand **Protected environments**.
1. From the **Approval options**, select the **Allow pipeline triggerer to approve deployment** checkbox.
@ -198,8 +198,8 @@ Prerequisites:
To approve or reject a deployment to a protected environment using the UI:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Deployments > Environments**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Operate > Environments**.
1. Select the environment's name.
1. In the deployment's row, select **Approval options** (**{thumb-up}**).
Before approving or rejecting the deployment, you can view the number of approvals granted and
@ -235,8 +235,8 @@ granted.
To view the approval details of a deployment:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Deployments > Environments**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Operate > Environments**.
1. Select the environment's name.
1. In the deployment's row, select **Approval options** (**{thumb-up}**).
@ -251,8 +251,8 @@ The approval status details are shown:
### Using the UI
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Deployments > Environments**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Operate > Environments**.
1. Select the environment being deployed to.
1. Look for the `blocked` label.

View File

@ -20,8 +20,9 @@ see which pipelines are green and which are red allowing you to
diagnose if there is a block at a particular point, or if there's
a more systemic problem you need to investigate.
You can access the dashboard on the top bar by selecting
**Main menu > Environments**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Your work**.
1. Select **Environments**.
![Environments Dashboard with projects](img/environments_dashboard_v12_5.png)

View File

@ -51,8 +51,8 @@ Deployments show up in this list only after a deployment job has created them.
To search environments by name:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Deployments > Environments**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Operate > Environments**.
1. In the search bar, enter your search term.
- The length of your **search term should be 3 or more characters**.
- Matching applies from the beginning of the environment name.
@ -93,9 +93,9 @@ Prerequisites:
To create a static environment in the UI:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Deployments > Environments**.
1. Select **New environment**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Operate > Environments**.
1. Select **Create an environment**.
1. Complete the fields.
1. Select **Save**.
@ -345,8 +345,8 @@ If there is a problem with a deployment, you can retry it or roll it back.
To retry or rollback a deployment:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Deployments > Environments**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Operate > Environments**.
1. Select the environment.
1. To the right of the deployment name:
- To retry a deployment, select **Re-deploy to environment**.
@ -560,8 +560,8 @@ you can view its expiration date and time.
To view an environment's expiration date and time:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Deployments > Environments**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Operate > Environments**.
1. Select the name of the environment.
The expiration date and time is displayed in the upper-left corner, next to the environment's name.
@ -573,8 +573,8 @@ you can override its expiration.
To override an environment's expiration:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Deployments > Environments**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Operate > Environments**.
1. Select the deployment name.
1. in the upper-right corner, select the thumbtack (**{thumbtack}**).
@ -600,8 +600,8 @@ Environments view, the stop and deploy jobs must be in the same
To stop an environment in the GitLab UI:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Deployments > Environments**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Operate > Environments**.
1. Next to the environment you want to stop, select **Stop**.
1. On the confirmation dialog box, select **Stop environment**.
@ -664,8 +664,8 @@ Prerequisites:
To delete an environment:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Deployments > Environments**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Operate > Environments**.
1. Select the **Stopped** tab.
1. Next to the environment you want to delete, select **Delete environment**.
1. On the confirmation dialog box, select **Delete environment**.
@ -767,8 +767,8 @@ Limitations of GitLab Auto Rollback:
GitLab Auto Rollback is turned off by default. To turn it on:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand **Automatic deployment rollbacks**.
1. Select the checkbox for **Enable automatic rollbacks**.
1. Select **Save changes**.

View File

@ -28,8 +28,8 @@ Prerequisite:
### The environment already exists
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Deployments > Environments**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Operate > Environments**.
1. Select the environment to be associated with the Kubernetes.
1. Select **Edit**.
1. Select a GitLab agent for Kubernetes.
@ -37,8 +37,8 @@ Prerequisite:
### The environment doesn't exist
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Deployments > Environments**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Operate > Environments**.
1. Select **New environment**.
1. Complete the **Name** field.
1. Select a GitLab agent for Kubernetes.
@ -48,8 +48,8 @@ Prerequisite:
To view a configured dashboard:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Deployments > Environments**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Operate > Environments**.
1. Expand the environment associated with GitLab agent for Kubernetes.
1. Expand **Kubernetes overview**.

View File

@ -30,8 +30,8 @@ Prerequisites:
To protect an environment:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand **Protected environments**.
1. From the **Environment** list, select the environment you want to protect.
1. In the **Allowed to deploy** list, select the role, users, or groups you
@ -255,8 +255,8 @@ To protect a group-level environment, make sure your environments have the corre
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/325249) in GitLab 15.1.
1. On the top bar, select **Main menu > Groups** and find your group.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
1. Select **Settings > CI/CD**.
1. Expand **Protected environments**.
1. From the **Environment** list, select the [deployment tier of environments](index.md#deployment-tier-of-environments) you want to protect.
1. In the **Allowed to deploy** list, select the [subgroups](../../user/group/subgroups/index.md) you want to give deploy access to.

View File

@ -24,8 +24,8 @@ configuration added with the [`includes` keyword](yaml/index.md#include).
To check CI/CD configuration with the CI lint tool:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **CI/CD > Pipelines**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Build > Pipelines**.
1. In the upper-right corner, select **CI lint**.
1. Paste a copy of the CI/CD configuration you want to check into the text box.
1. Select **Validate**.
@ -45,8 +45,8 @@ Prerequisites:
To simulate a pipeline:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **CI/CD > Pipelines**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Build > Pipelines**.
1. In the upper-right corner, select **CI lint**.
1. Paste a copy of the CI/CD configuration you want to check into the text box.
1. Select **Simulate pipeline creation for the default branch**.

View File

@ -296,8 +296,8 @@ Use the [Google Play integration](../user/project/integrations/google_play.md),
to configure your CI/CD pipelines to connect to the [Google Play Console](https://play.google.com/console)
to build and release Android apps. To enable the integration:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > Integrations**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > Integrations**.
1. Select **Google Play**.
1. In **Enable integration**, select the **Active** checkbox.
1. In **Package name**, enter the package name of the app. For example, `com.gitlab.app_name`.
@ -353,8 +353,8 @@ Use the [Apple App Store integration](../user/project/integrations/apple_app_sto
to configure your CI/CD pipelines to connect to [App Store Connect](https://appstoreconnect.apple.com/)
to build and release apps for iOS, iPadOS, macOS, tvOS, and watchOS. To enable the integration:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > Integrations**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > Integrations**.
1. Select **Apple App Store**.
1. Turn on the **Active** toggle under **Enable Integration**.
1. Provide the Apple App Store Connect configuration information:

View File

@ -24,8 +24,8 @@ For public and internal projects, you can change who can see your:
To change the visibility of your pipelines and related features:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand **General pipelines**.
1. Select or clear the **Public pipelines** checkbox.
When it is selected, pipelines and related features are visible:
@ -56,8 +56,8 @@ This setting has no effect when:
To change the pipeline visibility for non-project members:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > General**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > General**.
1. Expand **Visibility, project features, permissions**.
1. For **CI/CD**, choose:
- **Only project members**: Only project members can view pipelines.
@ -72,8 +72,8 @@ is selected.
You can set pending or running pipelines to cancel automatically when a pipeline for new changes runs on the same branch. You can enable this in the project settings:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand **General Pipelines**.
1. Select the **Auto-cancel redundant pipelines** checkbox.
1. Select **Save changes**.
@ -94,8 +94,8 @@ newer one, which may not be what you want.
To avoid this scenario:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand **General pipelines**.
1. Select the **Prevent outdated deployment jobs** checkbox.
1. Select **Save changes**.
@ -111,8 +111,8 @@ directory. However, you can specify an alternate filename path, including locati
To customize the path:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand **General pipelines**.
1. In the **CI/CD configuration file** field, enter the filename. If the file:
- Is not in the root directory, include the path.
@ -160,8 +160,8 @@ able to edit it.
You can choose how your repository is fetched from GitLab when a job runs.
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand **General pipelines**.
1. Under **Git strategy**, select an option:
- `git clone` is slower because it clones the repository from scratch
@ -181,8 +181,8 @@ in the `.gitlab-ci.yml` file.
You can limit the number of changes that GitLab CI/CD fetches when it clones
a repository.
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand **General pipelines**.
1. Under **Git strategy**, under **Git shallow clone**, enter a value.
The maximum value is `1000`. To disable shallow clone and make GitLab CI/CD
@ -198,8 +198,8 @@ in the `.gitlab-ci.yml` file.
You can define how long a job can run before it times out.
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand **General pipelines**.
1. In the **Timeout** field, enter the number of minutes, or a human-readable value like `2 hours`.
Must be 10 minutes or more, and less than one month. Default is 60 minutes.

View File

@ -36,7 +36,8 @@ Before adding the pipeline configuration, you must first set up a Docusaurus pro
on GitLab.com:
1. Create a new project under your username (not a group):
1. On the top bar, select **Main menu > Projects > View all projects**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **View all your projects**.
1. On the right of the page, select **New project**.
1. Select **Create blank project**.
1. Enter the project details:

View File

@ -76,8 +76,9 @@ Prerequisite:
To use the review apps template:
1. On the top bar, select **Main menu > Projects** and find the project you want to create a review app job for.
1. On the left sidebar, select **Deployments > Environments**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to
find the project you want to create a review app job for.
1. Select **Build > Environments**.
1. Select **Enable review apps**.
1. Copy the provided code snippet and paste it into your
`.gitlab-ci.yml` file:

View File

@ -161,7 +161,8 @@ Prerequisite:
To determine the IP address of a shared runner:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. On the left sidebar, select **CI/CD > Runners**.
1. Find the runner in the table and view the **IP Address** column.
@ -955,8 +956,8 @@ You can clean up group runners that have been inactive for more than three month
Group runners are those that were created at the group level.
1. On the top bar, select **Main menu > Groups** and find your group.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
1. Select **Settings > CI/CD**.
1. Expand **Runners**.
1. Turn on the **Enable stale runner cleanup** toggle.
@ -999,8 +1000,13 @@ The version of GitLab Runner used by your runners should be
To determine which runners need to be upgraded:
1. View the list of runners:
- For a group, on the top bar, select **Main menu > Groups**, find your group, and on the left sidebar select **CI/CD > Runners**.
- For the instance, select **Main menu > Admin** and on the left sidebar, select **Runners**.
- For a group:
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
1. Select **Build > Runners**.
- For the instance:
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **CI/CD > Runners**.
1. Above the list of runners, view the status:
- **Outdated - recommended**: The runner does not have the latest `PATCH` version, which may make it vulnerable
@ -1055,7 +1061,8 @@ Prerequisites:
To automatically rotate runner authentication tokens:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**..
1. On the left sidebar, select **Settings > CI/CD**.
1. Expand **Continuous Integration and Deployment**
1. Set a **Runners expiration** time for runners, leave empty for no expiration.

View File

@ -33,7 +33,8 @@ Prerequisites:
To generate an authentication token for a shared runner:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. On the left sidebar, select **CI/CD > Runners**.
1. Select **New instance runner**.
1. Select a platform.
@ -56,8 +57,8 @@ Prerequisites:
To generate an authentication token for a group runner:
1. On the top bar, select **Main menu > Groups** and find your group.
1. On the left sidebar, select **CI/CD > Runners**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
1. Select **Build > Runners**.
1. Select **New group runner**.
1. Select a platform.
1. Optional. Enter configurations for the runner.
@ -79,8 +80,9 @@ Prerequisites:
To generate an authentication token for a project runner:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand the **Runners** section.
1. Select **New project runner**.
1. Select a platform.
1. Optional. Enter configurations for the runner.
@ -100,20 +102,21 @@ change.
### For a shared runner
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **CI/CD > Runners**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **CI/CD > Runners**.
1. Select **Register an instance runner**.
1. Copy the registration token.
### For a group runner
1. On the top bar, select **Main menu > Groups** and find your group.
1. On the left sidebar, select **CI/CD > Runners**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
1. Select **Build > Runners**.
1. Copy the registration token.
### For a project runner
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand the **Runners** section.
1. Copy the registration token.

View File

@ -51,8 +51,8 @@ For existing projects, an administrator must
To enable shared runners for a project:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand **Runners**.
1. Turn on the **Enable shared runners for this project** toggle.
@ -60,8 +60,8 @@ To enable shared runners for a project:
To enable shared runners for a group:
1. On the top bar, select **Main menu > Groups** and find your group.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
1. Select **Settings > CI/CD**.
1. Expand **Runners**.
1. Turn on the **Enable shared runners for this group** toggle.
@ -73,8 +73,8 @@ or group.
To disable shared runners for a project:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand **Runners**.
1. In the **Shared runners** area, turn off the **Enable shared runners for this project** toggle.
@ -87,8 +87,8 @@ Shared runners are automatically disabled for a project:
To disable shared runners for a group:
1. On the top bar, select **Main menu > Groups** and find your group.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
1. Select **Settings > CI/CD**.
1. Expand **Runners**.
1. Turn off the **Enable shared runners for this group** toggle.
1. Optional. To allow shared runners to be enabled for individual projects or subgroups,
@ -153,8 +153,8 @@ You must have the Owner role for the group.
To create a group runner:
1. [Install GitLab Runner](https://docs.gitlab.com/runner/install/).
1. On the top bar, select **Main menu > Groups** and find your group.
1. On the left sidebar, select **CI/CD > Runners**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
1. Select **Build > Runners**.
1. In the upper-right corner, select **Register a group runner**.
1. Select **Show runner installation and registration instructions**.
These instructions include the token, URL, and a command to register a runner.
@ -170,8 +170,8 @@ You can view and manage all runners for a group, its subgroups, and projects.
You can do this for your self-managed GitLab instance or for GitLab.com.
You must have the Owner role for the group.
1. On the top bar, select **Main menu > Groups** and find your group.
1. On the left sidebar, select **CI/CD > Runners**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
1. Select **Build > Runners**.
From this page, you can edit, pause, and remove runners from the group, its subgroups, and projects.
@ -187,8 +187,8 @@ Prerequisites:
To delete multiple runners in a single action in the group list:
1. On the top bar, select **Main menu > Groups** and find your group.
1. On the left sidebar, select **CI/CD > Runners**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
1. Select **Build > Runners**.
1. To delete multiple runners, you can either:
- Select the checkbox next to the runner.
- Select the checkbox at the top of the runner list to select all runners in the list.
@ -207,8 +207,8 @@ By default, only those that are inherited are shown.
To show all runners available in the instance, including shared runners and
those in other groups:
1. On the top bar, select **Main menu > Groups** and find your group.
1. On the left sidebar, select **CI/CD > Runners**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
1. Select **Build > Runners**.
1. Above the list, turn off the **Show only inherited** toggle.
### Pause or remove a group runner
@ -216,8 +216,8 @@ those in other groups:
You can pause or remove a group runner for your self-managed GitLab instance or for GitLab.com.
You must have the Owner role for the group.
1. On the top bar, select **Main menu > Groups** and find your group.
1. On the left sidebar, select **CI/CD > Runners**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
1. Select **Build > Runners**.
1. Select **Pause** or **Remove runner**.
- If you pause a group runner that is used by multiple projects, the runner pauses for all projects.
- From the group view, you cannot remove a runner that is assigned to more than one project.
@ -252,8 +252,9 @@ Prerequisite:
To create a project runner:
1. [Install GitLab Runner](https://docs.gitlab.com/runner/install/).
1. On the top bar, select **Main menu > Projects** and find the project where you want to use the runner.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to
find the project where you want to use the runner.
1. Select **Settings > CI/CD**.
1. Expand **Runners**.
1. In the **Project runners** section, note the URL and token.
1. [Register the runner](https://docs.gitlab.com/runner/register/).
@ -273,8 +274,9 @@ You must have at least the Maintainer role for:
To enable a project runner for a project:
1. On the top bar, select **Main menu > Projects** and find the project where you want to enable the runner.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to
find the project where you want to enable the runner.
1. Select **Settings > CI/CD**.
1. Expand **Runners**.
1. In the **Project runners** area, by the runner you want, select **Enable for this project**.
@ -292,8 +294,9 @@ but can also be changed later.
To lock or unlock a project runner:
1. On the top bar, select **Main menu > Projects** and find the project where you want to enable the runner.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to
find the project where you want to enable the runner.
1. Select **Settings > CI/CD**.
1. Expand **Runners**.
1. Find the project runner you want to lock or unlock. Make sure it's enabled. You cannot lock shared or group runners.
1. Select **Edit** (**{pencil}**).

View File

@ -184,10 +184,10 @@ ID token authentication is now always available, and JSON Web Token access is al
To enable automatic ID token authentication:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand **Token Access**.
1. Toggle **Limit JSON Web Token (JWT) access** to enabled.
1. Turn on the **Limit JSON Web Token (JWT) access** toggle.
<!--- end_remove -->

View File

@ -29,9 +29,9 @@ tool.
To add a secure file to a project:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. In the **Secure Files** section, select **Expand**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand the **Secure Files** section.
1. Select **Upload File**.
1. Find the file to upload, select **Open**, and the file upload begins immediately.
The file shows up in the list when the upload is complete.

View File

@ -72,8 +72,8 @@ Use this regex for commonly used test tools.
To see the evolution of your project code coverage over time,
you can view a graph or download a CSV file with this data.
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Analytics > Repository**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. On the left sidebar, select **Analyze > Repository analytics**.
The historic data for each job is listed in the dropdown list above the graph.

View File

@ -26,8 +26,8 @@ Prerequisite:
To create a trigger token:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand **Pipeline triggers**.
1. Enter a description and select **Add trigger**.
- You can view and copy the full token for all triggers you have created.
@ -153,8 +153,8 @@ users with the Owner and Maintainer role can view the values.
To revoke a trigger token:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > CI/CD**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > CI/CD**.
1. Expand **Pipeline triggers**.
1. To the left of the trigger token you want to revoke, select **Revoke** (**{remove}**).

View File

@ -194,8 +194,9 @@ Prerequisite:
To add an instance variable:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Settings > CI/CD** and expand the **Variables** section.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Settings > CI/CD** and expand the **Variables** section.
1. Select **Add variable** and fill in the details:
- **Key**: Must be one line, with no spaces, using only letters, numbers, or `_`.
- **Value**: In [GitLab 13.3 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/220028),

View File

@ -62,7 +62,7 @@ Prerequisites:
To create a group:
1. On the top bar, select **Create new... > New group**.
1. On the left sidebar, at the top, select **Create new** (**{plus}**) and **New group**.
1. Select **Create group**.
1. Complete the fields. Name your group `Paperclip Software Factory`.
1. Select **Create group**.
@ -98,8 +98,8 @@ projects you create later.
To create each label:
1. On the top bar, select **Main menu > Group** and find your **Paperclip Software Factory** group.
1. On the left sidebar, select **Group information > Labels**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your **Paperclip Software Factory** group.
1. Select **Manage > Labels**.
1. Select **New label**.
1. In the **Title** field, enter the name of the label. Start with `Frontend`.
1. Optional. Select a color by selecting from the available colors, or enter a hex color value for
@ -123,8 +123,8 @@ to manage issues from all the projects that you might create later in this group
To create a new group issue board:
1. On the top bar, select **Main menu > Group** and find your **Paperclip Software Factory** group.
1. On the left sidebar, select **Issues > Boards**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your **Paperclip Software Factory** group.
1. Select **Plan > Issue boards**.
1. Create the UX workflow and Frontend workflow boards.
To create the **UX workflow** issue board:

View File

@ -33,7 +33,7 @@ Compliance frameworks are configured in top-level groups. In this tutorial, you
To create the new group:
1. On the top bar, select **Create new... > New group**.
1. On the left sidebar, at the top, select **Create new** (**{plus}**) and **New group**.
1. Select **Create group**.
1. In the **Group name** field, enter `Tutorial group`.
1. Select **Create group**.
@ -46,7 +46,7 @@ projects with the compliance framework applied.
To create the compliance pipeline project:
1. On the top bar, select **Main menu > Groups** and find the `Tutorial group` group.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the `Tutorial group` group.
1. Select **New project**.
1. Select **Create blank project**.
1. In the **Project name** field, enter `Tutorial compliance project`.
@ -54,8 +54,8 @@ To create the compliance pipeline project:
To add compliance pipeline configuration to `Tutorial compliance project`:
1. On the top bar, select **Main menu > Projects** and find the `Tutorial compliance project` project.
1. On the left sidebar, select **CI/CD > Editor**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the `Tutorial compliance project` project.
1. Select **Build > Pipeline editor**.
1. Select **Configure pipeline**.
1. In the pipeline editor, replace the default configuration with:
@ -74,8 +74,8 @@ The compliance framework is configured in the [new group](#create-a-new-group).
To configure the compliance framework:
1. On the top bar, select **Main menu > Groups** and find the `Tutorial group` group.
1. On the left sidebar, select **Settings > General**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the `Tutorial group` group.
1. Select **Settings > General**.
1. Expand **Compliance frameworks**.
1. Select **Add framework**.
1. In the **Name** field, enter `Tutorial compliance framework`.
@ -87,8 +87,8 @@ To configure the compliance framework:
For convenience, make the new compliance framework the default for all new projects in the group:
1. On the top bar, select **Main menu > Groups** and find the `Tutorial group` group.
1. On the left sidebar, select **Settings > General**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the `Tutorial group` group.
1. Select **Settings > General**.
1. Expand **Compliance frameworks**.
1. In the row for `Tutorial compliance framework`, select **Options** (**{ellipsis_v}**).
1. Select **Set default**.
@ -100,8 +100,8 @@ compliance pipeline configuration in their pipelines.
To create a new project for running the compliance pipeline configuration:
1. On the top bar, select **Main menu > Groups** and find the `Tutorial group` group.
1. Select **New project**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the `Tutorial group` group.
1. Select **Create new** (**{plus}**) and **New project/repository**.
1. Select **Create blank project**.
1. In the **Project name** field, enter `Tutorial project`.
1. Select **Create project**.
@ -114,8 +114,8 @@ pipeline configuration in `Tutorial compliance project`.
To run the compliance pipeline configuration in `Tutorial project`:
1. On the top bar, select **Main menu > Projects** and find the `Tutorial project` project.
1. Select **CI/CD Pipelines**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the `Tutorial project` project.
1. Select **Build > Pipelines**.
1. Select **Run pipeline**.
1. On the **Run pipeline** page, select **Run pipeline**.
@ -132,8 +132,8 @@ compliance pipeline configuration to refer to it.
To create the regular pipeline configuration:
1. On the top bar, select **Main menu > Projects** and find the `Tutorial project` project.
1. On the left sidebar, select **CI/CD > Editor**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the `Tutorial project` project.
1. Select **Build > Pipeline editor**.
1. Select **Configure pipeline**.
1. In the pipeline editor, replace the default configuration with:
@ -148,8 +148,8 @@ To create the regular pipeline configuration:
To combine the new project pipeline configuration with the compliance pipeline configuration:
1. On the top bar, select **Main menu > Projects** and find the `Tutorial compliance project` project.
1. On the left sidebar, select **CI/CD > Editor**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the `Tutorial compliance project` project.
1. Select **Build > Pipeline editor**.
1. In the existing configuration, add:
```yaml
@ -162,8 +162,8 @@ To combine the new project pipeline configuration with the compliance pipeline c
To confirm the regular pipeline configuration is combined with the compliance pipeline configuration:
1. On the top bar, select **Main menu > Projects** and find the `Tutorial project` project.
1. Select **CI/CD Pipelines**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the `Tutorial project` project.
1. Select **Build > Pipelines**.
1. Select **Run pipeline**.
1. On the **Run pipeline** page, select **Run pipeline**.

View File

@ -196,6 +196,7 @@ To check if runners are running in the GKE cluster, you can either:
```
- Check the job log in GitLab:
1. On the top bar, select **Main menu > Projects** and find the project.
1. On the left sidebar, select **CI/CD > Jobs** and find the job.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**)
to find your project.
1. Select **Build > Jobs** and find the job.
1. To view the job log, select the job status.

View File

@ -24,7 +24,7 @@ Container scanning configuration is added to the pipeline configuration of a pro
To create the new project
1. On the top bar, select **Create new... > New project/repository**.
1. On the left sidebar, at the top, select **Create new** (**{plus}**) and **New project/repository**.
1. Select **Create blank project**.
1. In **Project name**, enter `Tutorial container scanning project`.
1. In **Project URL**, select a namespace for the project.

View File

@ -33,8 +33,7 @@ rename the `alex` namespace to `alex-user`, and `alex-group` namespace to the no
## Create a group
1. On the top bar, select **Main menu > Groups > View all groups**.
1. On the right of the page, select **New group**.
1. On the left sidebar, at the top, select **Create new** (**{plus}**) and **New group**.
1. In **Group name**, enter a name for the group.
1. In **Group URL**, enter a path for the group, which is used as the namespace.
Don't worry about the actual path, this is only temporary. You'll change this URL to the username of the personal namespace in the [final step](#rename-the-new-group-namespace-to-the-original-username).
@ -57,8 +56,8 @@ Before you start the transfer process, make sure you:
To transfer a project to a group:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > General**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > General**.
1. Expand **Advanced**.
1. Under **Transfer project**, choose the group to transfer the project to.
1. Select **Transfer project**.
@ -73,7 +72,7 @@ From the moment you rename the personal namespace, the username becomes availabl
To [change a user's username](../../user/profile/index.md#change-your-username):
1. On the top bar, in the top-right corner, select your avatar.
1. On the left sidebar, select your avatar.
1. Select **Edit profile**.
1. On the left sidebar, select **Account**.
1. In the **Change username** section, enter a new username as the path.
@ -85,8 +84,8 @@ Finally, rename the new group's URL to the username of the original personal nam
To [change your group path](../../user/group/manage.md#change-a-groups-path) (group URL):
1. On the top bar, select **Main menu > Groups** and find your group.
1. On the left sidebar, select **Settings > General page**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
1. Select **Settings > General**.
1. Expand the **Advanced** section.
1. Under **Change group URL**, enter the user's original username.
1. Select **Change group URL**.

View File

@ -59,7 +59,7 @@ a random buffer as a parameter.
To create the two fuzz target files:
1. On the top bar, select **Main menu > Projects** and select the `fuzz-testing-demo` project.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the `fuzz-testing-demo` project.
1. Create a file in the root directory of the project.
1. Name the file `fuzz-sayhello.js` and add the following code:

View File

@ -50,8 +50,7 @@ If you haven't done so already, create a blank GitLab project for your Hugo site
To create a blank project, in GitLab:
1. On the top bar, select **Main menu > Projects > View all projects**.
1. On the right of the page, select **New project**.
1. On the left sidebar, at the top, select **Create new** (**{plus}**) and **New project/repository**.
1. Select **Create blank project**.
1. Enter the project details:
- In the **Project name** field, enter the name of your project. The name must start with a lowercase or uppercase letter (`a-zA-Z`), digit (`0-9`), emoji, or underscore (`_`). It can also contain dots (`.`), pluses (`+`), dashes (`-`), or spaces.

View File

@ -17,7 +17,7 @@ Provide feedback in
To view the new sidebar:
1. On the top bar, in the upper-right corner, select your avatar.
1. On the left sidebar, select your avatar.
1. Turn on the **New navigation** toggle.
To turn off this sidebar, return to your avatar and turn off the toggle.

View File

@ -83,8 +83,7 @@ Here's an overview of what we're going to do:
To start, create a sample project in GitLab.
1. In GitLab, on the top bar, select **Main menu > Projects > View all projects**.
1. On the right of the page, select **New project**.
1. In GitLab, on the left sidebar, at the top, select **Create new** (**{plus}**) and **New project/repository**.
1. For **Project name**, enter `My sample project`. The project slug is generated for you.
This slug is the URL you can use to access the project after it's created.
1. Ensure **Initialize repository with a README** is selected.

View File

@ -45,8 +45,7 @@ You first create a group, Development, to serve as the parent group for the whol
software development organization.
1. Open your self-managed GitLab instance.
1. On the top bar, select **Main menu > Groups > View all groups**, and on the
right, select **New group**.
1. On the left sidebar, at the top, select **Create new** (**{plus}**) and **New group**.
1. Select **Create group**.
1. In **Group name**, enter `Development`.
1. Enter `development-group` for the group in **Group URL**. You see a message
@ -80,7 +79,8 @@ You will now create subgroups to reflect this organization structure.
> Subgroups and projects must have visibility settings that are at least as restrictive as the visibility setting of their parent group. For example, you cannot have a private parent group and a public subgroup.
1. On the top bar, select **Main menu > Groups > View all groups**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **View all your groups**.
1. Select **Development**. You should see an **Owner** label next to the group
name as you have the Owner role.
1. On the parent group's overview page, in the upper-right corner, select **New subgroup**.
@ -106,7 +106,8 @@ for the organization.
You will now manually create the users for your organization. These are test
users. To create the first test user, Alex Smith:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. On the left sidebar, select **Overview > Users**.
1. Select **New user**.
1. Complete the required fields:
@ -148,8 +149,8 @@ You can give users access to all projects in a group by adding them to that grou
First, you will add all the users to the parent group, Development.
1. On the top bar, select **Main menu > Groups** and find **Development**.
1. On the left sidebar, select **Group information > Members**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the **Development** group.
1. Select **Manage > Members**.
1. Select **Invite members**.
1. Complete the fields for the product manager, Alex Smith.
- Give Alex the **Owner** role. The role applies to all subgroups projects
@ -188,7 +189,7 @@ subgroups with the same role.
You can filter a subgroup to show which users are direct members of that subgroup,
and which members have inherited membership of that subgroup from the parent group.
1. On the top bar, select **Main menu > Groups** and find **Development**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the **Development** group.
1. Select the **User Experience** subgroup.
1. On the left sidebar, select **Subgroup information > Members**.
1. On the **Members** page, select the **Filter members** field.
@ -208,8 +209,8 @@ them from the parent group.
Go back to the parent group and remove everyone except Alex Smith:
1. On the top bar, select **Main menu > Groups** and find the parent group.
1. On the left sidebar, select **Group information > Members**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the parent group.
1. Select **Manage > Members**.
1. On the member row you want to remove, select the vertical ellipsis (**{ellipsis_v}**)
and then select **Remove member**.
1. In the **Remove member** confirmation box, select the
@ -227,7 +228,7 @@ You will now add users directly to the different subgroups.
### Add users to the Product Management subgroup
1. On the top bar, select **Main menu > Groups** and find **Development**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the **Development** group.
1. Select the **Product Management** subgroup.
1. On the left sidebar, select **Subgroup information > Members**.
@ -266,7 +267,7 @@ add users to the Engineering subgroup.
You are now going to invite some users to the Engineering subgroup.
1. On the top bar, select **Main menu > Groups** and find **Development**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the **Development** group.
1. Select the **Engineering** subgroup.
1. On the left sidebar, select **Subgroup information > Members**. The only
members are you and Alex, both with the Owner role. These are inherited roles.
@ -311,7 +312,7 @@ included in both nested subgroups due to inherited permissions.
Therefore, you will add these users to the appropriate nested subgroup directly
rather than to the User Experience subgroup.
1. On the top bar, select **Main menu > Groups** and find **Development**.
1. 1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the **Development** group.
1. Select the **User Experience** subgroup, and then the **UX Design** subgroup.
1. On the left sidebar, select **Subgroup information > Members**. You and Alex
Smith are currently the only members. These are inherited roles.
@ -370,8 +371,8 @@ need to work on, and that piece of work is for the whole organization. To organi
that work, you are going to create a project in the Development parent group, and
add different users to that project.
1. On the top bar, select **Main menu > Groups** and find **Development**.
1. Select **Development**, and in the top-right of the page, select **New project**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the **Development** group.
1. Select **Create new** (**{plus}**) and **New project/repository**.
1. Select **Create blank project**.
1. Enter the project details:
- In the **Project name** field, enter `Release 2.0` as the name of your project.
@ -399,8 +400,8 @@ directly to the project.
## Add users to the project and parent group
1. On the top bar, select **Main menu > Projects** and find the **Release 2.0** project.
1. On the left sidebar, select **Project information > Members**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the **Release 2.0** project.
1. On the left sidebar, select **Manage > Members**.
1. Select **Invite members**. Invite the following users:
| User | Role | Access expiration date |
@ -432,8 +433,8 @@ projects by assigning roles.
You can also change the visibility of individual features in a project. You cannot
do this for groups.
1. On the top bar, select **Main menu > Projects** and find the **Release 2.0** project.
1. On the left sidebar, select **Settings > General**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the **Release 2.0** project.
1. Select **Settings > General**.
1. Expand **Visibility, project features, permissions**.
1. In **Project visibility**, you can who can see the project in the public access
directory. Because the parent group is private, you can only select **Private**.

View File

@ -58,8 +58,8 @@ Before you move your project to a group:
Now you're ready to move your project:
1. On the top bar, select **Main menu > Projects** and find your project.
1. On the left sidebar, select **Settings > General**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your project.
1. Select **Settings > General**.
1. Expand **Advanced**.
1. Under **Transfer project**, choose the group to transfer the project to.
1. Select **Transfer project**.
@ -79,7 +79,7 @@ your related resources and tools, such as websites and package managers.
You can now view your project in your group:
1. On the top bar, select **Main menu > Groups** and find your group.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find your group.
1. Look for your project under **Subgroups and projects**.
Start enjoying the benefits of a group! For example, as the group Owner, you can

View File

@ -24,8 +24,7 @@ To set up a scan result policy:
## Create a test project
1. On the top bar, select **Main menu > Projects**.
1. Select **New project**.
1. On the left sidebar, at the top, select **Create new** (**{plus}**) and **New project/repository**.
1. Select **Create blank project**.
1. Complete the fields.
- **Project name**: `sast-scan-result-policy`.
@ -36,8 +35,8 @@ To set up a scan result policy:
Next, you'll add a scan result policy to your test project:
1. On the top bar, select **Main menu > Projects** and find the `sast-scan-result-policy` project.
1. On the left sidebar, go to **Security and Compliance > Policies**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the `sast-scan-result-policy` project.
1. Select **Secure > Policies**.
1. Select **New policy**.
1. In **Scan result policy**, select **Select policy**.
1. Complete the fields.
@ -61,8 +60,8 @@ Next, you'll add a scan result policy to your test project:
The application creates a new project to store the policies linked to it, and creates a merge request to define the policy.
1. Select **Merge**.
1. On the top bar, select **Main menu > Projects** and select the `sast-scan-result-policy` project.
1. On the left sidebar, select **Security and Compliance > Policies**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the `sast-scan-result-policy` project.
1. Select **Secure > Policies**.
You can see the list of policies added in the previous steps.
@ -70,8 +69,8 @@ Next, you'll add a scan result policy to your test project:
Nice work, you've created a scan result policy. To test it, create some vulnerabilities and check the result:
1. On the top bar, select **Main menu > Projects** and select the `sast-scan-result-policy` project.
1. On the left sidebar, select **Repository > Files**.
1. On the left sidebar, at the top, select **Search GitLab** (**{search}**) to find the `sast-scan-result-policy` project.
1. Select **Code > Repository**.
1. From the **Add** (**{plus}**) dropdown list, select **New file**.
1. In the **Filename** field enter `main.ts`.
1. In the file's content, copy the following:

View File

@ -12,8 +12,9 @@ from planning to monitoring.
To see DevOps Reports:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Analytics > DevOps Reports**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Analytics > DevOps Reports**.
## DevOps Score

View File

@ -18,8 +18,9 @@ Prerequisite:
To view instance-level analytics:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Analytics**, then one of the available analytics:
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Analytics**, then one of the available analytics:
- [DevOps Reports](dev_ops_reports.md): Provides an overview of your entire instance's feature usage.
- [Usage Trends](usage_trends.md): Shows how much data your instance contains, and how the data is changing.

View File

@ -19,8 +19,9 @@ Usage Trends data refreshes daily.
To view Usage Trends:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Analytics > Usage Trends**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Analytics > Usage Trends**.
## Total counts

View File

@ -9,12 +9,13 @@ info: To determine the technical writer assigned to the Stage/Group associated w
Several options are available for customizing the appearance of a self-managed instance
of GitLab. To access these settings:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Settings > Appearance**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Settings > Appearance**.
## Top bar
## Navigation bar
By default, the **top bar** has the GitLab logo, but this can be customized with
By default, the navigation bar has the GitLab logo, but this can be customized with
any image desired. It is optimized for images 28px high (any width), but any image can be
used (less than 1 MB) and it is automatically resized.
@ -82,8 +83,9 @@ description, and icon.
To configure the PWA settings:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Settings > Appearance**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Settings > Appearance**.
1. Scroll to the **Progressive Web App (PWA)** section.
1. Complete the fields.
- **Icon**: If you use the standard GitLab icon, it is available in sizes 192x192 pixels,

View File

@ -57,8 +57,9 @@ To display messages to users on your GitLab instance, add a broadcast message.
To add a broadcast message:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Messages**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Messages**.
1. Add the text for the message to the **Message** field. You can style a message's content using Markdown, emoji, and the `a` and `br` HTML tags.
The `br` tag inserts a line break. The `a` HTML tag accepts `class` and `style` attributes with the following CSS properties:
- `color`
@ -84,8 +85,9 @@ If you must make changes to a broadcast message, you can edit it.
To edit a broadcast message:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Messages**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Messages**.
1. From the list of broadcast messages, select the edit button for the message.
1. After making the required changes, select **Update broadcast message**.
@ -98,8 +100,9 @@ You can delete a broadcast message while it's active.
To delete a broadcast message:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Messages**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Messages**.
1. From the list of broadcast messages, select the delete button for the message.
When a broadcast message is deleted, it's removed from the list of broadcast messages.

View File

@ -31,8 +31,9 @@ You can also [revoke](#revoke-a-users-personal-access-token) and [delete](#delet
To access the Credentials inventory:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Credentials**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Credentials**.
## Revoke a user's personal access token

View File

@ -33,7 +33,9 @@ To set project templates at the group level, see [Custom group-level project tem
To select the group to use as the source for the project templates:
1. On the top bar, navigate to **Main menu > Admin > Settings > Templates**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Settings > Templates**.
1. Expand **Custom project templates**.
1. Select a group to use.
1. Select **Save changes**.

View File

@ -33,8 +33,9 @@ set values are presented as **Too large** are cannot be expanded in the UI.
To configure these values:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Settings > General**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Settings > General**.
1. Expand **Diff limits**.
1. Enter a value for the diff limit.
1. Select **Save changes**.

View File

@ -22,8 +22,9 @@ For information about email notifications originating from GitLab, read
## Sending emails to users from GitLab
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Users**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Users**.
1. Select **Send email to users**.
![administrators](img/email1.png)

View File

@ -40,7 +40,8 @@ An administrator can flag a user as external by either of the following methods:
- [Through the API](../../api/users.md#user-modification).
- Using the GitLab UI:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. On the left sidebar, select **Overview > Users** to create a new user or edit an existing one.
There, you can find the option to flag the user as external.
@ -55,8 +56,9 @@ Additionally, users can be set as external users using:
By default, new users are not set as external users. This behavior can be changed
by an administrator:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Settings > General**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Settings > General**.
1. Expand the **Account and limit** section.
If you change the default behavior of creating new users as external, you

View File

@ -11,8 +11,9 @@ You can configure various settings for GitLab Geo sites. For more information, s
On either the primary or secondary site:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Geo > Sites**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Geo > Sites**.
## Common settings
@ -71,8 +72,9 @@ the primary uses the secondary's internal URL to contact it directly.
The internal URL defaults to external URL. To change it:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Geo > Sites**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Geo > Sites**.
1. Select **Edit** on the site you want to customize.
1. Edit the internal URL.
1. Select **Save changes**.

View File

@ -10,8 +10,8 @@ type: reference
The Admin Area provides a web UI to manage and configure features of GitLab
self-managed instances. If you are an administrator,to access the Admin Area:
- In GitLab 14.0 and later: on the top bar, select **Main menu > Admin**.
- In GitLab 13.12 and earlier: on the top bar, select the Admin Area icon (**{admin}**).
- In GitLab 16.1 and later: on the left sidebar, expand the top-most chevron (**{chevron-down}**), then select **Admin Area**.
- In GitLab 16.0 and earlier: on the top bar, select **Main menu > Admin**.
NOTE:
Only administrators can access the Admin Area.
@ -22,8 +22,9 @@ You can administer all projects in the GitLab instance from the Admin Area's Pro
To access the Projects page:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Projects**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Projects**.
1. Select the **All**, **Private**, **Internal**, or **Public** tab to list only
projects of that criteria.
@ -73,8 +74,9 @@ You can combine the filter options. For example, to list only public projects wi
You can administer all users in the GitLab instance from the Admin Area's Users page:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Users**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Users**.
To list users matching a specific criteria, select one of the following tabs on the **Users** page:
@ -117,7 +119,8 @@ This allows the administrator to "see what the user sees," and take actions on b
You can impersonate a user in the following ways:
- Through the UI:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. On the left sidebar, select **Overview > Users**.
1. From the list of users, select a user.
1. Select **Impersonate**.
@ -135,8 +138,9 @@ By default, impersonation is enabled. GitLab can be configured to [disable imper
When using authentication providers, administrators can see the identities for a user:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Users**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Users**.
1. From the list of users, select a user.
1. Select **Identities**.
@ -181,8 +185,9 @@ GitLab billing is based on the number of [**Billable users**](../../subscription
You must be an administrator to manually add emails to users:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Users** (`/admin/users`).
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Users**.
1. Locate the user and select them.
1. Select **Edit**.
1. In **Email**, enter the new email address. This adds the new email address to the
@ -197,8 +202,9 @@ The [Cohorts](user_cohorts.md) tab displays the monthly cohorts of new users and
By default, users can create groups. To prevent a user from creating a top level group:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Users** (`/admin/users`).
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Users**.
1. Locate the user and select them.
1. Select **Edit**.
1. Clear the **Can create group** checkbox.
@ -212,8 +218,9 @@ You can administer all groups in the GitLab instance from the Admin Area's Group
To access the Groups page:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Groups**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Groups**.
For each group, the page displays their name, description, size, number of projects in the group,
number of members, and whether the group is private, internal, or public. To edit a group, in the group's row, select **Edit**. To delete the group, in the group's row, select **Delete**.
@ -237,8 +244,9 @@ You can administer all topics in the GitLab instance from the Admin Area's Topic
To access the Topics page:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Topics**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Topics**.
For each topic, the page displays its name and the number of projects labeled with the topic.
@ -265,8 +273,9 @@ page. For more details, see [Gitaly](../../administration/gitaly/index.md).
To access the **Gitaly Servers** page:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Gitaly Servers**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Gitaly Servers**.
For each Gitaly server, the following details are listed:
@ -289,8 +298,9 @@ You can administer all runners in the GitLab instance from the Admin Area's **Ru
To access the **Runners** page:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Runners**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Runners**.
#### Search and filter runners
@ -315,8 +325,9 @@ You can also filter runners by status, type, and tag. To filter:
You can delete multiple runners at the same time.
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Runners**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Runners**.
1. To the left of the runners you want to delete, select the checkbox.
To select all of the runners on the page, select the checkbox above
the list.
@ -345,8 +356,9 @@ You can administer all jobs in the GitLab instance from the Admin Area's Jobs pa
To access the Jobs page:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **CI/CD > Jobs**. All jobs are listed, in descending order of job ID.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **CI/CD > Jobs**. All jobs are listed, in descending order of job ID.
1. Select the **All** tab to list all jobs. Select the **Pending**, **Running**, or **Finished**
tab to list only jobs of that status.

View File

@ -28,8 +28,9 @@ To activate your instance with an activation code:
- Your subscription confirmation email.
- The [Customers Portal](https://customers.gitlab.com/customers/sign_in), on the **Manage Purchases** page.
1. Sign in to your GitLab self-managed instance.
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Subscription**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Subscription**.
1. Paste the activation code in **Activation code**.
1. Read and accept the terms of service.
1. Select **Activate**.

View File

@ -18,8 +18,9 @@ link to the **Add license** page should be displayed.
Otherwise, to add your license:
1. Sign in to GitLab as an administrator.
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Settings > General**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Settings > General**.
1. In the **Add License** area, add a license by either uploading the file or entering the key.
1. Select the **Terms of Service** checkbox.
1. Select **Add license**.
@ -95,8 +96,9 @@ To go back to Free features, [delete all expired licenses](#remove-a-license).
To remove a license from a self-managed instance:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Subscription**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Subscription**.
1. Select **Remove license**.
Repeat these steps to remove all licenses, including those applied in the past.
@ -105,8 +107,9 @@ Repeat these steps to remove all licenses, including those applied in the past.
To view your license details:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Subscription**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Subscription**.
You can add and view more than one license, but only the latest license in
the current date range is the active license.

View File

@ -19,8 +19,10 @@ and can no longer be changed:
To enable merge request approval settings for an instance:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **{push-rules}** **Push Rules**, and expand **Merge request approvals**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Push Rules**.
1. Expand **Merge request approvals**.
1. Choose the required options.
1. Select **Save changes**.

View File

@ -42,8 +42,9 @@ sign in.
To view user sign ups pending approval:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Users**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Users**.
1. Select the **Pending approval** tab.
### Approve or reject a user sign up
@ -52,8 +53,9 @@ A user sign up pending approval can be approved or rejected from the Admin Area.
To approve or reject a user sign up:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Users**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Users**.
1. Select the **Pending approval** tab.
1. Optional. Select a user.
1. Select the **{settings}** **User administration** dropdown list.
@ -77,8 +79,9 @@ administrators can choose to block the user.
Users can be blocked [via an abuse report](review_abuse_reports.md#blocking-users),
by removing them in LDAP, or directly from the Admin Area. To do this:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Users**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Users**.
1. Optional. Select a user.
1. Select the **{settings}** **User administration** dropdown list.
1. Select **Block**.
@ -100,8 +103,9 @@ Users can also be blocked using the [GitLab API](../../api/users.md#block-user).
A blocked user can be unblocked from the Admin Area. To do this:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Users**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Users**.
1. Select the **Blocked** tab.
1. Optional. Select a user.
1. Select the **{settings}** **User administration** dropdown list.
@ -116,8 +120,9 @@ Users can also be unblocked using the [GitLab API](../../api/users.md#unblock-us
The unblock option may be unavailable for LDAP users. To enable the unblock option,
the LDAP identity first needs to be deleted:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Users**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Users**.
1. Select the **Blocked** tab.
1. Select a user.
1. Select the **Identities** tab.
@ -155,8 +160,9 @@ Users are notified about account deactivation if
A user can be deactivated from the Admin Area. To do this:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Users**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Users**.
1. Optional. Select a user.
1. Select the **{settings}** **User administration** dropdown list.
1. Select **Deactivate**.
@ -182,8 +188,9 @@ Administrators can enable automatic deactivation of users who either:
To do this:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Settings > General**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Settings > General**.
1. Expand the **Account and limit** section.
1. Under **Dormant users**, check **Deactivate dormant users after a period of inactivity**.
1. Under **Days of inactivity before deactivation**, enter the number of days before deactivation. Minimum value is 90 days.
@ -201,8 +208,9 @@ A deactivated user can be activated from the Admin Area.
To do this:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Users**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Users**.
1. Select the **Deactivated** tab.
1. Optional. Select a user.
1. Select the **{settings}** **User administration** dropdown list.
@ -230,8 +238,9 @@ To block a user and hide their contributions, administrators can ban the user.
Users can be banned using the Admin Area. To do this:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Users**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Users**.
1. Optional. Select a user.
1. Select the **{settings}** **User administration** dropdown list.
1. Select **Ban user**.
@ -242,8 +251,9 @@ The banned user does not consume a [seat](../../subscriptions/self_managed/index
A banned user can be unbanned using the Admin Area. To do this:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Users**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Users**.
1. Select the **Banned** tab.
1. Optional. Select a user.
1. Select the **{settings}** **User administration** dropdown list.
@ -256,8 +266,9 @@ The user's state is set to active and they consume a
Use the Admin Area to delete users.
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Users**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Users**.
1. Select the **Banned** tab.
1. Optional. Select a user.
1. Select the **{settings}** **User administration** dropdown list.
@ -270,8 +281,9 @@ You can only delete a user if there are inherited or direct owners of a group. Y
You can also delete a user and their contributions, such as merge requests, issues, and groups of which they are the only group owner.
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Users**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Users**.
1. Select the **Banned** tab.
1. Optional. Select a user.
1. Select the **{settings}** **User administration** dropdown list.

View File

@ -21,8 +21,9 @@ GitLab team members can view more information in this confidential epic:
## Configure Git abuse rate limiting
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Settings > Reporting**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Settings > Reporting**.
1. Expand **Git abuse rate limit**.
1. Update the Git abuse rate limit settings:
1. Enter a number in the **Number of repositories** field, greater than or equal to `0` and less than or equal to `10,000`. This number specifies the maximum amount of unique repositories a user can download in the specified time period before they're banned. When set to `0`, Git abuse rate limiting is disabled.
@ -40,8 +41,9 @@ If automatic banning is enabled, an email notification is sent when a user is ab
## Unban a user
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Users**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Users**.
1. Select the **Banned** tab and search for the account you want to unban.
1. From the **User administration** dropdown list select **Unban user**.
1. On the confirmation dialog, select **Unban user**.

View File

@ -40,8 +40,9 @@ Spamcheck is only available for package-based installations:
## Configure GitLab to use Spamcheck
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Settings > Reporting**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Settings > Reporting**.
1. Expand **Spam and Anti-bot Protection**.
1. Update the Spam Check settings:
1. Check the "Enable Spam Check via external API endpoint" checkbox.

View File

@ -16,8 +16,9 @@ reports in the Admin Area.
To receive notifications of new abuse reports by email:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Settings > Reporting**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Settings > Reporting**.
1. Expand the **Abuse reports** section.
1. Provide an email address and select **Save changes**.
@ -33,8 +34,9 @@ To find out more about reporting abuse, see
To access abuse reports:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Abuse Reports**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Abuse Reports**.
There are 3 ways to resolve an abuse report, with a button for each method:

View File

@ -11,7 +11,7 @@ You can customize some of the content in emails sent from your GitLab instance.
## Custom logo
The logo in the header of some emails can be customized, see the [logo customization section](../appearance.md#top-bar).
The logo in the header of some emails can be customized, see the [logo customization section](../appearance.md#navigation-bar).
## Include author name in email notification email body **(PREMIUM SELF)**

View File

@ -34,6 +34,7 @@ How do we measure the activity of users? GitLab considers a user active if:
To view user cohorts:
1. On the top bar, select **Main menu > Admin**.
1. On the left sidebar, select **Overview > Users**.
1. On the left sidebar, expand the top-most chevron (**{chevron-down}**).
1. Select **Admin Area**.
1. Select **Overview > Users**.
1. Select the **Cohorts** tab.

View File

@ -93,7 +93,7 @@ After migration:
- Stay public when copied into a public group.
- Become private when copied into a private group.
If used a private network on your source instance to hide content from the general public,
If you used a private network on your source instance to hide content from the general public,
make sure to have a similar setup on the destination instance, or to import into a private group.
### Prerequisites

View File

@ -53050,7 +53050,7 @@ msgstr ""
msgid "Your comment could not be submitted! Please check your network connection and try again."
msgstr ""
msgid "Your comment could not be updated! Please check your network connection and try again."
msgid "Your comment could not be updated because %{reason}."
msgstr ""
msgid "Your comment will be discarded."

View File

@ -57,9 +57,9 @@
"@gitlab/favicon-overlay": "2.0.0",
"@gitlab/fonts": "^1.2.0",
"@gitlab/svgs": "3.53.0",
"@gitlab/ui": "64.6.1",
"@gitlab/ui": "64.6.2",
"@gitlab/visual-review-tools": "1.7.3",
"@gitlab/web-ide": "0.0.1-dev-20230606031511",
"@gitlab/web-ide": "0.0.1-dev-20230614124516",
"@mattiasbuelens/web-streams-adapter": "^0.1.0",
"@popperjs/core": "^2.11.2",
"@rails/actioncable": "6.1.4-7",

View File

@ -13,7 +13,7 @@ module QA
base.class_eval do
view 'app/assets/javascripts/issues/show/components/header_actions.vue' do
element :issue_actions_dropdown
element :mobile_dropdown
element :mobile_close_issue_button
element :mobile_reopen_issue_button
end
@ -21,12 +21,12 @@ module QA
end
def click_close_issue_button
find('[data-qa-selector="issue_actions_dropdown"] > button').click
find('[data-testid="mobile-dropdown"] > button').click
find_element(:mobile_close_issue_button, visible: false).click
end
def has_reopen_issue_button?
find('[data-qa-selector="issue_actions_dropdown"] > button').click
find('[data-testid="mobile-dropdown"] > button').click
has_element?(:mobile_reopen_issue_button)
end
end

View File

@ -10,8 +10,8 @@ module QA
def self.included(base)
super
base.view 'app/assets/javascripts/vue_shared/issuable/show/components/issuable_title.vue' do
element :title_content, required: true
base.view 'app/assets/javascripts/issues/show/components/title.vue' do
element :issue_title, required: true
end
end
end

View File

@ -49,7 +49,7 @@ module QA
end
base.view 'app/assets/javascripts/sidebar/components/sidebar_editable_item.vue' do
element :edit_link
element :edit_button
end
base.view 'app/helpers/dropdowns_helper.rb' do
@ -59,7 +59,7 @@ module QA
def assign_milestone(milestone)
wait_milestone_block_finish_loading do
click_element(:edit_link)
click_element(:edit_button)
click_on(milestone.title)
end
@ -134,7 +134,7 @@ module QA
def select_labels(labels)
within_element(:labels_block) do
click_element(:edit_link)
click_element(:edit_button)
labels.each do |label|
within_element(:labels_dropdown_content) do
@ -144,7 +144,7 @@ module QA
end
end
click_element(:title_content) # to blur dropdown
click_element(:issue_title) # to blur dropdown
end
def toggle_more_assignees_link

View File

@ -168,7 +168,7 @@ module QA
def select_filter_with_text(text)
retry_on_exception do
click_element(:title_content)
click_element(:issue_title)
click_element :discussion_preferences_dropdown
find_element(:filter_menu_item, text: text).click

View File

@ -8,6 +8,7 @@ module QA
include Page::Component::Note
include Page::Component::DesignManagement
include Page::Component::Issuable::Sidebar
include Page::Component::Issuable::Common
# We need to check phone_layout? instead of mobile_layout? here
# since tablets have the regular top navigation bar
prepend Mobile::Page::Project::Issue::Show if Runtime::Env.phone_layout?
@ -17,16 +18,11 @@ module QA
end
view 'app/assets/javascripts/issues/show/components/header_actions.vue' do
element :close_issue_button
element :reopen_issue_button
element :issue_actions_ellipsis_dropdown
element :toggle_issue_state_button
element :desktop_dropdown
element :delete_issue_button
end
view 'app/assets/javascripts/issues/show/components/title.vue' do
element :title_content, required: true
end
view 'app/assets/javascripts/related_issues/components/add_issuable_form.vue' do
element :add_issue_button
end
@ -69,18 +65,18 @@ module QA
# Click by JS is needed to bypass the Moved MR actions popover
# Change back to regular click_element when moved_mr_sidebar FF is removed
# Rollout issue: https://gitlab.com/gitlab-org/gitlab/-/issues/385460
click_by_javascript(find_element(:close_issue_button))
click_by_javascript(find_element(:toggle_issue_state_button, text: 'Close issue'))
end
def has_reopen_issue_button?
has_element?(:reopen_issue_button)
has_element?(:toggle_issue_state_button, text: 'Reopen issue')
end
def has_delete_issue_button?
# Click by JS is needed to bypass the Moved MR actions popover
# Change back to regular click_element when moved_mr_sidebar FF is removed
# Rollout issue: https://gitlab.com/gitlab-org/gitlab/-/issues/385460
click_by_javascript(find('[data-qa-selector="issue_actions_ellipsis_dropdown"] > button'))
click_by_javascript(find('[data-testid="desktop-dropdown"] > button'))
has_element?(:delete_issue_button)
end

View File

@ -775,32 +775,40 @@ RSpec.describe Projects::NotesController, type: :controller, feature_category: :
end
describe 'PUT update' do
let(:note_params) { { note: "New comment" } }
let(:request_params) do
{
namespace_id: project.namespace,
project_id: project,
id: note,
format: :json,
note: {
note: "New comment"
}
note: note_params
}
end
specify { expect(put(:update, params: request_params)).to have_request_urgency(:low) }
subject(:update_note) { put :update, params: request_params }
context "should update the note with a valid issue" do
before do
sign_in(note.author)
project.add_developer(note.author)
before do
sign_in(note.author)
project.add_developer(note.author)
end
specify { expect(update_note).to have_request_urgency(:low) }
context "when the note is valid" do
it "updates the note" do
expect { update_note }.to change { note.reload.note }
end
it "updates the note" do
expect { put :update, params: request_params }.to change { note.reload.note }
it "returns status 200" do
update_note
expect(response).to have_gitlab_http_status(:ok)
end
end
context "doesnt update the note" do
context "when the issue is confidential and the user has guest permissions" do
let(:issue) { create(:issue, :confidential, project: project) }
let(:note) { create(:note, noteable: issue, project: project) }
@ -809,20 +817,38 @@ RSpec.describe Projects::NotesController, type: :controller, feature_category: :
project.add_guest(user)
end
it "disallows edits when the issue is confidential and the user has guest permissions" do
request_params = {
namespace_id: project.namespace,
project_id: project,
id: note,
format: :json,
note: {
note: "New comment"
}
}
expect { put :update, params: request_params }.not_to change { note.reload.note }
it "disallows edits" do
expect { update_note }.not_to change { note.reload.note }
end
it "returns status 404" do
update_note
expect(response).to have_gitlab_http_status(:not_found)
end
end
context "when there are ActiveRecord validation errors" do
before do
allow(note).to receive_message_chain(:errors, :full_messages)
.and_return(['Error 1', 'Error 2'])
allow_next_instance_of(Notes::UpdateService) do |service|
allow(service).to receive(:execute).and_return(note)
end
end
it "does not update the note" do
expect { update_note }.not_to change { note.reload.note }
end
it "returns status 422", :aggregate_failures do
update_note
expect(response).to have_gitlab_http_status(:unprocessable_entity)
expect(response.body).to eq('{"errors":"Error 1 and Error 2"}')
end
end
end
describe 'DELETE destroy' do

View File

@ -2,7 +2,7 @@
require 'spec_helper'
RSpec.describe Snippets::NotesController do
RSpec.describe Snippets::NotesController, feature_category: :team_planning do
let(:user) { create(:user) }
let(:private_snippet) { create(:personal_snippet, :private) }
@ -256,6 +256,59 @@ RSpec.describe Snippets::NotesController do
end
end
describe 'PUT update' do
let(:note_params) { { note: "New comment" } }
let(:request_params) do
{
snippet_id: public_snippet,
id: note_on_public,
format: :json,
note: note_params
}
end
before do
sign_in(note_on_public.author)
end
subject(:update_note) { put :update, params: request_params }
context "when the note is valid" do
it "updates the note" do
expect { update_note }.to change { note_on_public.reload.note }
end
it "returns status 200" do
post :create, params: request_params
expect(response).to have_gitlab_http_status(:ok)
end
end
context "when there are ActiveRecord validation errors" do
before do
allow(note_on_public).to receive_message_chain(:errors, :full_messages)
.and_return(['Error 1', 'Error 2'])
allow_next_instance_of(Notes::UpdateService) do |service|
allow(service).to receive(:execute).and_return(note_on_public)
end
end
it "does not update the note" do
expect { update_note }.not_to change { note_on_public.reload.note }
end
it "returns status 422", :aggregate_failures do
update_note
expect(response).to have_gitlab_http_status(:unprocessable_entity)
expect(response.body).to eq('{"errors":"Error 1 and Error 2"}')
end
end
end
describe 'DELETE destroy' do
let(:request_params) do
{

View File

@ -0,0 +1,48 @@
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe Groups::EnvironmentScopesFinder, feature_category: :secrets_management do
describe '#execute' do
let_it_be(:user) { create(:user) }
let_it_be(:group) { create(:group, :public) }
let!(:environment1) { create(:ci_group_variable, group: group, key: 'var1', environment_scope: 'environment1') }
let!(:environment2) { create(:ci_group_variable, group: group, key: 'var2', environment_scope: 'environment2') }
let!(:environment3) { create(:ci_group_variable, group: group, key: 'var2', environment_scope: 'environment3') }
let(:finder) { described_class.new(group: group, params: params) }
subject { finder.execute }
context 'with default no arguments' do
let(:params) { {} }
it do
expected_result = group.variables.environment_scope_names
expect(subject.map(&:name))
.to match_array(expected_result)
end
end
context 'with search' do
let(:params) { { search: 'ment1' } }
it do
expected_result = ['environment1']
expect(subject.map(&:name))
.to match_array(expected_result)
end
end
context 'with specific name' do
let(:params) { { name: 'environment3' } }
it do
expect(subject.map(&:name))
.to match_array([environment3.environment_scope])
end
end
end
end

View File

@ -58,7 +58,7 @@ exports[`Comment templates list item component renders list item 1`] = `
</button>
<div
class="gl-new-dropdown-panel gl-w-31! gl-absolute"
class="gl-new-dropdown-panel gl-w-31!"
data-testid="base-dropdown-menu"
id="base-dropdown-7"
>

View File

@ -103,7 +103,8 @@ describe('HeaderActions component', () => {
},
};
const findToggleIssueStateButton = () => wrapper.find(`[data-testid="toggle-button"]`);
const findToggleIssueStateButton = () =>
wrapper.find(`[data-testid="toggle-issue-state-button"]`);
const findEditButton = () => wrapper.find(`[data-testid="edit-button"]`);
const findDropdownBy = (dataTestId) => wrapper.find(`[data-testid="${dataTestId}"]`);

Some files were not shown because too many files have changed in this diff Show More