Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
beabc7d164
commit
afd8f58f2d
2
Gemfile
2
Gemfile
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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"},
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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'));
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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 }}
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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.'),
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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)"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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: {})
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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],
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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]
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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**.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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**.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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**.
|
||||
|
||||

|
||||
|
||||
|
|
|
|||
|
|
@ -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**.
|
||||
|
|
|
|||
|
|
@ -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**.
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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**.
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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}**).
|
||||
|
|
|
|||
|
|
@ -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 -->
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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}**).
|
||||
|
||||
|
|
|
|||
|
|
@ -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),
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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**.
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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**.
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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**.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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**.
|
||||
|
|
|
|||
|
|
@ -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**.
|
||||
|
|
|
|||
|
|
@ -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**.
|
||||
|
||||

|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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**.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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**.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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**.
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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**.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
||||
|
|
|
|||
|
|
@ -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)**
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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."
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -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
Loading…
Reference in New Issue