Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
3bfb19d99e
commit
d170c7eeef
|
|
@ -35,6 +35,8 @@ default:
|
|||
.default-branch-incident-variables: &default-branch-incident-variables
|
||||
CREATE_INCIDENT_FOR_PIPELINE_FAILURE: "true"
|
||||
NOTIFY_PIPELINE_FAILURE_CHANNEL: "master-broken"
|
||||
BROKEN_BRANCH_INCIDENTS_PROJECT: "gitlab-org/quality/engineering-productivity/master-broken-incidents"
|
||||
BROKEN_BRANCH_INCIDENTS_PROJECT_TOKEN: "${BROKEN_MASTER_INCIDENTS_PROJECT_TOKEN}"
|
||||
|
||||
workflow:
|
||||
name: '$PIPELINE_NAME'
|
||||
|
|
@ -107,6 +109,9 @@ workflow:
|
|||
<<: *ruby2-variables
|
||||
NOTIFY_PIPELINE_FAILURE_CHANNEL: "releases"
|
||||
PIPELINE_NAME: 'Ruby 2 $CI_COMMIT_BRANCH branch pipeline'
|
||||
CREATE_INCIDENT_FOR_PIPELINE_FAILURE: "true"
|
||||
BROKEN_BRANCH_INCIDENTS_PROJECT: "gitlab-org/release/tasks"
|
||||
BROKEN_BRANCH_INCIDENTS_PROJECT_TOKEN: "${BROKEN_STABLE_INCIDENTS_PROJECT_TOKEN}"
|
||||
- if: '$CI_COMMIT_BRANCH =~ /^\d+-\d+-auto-deploy-\d+$/'
|
||||
variables:
|
||||
<<: *ruby2-variables
|
||||
|
|
|
|||
|
|
@ -43,8 +43,9 @@ notify-pipeline-failure:
|
|||
- .notify:rules:notify-pipeline-failure
|
||||
image: ${GITLAB_DEPENDENCY_PROXY_ADDRESS}ruby:${RUBY_VERSION}
|
||||
variables:
|
||||
BROKEN_MASTER_INCIDENTS_PROJECT: "gitlab-org/quality/engineering-productivity/master-broken-incidents"
|
||||
BROKEN_MASTER_INCIDENT_JSON: "${CI_PROJECT_DIR}/incident.json"
|
||||
INCIDENT_PROJECT: "#{BROKEN_BRANCH_INCIDENTS_PROJECT}"
|
||||
BROKEN_BRANCH_PROJECT_TOKEN: "${BROKEN_BRANCH_INCIDENTS_PROJECT_TOKEN}"
|
||||
INCIDENT_JSON: "${CI_PROJECT_DIR}/incident.json"
|
||||
SLACK_CHANNEL: "${NOTIFY_PIPELINE_FAILURE_CHANNEL}"
|
||||
FAILED_PIPELINE_SLACK_MESSAGE_FILE: "${CI_PROJECT_DIR}/failed_pipeline_slack_message.json"
|
||||
before_script:
|
||||
|
|
@ -54,17 +55,17 @@ notify-pipeline-failure:
|
|||
script:
|
||||
- |
|
||||
if [[ "${CREATE_INCIDENT_FOR_PIPELINE_FAILURE}" == "true" ]]; then
|
||||
scripts/create-pipeline-failure-incident.rb -p ${BROKEN_MASTER_INCIDENTS_PROJECT} -f ${BROKEN_MASTER_INCIDENT_JSON} -t ${BROKEN_MASTER_INCIDENTS_PROJECT_TOKEN};
|
||||
echosuccess "Created incident $(jq '.web_url' ${BROKEN_MASTER_INCIDENT_JSON})";
|
||||
scripts/create-pipeline-failure-incident.rb -p ${INCIDENT_PROJECT} -f ${INCIDENT_JSON} -t ${BROKEN_BRANCH_PROJECT_TOKEN};
|
||||
echosuccess "Created incident $(jq '.web_url' ${INCIDENT_JSON})";
|
||||
fi
|
||||
- |
|
||||
scripts/generate-failed-pipeline-slack-message.rb -i ${BROKEN_MASTER_INCIDENT_JSON} -f ${FAILED_PIPELINE_SLACK_MESSAGE_FILE};
|
||||
scripts/generate-failed-pipeline-slack-message.rb -i ${INCIDENT_JSON} -f ${FAILED_PIPELINE_SLACK_MESSAGE_FILE};
|
||||
curl -X POST -H 'Content-Type: application/json' --data @${FAILED_PIPELINE_SLACK_MESSAGE_FILE} "$CI_SLACK_WEBHOOK_URL" ||
|
||||
scripts/slack ${SLACK_CHANNEL} "☠️ Broken pipeline notification failed! ☠️ See ${CI_JOB_URL}" ci_failing "Failed pipeline reporter"
|
||||
|
||||
artifacts:
|
||||
paths:
|
||||
- ${BROKEN_MASTER_INCIDENT_JSON}
|
||||
- ${INCIDENT_JSON}
|
||||
- ${FAILED_PIPELINE_SLACK_MESSAGE_FILE}
|
||||
when: always
|
||||
expire_in: 2 days
|
||||
|
|
|
|||
|
|
@ -2096,7 +2096,7 @@
|
|||
changes: *code-patterns
|
||||
when: manual
|
||||
allow_failure: true
|
||||
- <<: *if-dot-com-gitlab-org-schedule
|
||||
- <<: *if-dot-com-ee-schedule-default-branch-maintenance
|
||||
allow_failure: true
|
||||
|
||||
.review:rules:review-k8s-resources-count-checks:
|
||||
|
|
|
|||
|
|
@ -1,13 +0,0 @@
|
|||
---
|
||||
# Cop supports --autocorrect.
|
||||
Performance/StringInclude:
|
||||
Exclude:
|
||||
- 'app/models/snippet_repository.rb'
|
||||
- 'config/initializers/macos.rb'
|
||||
- 'config/spring.rb'
|
||||
- 'ee/app/models/ee/container_registry/event.rb'
|
||||
- 'ee/lib/gitlab/auth/smartcard/certificate.rb'
|
||||
- 'lib/kramdown/parser/atlassian_document_format.rb'
|
||||
- 'lib/prometheus/pid_provider.rb'
|
||||
- 'spec/features/projects/jobs_spec.rb'
|
||||
- 'spec/spec_helper.rb'
|
||||
|
|
@ -1 +1 @@
|
|||
4e200026c03189abe2c60b071204340c4af5cf35
|
||||
6eb7389db0d54ef9ba3622eb7d1412f71e9deb2f
|
||||
|
|
|
|||
|
|
@ -6,6 +6,8 @@ import getIssueStateQuery from '~/issues/show/queries/get_issue_state.query.grap
|
|||
import createDefaultClient from '~/lib/graphql';
|
||||
import typeDefs from '~/work_items/graphql/typedefs.graphql';
|
||||
import { WIDGET_TYPE_NOTES } from '~/work_items/constants';
|
||||
import getWorkItemLinksQuery from '~/work_items/graphql/work_item_links.query.graphql';
|
||||
import { findHierarchyWidgetChildren } from '~/work_items/utils';
|
||||
|
||||
export const config = {
|
||||
typeDefs,
|
||||
|
|
@ -143,6 +145,28 @@ export const config = {
|
|||
|
||||
export const resolvers = {
|
||||
Mutation: {
|
||||
addHierarchyChild: (_, { id, workItem }, { cache }) => {
|
||||
const queryArgs = { query: getWorkItemLinksQuery, variables: { id } };
|
||||
const sourceData = cache.readQuery(queryArgs);
|
||||
|
||||
const data = produce(sourceData, (draftState) => {
|
||||
findHierarchyWidgetChildren(draftState.workItem).push(workItem);
|
||||
});
|
||||
|
||||
cache.writeQuery({ ...queryArgs, data });
|
||||
},
|
||||
removeHierarchyChild: (_, { id, workItem }, { cache }) => {
|
||||
const queryArgs = { query: getWorkItemLinksQuery, variables: { id } };
|
||||
const sourceData = cache.readQuery(queryArgs);
|
||||
|
||||
const data = produce(sourceData, (draftState) => {
|
||||
const hierarchyChildren = findHierarchyWidgetChildren(draftState.workItem);
|
||||
const index = hierarchyChildren.findIndex((child) => child.id === workItem.id);
|
||||
hierarchyChildren.splice(index, 1);
|
||||
});
|
||||
|
||||
cache.writeQuery({ ...queryArgs, data });
|
||||
},
|
||||
updateIssueState: (_, { issueType = undefined, isDirty = false }, { cache }) => {
|
||||
const sourceData = cache.readQuery({ query: getIssueStateQuery });
|
||||
const data = produce(sourceData, (draftData) => {
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
import Vue from 'vue';
|
||||
import VueApollo from 'vue-apollo';
|
||||
import { defaultClient } from '~/graphql_shared/issuable_client';
|
||||
|
||||
Vue.use(VueApollo);
|
||||
|
||||
export default new VueApollo({
|
||||
defaultClient,
|
||||
});
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
import Vue from 'vue';
|
||||
import { mapGetters } from 'vuex';
|
||||
import errorTrackingStore from '~/error_tracking/store';
|
||||
import { apolloProvider } from '~/graphql_shared/issuable_client';
|
||||
import { parseBoolean } from '~/lib/utils/common_utils';
|
||||
import { scrollToTargetOnResize } from '~/lib/utils/resize_observer';
|
||||
import IssueApp from './components/app.vue';
|
||||
|
|
@ -8,7 +9,6 @@ import HeaderActions from './components/header_actions.vue';
|
|||
import IncidentTabs from './components/incidents/incident_tabs.vue';
|
||||
import SentryErrorStackTrace from './components/sentry_error_stack_trace.vue';
|
||||
import { INCIDENT_TYPE, issueState } from './constants';
|
||||
import apolloProvider from './graphql';
|
||||
import getIssueStateQuery from './queries/get_issue_state.query.graphql';
|
||||
|
||||
const bootstrapApollo = (state = {}) => {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
import Vue from 'vue';
|
||||
import apolloProvider from '~/issues/show/graphql';
|
||||
import { apolloProvider } from '~/graphql_shared/issuable_client';
|
||||
import { parseBoolean } from '~/lib/utils/common_utils';
|
||||
import RelatedIssuesRoot from './components/related_issues_root.vue';
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,5 @@
|
|||
<script>
|
||||
import { GlDropdown, GlDropdownItem, GlIcon, GlLoadingIcon, GlTooltipDirective } from '@gitlab/ui';
|
||||
import { produce } from 'immer';
|
||||
import { isEmpty } from 'lodash';
|
||||
import { s__ } from '~/locale';
|
||||
import { convertToGraphQLId, getIdFromGraphQLId } from '~/graphql_shared/utils';
|
||||
|
|
@ -18,6 +17,8 @@ import {
|
|||
WORK_ITEM_STATUS_TEXT,
|
||||
} from '../../constants';
|
||||
import getWorkItemLinksQuery from '../../graphql/work_item_links.query.graphql';
|
||||
import addHierarchyChildMutation from '../../graphql/add_hierarchy_child.mutation.graphql';
|
||||
import removeHierarchyChildMutation from '../../graphql/remove_hierarchy_child.mutation.graphql';
|
||||
import updateWorkItemMutation from '../../graphql/update_work_item.mutation.graphql';
|
||||
import workItemQuery from '../../graphql/work_item.query.graphql';
|
||||
import workItemByIidQuery from '../../graphql/work_item_by_iid.query.graphql';
|
||||
|
|
@ -177,10 +178,6 @@ export default {
|
|||
hideAddForm() {
|
||||
this.isShownAddForm = false;
|
||||
},
|
||||
addChild(child) {
|
||||
const { defaultClient: client } = this.$apollo.provider.clients;
|
||||
this.toggleChildFromCache(child, child.id, client);
|
||||
},
|
||||
openChild(child, e) {
|
||||
if (isMetaKey(e)) {
|
||||
return;
|
||||
|
|
@ -194,9 +191,8 @@ export default {
|
|||
this.activeChild = {};
|
||||
this.updateWorkItemIdUrlQuery();
|
||||
},
|
||||
handleWorkItemDeleted(childId) {
|
||||
const { defaultClient: client } = this.$apollo.provider.clients;
|
||||
this.toggleChildFromCache(null, childId, client);
|
||||
handleWorkItemDeleted(child) {
|
||||
this.removeHierarchyChild(child);
|
||||
this.activeToast = this.$toast.show(s__('WorkItem|Task deleted'));
|
||||
},
|
||||
updateWorkItemIdUrlQuery({ id, iid } = {}) {
|
||||
|
|
@ -205,38 +201,31 @@ export default {
|
|||
: { work_item_id: getIdFromGraphQLId(id) };
|
||||
updateHistory({ url: setUrlParams(params), replace: true });
|
||||
},
|
||||
toggleChildFromCache(workItem, childId, store) {
|
||||
const sourceData = store.readQuery({
|
||||
query: getWorkItemLinksQuery,
|
||||
variables: { id: this.issuableGid },
|
||||
async addHierarchyChild(workItem) {
|
||||
return this.$apollo.mutate({
|
||||
mutation: addHierarchyChildMutation,
|
||||
variables: { id: this.issuableGid, workItem },
|
||||
});
|
||||
|
||||
const newData = produce(sourceData, (draftState) => {
|
||||
const widgetHierarchy = draftState.workItem.widgets.find(
|
||||
(widget) => widget.type === WIDGET_TYPE_HIERARCHY,
|
||||
);
|
||||
|
||||
const index = widgetHierarchy.children.nodes.findIndex((child) => child.id === childId);
|
||||
|
||||
if (index >= 0) {
|
||||
widgetHierarchy.children.nodes.splice(index, 1);
|
||||
} else {
|
||||
widgetHierarchy.children.nodes.push(workItem);
|
||||
}
|
||||
});
|
||||
|
||||
store.writeQuery({
|
||||
query: getWorkItemLinksQuery,
|
||||
variables: { id: this.issuableGid },
|
||||
data: newData,
|
||||
},
|
||||
async removeHierarchyChild(workItem) {
|
||||
return this.$apollo.mutate({
|
||||
mutation: removeHierarchyChildMutation,
|
||||
variables: { id: this.issuableGid, workItem },
|
||||
});
|
||||
},
|
||||
async updateWorkItem(workItem, childId, parentId) {
|
||||
return this.$apollo.mutate({
|
||||
const response = await this.$apollo.mutate({
|
||||
mutation: updateWorkItemMutation,
|
||||
variables: { input: { id: childId, hierarchyWidget: { parentId } } },
|
||||
update: (store) => this.toggleChildFromCache(workItem, childId, store),
|
||||
});
|
||||
|
||||
if (parentId === null) {
|
||||
await this.removeHierarchyChild(workItem);
|
||||
} else {
|
||||
await this.addHierarchyChild(workItem);
|
||||
}
|
||||
|
||||
return response;
|
||||
},
|
||||
async undoChildRemoval(workItem, childId) {
|
||||
const { data } = await this.updateWorkItem(workItem, childId, this.issuableGid);
|
||||
|
|
@ -246,7 +235,7 @@ export default {
|
|||
}
|
||||
},
|
||||
async removeChild(childId) {
|
||||
const { data } = await this.updateWorkItem(null, childId, null);
|
||||
const { data } = await this.updateWorkItem({ id: childId }, childId, null);
|
||||
|
||||
if (data.workItemUpdate.errors.length === 0) {
|
||||
this.activeToast = this.$toast.show(s__('WorkItem|Child removed'), {
|
||||
|
|
@ -365,7 +354,7 @@ export default {
|
|||
:form-type="formType"
|
||||
:parent-work-item-type="workItem.workItemType.name"
|
||||
@cancel="hideAddForm"
|
||||
@addWorkItemChild="addChild"
|
||||
@addWorkItemChild="addHierarchyChild"
|
||||
/>
|
||||
<work-item-link-child
|
||||
v-for="child in children"
|
||||
|
|
@ -384,7 +373,7 @@ export default {
|
|||
:work-item-id="activeChild.id"
|
||||
:work-item-iid="activeChild.iid"
|
||||
@close="closeModal"
|
||||
@workItemDeleted="handleWorkItemDeleted(activeChild.id)"
|
||||
@workItemDeleted="handleWorkItemDeleted(activeChild)"
|
||||
/>
|
||||
</template>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
mutation addHierarchyChild($id: WorkItemID!, $workItem: WorkItem!) {
|
||||
addHierarchyChild(id: $id, workItem: $workItem) @client
|
||||
}
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
mutation removeHierarchyChild($id: WorkItemID!, $workItem: WorkItem!) {
|
||||
removeHierarchyChild(id: $id, workItem: $workItem) @client
|
||||
}
|
||||
|
|
@ -1,3 +1,4 @@
|
|||
import { WIDGET_TYPE_HIERARCHY } from '~/work_items/constants';
|
||||
import workItemQuery from './graphql/work_item.query.graphql';
|
||||
import workItemByIidQuery from './graphql/work_item_by_iid.query.graphql';
|
||||
import workItemNotesIdQuery from './graphql/work_item_notes.query.graphql';
|
||||
|
|
@ -10,3 +11,6 @@ export function getWorkItemQuery(isFetchedByIid) {
|
|||
export function getWorkItemNotesQuery(isFetchedByIid) {
|
||||
return isFetchedByIid ? workItemNotesByIidQuery : workItemNotesIdQuery;
|
||||
}
|
||||
|
||||
export const findHierarchyWidgetChildren = (workItem) =>
|
||||
workItem.widgets.find((widget) => widget.type === WIDGET_TYPE_HIERARCHY).children.nodes;
|
||||
|
|
|
|||
|
|
@ -24,12 +24,12 @@ module SensitiveSerializableHash
|
|||
|
||||
options[:except].concat self.class.attributes_exempt_from_serializable_hash
|
||||
|
||||
if self.class.respond_to?(:encrypted_attributes)
|
||||
options[:except].concat self.class.encrypted_attributes.keys
|
||||
if self.class.respond_to?(:attr_encrypted_attributes)
|
||||
options[:except].concat self.class.attr_encrypted_attributes.keys
|
||||
|
||||
# Per https://github.com/attr-encrypted/attr_encrypted/blob/a96693e9a2a25f4f910bf915e29b0f364f277032/lib/attr_encrypted.rb#L413
|
||||
options[:except].concat self.class.encrypted_attributes.values.map { |v| v[:attribute] }
|
||||
options[:except].concat self.class.encrypted_attributes.values.map { |v| "#{v[:attribute]}_iv" }
|
||||
options[:except].concat self.class.attr_encrypted_attributes.values.map { |v| v[:attribute] }
|
||||
options[:except].concat self.class.attr_encrypted_attributes.values.map { |v| "#{v[:attribute]}_iv" }
|
||||
end
|
||||
|
||||
super(options)
|
||||
|
|
|
|||
|
|
@ -12,6 +12,7 @@ class DeployKey < Key
|
|||
has_many :deploy_keys_projects_with_write_access, -> { with_write_access }, class_name: "DeployKeysProject", inverse_of: :deploy_key
|
||||
has_many :projects_with_write_access, -> { includes(:route) }, class_name: 'Project', through: :deploy_keys_projects_with_write_access, source: :project
|
||||
has_many :protected_branch_push_access_levels, class_name: '::ProtectedBranch::PushAccessLevel', inverse_of: :deploy_key
|
||||
has_many :protected_tag_create_access_levels, class_name: '::ProtectedTag::CreateAccessLevel', inverse_of: :deploy_key
|
||||
|
||||
scope :in_projects, ->(projects) { joins(:deploy_keys_projects).where(deploy_keys_projects: { project_id: projects }) }
|
||||
scope :with_write_access, -> { joins(:deploy_keys_projects).merge(DeployKeysProject.with_write_access) }
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ class GrafanaIntegration < ApplicationRecord
|
|||
end
|
||||
|
||||
def token
|
||||
decrypt(:token, encrypted_token)
|
||||
attr_decrypt(:token, encrypted_token)
|
||||
end
|
||||
|
||||
def check_token_changes
|
||||
|
|
|
|||
|
|
@ -493,9 +493,9 @@ class Integration < ApplicationRecord
|
|||
|
||||
def reencrypt_properties
|
||||
unless properties.nil? || properties.empty?
|
||||
alg = self.class.encrypted_attributes[:properties][:algorithm]
|
||||
alg = self.class.attr_encrypted_attributes[:properties][:algorithm]
|
||||
iv = generate_iv(alg)
|
||||
ep = self.class.encrypt(:properties, properties, { iv: iv })
|
||||
ep = self.class.attr_encrypt(:properties, properties, { iv: iv })
|
||||
end
|
||||
|
||||
{ 'encrypted_properties' => ep, 'encrypted_properties_iv' => iv }
|
||||
|
|
|
|||
|
|
@ -4,9 +4,43 @@ class ProtectedTag::CreateAccessLevel < ApplicationRecord
|
|||
include Importable
|
||||
include ProtectedTagAccess
|
||||
|
||||
belongs_to :deploy_key
|
||||
|
||||
validates :access_level, uniqueness: { scope: :protected_tag_id, if: :role?,
|
||||
conditions: -> { where(user_id: nil, group_id: nil, deploy_key_id: nil) } }
|
||||
validates :deploy_key_id, uniqueness: { scope: :protected_tag_id, allow_nil: true }
|
||||
validate :validate_deploy_key_membership
|
||||
|
||||
def type
|
||||
if deploy_key.present?
|
||||
:deploy_key
|
||||
else
|
||||
super
|
||||
end
|
||||
end
|
||||
|
||||
def check_access(user)
|
||||
return false if access_level == Gitlab::Access::NO_ACCESS
|
||||
|
||||
if user && deploy_key.present?
|
||||
return user.can?(:read_project, project) && enabled_deploy_key_for_user?(deploy_key, user)
|
||||
end
|
||||
|
||||
super
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def validate_deploy_key_membership
|
||||
return unless deploy_key
|
||||
|
||||
return if project.deploy_keys_projects.where(deploy_key: deploy_key).exists?
|
||||
|
||||
errors.add(:deploy_key, 'is not enabled for this project')
|
||||
end
|
||||
|
||||
def enabled_deploy_key_for_user?(deploy_key, user)
|
||||
deploy_key.user_id == user.id &&
|
||||
DeployKey.with_write_access_for_project(protected_tag.project, deploy_key: deploy_key).any?
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -121,7 +121,7 @@ class SnippetRepository < ApplicationRecord
|
|||
|
||||
def invalid_signature_error?(err)
|
||||
err.is_a?(ArgumentError) &&
|
||||
err.message.downcase.match?(/failed to parse signature/)
|
||||
err.message.downcase.include?('failed to parse signature')
|
||||
end
|
||||
|
||||
def only_rename_action?(action)
|
||||
|
|
|
|||
|
|
@ -775,7 +775,7 @@ Gitlab.ee do
|
|||
Settings.cron_jobs['elastic_migration_worker']['cron'] ||= '*/30 * * * *'
|
||||
Settings.cron_jobs['elastic_migration_worker']['job_class'] ||= 'Elastic::MigrationWorker'
|
||||
Settings.cron_jobs['search_index_curation_worker'] ||= Settingslogic.new({})
|
||||
Settings.cron_jobs['search_index_curation_worker']['cron'] ||= '*/30 * * * *'
|
||||
Settings.cron_jobs['search_index_curation_worker']['cron'] ||= '*/1 * * * *'
|
||||
Settings.cron_jobs['search_index_curation_worker']['job_class'] ||= 'Search::IndexCurationWorker'
|
||||
Settings.cron_jobs['sync_seat_link_worker'] ||= Settingslogic.new({})
|
||||
Settings.cron_jobs['sync_seat_link_worker']['cron'] ||= "#{rand(60)} #{rand(3..4)} * * * UTC"
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
if /darwin/ =~ RUBY_PLATFORM
|
||||
if RUBY_PLATFORM.include?('darwin')
|
||||
Gitlab::Cluster::LifecycleEvents.on_before_fork do
|
||||
require 'fiddle'
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
Spring.after_fork do
|
||||
if ENV['DEBUGGER_STORED_RUBYLIB']
|
||||
ENV['DEBUGGER_STORED_RUBYLIB'].split(File::PATH_SEPARATOR).each do |path|
|
||||
next unless path =~ /ruby-debug-ide/
|
||||
next unless path.include?('ruby-debug-ide')
|
||||
|
||||
load path + '/ruby-debug-ide/multiprocess/starter.rb'
|
||||
end
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ To enable AWS Cognito as an authentication provider, complete the following step
|
|||
|
||||
1. Sign in to the [AWS console](https://console.aws.amazon.com/console/home).
|
||||
1. From the **Services** menu, select **Cognito**.
|
||||
1. Select **Manage User Pools** and then select **Create a user pool** in the top right corner.
|
||||
1. Select **Manage User Pools** and then in the upper-right corner, select **Create a user pool**.
|
||||
1. Enter the user pool name and then select **Step through settings**.
|
||||
1. Under **How do you want your end users to sign in?**, select **Email address or phone number** and **Allow email addresses**.
|
||||
1. Under **Which standard attributes do you want to require?**, select **email**.
|
||||
|
|
|
|||
|
|
@ -170,13 +170,12 @@ We have a workaround, based on toggling the access level of affected users:
|
|||
1. As an administrator, on the top bar, select **Main menu > Admin**.
|
||||
1. On the left sidebar, select **Overview > Users**.
|
||||
1. Select the name of the affected user.
|
||||
1. In the user's administrative page, press **Edit** on the top right of the page.
|
||||
1. Change the user's access level from `Regular` to `Admin` (or vice versa),
|
||||
and press **Save changes** at the bottom of the page.
|
||||
1. Press **Edit** on the top right of the user's profile page
|
||||
again.
|
||||
1. Restore the user's original access level (`Regular` or `Admin`)
|
||||
and press **Save changes** again.
|
||||
1. In the upper right, select **Edit**.
|
||||
1. Change the user's access level from `Regular` to `Administrator` (or vice versa).
|
||||
1. At the bottom of the page, select **Save changes**.
|
||||
1. In the upper right, select **Edit** again.
|
||||
1. Restore the user's original access level (`Regular` or `Administrator`)
|
||||
and select **Save changes** again.
|
||||
|
||||
The user should now be able to sign in.
|
||||
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@ details and contact you with suggestions to improve your use of GitLab.
|
|||
To request an instance review:
|
||||
|
||||
1. Sign in as an administrator.
|
||||
1. On the top bar, in the top right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Get a free instance review**.
|
||||
|
||||

|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ The Reference Architectures are designed to strike a balance between two importa
|
|||
|
||||
While they are designed to make it easier to set up GitLab at scale, it can still be a challenge to know which one meets your requirements.
|
||||
|
||||
As a general guide, **the more performant and/or resilient you want your environment to be, the more involved it is**.
|
||||
As a general guide, **the more performant and/or resilient you want your environment to be, the more complex it is**.
|
||||
|
||||
This section explains the designs you can choose from. It begins with the least complexity, goes to the most, and ends with a decision tree.
|
||||
|
||||
|
|
@ -57,11 +57,13 @@ This section explains the designs you can choose from. It begins with the least
|
|||
|
||||
For environments serving 2,000 or fewer users we generally recommend that an [automated backup](../../raketasks/backup_gitlab.md#configuring-cron-to-make-daily-backups) strategy is used instead of HA.
|
||||
|
||||
Depending on your setup and requirements, this can include configuring backups on any external services you may be using, such as Object Storage (AWS S3 / Google Cloud Storage) or Postgres (AWS RDS / Google Cloud SQL) backups for further resilience.
|
||||
|
||||
Backups can provide a good level of RPO / RTO while avoiding the complexities that come with HA.
|
||||
|
||||
### High Availability (HA)
|
||||
|
||||
High Availability ensures every component in the GitLab setup can handle failures through various mechanisms. To achieve this however is involved, and the environments required can be sizable.
|
||||
High Availability ensures every component in the GitLab setup can handle failures through various mechanisms. To achieve this however is complex, and the environments required can be sizable.
|
||||
|
||||
For environments serving 3,000 or more users we generally recommend that a HA strategy is used as at this level outages have a bigger impact against more users. All the architectures in this range have HA built in by design for this reason.
|
||||
|
||||
|
|
@ -80,7 +82,7 @@ In general then, we'd only recommend you employ HA in the following scenarios:
|
|||
|
||||
#### Zero Downtime Upgrades
|
||||
|
||||
[Zero Downtime Upgrades](../../update/zero_downtime.md) are available for standard Reference Architecture environments with HA (Cloud Native Hybrid is not supported at this time). This allows for an environment to stay up during an upgrade, but the process is more involved as a result and has some limitations as detailed in the documentation.
|
||||
[Zero Downtime Upgrades](../../update/zero_downtime.md) are available for standard Reference Architecture environments with HA (Cloud Native Hybrid is not supported at this time). This allows for an environment to stay up during an upgrade, but the process is more complex as a result and has some limitations as detailed in the documentation.
|
||||
|
||||
When going through this process it's worth noting that there may still be brief moments of downtime when the HA mechanisms tale effect.
|
||||
|
||||
|
|
@ -96,7 +98,7 @@ This is an alternative and more **advanced** setup compared to a standard Refere
|
|||
|
||||
With [GitLab Geo](../geo/index.md) you can have both distributed environments in different regions and a full Disaster Recovery (DR) setup in place. With this setup you would have 2 or more separate environments, with one being a primary that gets replicated to the others. In the rare event the primary site went down completely you could fail over to one of the other environments.
|
||||
|
||||
This is an **advanced and involved** setup and should only be undertaken if you have DR as a key requirement. Decisions then on how each environment are configured would also need to be taken, such as if each environment itself would be the full size and / or have HA.
|
||||
This is an **advanced and complex** setup and should only be undertaken if you have DR as a key requirement. Decisions then on how each environment are configured would also need to be taken, such as if each environment itself would be the full size and / or have HA.
|
||||
|
||||
### Decision Tree
|
||||
|
||||
|
|
@ -299,8 +301,8 @@ Due to performance issues that we found with several key Azure services, we only
|
|||
In addition to the above, you should be aware of the additional specific guidance for Azure:
|
||||
|
||||
- **We outright strongly do not recommend [Azure Database for PostgreSQL Single Server](https://learn.microsoft.com/en-us/azure/postgresql/single-server/overview-single-server)** specifically due to significant performance and stability issues found. **For GitLab 14.0 and higher the service is not supported** due to it only supporting up to PostgreSQL 11.
|
||||
- A new service, [Azure Database for PostgreSQL Flexible Server](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/) has been released but due to it missing some functionality we don't recommend it at this time.
|
||||
- [Azure Blob Storage](https://azure.microsoft.com/en-gb/products/storage/blobs/) has been found to have performance limits that can impact production use at certain times. However, this has only been seen in larger architectures.
|
||||
- A new service, [Azure Database for PostgreSQL Flexible Server](https://learn.microsoft.com/en-us/azure/postgresql/flexible-server/) has been released. [Internal testing](https://gitlab.com/gitlab-org/quality/reference-architectures/-/issues/91) has shown that it does look to perform as expected, but this hasn't been validated in production, so generally isn't recommended at this time. Additionally, as it's a new service, you may find that it's missing some functionality depending on your requirements.
|
||||
- [Azure Blob Storage](https://azure.microsoft.com/en-gb/products/storage/blobs/) has been found to have [performance limits that can impact production use at certain times](https://gitlab.com/gitlab-org/gitlab/-/issues/344861). However, this has only been seen in our largest architectures (25k+) so far.
|
||||
|
||||
## Validation and test results
|
||||
|
||||
|
|
|
|||
|
|
@ -946,7 +946,7 @@ Example response:
|
|||
|
||||
## User counts
|
||||
|
||||
Get the counts (same as in top right menu) of the authenticated user.
|
||||
Get the counts (same as in the upper-right menu) of the authenticated user.
|
||||
|
||||
| Attribute | Type | Description |
|
||||
| --------------------------------- | ------ | ---------------------------------------------------------------------------- |
|
||||
|
|
|
|||
|
|
@ -570,7 +570,7 @@ 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. In the top right, select **Clear runner caches**.
|
||||
1. In the upper right, select **Clear runner caches**.
|
||||
|
||||
On the next commit, your CI/CD jobs use a new cache.
|
||||
|
||||
|
|
|
|||
|
|
@ -684,7 +684,7 @@ You can view a deployment's expiration date in the GitLab UI.
|
|||
1. On the left sidebar, select **Deployments > Environments**.
|
||||
1. Select the name of the deployment.
|
||||
|
||||
In the top left, next to the environment name, the expiration date is displayed.
|
||||
In the upper left, next to the environment name, the expiration date is displayed.
|
||||
|
||||
#### Override a deployment's scheduled stop time
|
||||
|
||||
|
|
@ -693,7 +693,7 @@ You can manually override a deployment's expiration date.
|
|||
1. On the top bar, select **Main menu > Projects** and find your project.
|
||||
1. On the left sidebar, select **Deployments > Environments**.
|
||||
1. Select the deployment name.
|
||||
1. On the top right, select the thumbtack (**{thumbtack}**).
|
||||
1. in the upper right, select the thumbtack (**{thumbtack}**).
|
||||
|
||||

|
||||
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ As part of publishing a package, semantic-release increases the version number i
|
|||
|
||||
<!-- markdownlint-disable MD044 -->
|
||||
|
||||
1. On the top bar, on the top right, select your avatar.
|
||||
1. On the top bar, in the upper right, select your avatar.
|
||||
1. On the left sidebar, select **Access Tokens**.
|
||||
1. In the **Token name** box, enter a token name.
|
||||
1. Under **select scopes**, select the **api** checkbox.
|
||||
|
|
|
|||
|
|
@ -337,7 +337,7 @@ In the example above:
|
|||
- `date +%s`: The Unix timestamp (for example `1560896352`).
|
||||
- `my_first_section`: The name given to the section.
|
||||
- `\r\e[0K`: Prevents the section markers from displaying in the rendered (colored)
|
||||
job log, but they are displayed in the raw job log. To see them, in the top right
|
||||
job log, but they are displayed in the raw job log. To see them, in the upper right
|
||||
of the job log, select **{doc-text}** (**Show complete raw**).
|
||||
- `\r`: carriage return.
|
||||
- `\e[0K`: clear line ANSI escape code.
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ 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. In the top right, select **CI lint**.
|
||||
1. In the upper right, select **CI lint**.
|
||||
1. Paste a copy of the CI/CD configuration you want to check into the text box.
|
||||
1. Select **Validate**.
|
||||
|
||||
|
|
@ -47,7 +47,7 @@ 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. In the top right, select **CI lint**.
|
||||
1. In the upper right, 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**.
|
||||
1. Select **Validate**.
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ simulations in the [CI Lint tool](../lint.md#simulate-a-pipeline).
|
|||
> - [Feature flag removed](https://gitlab.com/gitlab-org/gitlab/-/issues/357219) in GitLab 15.1.
|
||||
|
||||
You can review configuration added with the [`include`](../yaml/index.md#include)
|
||||
keyword in the pipeline editor. In the top right, select the file tree (**{file-tree}**)
|
||||
keyword in the pipeline editor. In the upper right, select the file tree (**{file-tree}**)
|
||||
to see a list of all included configuration files. Selected files open in a new tab
|
||||
for review.
|
||||
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ subgroups, sorted in descending order of CI/CD minute usage.
|
|||
|
||||
You can view the number of CI/CD minutes being used by a personal namespace:
|
||||
|
||||
1. On the top bar, in the top right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Usage Quotas**.
|
||||
|
||||
|
|
@ -161,7 +161,7 @@ namespace.
|
|||
|
||||
To purchase additional minutes for your personal namespace:
|
||||
|
||||
1. On the top bar, in the top right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Usage Quotas**.
|
||||
1. Select **Buy additional minutes**. GitLab redirects you to the Customers Portal.
|
||||
|
|
|
|||
|
|
@ -264,7 +264,7 @@ artifacts and log. You must be:
|
|||
To delete a job:
|
||||
|
||||
1. Go to a job's detail page.
|
||||
1. On the top right of the job's log, select **Erase job log** (**{remove}**).
|
||||
1. In the upper right of the job's log, select **Erase job log** (**{remove}**).
|
||||
1. On the confirmation dialog, select **OK**.
|
||||
|
||||
## Expose job artifacts in the merge request UI
|
||||
|
|
|
|||
|
|
@ -172,7 +172,7 @@ 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. In the top-right corner, select **Register a group runner**.
|
||||
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.
|
||||
|
||||
|
|
|
|||
|
|
@ -349,20 +349,35 @@ background migration.
|
|||
`BatchedMigrationJob` is initialized with necessary arguments to
|
||||
execute the batch, as well as a connection to the tracking database.
|
||||
|
||||
1. Add a new trigger to the database to update newly created and updated routes,
|
||||
similar to this example:
|
||||
1. Create a database migration that adds a new trigger to the database. Example:
|
||||
|
||||
```ruby
|
||||
execute(<<~SQL)
|
||||
CREATE OR REPLACE FUNCTION example() RETURNS trigger
|
||||
LANGUAGE plpgsql
|
||||
AS $$
|
||||
BEGIN
|
||||
NEW."namespace_id" = NEW."source_id"
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$;
|
||||
SQL
|
||||
class AddTriggerToRoutesToCopySourceIdToNamespaceId < Gitlab::Database::Migration[2.1]
|
||||
FUNCTION_NAME = 'example_function'
|
||||
TRIGGER_NAME = 'example_trigger'
|
||||
|
||||
def up
|
||||
execute(<<~SQL)
|
||||
CREATE OR REPLACE FUNCTION #{FUNCTION_NAME}() RETURNS trigger
|
||||
LANGUAGE plpgsql
|
||||
AS $$
|
||||
BEGIN
|
||||
NEW."namespace_id" = NEW."source_id"
|
||||
RETURN NEW;
|
||||
END;
|
||||
$$;
|
||||
|
||||
CREATE TRIGGER #{TRIGGER_NAME}() AFTER INSERT OR UPDATE
|
||||
ON routes
|
||||
FOR EACH ROW EXECUTE FUNCTION #{FUNCTION_NAME}();
|
||||
SQL
|
||||
end
|
||||
|
||||
def down
|
||||
drop_trigger(TRIGGER_NAME, :routes)
|
||||
drop_function(FUNCTION_NAME)
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
1. Create a post-deployment migration that queues the migration for existing data:
|
||||
|
|
@ -398,10 +413,28 @@ background migration.
|
|||
`restrict_gitlab_migration gitlab_schema: :gitlab_ci`.
|
||||
|
||||
After deployment, our application:
|
||||
- Continues using the data as before.
|
||||
- Ensures that both existing and new data are migrated.
|
||||
- Continues using the data as before.
|
||||
- Ensures that both existing and new data are migrated.
|
||||
|
||||
1. In the next release, remove the trigger. We must also add a new post-deployment migration
|
||||
1. In the next release, add a database migration to remove the trigger.
|
||||
|
||||
```ruby
|
||||
class RemoveNamepaceIdTriggerFromRoutes < Gitlab::Database::Migration[2.1]
|
||||
FUNCTION_NAME = 'example_function'
|
||||
TRIGGER_NAME = 'example_trigger'
|
||||
|
||||
def up
|
||||
drop_trigger(TRIGGER_NAME, :routes)
|
||||
drop_function(FUNCTION_NAME)
|
||||
end
|
||||
|
||||
def down
|
||||
# Should reverse the trigger and the function in the up method of the migration that added it
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
1. Add a new post-deployment migration
|
||||
that checks that the batched background migration is completed. For example:
|
||||
|
||||
```ruby
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
|||
- [explain.depesz.com](https://explain.depesz.com/) or [explain.dalibo.com](https://explain.dalibo.com/) for visualizing the output of `EXPLAIN`
|
||||
- [pgFormatter](https://sqlformat.darold.net/) a PostgreSQL SQL syntax beautifier
|
||||
- [db:check-migrations job](dbcheck-migrations-job.md)
|
||||
- [Database migration pipeline](database_migration_pipeline.md)
|
||||
|
||||
## Migrations
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ recommends these word choices. In addition:
|
|||
[top misused terms](https://about.gitlab.com/handbook/communication/top-misused-terms/).
|
||||
- The documentation [style guide](../styleguide#language) includes details
|
||||
about language and capitalization.
|
||||
- The GitLab handbook provides guidance on the [use of third-party trademarks](https://about.gitlab.com/handbook/legal/policies/product-third-party-trademarks-guidelines/#process-for-adding-third-party-trademarks-to-gitlab).
|
||||
|
||||
For guidance not on this page, we defer to these style guides:
|
||||
|
||||
|
|
|
|||
|
|
@ -45,7 +45,7 @@ To create an issue:
|
|||
|
||||
1. On the top bar, select **Main menu > Projects** and find your project.
|
||||
1. On the left sidebar, select **Issues > List**.
|
||||
1. In the top right corner, select **New issue**.
|
||||
1. In the upper-right corner, select **New issue**.
|
||||
1. Complete the fields. (If you have reference content that lists each field, link to it here.)
|
||||
1. Select **Create issue**.
|
||||
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ including when features were introduced and when they were updated or removed.
|
|||
## View older documentation versions
|
||||
|
||||
Previous versions of the documentation are available on `docs.gitlab.com`.
|
||||
To view a previous version, select the **Versions** button in the top right.
|
||||
To view a previous version, select the **Versions** button in the upper right.
|
||||
|
||||
To view versions that are not available on `docs.gitlab.com`:
|
||||
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ GitLab documentation is distributed under the [CC BY-SA 4.0 license](https://cre
|
|||
Under current law in the US and the EU, it’s possible that AI-generated works might either:
|
||||
|
||||
- not be owned by anyone because they weren't created by a human, or
|
||||
- belong to the AI training data’s creator, if the AI verbatim reproduces content that it trained on
|
||||
- belong to the AI training data’s creator, if the AI verbatim reproduces content that it trained on
|
||||
|
||||
If the documentation contains AI-generated content, GitLab probably wouldn't own this content, which would risk invalidating the CC BY-SA 4.0 license.
|
||||
|
||||
|
|
@ -40,11 +40,11 @@ If you are not a GitLab team member, or do not have the Developer role for the G
|
|||
- If you're not taking part in a Hackathon, you don't need an issue to open a merge request.
|
||||
If you are looking for issues to work on and don't see any that suit you, you can always fix [Vale](testing.md#vale) issues.
|
||||
1. Go to the [GitLab repository](https://gitlab.com/gitlab-org/gitlab).
|
||||
1. In the top right, select **Fork**. Forking makes a copy of the repository on GitLab.com.
|
||||
1. In the upper right, select **Fork**. Forking makes a copy of the repository on GitLab.com.
|
||||
1. In your fork, find the documentation page in the `\doc` directory.
|
||||
1. If you know Git, make your changes and open a merge request.
|
||||
If not, follow these steps:
|
||||
1. On the top right, select **Edit** if it is visible. If it is not, select the down arrow (**{chevron-lg-down}**) next to **Open in Web IDE** or **Gitpod**, and select **Edit**.
|
||||
1. In the upper right, select **Edit** if it is visible. If it is not, select the down arrow (**{chevron-lg-down}**) next to **Open in Web IDE** or **Gitpod**, and select **Edit**.
|
||||
1. In the **Commit message** text box, enter a commit message. Use 3-5 words, start with a capital letter, and do not end with a period.
|
||||
1. Select **Commit changes**.
|
||||
1. On the left sidebar, select **Merge requests**.
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ where needed.
|
|||
You can check all existing queries and mutations on the right side
|
||||
of GraphiQL in its **Documentation explorer**. You can also
|
||||
write queries and mutations directly on the left tab and check
|
||||
their execution by clicking **Execute query** button on the top left:
|
||||
their execution by selecting **Execute query** in the upper left:
|
||||
|
||||

|
||||
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ We currently use the following `glm_content` values:
|
|||
| `discover-project-security` | This value is used in the project security feature discovery page. |
|
||||
| `discover-project-security-pqltest` | This value is used in the project security feature discovery page [experiment with 3 CTAs](https://gitlab.com/gitlab-org/gitlab/-/issues/349799). |
|
||||
| `group-billing` | This value is used in the group billing page. |
|
||||
| `trial-status-show-group` | This value is used in the top left nav when a namespace has an active trial. |
|
||||
| `trial-status-show-group` | This value is used in the upper-left nav when a namespace has an active trial. |
|
||||
|
||||
### Test the component
|
||||
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ access on GitLab.com or any other GitLab instance.
|
|||
To use the repository in the examples on this page:
|
||||
|
||||
1. Go to [https://gitlab.com/gitlab-tests/sample-project/](https://gitlab.com/gitlab-tests/sample-project/).
|
||||
1. In the top right, select **Fork**.
|
||||
1. In the upper right, select **Fork**.
|
||||
1. Choose a namespace for your fork.
|
||||
|
||||
The project becomes available at `https://gitlab.com/<your-namespace>/sample-project/`.
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ can't be terminated and its memory usage grows over time.
|
|||
## Select a version to install
|
||||
|
||||
Make sure you view [this installation guide](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/install/installation.md) from the branch (version) of GitLab you would like to install (for example, `11-7-stable`).
|
||||
You can select the branch in the version dropdown list in the top left corner of GitLab (below the menu bar).
|
||||
You can select the branch in the version dropdown list in the upper-left corner of GitLab (below the menu bar).
|
||||
|
||||
If the highest number stable branch is unclear, check the [GitLab blog](https://about.gitlab.com/blog/) for installation guide links by version.
|
||||
|
||||
|
|
|
|||
|
|
@ -100,8 +100,8 @@ Here are some common pitfalls and how to overcome them.
|
|||
|
||||
There are a couple of ways to achieve that:
|
||||
|
||||
- Whenever you perform a search there is a link on the search results page
|
||||
in the top right hand corner saying "Advanced search functionality is enabled".
|
||||
- When you perform a search, in the upper-right corner of the search results page,
|
||||
**Advanced search functionality is enabled** is displayed.
|
||||
This is always correctly identifying whether the current project/namespace
|
||||
being searched is using Elasticsearch.
|
||||
|
||||
|
|
|
|||
|
|
@ -233,7 +233,7 @@ and then connect it to your GitHub account
|
|||
|
||||
To fix this issue, you must activate GitHub sign-in in GitLab:
|
||||
|
||||
1. On the top bar, in the top right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Account**.
|
||||
1. In the **Service sign-in** section, select **Connect to GitHub**.
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ To enable the GitLab.com OmniAuth provider you must register your application wi
|
|||
GitLab.com generates an application ID and secret key for you to use.
|
||||
|
||||
1. Sign in to GitLab.com.
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Applications**.
|
||||
1. Provide the required details for **Add new application**.
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ To learn more about Gitpod, see their [features](https://www.gitpod.io/) and
|
|||
|
||||
With the Gitpod integration enabled for your GitLab instance, to enable it for yourself:
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Preferences**.
|
||||
1. Under **Preferences**, locate the **Integrations** section.
|
||||
1. Select the **Enable Gitpod integration** checkbox and select **Save changes**.
|
||||
|
|
@ -49,7 +49,7 @@ For self-managed GitLab instances, a GitLab administrator must:
|
|||
1. On the left sidebar, select **Settings > General**.
|
||||
1. Expand the **Gitpod** configuration section.
|
||||
1. Select the **Enable Gitpod integration** checkbox.
|
||||
1. Add the Gitpod instance URL (for example, `https://gitpod.example.com` or `https://gitpod.io`).
|
||||
1. Enter the Gitpod instance URL (for example, `https://gitpod.example.com` or `https://gitpod.io`).
|
||||
1. Select **Save changes**.
|
||||
1. Register the self-managed GitLab instance in Gitpod. For more information, see the [Gitpod documentation](https://www.gitpod.io/docs/configure/authentication/gitlab#registering-a-self-hosted-gitlab-installation).
|
||||
|
||||
|
|
|
|||
|
|
@ -124,7 +124,7 @@ existing GitLab account. To do so:
|
|||
|
||||
If you're not an administrator:
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Account**.
|
||||
1. In the **Service sign-in** section, select **Connect Kerberos**.
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ After adding an OAuth 2 application to an instance, you can use OAuth 2 to:
|
|||
|
||||
To create a new application for your user:
|
||||
|
||||
1. On the top bar, in the top right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Applications**.
|
||||
1. Enter a **Name** and **Redirect URI**.
|
||||
|
|
@ -83,7 +83,7 @@ The user authorization step is automatically skipped for this application.
|
|||
|
||||
To see all the application you've authorized with your GitLab credentials:
|
||||
|
||||
1. On the top bar, in the top right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile** and then select **Applications**.
|
||||
1. See the **Authorized applications** section.
|
||||
|
||||
|
|
|
|||
|
|
@ -235,7 +235,7 @@ created, you can activate an OmniAuth provider. For example, if you originally s
|
|||
provider like Twitter.
|
||||
|
||||
1. Sign in to GitLab with your GitLab credentials, LDAP, or another OmniAuth provider.
|
||||
1. On the top bar, in the top right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Account**.
|
||||
1. In the **Connected Accounts** section, select the OmniAuth provider, such as Twitter.
|
||||
|
|
|
|||
|
|
@ -63,7 +63,7 @@ If a GitLab administrator has enabled Sourcegraph, you can enable this feature i
|
|||
|
||||
In GitLab:
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Preferences**.
|
||||
1. In the **Integrations** section, select the checkbox under **Sourcegraph**.
|
||||
1. Select **Save changes**.
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ GitLab by using our OpenID authentication feature.
|
|||
First you must create a GitLab application to obtain an application ID and secret
|
||||
for authenticating into Vault. To do this, sign in to GitLab and follow these steps:
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Applications**.
|
||||
1. Fill out the application **Name** and [**Redirect URI**](https://developer.hashicorp.com/vault/docs/auth/jwt#redirect-uris).
|
||||
|
|
|
|||
|
|
@ -220,7 +220,7 @@ Prerequisites:
|
|||
|
||||
- You must have at least the Reporter role for the project.
|
||||
|
||||
To close an incident, in the top right, select **Close incident**.
|
||||
To close an incident, in the upper right, select **Close incident**.
|
||||
|
||||
When you close an incident that is linked to an [alert](alerts.md),
|
||||
the linked alert's status changes to **Resolved**.
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ To create a new dashboard from the GitLab user interface:
|
|||
1. Sign in to GitLab as a user with Maintainer or Owner
|
||||
[permissions](../../../user/permissions.md#project-members-permissions).
|
||||
1. Navigate to your dashboard at **Monitor > Metrics**.
|
||||
1. In the top-right corner of your dashboard, select the **{ellipsis_v}** **More actions** menu,
|
||||
1. In the upper-right corner of your dashboard, select the **{ellipsis_v}** **More actions** menu,
|
||||
and select **Create new**:
|
||||

|
||||
1. In the modal window, select **Open Repository**, then follow the instructions
|
||||
|
|
|
|||
|
|
@ -51,7 +51,7 @@ existing external dashboards:
|
|||
|
||||
1. Select **Save changes**.
|
||||
|
||||
GitLab displays a **View full dashboard** button in the top right corner of your
|
||||
GitLab displays a **View full dashboard** button in the upper-right corner of your
|
||||
[monitoring dashboard](../../../ci/environments/index.md#monitor-environments)
|
||||
which opens the URL you provided:
|
||||
|
||||
|
|
|
|||
|
|
@ -280,7 +280,7 @@ If you are an administrator, you can export your license usage into a CSV:
|
|||
|
||||
1. On the top bar, select **Main menu > Admin**.
|
||||
1. On the left sidebar, select **Subscription**.
|
||||
1. In the top right, select **Export license usage file**.
|
||||
1. In the upper right, select **Export license usage file**.
|
||||
|
||||
This file contains the information GitLab uses to manually process quarterly reconciliations or renewals. If your instance is firewalled or an offline environment, you must provide GitLab with this information.
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ comments: false
|
|||
|
||||
Make sure you view [this update guide](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/update/patch_versions.md) from the tag (version) of GitLab you would like to install.
|
||||
In most cases this should be the highest numbered production tag (without `rc` in it).
|
||||
You can select the tag in the version dropdown list in the top left corner of GitLab (below the menu bar).
|
||||
You can select the tag in the version dropdown list in the upper-left corner of GitLab (below the menu bar).
|
||||
|
||||
### 0. Backup
|
||||
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ comments: false
|
|||
# Upgrading Community Edition and Enterprise Edition from source **(FREE SELF)**
|
||||
|
||||
Make sure you view this update guide from the branch (version) of GitLab you
|
||||
would like to install (for example, `11.8`). You can select the required version of documentation in the dropdown list at the top right corner of GitLab documentation page.
|
||||
would like to install (for example, `11.8`). You can select the required version of documentation in the dropdown list in the upper-right corner of GitLab documentation page.
|
||||
|
||||
In each of the following examples, replace `BRANCH` with the branch of the version you upgrading to (for example, `11-8-stable` for `11.8`). Replace `PREVIOUS_BRANCH` with the
|
||||
branch for the version you are upgrading from (for example, `11-7-stable` for `11.7`).
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ To enable a project runner for more than one project:
|
|||
1. On the top bar, select **Main menu > Admin**.
|
||||
1. From the left sidebar, select **CI/CD > Runners**.
|
||||
1. Select the runner you want to edit.
|
||||
1. In the top right, select **Edit** (**{pencil}**).
|
||||
1. In the upper right, select **Edit** (**{pencil}**).
|
||||
1. Under **Restrict projects for this runner**, search for a project.
|
||||
1. To the left of the project, select **Enable**.
|
||||
1. Repeat this process for each additional project.
|
||||
|
|
|
|||
|
|
@ -245,7 +245,7 @@ thousands of vulnerabilities. Do not close the page until the download finishes.
|
|||
You can dismiss a vulnerability for the entire project:
|
||||
|
||||
1. Select the vulnerability in the Security Dashboard.
|
||||
1. In the top-right, from the **Status** selector menu, select **Dismissed**.
|
||||
1. In the upper right, from the **Status** selector menu, select **Dismissed**.
|
||||
1. Optional. Add a reason for the dismissal and select **Save comment**.
|
||||
|
||||
To undo this action, select a different status from the same menu.
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ celebrate an accomplishment or agree with an opinion.
|
|||
|
||||
To add an award emoji:
|
||||
|
||||
1. In the top right of the comment, select the smile (**{slight-smile}**).
|
||||
1. In the upper right of the comment, select the smile (**{slight-smile}**).
|
||||
1. Select an emoji from the dropdown list.
|
||||
|
||||
To remove an award emoji, select the emoji again.
|
||||
|
|
|
|||
|
|
@ -260,7 +260,7 @@ Prerequisites:
|
|||
|
||||
To create a thread by replying to a comment:
|
||||
|
||||
1. On the top right of the comment, select **Reply to comment** (**{comment}**).
|
||||
1. In the upper right of the comment, select **Reply to comment** (**{comment}**).
|
||||
|
||||

|
||||
|
||||
|
|
@ -308,7 +308,7 @@ To resolve a thread:
|
|||
|
||||
1. Go to the thread.
|
||||
1. Do one of the following:
|
||||
- In the top right of the original comment, select the **Resolve thread** (**{check-circle}**) icon.
|
||||
- In the upper right of the original comment, select **Resolve thread** (**{check-circle}**).
|
||||
- Below the last reply, in the **Reply** field, select **Resolve thread**.
|
||||
- Below the last reply, in the **Reply** field, enter text, select the **Resolve thread** checkbox, and select **Add comment now**.
|
||||
|
||||
|
|
|
|||
|
|
@ -155,7 +155,7 @@ You can sort members by **Account**, **Access granted**, **Max role**, or **Last
|
|||
|
||||
1. On the top bar, select **Main menu > Groups** and find your group.
|
||||
1. On the left sidebar, select **Group information > Members**.
|
||||
1. Above the list of members, on the top right, from the **Account** list, select
|
||||
1. Above the list of members, in the upper right, from the **Account** list, select
|
||||
the criteria to filter by.
|
||||
1. To switch the sort between ascending and descending, to the right of the **Account** list, select the
|
||||
arrow (**{sort-lowest}** or **{sort-highest}**).
|
||||
|
|
|
|||
|
|
@ -492,7 +492,7 @@ group owner, and then you can unlink the account.
|
|||
|
||||
For example, to unlink the `MyOrg` account:
|
||||
|
||||
1. On the top bar, in the top right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Account**.
|
||||
1. In the **Service sign-in** section, select **Disconnect** next to the connected account.
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ Prerequisites:
|
|||
To configure Okta for SCIM:
|
||||
|
||||
1. Sign in to Okta.
|
||||
1. Ensure you are in the Admin Area by selecting the **Admin** button located in the top right. The button is not visible from the Admin Area.
|
||||
1. Ensure you are in the Admin Area by selecting the **Admin** button located in the upper right. The button is not visible from the Admin Area.
|
||||
1. In the **Application** tab, select **Browse App Catalog**.
|
||||
1. Search for **GitLab**, find and select the **GitLab** application.
|
||||
1. On the GitLab application overview page, select **Add**.
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ You cannot host a GitLab Pages subgroup website with a top-level domain name. Fo
|
|||
To create a subgroup:
|
||||
|
||||
1. On the top bar, select **Main menu > Groups** and find and select the parent group to add a subgroup to.
|
||||
1. On the parent group's overview page, in the top right, select **New subgroup**.
|
||||
1. On the parent group's overview page, in the upper right, select **New subgroup**.
|
||||
1. Select **Create group**.
|
||||
1. Fill in the fields. View a list of [reserved names](../../reserved_names.md) that cannot be used as group names.
|
||||
1. Select **Create group**.
|
||||
|
|
|
|||
|
|
@ -305,7 +305,7 @@ After you create a value stream, you can customize it to suit your purposes. To
|
|||
|
||||
1. On the top bar, select **Main menu > Groups** and find your group.
|
||||
1. On the left sidebar, select **Analytics > Value Stream**.
|
||||
1. In the top right, select the dropdown list, and select a value stream.
|
||||
1. In the upper right, select the dropdown list, and select a value stream.
|
||||
1. Next to the value stream dropdown list, select **Edit**.
|
||||
1. Optional:
|
||||
- Rename the value stream.
|
||||
|
|
@ -324,7 +324,7 @@ To delete a custom value stream:
|
|||
|
||||
1. On the top bar, select **Main menu > Groups** and find your group.
|
||||
1. On the left sidebar, select **Analytics > Value Stream**.
|
||||
1. In the top right, select the dropdown list and then select the value stream you would like to delete.
|
||||
1. In the upper right, select the dropdown list and then select the value stream you would like to delete.
|
||||
1. Select **Delete (name of value stream)**.
|
||||
1. To confirm, select **Delete**.
|
||||
|
||||
|
|
|
|||
|
|
@ -58,7 +58,10 @@ WARNING:
|
|||
Like any other job artifact, Terraform plan data is viewable by anyone with the Guest role on the repository.
|
||||
Neither Terraform nor GitLab encrypts the plan file by default. If your Terraform plan
|
||||
includes sensitive data, like passwords, access tokens, or certificates, you should
|
||||
encrypt plan output or modify the project visibility settings.
|
||||
encrypt plan output or modify the project visibility settings. We also strongly recommend that you **disable**
|
||||
[public pipelines](../../../ci/pipelines/settings.md#change-pipeline-visibility-for-non-project-members-in-public-projects)
|
||||
by setting the artifact's public flag to false (`public: false`). This setting ensures artifacts are
|
||||
accessible only to GitLab Administrators and project members with the Reporter role and above.
|
||||
|
||||
To configure GitLab CI/CD as a backend:
|
||||
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ To create an objective:
|
|||
|
||||
1. On the top bar, select **Main menu > Projects** and find your project.
|
||||
1. On the left sidebar, select **Issues**.
|
||||
1. In the top right corner, next to **New issue**, select the down arrow **{chevron-lg-down}** and then select **New objective**.
|
||||
1. In the upper-right corner, next to **New issue**, select the down arrow **{chevron-lg-down}** and then select **New objective**.
|
||||
1. Select **New objective** again.
|
||||
1. Enter the objective title.
|
||||
1. Select **Create objective**.
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ Deleting a user deletes all projects in that user namespace.
|
|||
|
||||
As a user, to delete your own account:
|
||||
|
||||
1. On the top bar, in the top right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Account**.
|
||||
1. Select **Delete account**.
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ review the sessions, and revoke any you don't recognize.
|
|||
|
||||
To list all active sessions:
|
||||
|
||||
1. On the top bar, in the top right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Active Sessions**.
|
||||
|
||||
|
|
@ -33,7 +33,7 @@ exceeds 100, the oldest ones are deleted.
|
|||
|
||||
To revoke an active session:
|
||||
|
||||
1. On the top bar, in the top right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Active Sessions**.
|
||||
1. Select **Revoke** next to a session. The current session cannot be revoked, as this would sign you out of GitLab.
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ GitLab tracks the following contribution events:
|
|||
|
||||
To view your daily contributions:
|
||||
|
||||
1. On the top bar, in the top-right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select your name from the dropdown list.
|
||||
1. In the contributions calendar:
|
||||
- To view the number of contributions for a specific day, hover over a tile.
|
||||
|
|
@ -53,7 +53,7 @@ The contributions calendar graph and recent activity list displays your
|
|||
|
||||
To view private contributions:
|
||||
|
||||
1. On the top bar, in the top-right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. In the **Main settings** section, select the **Include private contributions on my profile** checkbox.
|
||||
1. Select **Update profile settings**.
|
||||
|
|
@ -83,7 +83,7 @@ GitLab provides RSS feeds of user activity. To subscribe to the
|
|||
RSS feed of a user's activity:
|
||||
|
||||
1. Go to the [user's profile](index.md#access-your-user-profile).
|
||||
1. In the top right, select the feed symbol **{rss}** to display the results as an RSS feed in Atom format.
|
||||
1. In the upper right, select the feed symbol **{rss}** to display the results as an RSS feed in Atom format.
|
||||
|
||||
The URL of the result contains both a feed token, and
|
||||
the user's activity that you're authorized to view.
|
||||
|
|
@ -96,7 +96,7 @@ If you think your feed token has been exposed, you should reset it.
|
|||
|
||||
To reset your feed token:
|
||||
|
||||
1. On the top bar, in the top right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Access Tokens**.
|
||||
1. Scroll down. In the **Feed token** section, select the
|
||||
|
|
|
|||
|
|
@ -15,14 +15,14 @@ Your profile also includes settings, which you use to customize your GitLab expe
|
|||
|
||||
To access your profile:
|
||||
|
||||
1. On the top bar, in the top-right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select your name or username.
|
||||
|
||||
## Access your user settings
|
||||
|
||||
To access your user settings:
|
||||
|
||||
1. On the top bar, in the top-right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
|
||||
## Change your username
|
||||
|
|
@ -40,7 +40,7 @@ Prerequisites:
|
|||
|
||||
To change your username:
|
||||
|
||||
1. On the top bar, in the top-right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, 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.
|
||||
|
|
@ -50,7 +50,7 @@ To change your username:
|
|||
|
||||
To add new email to your account:
|
||||
|
||||
1. On the top bar, in the top-right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Emails**.
|
||||
1. In the **Email** text box, enter the new email.
|
||||
|
|
@ -63,7 +63,7 @@ You can make your user profile visible to only you and GitLab administrators.
|
|||
|
||||
To make your profile private:
|
||||
|
||||
1. On the top bar, in the top-right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. Select the **Private profile** checkbox.
|
||||
1. Select **Update profile settings**.
|
||||
|
|
@ -129,7 +129,7 @@ They can help other users connect with you on other platforms.
|
|||
|
||||
To add links to other accounts:
|
||||
|
||||
1. On the top bar, in the top-right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. In the **Main settings** section, add your information from:
|
||||
- Skype
|
||||
|
|
@ -143,7 +143,7 @@ In the user contribution calendar graph and recent activity list, you can see yo
|
|||
|
||||
To show private contributions:
|
||||
|
||||
1. On the top bar, in the top-right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. In the **Main settings** section, select the **Include private contributions on my profile** checkbox.
|
||||
1. Select **Update profile settings**.
|
||||
|
|
@ -157,7 +157,7 @@ your name in your profile.
|
|||
|
||||
To specify your pronouns:
|
||||
|
||||
1. On the top bar, in the top-right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. In the **Pronouns** text box, enter your pronouns.
|
||||
1. Select **Update profile settings**.
|
||||
|
|
@ -171,7 +171,7 @@ your name.
|
|||
|
||||
To add your name pronunciation:
|
||||
|
||||
1. On the top bar, in the top-right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. In the **Pronunciation** text box, enter how your name is pronounced.
|
||||
1. Select **Update profile settings**.
|
||||
|
|
@ -187,7 +187,7 @@ Your status is publicly visible even if your [profile is private](#make-your-use
|
|||
|
||||
To set your current status:
|
||||
|
||||
1. On the top bar, in the top-right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Set status** or, if you have already set a status, **Edit status**.
|
||||
1. Set the desired emoji and status message. Status messages must be plain text and 100 characters or less.
|
||||
They can also contain emoji codes like, `I'm on vacation :palm_tree:`.
|
||||
|
|
@ -210,12 +210,12 @@ To indicate to others that you are busy, you can set an indicator.
|
|||
To set the busy status indicator, either:
|
||||
|
||||
- Set it directly:
|
||||
1. On the top bar, in the top-right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Set status** or, if you have already set a status, **Edit status**.
|
||||
1. Select the **Set yourself as busy** checkbox.
|
||||
|
||||
- Set it on your profile:
|
||||
1. On the top bar, in the top-right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. In the **Current status** section, select the **Set yourself as busy** checkbox.
|
||||
|
||||
|
|
@ -249,7 +249,7 @@ You can set your local time zone to:
|
|||
|
||||
To set your time zone:
|
||||
|
||||
1. On the top bar, in the top-right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. In the **Time settings** section, select your time zone from the dropdown list.
|
||||
|
||||
|
|
@ -262,7 +262,7 @@ Your primary email is used by default.
|
|||
|
||||
To change your commit email:
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. In the **Commit email** dropdown list, select an email address.
|
||||
1. Select **Update profile settings**.
|
||||
|
|
@ -276,7 +276,7 @@ Your primary email:
|
|||
|
||||
To change your primary email:
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. In the **Email** field, enter your new email address.
|
||||
1. Select **Update profile settings**.
|
||||
|
|
@ -285,7 +285,7 @@ To change your primary email:
|
|||
|
||||
You can select one of your [configured email addresses](#add-emails-to-your-user-profile) to be displayed on your public profile:
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. In the **Public email** field, select one of the available email addresses.
|
||||
1. Select **Update profile settings**.
|
||||
|
|
@ -297,7 +297,7 @@ so you can keep your email information private.
|
|||
|
||||
To use a private commit email:
|
||||
|
||||
1. On the top bar, in the top-right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. In the **Commit email** dropdown list, select **Use a private email**.
|
||||
1. Select **Update profile settings**.
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ anyone else.
|
|||
|
||||
To edit your notification settings:
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Preferences**.
|
||||
1. On the left sidebar, select **Notifications**.
|
||||
1. Edit the desired global, group, or project notification settings.
|
||||
|
|
@ -100,7 +100,7 @@ You can select a notification level and email address for each group.
|
|||
|
||||
To select a notification level for a group, use either of these methods:
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Preferences**.
|
||||
1. On the left sidebar, select **Notifications**.
|
||||
1. Locate the project in the **Groups** section.
|
||||
|
|
@ -119,7 +119,7 @@ Or:
|
|||
You can select an email address to receive notifications for each group you belong to.
|
||||
You can use group notifications, for example, if you work freelance, and want to keep email about clients' projects separate.
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Preferences**.
|
||||
1. On the left sidebar, select **Notifications**.
|
||||
1. Locate the project in the **Groups** section.
|
||||
|
|
@ -131,7 +131,7 @@ To help you stay up to date, you can select a notification level for each projec
|
|||
|
||||
To select a notification level for a project, use either of these methods:
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Preferences**.
|
||||
1. On the left sidebar, select **Notifications**.
|
||||
1. Locate the project in the **Projects** section.
|
||||
|
|
@ -153,7 +153,7 @@ These emails are enabled by default.
|
|||
|
||||
To opt out:
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Preferences**.
|
||||
1. On the left sidebar, select **Notifications**.
|
||||
1. Clear the **Receive product marketing emails** checkbox.
|
||||
|
|
@ -330,7 +330,7 @@ The participants are:
|
|||
|
||||
If you no longer wish to receive any email notifications:
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Preferences**.
|
||||
1. On the left sidebar, select **Notifications**.
|
||||
1. Clear the **Receive product marketing emails** checkbox.
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ Personal access tokens are not FIPS compliant and creation and use are disabled
|
|||
|
||||
You can create as many personal access tokens as you like.
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Access Tokens**.
|
||||
1. Enter a name and optional expiry date for the token.
|
||||
|
|
@ -82,7 +82,7 @@ for guidance on managing personal access tokens (for example, setting a short ex
|
|||
|
||||
At any time, you can revoke a personal access token.
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Access Tokens**.
|
||||
1. In the **Active personal access tokens** area, next to the key, select **Revoke**.
|
||||
|
|
@ -96,7 +96,7 @@ Token usage information is updated every 24 hours. GitLab considers a token used
|
|||
|
||||
To view the last time a token was used:
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Access Tokens**.
|
||||
1. In the **Active personal access tokens** area, next to the key, view the **Last Used** date.
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ of GitLab to their liking.
|
|||
|
||||
To navigate to your profile's preferences:
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Preferences**.
|
||||
|
||||
## Navigation theme
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ authorization provider, you do not need to choose a password. GitLab
|
|||
You can change your password. GitLab enforces [password requirements](#password-requirements) when you choose your new
|
||||
password.
|
||||
|
||||
1. On the top bar, in the top-right corner, select your avatar.
|
||||
1. On the top bar, in the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **Password**.
|
||||
1. In the **Current password** text box, enter your current password.
|
||||
|
|
|
|||
|
|
@ -209,7 +209,7 @@ requests that modify locked files. Unlock the file to allow changes.
|
|||
To lock a file:
|
||||
|
||||
1. Open the file or directory in GitLab.
|
||||
1. On the top right, above the file, select **Lock**.
|
||||
1. In the upper right, above the file, select **Lock**.
|
||||
1. On the confirmation dialog box, select **OK**.
|
||||
|
||||
If you do not have permission to lock the file, the button is not enabled.
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ notifications to Google Chat:
|
|||
To enable the integration in Google Chat:
|
||||
|
||||
1. Enter the room where you want to receive notifications from GitLab.
|
||||
1. Open the room dropdown list on the top-left and select **Manage webhooks**.
|
||||
1. Open the room dropdown list in the upper left and select **Manage webhooks**.
|
||||
1. Enter the name for your webhook, for example "GitLab integration".
|
||||
1. Optional. Add an avatar for your bot.
|
||||
1. Select **Save**.
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ To create an issue:
|
|||
1. On the top bar, select **Main menu > Projects** and find your project.
|
||||
1. Either:
|
||||
|
||||
- On the left sidebar, select **Issues**, and then, in the top right corner, select **New issue**.
|
||||
- On the left sidebar, select **Issues**, and then, in the upper-right corner, select **New issue**.
|
||||
- On the top bar, select the plus sign (**{plus-square}**) and then, under **This project**,
|
||||
select **New issue**.
|
||||
|
||||
|
|
@ -53,7 +53,7 @@ To create an issue from a group:
|
|||
|
||||
1. On the top bar, select **Main menu > Groups** and find your group.
|
||||
1. On the left sidebar, select **Issues**.
|
||||
1. In the top right corner, select **Select project to create issue**.
|
||||
1. In the upper-right corner, select **Select project to create issue**.
|
||||
1. Select the project you'd like to create an issue for. The button now reflects the selected
|
||||
project.
|
||||
1. Select **New issue in `<project name>`**.
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ To import issues:
|
|||
|
||||
1. Go to your project's Issues list page.
|
||||
1. Open the import feature, depending if the project has issues:
|
||||
- Existing issues are present: Select the import icon at the top right, next to **Edit issues**.
|
||||
- Existing issues are present: Select the import icon in the upper right, next to **Edit issues**.
|
||||
- Project has no issues: Select **Import CSV** in the middle of the page.
|
||||
1. Select the file you want to import, and then select **Import issues**.
|
||||
|
||||
|
|
|
|||
|
|
@ -92,12 +92,12 @@ The design you selected opens. You can then [zoom in](#zoom-in-on-a-design) on i
|
|||
|
||||
When viewing a design, you can move to other designs. To do so, either:
|
||||
|
||||
- In the top-right corner, select **Go to previous design** (**{chevron-lg-left}**) or **Go to next design** (**{chevron-lg-right}**).
|
||||
- In the upper-right corner, select **Go to previous design** (**{chevron-lg-left}**) or **Go to next design** (**{chevron-lg-right}**).
|
||||
- Press <kbd>Left</kbd> or <kbd>Right</kbd> on your keyboard.
|
||||
|
||||
To return to the issue view, either:
|
||||
|
||||
- In the top-left corner, select the close icon (**{close}**).
|
||||
- In the upper-left corner, select the close icon (**{close}**).
|
||||
- Press <kbd>Esc</kbd> on your keyboard.
|
||||
|
||||
When a design is added, a green icon (**{plus-square}**) is displayed on the image
|
||||
|
|
@ -186,7 +186,7 @@ Prerequisites:
|
|||
To archive a single design:
|
||||
|
||||
1. Select the design to view it enlarged.
|
||||
1. In the top right corner, select **Archive design** (**{archive}**).
|
||||
1. In the upper-right corner, select **Archive design** (**{archive}**).
|
||||
1. Select **Archive designs**.
|
||||
|
||||
To archive multiple designs at once:
|
||||
|
|
@ -235,7 +235,7 @@ When you're done discussing part of a design, you can resolve the discussion thr
|
|||
|
||||
To mark a thread as resolved or unresolved, either:
|
||||
|
||||
- In the top-right corner of the first comment of the discussion, select **Resolve thread** or **Unresolve thread** (**{check-circle}**).
|
||||
- In the upper-right corner of the first comment of the discussion, select **Resolve thread** or **Unresolve thread** (**{check-circle}**).
|
||||
- Add a new comment to the thread and select or clear the **Resolve thread** checkbox.
|
||||
|
||||
Resolving a discussion thread also marks any pending [to-do items](../../todos.md) related to notes
|
||||
|
|
|
|||
|
|
@ -382,7 +382,7 @@ To view all issues assigned to you:
|
|||
Or:
|
||||
|
||||
- To use a [keyboard shortcut](../../shortcuts.md), press <kbd>Shift</kbd> + <kbd>i</kbd>.
|
||||
- On the top bar, on the top right, select **{issues}** **Issues**.
|
||||
- On the top bar, in the upper right, select **{issues}** **Issues**.
|
||||
|
||||
## Filter the list of issues
|
||||
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ clear your browser's cookies or change this behavior again.
|
|||
|
||||
To view one file at a time for all of your merge requests:
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Preferences**.
|
||||
1. Scroll to the **Behavior** section and select the **Show one file at a time on merge request's Changes tab** checkbox.
|
||||
1. Select **Save changes**.
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ by the merge request:
|
|||
1. On the top bar, select **Main menu > Projects** and find your project.
|
||||
1. On the left sidebar, select **Merge requests**, and find your merge request.
|
||||
1. Scroll to the merge request reports section, and find the **Merged by** report.
|
||||
1. In the top right, select **Cherry-pick**:
|
||||
1. In the upper right, select **Cherry-pick**:
|
||||
|
||||

|
||||
1. In the modal window, select the project and branch to cherry-pick into.
|
||||
|
|
@ -87,7 +87,7 @@ list of commits included in a merge request:
|
|||
1. On the left sidebar, select **Merge requests**, and find your merge request.
|
||||
1. In the merge request's secondary menu, select **Commits** to display the commit details page.
|
||||
1. Select the title of the commit you want to cherry-pick.
|
||||
1. In the top right corner, select **Options > Cherry-pick** to show the cherry-pick modal.
|
||||
1. In the upper-right corner, select **Options > Cherry-pick** to show the cherry-pick modal.
|
||||
1. In the modal window, select the project and branch to cherry-pick into.
|
||||
1. Optional. Select **Start a new merge request with these changes**.
|
||||
1. Select **Cherry-pick**.
|
||||
|
|
@ -101,7 +101,7 @@ when you view that file in your project's Git repository:
|
|||
1. On the left sidebar, select **Repository > Files** and go to the file
|
||||
changed by the commit.
|
||||
1. Select **History**, then select the title of the commit you want to cherry-pick.
|
||||
1. In the top right corner, select **Options > Cherry-pick** to show the cherry-pick modal.
|
||||
1. In the upper-right corner, select **Options > Cherry-pick** to show the cherry-pick modal.
|
||||
1. In the modal window, select the project and branch to cherry-pick into.
|
||||
1. Optional. Select **Start a new merge request with these changes**.
|
||||
1. Select **Cherry-pick**.
|
||||
|
|
@ -115,7 +115,7 @@ You can cherry-pick merge requests from the same project, or forks of the same
|
|||
project, from the GitLab user interface:
|
||||
|
||||
1. In the merge request's secondary menu, select **Commits** to display the commit details page.
|
||||
1. In the top right corner, select **Options > Cherry-pick** to show the cherry-pick modal.
|
||||
1. In the upper-right corner, select **Options > Cherry-pick** to show the cherry-pick modal.
|
||||
1. In **Pick into project** and **Pick into branch**, select the destination project and branch:
|
||||

|
||||
1. Optional. Select **Start a new merge request** if you're ready to create a merge request.
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ You can create a merge request from the list of merge requests.
|
|||
|
||||
1. On the top bar, select **Main menu > Projects** and find your project.
|
||||
1. On the left menu, select **Merge requests**.
|
||||
1. In the top right, select **New merge request**.
|
||||
1. In the upper right, select **New merge request**.
|
||||
1. Select a source and target branch and then **Compare branches and continue**.
|
||||
1. Fill out the fields and select **Create merge request**.
|
||||
|
||||
|
|
@ -172,7 +172,7 @@ To create a merge request by sending an email:
|
|||
|
||||
1. On the top bar, select **Main menu > Projects** and find your project.
|
||||
1. On the left menu, select **Merge requests**.
|
||||
1. In the top right, select **Email a new merge request to this project**.
|
||||
1. In the upper right, select **Email a new merge request to this project**.
|
||||
An email address is displayed. Copy this address.
|
||||
Ensure you keep this address private.
|
||||
1. Open an email and compose a message with the following information:
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ the **Merge** button until you remove the **Draft** flag:
|
|||
|
||||
There are several ways to flag a merge request as a draft:
|
||||
|
||||
- **Viewing a merge request**: In the top right corner of the merge request, select **Mark as draft**.
|
||||
- **Viewing a merge request**: In the upper-right corner of the merge request, select **Mark as draft**.
|
||||
- **Creating or editing a merge request**: Add `[Draft]`, `Draft:` or `(Draft)` to
|
||||
the beginning of the merge request's title, or select **Mark as draft**
|
||||
below the **Title** field.
|
||||
|
|
@ -41,7 +41,7 @@ There are several ways to flag a merge request as a draft:
|
|||
|
||||
When a merge request is ready to be merged, you can remove the `Draft` flag in several ways:
|
||||
|
||||
- **Viewing a merge request**: In the top right corner of the merge request, select **Mark as ready**.
|
||||
- **Viewing a merge request**: In the upper-right corner of the merge request, select **Mark as ready**.
|
||||
Users with at least the Developer role
|
||||
can also scroll to the bottom of the merge request description and select **Mark as ready**:
|
||||
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ or:
|
|||
|
||||
or:
|
||||
|
||||
1. On the top bar, on the top right, select **{merge-request-open}** **Merge requests**.
|
||||
1. On the top bar, in the upper right, select **{merge-request-open}** **Merge requests**.
|
||||
1. From the dropdown list, select **Assigned to you**.
|
||||
|
||||
## Filter the list of merge requests
|
||||
|
|
@ -258,7 +258,7 @@ On self-managed GitLab, by default this feature is not available. To make it ava
|
|||
On GitLab.com, this feature is enabled in the following projects: `gitlab-org/gitlab`, `gitlab-com/www-gitlab-com`, and `gitlab-org/customers-gitlab-com`.
|
||||
|
||||
When this feature flag is enabled, you can find the following actions in
|
||||
**Merge request actions** (**{ellipsis_v}**) on the top right:
|
||||
**Merge request actions** (**{ellipsis_v}**) in the upper right:
|
||||
|
||||
- The [notifications](../../profile/notifications.md#edit-notification-settings-for-issues-merge-requests-and-epics) toggle
|
||||
- Mark merge request as ready or [draft](../merge_requests/drafts.md)
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@ To do this:
|
|||
1. If you don't know the merge request the commit originated from:
|
||||
1. On the left sidebar, select **Repository > Commits**.
|
||||
1. Select the title of the commit to display full information about the commit.
|
||||
1. In the top right corner, select **Options**, then select **Revert**.
|
||||
1. In the upper-right corner, select **Options**, then select **Revert**.
|
||||
1. In **Revert in branch**, select the branch to revert your changes into.
|
||||
1. Optional. Select **Start a new merge request** to start a new merge request with the new revert commit.
|
||||
1. Select **Revert**.
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ To download the changes included in a merge request as a diff:
|
|||
1. On the top bar, select **Main menu > Projects** and find your project.
|
||||
1. On the left sidebar, select **Merge requests**.
|
||||
1. Select your merge request.
|
||||
1. On the top right, select **Code > Plain diff**.
|
||||
1. In the upper right, select **Code > Plain diff**.
|
||||
|
||||
If you know the URL of the merge request, you can also download the diff from
|
||||
the command line by appending `.diff` to the URL. This example downloads the diff
|
||||
|
|
@ -107,7 +107,7 @@ To download the changes included in a merge request as a patch file:
|
|||
1. On the top bar, select **Main menu > Projects** and find your project.
|
||||
1. On the left sidebar, select **Merge requests**.
|
||||
1. Select your merge request.
|
||||
1. On the top right, select **Code > Email patches**.
|
||||
1. In the upper right, select **Code > Email patches**.
|
||||
|
||||
If you know the URL of the merge request, you can also download the patch from
|
||||
the command line by appending `.patch` to the URL. This example downloads the patch
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ To add your custom domain to GitLab Pages:
|
|||
|
||||
If this path is not visible, select **Deployments > Pages**.
|
||||
[This location is part of an experiment](../index.md#menu-position-test).
|
||||
1. In the top-right corner, select **New Domain**.
|
||||
1. In the upper-right corner, select **New Domain**.
|
||||
1. In **Domain**, enter the domain name.
|
||||
1. Optional. In **Certificate**, turn off the **Automatic certificate management using Let's Encrypt** toggle to add an [SSL/TLS certificate](#adding-an-ssltls-certificate-to-pages). You can also add the certificate and key later.
|
||||
1. Select **Create New Domain**.
|
||||
|
|
@ -300,7 +300,7 @@ meet these requirements.
|
|||
|
||||
If this path is not visible, select **Deployments > Pages**.
|
||||
[This location is part of an experiment](../index.md#menu-position-test).
|
||||
1. In the top-right corner, select **New Domain**.
|
||||
1. In the upper-right corner, select **New Domain**.
|
||||
1. In **Domain**, enter the domain name.
|
||||
1. In **Certificate**, turn off the **Automatic certificate management using Let's Encrypt** toggle to add an [SSL/TLS certificate](#adding-an-ssltls-certificate-to-pages).
|
||||
1. Select **Create New Domain**.
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ To fork a sample project and create a Pages website:
|
|||
|
||||
1. View the sample projects by navigating to the [GitLab Pages examples](https://gitlab.com/pages) group.
|
||||
1. Select the name of the project you want to [fork](../../repository/forking_workflow.md#creating-a-fork).
|
||||
1. In the top right, select **Fork** and then choose a namespace to fork to.
|
||||
1. In the upper right, select **Fork** and then choose a namespace to fork to.
|
||||
1. For your project, on the left sidebar, select **CI/CD > Pipelines** and then **Run pipeline**.
|
||||
GitLab CI/CD builds and deploys your site.
|
||||
|
||||
|
|
|
|||
|
|
@ -194,7 +194,7 @@ Prerequisites:
|
|||
In the UI:
|
||||
|
||||
1. On the left sidebar, select **Deployments > Releases**.
|
||||
1. In the top-right corner of the release you want to modify, select **Edit this release** (the pencil icon).
|
||||
1. In the upper-right corner of the release you want to modify, select **Edit this release** (the pencil icon).
|
||||
1. On the **Edit Release** page, change the release's details.
|
||||
1. Select **Save changes**.
|
||||
|
||||
|
|
@ -216,7 +216,7 @@ In the UI:
|
|||
|
||||
1. On the top bar, select **Main menu > Projects** and find your project.
|
||||
1. On the left sidebar, select **Deployments > Releases**.
|
||||
1. In the top-right corner of the release you want to delete, select **Edit this release**
|
||||
1. In the upper-right corner of the release you want to delete, select **Edit this release**
|
||||
(**{pencil}**).
|
||||
1. On the **Edit Release** page, select **Delete**.
|
||||
1. Select **Delete release**.
|
||||
|
|
@ -236,7 +236,7 @@ the [Releases API](../../../api/releases/index.md#create-a-release).
|
|||
In the user interface, to associate milestones to a release:
|
||||
|
||||
1. On the left sidebar, select **Deployments > Releases**.
|
||||
1. In the top-right corner of the release you want to modify, select **Edit this release** (the pencil icon).
|
||||
1. In the upper-right corner of the release you want to modify, select **Edit this release** (the pencil icon).
|
||||
1. From the **Milestones** list, select each milestone you want to associate. You can select multiple milestones.
|
||||
1. Select **Save changes**.
|
||||
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ submit them through a merge request to the repository you don't have access to.
|
|||
|
||||
To fork an existing project in GitLab:
|
||||
|
||||
1. On the project's home page, in the top right, select **{fork}** **Fork**:
|
||||
1. On the project's home page, in the upper right, select **{fork}** **Fork**:
|
||||

|
||||
1. Optional. Edit the **Project name**.
|
||||
1. For **Project URL**, select the [namespace](../../namespace/index.md)
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ To view a user's public GPG key, you can either:
|
|||
|
||||
- Go to `https://gitlab.example.com/<USERNAME>.gpg`. GitLab displays the GPG key,
|
||||
if the user has configured one, or a blank page for users without a configured GPG key.
|
||||
- Go to the user's profile (such as `https://gitlab.example.com/<USERNAME>`). In the top right
|
||||
- Go to the user's profile (such as `https://gitlab.example.com/<USERNAME>`). In the upper right
|
||||
of the user's profile, select **View public GPG keys** (**{key}**).
|
||||
|
||||
## Configure commit signing
|
||||
|
|
@ -119,7 +119,7 @@ If you don't already have a GPG key, create one:
|
|||
To add a GPG key to your user settings:
|
||||
|
||||
1. Sign in to GitLab.
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **GPG Keys** (**{key}**).
|
||||
1. In **Key**, paste your _public_ key.
|
||||
|
|
@ -253,7 +253,7 @@ If a GPG key becomes compromised, revoke it. Revoking a key changes both future
|
|||
|
||||
To revoke a GPG key:
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **GPG Keys** (**{key}**).
|
||||
1. Select **Revoke** next to the GPG key you want to delete.
|
||||
|
|
@ -268,7 +268,7 @@ When you remove a GPG key from your GitLab account:
|
|||
|
||||
To remove a GPG key from your account:
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select **GPG Keys** (**{key}**).
|
||||
1. Select **Remove** (**{remove}**) next to the GPG key you want to delete.
|
||||
|
|
|
|||
|
|
@ -169,7 +169,7 @@ If an SSH key becomes compromised, revoke it. Revoking a key changes both future
|
|||
|
||||
To revoke an SSH key:
|
||||
|
||||
1. In the top-right corner, select your avatar.
|
||||
1. In the upper-right corner, select your avatar.
|
||||
1. Select **Edit profile**.
|
||||
1. On the left sidebar, select (**{key}**) **SSH Keys**.
|
||||
1. Select **Revoke** next to the SSH key you want to delete.
|
||||
|
|
|
|||
|
|
@ -236,7 +236,7 @@ To import requirements:
|
|||
|
||||
1. In a project, go to **Issues > Requirements**.
|
||||
- If the project already has existing requirements, select the import icon (**{import}**) in the
|
||||
top right.
|
||||
upper right.
|
||||
- For a project without any requirements, select **Import CSV** in the middle of the page.
|
||||
1. Select the file and select **Import requirements**.
|
||||
|
||||
|
|
@ -296,7 +296,7 @@ Prerequisite:
|
|||
To export requirements:
|
||||
|
||||
1. In a project, go to **Issues > Requirements**.
|
||||
1. In the top right, select the **Export as CSV** icon (**{export}**).
|
||||
1. In the upper right, select the **Export as CSV** icon (**{export}**).
|
||||
|
||||
A confirmation modal appears.
|
||||
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue