Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
eba30e2ad8
commit
6aaf8cf6f4
1
Gemfile
1
Gemfile
|
@ -292,7 +292,6 @@ gem 'sassc-rails', '~> 2.1.0'
|
|||
gem 'terser', '1.0.2'
|
||||
|
||||
gem 'addressable', '~> 2.7'
|
||||
gem 'font-awesome-rails', '~> 4.7'
|
||||
gem 'gemojione', '~> 3.3'
|
||||
gem 'gon', '~> 6.2'
|
||||
gem 'request_store', '~> 1.5'
|
||||
|
|
|
@ -396,8 +396,6 @@ GEM
|
|||
fog-xml (0.1.3)
|
||||
fog-core
|
||||
nokogiri (>= 1.5.11, < 2.0.0)
|
||||
font-awesome-rails (4.7.0.5)
|
||||
railties (>= 3.2, < 6.1)
|
||||
formatador (0.2.5)
|
||||
fugit (1.2.1)
|
||||
et-orbi (~> 1.1, >= 1.1.8)
|
||||
|
@ -1347,7 +1345,6 @@ DEPENDENCIES
|
|||
fog-local (~> 0.6)
|
||||
fog-openstack (~> 1.0)
|
||||
fog-rackspace (~> 0.1.1)
|
||||
font-awesome-rails (~> 4.7)
|
||||
fugit (~> 1.2.1)
|
||||
fuubar (~> 2.2.0)
|
||||
gemojione (~> 3.3)
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 596 B |
Binary file not shown.
After Width: | Height: | Size: 599 B |
|
@ -130,6 +130,11 @@ export function isListDraggable(list) {
|
|||
return list.listType !== ListType.backlog && list.listType !== ListType.closed;
|
||||
}
|
||||
|
||||
// EE-specific feature. Find the implementation in the `ee/`-folder
|
||||
export function transformBoardConfig() {
|
||||
return '';
|
||||
}
|
||||
|
||||
export default {
|
||||
getMilestone,
|
||||
formatIssue,
|
||||
|
|
|
@ -7,7 +7,6 @@ import { sortableStart, sortableEnd } from '~/boards/mixins/sortable_default_opt
|
|||
import BoardNewIssue from './board_new_issue_new.vue';
|
||||
import BoardCard from './board_card.vue';
|
||||
import eventHub from '../eventhub';
|
||||
import boardsStore from '../stores/boards_store';
|
||||
import { sprintf, __ } from '~/locale';
|
||||
|
||||
export default {
|
||||
|
@ -44,7 +43,6 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
scrollOffset: 250,
|
||||
filters: boardsStore.state.filters,
|
||||
showCount: false,
|
||||
showIssueForm: false,
|
||||
};
|
||||
|
@ -94,12 +92,6 @@ export default {
|
|||
},
|
||||
},
|
||||
watch: {
|
||||
filters: {
|
||||
handler() {
|
||||
this.listRef.scrollTop = 0;
|
||||
},
|
||||
deep: true,
|
||||
},
|
||||
issues() {
|
||||
this.$nextTick(() => {
|
||||
this.showCount = this.scrollHeight() > Math.ceil(this.listHeight());
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import FilteredSearchBoards from '../../filtered_search_boards';
|
||||
import FilteredSearchContainer from '../../../filtered_search/container';
|
||||
import vuexstore from '~/boards/stores';
|
||||
|
||||
export default {
|
||||
name: 'modal-filters',
|
||||
|
@ -13,7 +12,7 @@ export default {
|
|||
mounted() {
|
||||
FilteredSearchContainer.container = this.$el;
|
||||
|
||||
this.filteredSearch = new FilteredSearchBoards(this.store, vuexstore);
|
||||
this.filteredSearch = new FilteredSearchBoards(this.store);
|
||||
this.filteredSearch.setup();
|
||||
this.filteredSearch.removeTokens();
|
||||
this.filteredSearch.handleInputPlaceholder();
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
import IssuableFilteredSearchTokenKeys from 'ee_else_ce/filtered_search/issuable_filtered_search_token_keys';
|
||||
import FilteredSearchManager from 'ee_else_ce/filtered_search/filtered_search_manager';
|
||||
import { transformBoardConfig } from 'ee_else_ce/boards/boards_util';
|
||||
import FilteredSearchContainer from '../filtered_search/container';
|
||||
import boardsStore from './stores/boards_store';
|
||||
import vuexstore from './stores';
|
||||
import { updateHistory } from '~/lib/utils/url_utility';
|
||||
|
||||
export default class FilteredSearchBoards extends FilteredSearchManager {
|
||||
constructor(store, vuexstore, updateUrl = false, cantEdit = []) {
|
||||
constructor(store, updateUrl = false, cantEdit = []) {
|
||||
super({
|
||||
page: 'boards',
|
||||
isGroupDecendent: true,
|
||||
|
@ -23,16 +26,26 @@ export default class FilteredSearchBoards extends FilteredSearchManager {
|
|||
this.cantEdit = cantEdit.filter(i => typeof i === 'string');
|
||||
this.cantEditWithValue = cantEdit.filter(i => typeof i === 'object');
|
||||
|
||||
this.vuexstore = vuexstore;
|
||||
if (vuexstore.getters.shouldUseGraphQL && vuexstore.state.boardConfig) {
|
||||
const boardConfigPath = transformBoardConfig(vuexstore.state.boardConfig);
|
||||
if (boardConfigPath !== '') {
|
||||
const filterPath = window.location.search ? `${window.location.search}&` : '?';
|
||||
updateHistory({
|
||||
url: `${filterPath}${transformBoardConfig(vuexstore.state.boardConfig)}`,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
updateObject(path) {
|
||||
const groupByParam = new URLSearchParams(window.location.search).get('group_by');
|
||||
this.store.path = `${path.substr(1)}${groupByParam ? `&group_by=${groupByParam}` : ''}`;
|
||||
|
||||
if (this.vuexstore.getters.shouldUseGraphQL) {
|
||||
boardsStore.updateFiltersUrl();
|
||||
boardsStore.performSearch();
|
||||
if (vuexstore.getters.shouldUseGraphQL) {
|
||||
updateHistory({
|
||||
url: `?${path.substr(1)}${groupByParam ? `&group_by=${groupByParam}` : ''}`,
|
||||
});
|
||||
vuexstore.dispatch('performSearch');
|
||||
} else if (this.updateUrl) {
|
||||
boardsStore.updateFiltersUrl();
|
||||
}
|
||||
|
|
|
@ -40,7 +40,6 @@ import {
|
|||
NavigationType,
|
||||
convertObjectPropsToCamelCase,
|
||||
parseBoolean,
|
||||
urlParamsToObject,
|
||||
} from '~/lib/utils/common_utils';
|
||||
import mountMultipleBoardsSwitcher from './mount_multiple_boards_switcher';
|
||||
|
||||
|
@ -112,7 +111,7 @@ export default () => {
|
|||
};
|
||||
},
|
||||
computed: {
|
||||
...mapGetters(['isSwimlanesOn', 'shouldUseGraphQL']),
|
||||
...mapGetters(['shouldUseGraphQL']),
|
||||
detailIssueVisible() {
|
||||
return Object.keys(this.detailIssue.issue).length;
|
||||
},
|
||||
|
@ -130,6 +129,17 @@ export default () => {
|
|||
...endpoints,
|
||||
boardType: this.parent,
|
||||
disabled: this.disabled,
|
||||
boardConfig: {
|
||||
milestoneId: parseInt($boardApp.dataset.boardMilestoneId, 10),
|
||||
milestoneTitle: $boardApp.dataset.boardMilestoneTitle || '',
|
||||
iterationId: parseInt($boardApp.dataset.boardIterationId, 10),
|
||||
iterationTitle: $boardApp.dataset.boardIterationTitle || '',
|
||||
assigneeUsername: $boardApp.dataset.boardAssigneeUsername,
|
||||
labels: $boardApp.dataset.labels ? JSON.parse($boardApp.dataset.labels || []) : [],
|
||||
weight: $boardApp.dataset.boardWeight
|
||||
? parseInt($boardApp.dataset.boardWeight, 10)
|
||||
: null,
|
||||
},
|
||||
});
|
||||
boardsStore.setEndpoints(endpoints);
|
||||
boardsStore.rootPath = this.boardsEndpoint;
|
||||
|
@ -138,7 +148,6 @@ export default () => {
|
|||
eventHub.$on('newDetailIssue', this.updateDetailIssue);
|
||||
eventHub.$on('clearDetailIssue', this.clearDetailIssue);
|
||||
sidebarEventHub.$on('toggleSubscription', this.toggleSubscription);
|
||||
eventHub.$on('performSearch', this.performSearch);
|
||||
eventHub.$on('initialBoardLoad', this.initialBoardLoad);
|
||||
},
|
||||
beforeDestroy() {
|
||||
|
@ -146,16 +155,10 @@ export default () => {
|
|||
eventHub.$off('newDetailIssue', this.updateDetailIssue);
|
||||
eventHub.$off('clearDetailIssue', this.clearDetailIssue);
|
||||
sidebarEventHub.$off('toggleSubscription', this.toggleSubscription);
|
||||
eventHub.$off('performSearch', this.performSearch);
|
||||
eventHub.$off('initialBoardLoad', this.initialBoardLoad);
|
||||
},
|
||||
mounted() {
|
||||
this.filterManager = new FilteredSearchBoards(
|
||||
boardsStore.filter,
|
||||
store,
|
||||
true,
|
||||
boardsStore.cantEdit,
|
||||
);
|
||||
this.filterManager = new FilteredSearchBoards(boardsStore.filter, true, boardsStore.cantEdit);
|
||||
this.filterManager.setup();
|
||||
|
||||
this.performSearch();
|
||||
|
@ -167,14 +170,7 @@ export default () => {
|
|||
}
|
||||
},
|
||||
methods: {
|
||||
...mapActions([
|
||||
'setInitialBoardData',
|
||||
'setFilters',
|
||||
'fetchEpicsSwimlanes',
|
||||
'resetIssues',
|
||||
'resetEpics',
|
||||
'fetchLists',
|
||||
]),
|
||||
...mapActions(['setInitialBoardData', 'performSearch']),
|
||||
initialBoardLoad() {
|
||||
boardsStore
|
||||
.all()
|
||||
|
@ -190,17 +186,6 @@ export default () => {
|
|||
updateTokens() {
|
||||
this.filterManager.updateTokens();
|
||||
},
|
||||
performSearch() {
|
||||
this.setFilters(convertObjectPropsToCamelCase(urlParamsToObject(window.location.search)));
|
||||
if (this.isSwimlanesOn) {
|
||||
this.resetEpics();
|
||||
this.resetIssues();
|
||||
this.fetchEpicsSwimlanes({});
|
||||
} else if (gon.features.graphqlBoardLists) {
|
||||
this.fetchLists();
|
||||
this.resetIssues();
|
||||
}
|
||||
},
|
||||
updateDetailIssue(newIssue, multiSelect = false) {
|
||||
const { sidebarInfoEndpoint } = newIssue;
|
||||
if (sidebarInfoEndpoint && newIssue.subscribed === undefined) {
|
||||
|
|
|
@ -3,6 +3,7 @@ import { pick } from 'lodash';
|
|||
import boardListsQuery from 'ee_else_ce/boards/graphql/board_lists.query.graphql';
|
||||
import createGqClient, { fetchPolicies } from '~/lib/graphql';
|
||||
import { getIdFromGraphQLId } from '~/graphql_shared/utils';
|
||||
import { convertObjectPropsToCamelCase, urlParamsToObject } from '~/lib/utils/common_utils';
|
||||
import { BoardType, ListType, inactiveId } from '~/boards/constants';
|
||||
import * as types from './mutation_types';
|
||||
import {
|
||||
|
@ -64,6 +65,18 @@ export default {
|
|||
commit(types.SET_FILTERS, filterParams);
|
||||
},
|
||||
|
||||
performSearch({ dispatch }) {
|
||||
dispatch(
|
||||
'setFilters',
|
||||
convertObjectPropsToCamelCase(urlParamsToObject(window.location.search)),
|
||||
);
|
||||
|
||||
if (gon.features.graphqlBoardLists) {
|
||||
dispatch('fetchLists');
|
||||
dispatch('resetIssues');
|
||||
}
|
||||
},
|
||||
|
||||
fetchLists: ({ commit, state, dispatch }) => {
|
||||
const { endpoints, boardType, filterParams } = state;
|
||||
const { fullPath, boardId } = endpoints;
|
||||
|
|
|
@ -492,10 +492,6 @@ const boardsStore = {
|
|||
eventHub.$emit('updateTokens');
|
||||
},
|
||||
|
||||
performSearch() {
|
||||
eventHub.$emit('performSearch');
|
||||
},
|
||||
|
||||
setListDetail(newList) {
|
||||
this.detail.list = newList;
|
||||
},
|
||||
|
|
|
@ -32,10 +32,11 @@ export const addIssueToList = ({ state, listId, issueId, moveBeforeId, moveAfter
|
|||
|
||||
export default {
|
||||
[mutationTypes.SET_INITIAL_BOARD_DATA](state, data) {
|
||||
const { boardType, disabled, ...endpoints } = data;
|
||||
const { boardType, disabled, boardConfig, ...endpoints } = data;
|
||||
state.endpoints = endpoints;
|
||||
state.boardType = boardType;
|
||||
state.disabled = disabled;
|
||||
state.boardConfig = boardConfig;
|
||||
},
|
||||
|
||||
[mutationTypes.RECEIVE_BOARD_LISTS_SUCCESS]: (state, lists) => {
|
||||
|
|
|
@ -14,6 +14,7 @@ export default () => ({
|
|||
pageInfoByListId: {},
|
||||
issues: {},
|
||||
filterParams: {},
|
||||
boardConfig: {},
|
||||
error: undefined,
|
||||
// TODO: remove after ce/ee split of board_content.vue
|
||||
isShowingEpicsSwimlanes: false,
|
||||
|
|
|
@ -9,9 +9,6 @@
|
|||
// GitLab UI framework
|
||||
@import 'framework';
|
||||
|
||||
// Custom Fontawesome icons
|
||||
@import 'fontawesome_custom';
|
||||
|
||||
// Page specific styles (issues, projects etc):
|
||||
@import 'page_specific_files';
|
||||
|
||||
|
|
|
@ -1,11 +1,6 @@
|
|||
.selected-item::before {
|
||||
content: '\f00c';
|
||||
color: $green-500;
|
||||
position: absolute;
|
||||
left: 16px;
|
||||
top: 16px;
|
||||
transform: translateY(-50%);
|
||||
font: 14px FontAwesome;
|
||||
.selected-item {
|
||||
/* stylelint-disable-next-line function-url-quotes */
|
||||
background: url(asset_path('checkmark.png')) no-repeat 0 2px;
|
||||
}
|
||||
|
||||
.dropdown-item-space {
|
||||
|
|
|
@ -1,56 +1,43 @@
|
|||
/*!
|
||||
* Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
|
||||
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
|
||||
*/
|
||||
// Custom Font Awesome styles that render emojis in asciidoc
|
||||
.md {
|
||||
.fa {
|
||||
display: inline-block;
|
||||
font-style: normal;
|
||||
font-size: 14px;
|
||||
text-rendering: auto;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
// stylelint-disable property-no-vendor-prefix
|
||||
// stylelint-disable at-rule-no-vendor-prefix
|
||||
// stylelint-disable stylelint-gitlab/duplicate-selectors
|
||||
// scss-lint:disable MergeableSelector
|
||||
@font-face {
|
||||
font-family: 'FontAwesome';
|
||||
src: asset-url('fontawesome-webfont.woff2?v=4.7.0') format('woff2'), asset-url('fontawesome-webfont.woff?v=4.7.0') format('woff');
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
.fa-2x {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
.fa {
|
||||
display: inline-block;
|
||||
font: normal normal normal 14px/1 FontAwesome;
|
||||
font-size: inherit;
|
||||
text-rendering: auto;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
.fa-exclamation-triangle::before {
|
||||
content: '⚠';
|
||||
}
|
||||
|
||||
.fa-2x {
|
||||
font-size: 2em;
|
||||
}
|
||||
.fa-exclamation-circle::before {
|
||||
content: '❗';
|
||||
}
|
||||
|
||||
.fa-exclamation-triangle::before {
|
||||
content: '\f071';
|
||||
}
|
||||
.fa-lightbulb-o::before {
|
||||
content: '💡';
|
||||
}
|
||||
|
||||
.fa-exclamation-circle::before {
|
||||
content: '\f06a';
|
||||
}
|
||||
.fa-thumb-tack::before {
|
||||
content: '📌';
|
||||
}
|
||||
|
||||
.fa-lightbulb-o::before {
|
||||
content: '\f0eb';
|
||||
}
|
||||
.fa-fire::before {
|
||||
content: '🔥';
|
||||
}
|
||||
|
||||
.fa-thumb-tack::before {
|
||||
content: '\f08d';
|
||||
}
|
||||
.fa-square-o::before {
|
||||
content: '\2610';
|
||||
}
|
||||
|
||||
.fa-fire::before {
|
||||
content: '\f06d';
|
||||
}
|
||||
|
||||
.fa-square-o::before {
|
||||
content: '\f096';
|
||||
}
|
||||
|
||||
.fa-check-square-o::before {
|
||||
content: '\f046';
|
||||
.fa-check-square-o::before {
|
||||
content: '\2611';
|
||||
}
|
||||
}
|
||||
|
|
|
@ -505,29 +505,27 @@
|
|||
&.is-active {
|
||||
color: $gl-text-color;
|
||||
|
||||
&::before {
|
||||
position: absolute;
|
||||
left: 16px;
|
||||
top: 16px;
|
||||
transform: translateY(-50%);
|
||||
font: normal normal normal 14px/1 FontAwesome;
|
||||
font-size: inherit;
|
||||
text-rendering: auto;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
&.dropdown-menu-user-link::before {
|
||||
top: 50%;
|
||||
}
|
||||
}
|
||||
|
||||
&.is-indeterminate::before {
|
||||
content: '\f068';
|
||||
position: absolute;
|
||||
left: 16px;
|
||||
top: 16px;
|
||||
transform: translateY(-50%);
|
||||
font-style: normal;
|
||||
font-size: inherit;
|
||||
text-rendering: auto;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
content: '—';
|
||||
}
|
||||
|
||||
&.is-active::before {
|
||||
content: '\f00c';
|
||||
&.is-active {
|
||||
/* stylelint-disable-next-line function-url-quotes */
|
||||
background: url(asset_path('checkmark.png')) no-repeat 14px 8px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
// Custom Fontawesome icons
|
||||
@import 'fontawesome_custom';
|
||||
|
||||
/**
|
||||
* Apply Markup (Markdown/AsciiDoc) typography
|
||||
*
|
||||
|
@ -432,11 +435,11 @@
|
|||
&::before {
|
||||
margin-right: 4px;
|
||||
|
||||
font: normal normal normal 14px/1 FontAwesome;
|
||||
font-style: normal;
|
||||
font-size: inherit;
|
||||
text-rendering: auto;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
content: '\f0c6';
|
||||
content: '📎';
|
||||
}
|
||||
|
||||
&.no-attachment-icon {
|
||||
|
|
|
@ -22,32 +22,14 @@
|
|||
border-radius: $gl-border-radius-base;
|
||||
|
||||
.select2-arrow {
|
||||
background-image: none;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
padding-top: 12px;
|
||||
padding-right: 20px;
|
||||
font-size: 10px;
|
||||
/* stylelint-disable-next-line function-url-quotes */
|
||||
background: url(asset_path('chevron-down.png')) no-repeat 2px 8px;
|
||||
|
||||
b {
|
||||
display: none;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: '\f078';
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
text-align: center;
|
||||
pointer-events: none;
|
||||
box-sizing: border-box;
|
||||
color: $gray-darkest;
|
||||
display: inline-block;
|
||||
font: normal normal normal 14px/1 FontAwesome;
|
||||
font-size: inherit;
|
||||
text-rendering: auto;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
}
|
||||
|
||||
.select2-chosen {
|
||||
|
|
|
@ -51,7 +51,7 @@ class Projects::IssuesController < Projects::ApplicationController
|
|||
real_time_feature_flag = :real_time_issue_sidebar
|
||||
real_time_enabled = Gitlab::ActionCable::Config.in_app? || Feature.enabled?(real_time_feature_flag, @project)
|
||||
|
||||
push_to_gon_features(real_time_feature_flag, real_time_enabled)
|
||||
push_to_gon_attributes(:features, real_time_feature_flag, real_time_enabled)
|
||||
|
||||
record_experiment_user(:invite_members_version_a)
|
||||
record_experiment_user(:invite_members_version_b)
|
||||
|
|
|
@ -4,7 +4,6 @@ require 'json'
|
|||
|
||||
module IconsHelper
|
||||
extend self
|
||||
include FontAwesome::Rails::IconHelper
|
||||
|
||||
DEFAULT_ICON_SIZE = 16
|
||||
|
||||
|
|
|
@ -21,8 +21,6 @@ module TriggerableHooks
|
|||
extend ActiveSupport::Concern
|
||||
|
||||
class_methods do
|
||||
attr_reader :triggerable_hooks
|
||||
|
||||
attr_reader :triggers
|
||||
|
||||
def hooks_for(trigger)
|
||||
|
|
|
@ -4,7 +4,7 @@ module Gitlab
|
|||
module WhatsNew
|
||||
class ItemPresenter
|
||||
DICTIONARY = {
|
||||
free: 'Free',
|
||||
core: 'Free',
|
||||
starter: 'Bronze',
|
||||
premium: 'Silver',
|
||||
ultimate: 'Gold'
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Replace wiki fontawesome icons with emojis
|
||||
merge_request: 49097
|
||||
author:
|
||||
type: other
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
title: Remove dast_unlicensed job
|
||||
merge_request: 50129
|
||||
author:
|
||||
type: changed
|
|
@ -229,11 +229,6 @@ module Gitlab
|
|||
config.assets.precompile << "icons.json"
|
||||
config.assets.precompile << "illustrations/*.svg"
|
||||
|
||||
# Import Fontawesome fonts
|
||||
config.assets.paths << "#{config.root}/node_modules/font-awesome/fonts"
|
||||
config.assets.precompile << "fontawesome-webfont.woff2"
|
||||
config.assets.precompile << "fontawesome-webfont.woff"
|
||||
|
||||
# Import css for xterm
|
||||
config.assets.paths << "#{config.root}/node_modules/xterm/src/"
|
||||
config.assets.precompile << "xterm.css"
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
stage: Plan
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [Ultimate, Gold]
|
||||
packages: [Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/project/requirements/index.html
|
||||
image_url: https://docs.gitlab.com/ee/user/project/requirements/img/requirements_list_v13_5.png
|
||||
published_at: 2020-04-22
|
||||
|
@ -20,7 +20,7 @@
|
|||
stage: Release
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [All]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/ci/examples/authenticating-with-hashicorp-vault/index.html
|
||||
image_url: https://about.gitlab.com/images/12_10/jwt-vault-1.png
|
||||
published_at: 2020-04-22
|
||||
|
@ -35,7 +35,7 @@
|
|||
stage: Plan
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [Ultimate, Gold]
|
||||
packages: [Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/project/issues/index.html#health-status
|
||||
image_url: https://about.gitlab.com/images/12_10/epic-health-status.png
|
||||
published_at: 2020-04-22
|
||||
|
@ -48,7 +48,7 @@
|
|||
stage: Plan
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [All]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/project/import/jira.html
|
||||
image_url: https://about.gitlab.com/images/12_10/jira-importer.png
|
||||
published_at: 2020-04-22
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
stage: Release
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [All]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/topics/autodevops/index.html#aws-ecs
|
||||
image_url: https://docs.gitlab.com/ee/ci/img/ecs_dashboard_v12_9.png
|
||||
published_at: 2020-05-22
|
||||
|
@ -33,7 +33,7 @@
|
|||
stage: Plan
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [Ultimate, Gold]
|
||||
packages: [Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/group/roadmap/
|
||||
image_url: https://about.gitlab.com/images/13_0/Expand-Epic-Hierarchy-Roadmap_roadmap.png
|
||||
published_at: 2020-05-22
|
||||
|
@ -46,7 +46,7 @@
|
|||
stage: Create
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [All]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/snippets.html#versioned-snippets
|
||||
image_url: https://about.gitlab.com/images/13_0/phikai-versioned-snippets.png
|
||||
published_at: 2020-05-22
|
||||
|
@ -59,7 +59,7 @@
|
|||
stage: Create
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [All]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/project/web_ide/#themes
|
||||
image_url: https://about.gitlab.com/images/13_0/phikai-web-ide-dark-theme.png
|
||||
published_at: 2020-05-22
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
stage: Monitor
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [All]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/project/operations/alert_management.html
|
||||
image_url: https://about.gitlab.com/images/13_1/alert_management.png
|
||||
published_at: 2020-06-22
|
||||
|
@ -20,7 +20,7 @@
|
|||
stage: Verify
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [All]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/project/merge_requests/accessibility_testing.html#accessibility-merge-request-widget
|
||||
image_url: https://about.gitlab.com/images/13_1/a11y-merge-request-widget.png
|
||||
published_at: 2020-06-22
|
||||
|
@ -31,7 +31,7 @@
|
|||
stage: Create
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [All]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/project/issues/design_management.html#resolve-design-threads
|
||||
image_url: https://about.gitlab.com/images/13_1/resolve-design-comment.gif
|
||||
published_at: 2020-06-22
|
||||
|
@ -42,7 +42,7 @@
|
|||
stage: Create
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [All]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/discussions/index.html#merge-request-reviews
|
||||
image_url: https://about.gitlab.com/images/13_1/batch_comments.png
|
||||
published_at: 2020-06-22
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
stage: Defend
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [All]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://www.youtube.com/watch?v=WxBzBz76FxU&feature=youtu.be
|
||||
image_url: https://img.youtube.com/vi/WxBzBz76FxU/hqdefault.jpg
|
||||
published_at: 2020-07-22
|
||||
|
@ -33,7 +33,7 @@
|
|||
stage: Create
|
||||
self-managed: false
|
||||
gitlab-com: true
|
||||
packages: [All]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/project/issues/design_management.html#gitlab-figma-plugin
|
||||
image_url: https://about.gitlab.com/images/13_2/figma-plugin.png
|
||||
published_at: 2020-07-22
|
||||
|
@ -48,7 +48,7 @@
|
|||
stage: Monitor
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [All]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/project/clusters/#visualizing-cluster-health
|
||||
image_url: https://about.gitlab.com/images/13_2/k8s_cluster_monitoring.png
|
||||
published_at: 2020-07-22
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
stage: Verify
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [All]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/ci/yaml/#parallel-matrix-jobs
|
||||
image_url: https://about.gitlab.com/images/13_3/cartesian-matrix.png
|
||||
published_at: 2020-08-22
|
||||
|
@ -46,7 +46,7 @@
|
|||
stage: Secure
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [All]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/application_security/sast/#making-sast-analyzers-available-to-all-gitlab-tiers
|
||||
image_url: https://about.gitlab.com/images/13_3/sast-gitlab-languages.png
|
||||
published_at: 2020-08-22
|
||||
|
|
|
@ -76,7 +76,7 @@
|
|||
stage: Enablement
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [core, starter, premium, ultimate]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/search/#autocomplete-suggestions
|
||||
image_url: https://about.gitlab.com/images/13_4/enablement_global_search.gif
|
||||
published_at: 2020-09-22
|
||||
|
|
|
@ -65,7 +65,7 @@
|
|||
stage: Release
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [core, starter, premium, ultimate]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/operations/feature_flags.html#percent-rollout
|
||||
image_url: https://about.gitlab.com/images/13_5/percent-rollout.png
|
||||
published_at: 2020-10-22
|
||||
|
@ -78,7 +78,7 @@
|
|||
stage: Secure
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [core, starter, premium, ultimate]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/application_security/sast/#supported-languages-and-frameworks
|
||||
image_url: https://about.gitlab.com/images/13_5/sast-gitlab-mobile.png
|
||||
published_at: 2020-10-22
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
stage: Release
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [core, starter, premium, ultimate]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/ci/cloud_deployment/#custom-build-job-for-auto-devops
|
||||
image_url: https://img.youtube.com/vi/4B-qSwKnacA/hqdefault.jpg
|
||||
published_at: 2020-11-22
|
||||
|
@ -22,7 +22,7 @@
|
|||
stage: Verify
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [core, starter, premium, ultimate]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/project/merge_requests/code_quality.html#code-quality-widget
|
||||
image_url: https://about.gitlab.com/images/13_6/code_quality_severity.png
|
||||
published_at: 2020-11-22
|
||||
|
@ -39,7 +39,7 @@
|
|||
stage: Verify
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [premium, ultimate]
|
||||
packages: [Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/group/repositories_analytics/index.html#latest-project-test-coverage-list
|
||||
image_url: https://about.gitlab.com/images/13_6/display_selected_coverage_projects_example.png
|
||||
published_at: 2020-11-22
|
||||
|
@ -58,7 +58,7 @@
|
|||
stage: Create
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [core, starter, premium, ultimate]
|
||||
packages: [Core, Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/admin_area/settings/project_integration_management.html
|
||||
image_url: https://about.gitlab.com/images/13_6/project-integration-inheriting-settings.png
|
||||
published_at: 2020-11-22
|
||||
|
@ -75,7 +75,7 @@
|
|||
stage: Plan
|
||||
self-managed: true
|
||||
gitlab-com: true
|
||||
packages: [starter, premium, ultimate]
|
||||
packages: [Starter, Premium, Ultimate]
|
||||
url: https://docs.gitlab.com/ee/user/project/milestones/burndown_and_burnup_charts.html#burnup-charts
|
||||
image_url: https://about.gitlab.com/images/13_6/burnup-chart.png
|
||||
published_at: 2020-11-22
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
---
|
||||
# Error: gitlab.AlertBoxStyle
|
||||
#
|
||||
# Makes sure alert boxes are used with block quotes.
|
||||
#
|
||||
# Checks for 3 formatting issues:
|
||||
# - Alert boxes inside a block quote (">")
|
||||
# - Alert boxes with the note text on the same line
|
||||
# - Alert boxes using words other than "NOTE" or "WARNING"
|
||||
#
|
||||
# For a list of all options, see https://errata-ai.gitbook.io/vale/getting-started/styles
|
||||
extends: existence
|
||||
message: 'Alert box "%s" must use the formatting in the style guide.'
|
||||
link: https://docs.gitlab.com/ee/development/documentation/styleguide.html#alert-boxes
|
||||
level: error
|
||||
nonword: true
|
||||
scope: raw
|
||||
raw:
|
||||
- '(\n *\> *(?:NOTE|WARNING)|'
|
||||
- '\n(NOTE):[^\n]|' # Adding "WARNING" here causes a false positive
|
||||
- '\n *(?:> )?\**(Note|note|TIP|Tip|tip|CAUTION|Caution|caution|DANGER|Danger|danger|warning):.*)' ## Adding "Warning" here causes a false positive
|
|
@ -11,7 +11,7 @@ type: reference
|
|||
> - Until GitLab 12.8, the feature name was Plugins.
|
||||
|
||||
With custom file hooks, GitLab administrators can introduce custom integrations
|
||||
without modifying GitLab's source code.
|
||||
without modifying the GitLab source code.
|
||||
|
||||
NOTE:
|
||||
Instead of writing and supporting your own file hook you can make changes
|
||||
|
|
|
@ -287,7 +287,6 @@ This list of limitations only reflects the latest version of GitLab. If you are
|
|||
- Real-time updates of issues/merge requests (for example, via long polling) doesn't work on the **secondary** node.
|
||||
- [Selective synchronization](replication/configuration.md#selective-synchronization) applies only to files and repositories. Other datasets are replicated to the **secondary** node in full, making it inappropriate for use as an access control mechanism.
|
||||
- Object pools for forked project deduplication work only on the **primary** node, and are duplicated on the **secondary** node.
|
||||
- [External merge request diffs](../merge_request_diffs.md) will not be replicated if they are on-disk, and viewing merge requests will fail. However, external MR diffs in object storage **are** supported. The default configuration (in-database) does work.
|
||||
- GitLab Runners cannot register with a **secondary** node. Support for this is [planned for the future](https://gitlab.com/gitlab-org/gitlab/-/issues/3294).
|
||||
- Geo **secondary** nodes can not be configured to [use high-availability configurations of PostgreSQL](https://gitlab.com/groups/gitlab-org/-/epics/2536).
|
||||
|
||||
|
|
|
@ -308,7 +308,8 @@ log data to build up in `pg_xlog`. Removing the unused slots can reduce the amou
|
|||
sudo gitlab-psql
|
||||
```
|
||||
|
||||
Note: Using `gitlab-rails dbconsole` will not work, because managing replication slots requires superuser permissions.
|
||||
NOTE:
|
||||
Using `gitlab-rails dbconsole` will not work, because managing replication slots requires superuser permissions.
|
||||
|
||||
1. View your replication slots with:
|
||||
|
||||
|
|
|
@ -970,7 +970,7 @@ not an external process, there was very little overhead between:
|
|||
- GitLab application code that tried to look up data in Git repositories.
|
||||
- The Git implementation itself.
|
||||
|
||||
Because the combination of Rugged and Unicorn was so efficient, GitLab's application code ended up with lots of
|
||||
Because the combination of Rugged and Unicorn was so efficient, the GitLab application code ended up with lots of
|
||||
duplicate Git object lookups. For example, looking up the `master` commit a dozen times in one
|
||||
request. We could write inefficient code without poor performance.
|
||||
|
||||
|
@ -1006,7 +1006,7 @@ enables direct Git access.
|
|||
When GitLab calls a function that has a "Rugged patch", it performs two checks:
|
||||
|
||||
- Is the feature flag for this patch set in the database? If so, the feature flag setting controls
|
||||
GitLab's use of "Rugged patch" code.
|
||||
the GitLab use of "Rugged patch" code.
|
||||
- If the feature flag is not set, GitLab tries accessing the filesystem underneath the
|
||||
Gitaly server directly. If it can, it uses the "Rugged patch":
|
||||
- If using Unicorn.
|
||||
|
|
|
@ -1054,6 +1054,55 @@ To monitor strong consistency, you can use the following Prometheus metrics:
|
|||
- `gitaly_hook_transaction_voting_delay_seconds`: Client-side delay introduced
|
||||
by waiting for the transaction to be committed.
|
||||
|
||||
## Replication factor
|
||||
|
||||
Replication factor is the number of copies Praefect maintains of a given repository. A higher
|
||||
replication factor offers better redundancy and distribution of read workload, but also results
|
||||
in a higher storage cost. By default, Praefect replicates repositories to every storage in a
|
||||
virtual storage.
|
||||
|
||||
### Variable replication factor
|
||||
|
||||
WARNING:
|
||||
The feature is not production ready yet. After you set a replication factor, you can't unset it
|
||||
without manually modifying database state. Variable replication factor requires you to enable
|
||||
repository-specific primaries by configuring the `per_repository` primary election strategy. The election
|
||||
strategy is not production ready yet.
|
||||
|
||||
Praefect supports configuring a replication factor on a per-repository basis, by assigning
|
||||
specific storage nodes to host a repository.
|
||||
|
||||
[In an upcoming release](https://gitlab.com/gitlab-org/gitaly/-/issues/3362), we intend to
|
||||
support configuring a default replication factor for a virtual storage. The default replication factor
|
||||
is applied to every newly-created repository.
|
||||
|
||||
Prafect does not store the actual replication factor, but assigns enough storages to host the repository
|
||||
so the desired replication factor is met. If a storage node is later removed from the virtual storage,
|
||||
the replication factor of repositories assigned to the storage is decreased accordingly.
|
||||
|
||||
The only way to configure a repository's replication factor is the `set-replication-factor`
|
||||
sub-command. `set-replication-factor` automatically assigns or unassigns random storage nodes as necessary to
|
||||
reach the desired replication factor. The repository's primary node is always assigned
|
||||
first and is never unassigned.
|
||||
|
||||
```shell
|
||||
sudo /opt/gitlab/embedded/bin/praefect -config /var/opt/gitlab/praefect/config.toml set-replication-factor -virtual-storage <virtual-storage> -repository <relative-path> -replication-factor <replication-factor>
|
||||
```
|
||||
|
||||
- `-virtual-storage` is the virtual storage the repository is located in.
|
||||
- `-repository` is the repository's relative path in the storage.
|
||||
- `-replication-factor` is the desired replication factor of the repository. The minimum value is
|
||||
`1`, as the primary needs a copy of the repository. The maximum replication factor is the number of
|
||||
storages in the virtual storage.
|
||||
|
||||
On success, the assigned host storages are printed. For example:
|
||||
|
||||
```shell
|
||||
$ sudo /opt/gitlab/embedded/bin/praefect -config /var/opt/gitlab/praefect/config.toml set-replication-factor -virtual-storage default -repository @hashed/3f/db/3fdba35f04dc8c462986c992bcf875546257113072a909c162f7e470e581e278.git -replication-factor 2
|
||||
|
||||
current assignments: gitaly-1, gitaly-2
|
||||
```
|
||||
|
||||
## Automatic failover and leader election
|
||||
|
||||
Praefect regularly checks the health of each backend Gitaly node. This
|
||||
|
@ -1111,15 +1160,14 @@ useful for identifying potential data loss after a failover. The following param
|
|||
available:
|
||||
|
||||
- `-virtual-storage` that specifies which virtual storage to check. The default behavior is to
|
||||
display outdated replicas of read-only repositories as they generally require administrator
|
||||
action.
|
||||
display outdated replicas of read-only repositories as they might require administrator action.
|
||||
- In GitLab 13.3 and later, `-partially-replicated` that specifies whether to display a list of
|
||||
[outdated replicas of writable repositories](#outdated-replicas-of-writable-repositories).
|
||||
|
||||
NOTE:
|
||||
`dataloss` is still in beta and the output format is subject to change.
|
||||
|
||||
To check for outdated replicas of read-only repositories, run:
|
||||
To check for repositories with outdated primaries, run:
|
||||
|
||||
```shell
|
||||
sudo /opt/gitlab/embedded/bin/praefect -config /var/opt/gitlab/praefect/config.toml dataloss [-virtual-storage <virtual-storage>]
|
||||
|
@ -1131,24 +1179,45 @@ Every configured virtual storage is checked if none is specified:
|
|||
sudo /opt/gitlab/embedded/bin/praefect -config /var/opt/gitlab/praefect/config.toml dataloss
|
||||
```
|
||||
|
||||
The number of potentially unapplied changes to repositories is listed for each replica. Listed
|
||||
repositories might have the latest changes but it is not guaranteed. Only outdated replicas of
|
||||
read-only repositories are listed by default. For example:
|
||||
Repositories which have assigned storage nodes that contain an outdated copy of the repository are listed
|
||||
in the output. A number of useful information is printed for each repository:
|
||||
|
||||
- A repository's relative path to the storage directory identifies each repository and groups the related
|
||||
information.
|
||||
- The repository's current status is printed in parentheses next to the disk path. If the repository's primary
|
||||
is outdated, the repository is in `read-only` mode and can't accept writes. Otherwise, the mode is `writable`.
|
||||
- The primary field lists the repository's current primary. If the repository has no primary, the field shows
|
||||
`No Primary`.
|
||||
- The In-Sync Storages lists replicas which have replicated the latest successful write and all writes
|
||||
preceding it.
|
||||
- The Outdated Storages lists replicas which contain an outdated copy of the repository. Replicas which have no copy
|
||||
of the repository but should contain it are also listed here. The maximum number of changes the replica is missing
|
||||
is listed next to replica. It's important to notice that the outdated replicas may be fully up to date or contain
|
||||
later changes but Praefect can't guarantee it.
|
||||
|
||||
Whether a replica is assigned to host the repository is listed with each replica's status. `assigned host` is printed
|
||||
next to replicas which are assigned to store the repository. The text is omitted if the replica contains a copy of
|
||||
the repository but is not assigned to store the repository. Such replicas won't be kept in-sync by Praefect but may
|
||||
act as replication sources to bring assigned replicas up to date.
|
||||
|
||||
Example output:
|
||||
|
||||
```shell
|
||||
Virtual storage: default
|
||||
Primary: gitaly-3
|
||||
Outdated repositories:
|
||||
@hashed/2c/62/2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3.git (read-only):
|
||||
gitaly-2 is behind by 1 change or less
|
||||
gitaly-3 is behind by 2 changes or less
|
||||
@hashed/3f/db/3fdba35f04dc8c462986c992bcf875546257113072a909c162f7e470e581e278.git (read-only):
|
||||
Primary: gitaly-1
|
||||
In-Sync Storages:
|
||||
gitaly-2, assigned host
|
||||
Outdated Storages:
|
||||
gitaly-1 is behind by 3 changes or less, assigned host
|
||||
gitaly-3 is behind by 3 changes or less
|
||||
```
|
||||
|
||||
A confirmation is printed out when every repository is writable. For example:
|
||||
|
||||
```shell
|
||||
Virtual storage: default
|
||||
Primary: gitaly-1
|
||||
All repositories are writable!
|
||||
```
|
||||
|
||||
|
@ -1156,8 +1225,8 @@ Virtual storage: default
|
|||
|
||||
> [Introduced](https://gitlab.com/gitlab-org/gitaly/-/issues/3019) in GitLab 13.3.
|
||||
|
||||
To also list information for outdated replicas of writable repositories, use the
|
||||
`-partially-replicated` parameter.
|
||||
To also list information of repositories whose primary is up to date but one or more assigned
|
||||
replicas are outdated, use the `-partially-replicated` flag.
|
||||
|
||||
A repository is writable if the primary has the latest changes. Secondaries might be temporarily
|
||||
outdated while they are waiting to replicate the latest changes.
|
||||
|
@ -1170,21 +1239,23 @@ Example output:
|
|||
|
||||
```shell
|
||||
Virtual storage: default
|
||||
Primary: gitaly-3
|
||||
Outdated repositories:
|
||||
@hashed/2c/62/2c624232cdd221771294dfbb310aca000a0df6ac8b66b696d90ef06fdefb64a3.git (read-only):
|
||||
gitaly-2 is behind by 1 change or less
|
||||
gitaly-3 is behind by 2 changes or less
|
||||
@hashed/4b/22/4b227777d4dd1fc61c6f884f48641d02b4d121d3fd328cb08b5531fcacdabf8a.git (writable):
|
||||
gitaly-2 is behind by 1 change or less
|
||||
@hashed/3f/db/3fdba35f04dc8c462986c992bcf875546257113072a909c162f7e470e581e278.git (writable):
|
||||
Primary: gitaly-1
|
||||
In-Sync Storages:
|
||||
gitaly-1, assigned host
|
||||
Outdated Storages:
|
||||
gitaly-2 is behind by 3 changes or less, assigned host
|
||||
gitaly-3 is behind by 3 changes or less
|
||||
```
|
||||
|
||||
With the `-partially-replicated` flag set, a confirmation is printed out if every replica is fully up to date.
|
||||
With the `-partially-replicated` flag set, a confirmation is printed out if every assigned replica is fully up to
|
||||
date.
|
||||
|
||||
For example:
|
||||
|
||||
```shell
|
||||
Virtual storage: default
|
||||
Primary: gitaly-1
|
||||
All repositories are up to date!
|
||||
```
|
||||
|
||||
|
|
|
@ -28,7 +28,8 @@ GitLab Shell solves this by providing a way to authorize SSH users via a fast,
|
|||
indexed lookup in the GitLab database. This page describes how to enable the fast
|
||||
lookup of authorized SSH keys.
|
||||
|
||||
> **Warning:** OpenSSH version 6.9+ is required because
|
||||
WARNING:
|
||||
OpenSSH version 6.9+ is required because
|
||||
`AuthorizedKeysCommand` must be able to accept a fingerprint. These
|
||||
instructions will break installations using older versions of OpenSSH, such as
|
||||
those included with CentOS 6 as of September 2017. If you want to use this
|
||||
|
|
|
@ -54,7 +54,7 @@ Each of the approaches we list can or does overwrite data in the target director
|
|||
|
||||
### Recommended approach in all cases
|
||||
|
||||
GitLab's [backup and restore capability](../../raketasks/backup_restore.md) should be used. Git
|
||||
The GitLab [backup and restore capability](../../raketasks/backup_restore.md) should be used. Git
|
||||
repositories are accessed, managed, and stored on GitLab servers by Gitaly as a database. Data loss
|
||||
can result from directly accessing and copying Gitaly's files using tools like `rsync`.
|
||||
|
||||
|
|
|
@ -19,7 +19,8 @@ user, including ones that expire 24 hours after issuing.
|
|||
In such setups some external automated process is needed to constantly
|
||||
upload the new keys to GitLab.
|
||||
|
||||
> **Warning:** OpenSSH version 6.9+ is required because that version
|
||||
WARNING:
|
||||
OpenSSH version 6.9+ is required because that version
|
||||
introduced the `AuthorizedPrincipalsCommand` configuration option. If
|
||||
using CentOS 6, you can [follow these
|
||||
instructions](fast_ssh_key_lookup.html#compiling-a-custom-version-of-openssh-for-centos-6)
|
||||
|
|
|
@ -40,27 +40,26 @@ storage2:
|
|||
|
||||
## Configure GitLab
|
||||
|
||||
> **Warning:**
|
||||
> In order for [backups](../raketasks/backup_restore.md) to work correctly, the storage path must **not** be a
|
||||
> mount point and the GitLab user should have correct permissions for the parent
|
||||
> directory of the path. In Omnibus GitLab this is taken care of automatically,
|
||||
> but for source installations you should be extra careful.
|
||||
>
|
||||
> The thing is that for compatibility reasons `gitlab.yml` has a different
|
||||
> structure than Omnibus. In `gitlab.yml` you indicate the path for the
|
||||
> repositories, for example `/home/git/repositories`, while in Omnibus you
|
||||
> indicate `git_data_dirs`, which for the example above would be `/home/git`.
|
||||
> Then, Omnibus creates a `repositories` directory under that path to use with
|
||||
> `gitlab.yml`.
|
||||
>
|
||||
> This little detail matters because while restoring a backup, the current
|
||||
> contents of `/home/git/repositories` [are moved to](https://gitlab.com/gitlab-org/gitlab/blob/033e5423a2594e08a7ebcd2379bd2331f4c39032/lib/backup/repository.rb#L54-56) `/home/git/repositories.old`,
|
||||
> so if `/home/git/repositories` is the mount point, then `mv` would be moving
|
||||
> things between mount points, and bad things could happen. Ideally,
|
||||
> `/home/git` would be the mount point, so then things would be moving within the
|
||||
> same mount point. This is guaranteed with Omnibus installations (because they
|
||||
> don't specify the full repository path but the parent path), but not for source
|
||||
> installations.
|
||||
In order for [backups](../raketasks/backup_restore.md) to work correctly, the storage path must **not** be a
|
||||
mount point and the GitLab user should have correct permissions for the parent
|
||||
directory of the path. In Omnibus GitLab this is taken care of automatically,
|
||||
but for source installations you should be extra careful.
|
||||
|
||||
The thing is that for compatibility reasons `gitlab.yml` has a different
|
||||
structure than Omnibus. In `gitlab.yml` you indicate the path for the
|
||||
repositories, for example `/home/git/repositories`, while in Omnibus you
|
||||
indicate `git_data_dirs`, which for the example above would be `/home/git`.
|
||||
Then, Omnibus creates a `repositories` directory under that path to use with
|
||||
`gitlab.yml`.
|
||||
|
||||
This little detail matters because while restoring a backup, the current
|
||||
contents of `/home/git/repositories` [are moved to](https://gitlab.com/gitlab-org/gitlab/blob/033e5423a2594e08a7ebcd2379bd2331f4c39032/lib/backup/repository.rb#L54-56) `/home/git/repositories.old`,
|
||||
so if `/home/git/repositories` is the mount point, then `mv` would be moving
|
||||
things between mount points, and bad things could happen. Ideally,
|
||||
`/home/git` would be the mount point, so then things would be moving within the
|
||||
same mount point. This is guaranteed with Omnibus installations (because they
|
||||
don't specify the full repository path but the parent path), but not for source
|
||||
installations.
|
||||
|
||||
Now that you've read that big fat warning above, let's edit the configuration
|
||||
files and add the full paths of the alternative repository storage paths. In
|
||||
|
@ -68,7 +67,7 @@ the example below, we add two more mount points that are named `nfs_1` and `nfs_
|
|||
respectively.
|
||||
|
||||
NOTE:
|
||||
This example uses NFS. We do not recommend using EFS for storage as it may impact GitLab's performance. See the [relevant documentation](nfs.md#avoid-using-awss-elastic-file-system-efs) for more details.
|
||||
This example uses NFS. We do not recommend using EFS for storage as it may impact GitLab performance. See the [relevant documentation](nfs.md#avoid-using-awss-elastic-file-system-efs) for more details.
|
||||
|
||||
**For installations from source**
|
||||
|
||||
|
|
|
@ -123,13 +123,13 @@ Within a directory, server hooks:
|
|||
- Are executed in alphabetical order.
|
||||
- Stop executing when a hook exits with a non-zero value.
|
||||
|
||||
Note:
|
||||
`<hook_name>.d` must be either `pre-receive.d`, `post-receive.d`, or `update.d` to work properly.
|
||||
Any other names are ignored.
|
||||
|
||||
- `<hook_name>.d` must be either `pre-receive.d`, `post-receive.d`, or `update.d` to work properly.
|
||||
Any other names are ignored.
|
||||
- Files in `.d` directories must be executable and not match the backup file pattern (`*~`).
|
||||
- For `<project>.git` you need to [translate](repository_storage_types.md#translating-hashed-storage-paths)
|
||||
your project name into the hashed storage format that GitLab uses.
|
||||
Files in `.d` directories must be executable and not match the backup file pattern (`*~`).
|
||||
|
||||
For `<project>.git` you need to [translate](repository_storage_types.md#translating-hashed-storage-paths)
|
||||
your project name into the hashed storage format that GitLab uses.
|
||||
|
||||
## Environment Variables
|
||||
|
||||
|
@ -160,7 +160,7 @@ them as they can change.
|
|||
|
||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/5073) in GitLab 8.10.
|
||||
|
||||
To have custom error messages appear in GitLab's UI when a commit is declined or an error occurs
|
||||
To have custom error messages appear in the GitLab UI when a commit is declined or an error occurs
|
||||
during the Git hook, your script should:
|
||||
|
||||
- Send the custom error messages to either the script's `stdout` or `stderr`.
|
||||
|
@ -168,7 +168,7 @@ during the Git hook, your script should:
|
|||
|
||||
### Example custom error message
|
||||
|
||||
This hook script written in Bash generates the following message in GitLab's UI:
|
||||
This hook script written in Bash generates the following message in the GitLab UI:
|
||||
|
||||
```shell
|
||||
#!/bin/sh
|
||||
|
|
|
@ -747,7 +747,8 @@ Send IRC messages, on update, to a list of recipients through an Irker gateway.
|
|||
|
||||
Set Irker (IRC gateway) service for a project.
|
||||
|
||||
> NOTE: Irker does NOT have built-in authentication, which makes it vulnerable to spamming IRC channels if it is hosted outside of a firewall. Please make sure you run the daemon within a secured network to prevent abuse. For more details, read: <http://www.catb.org/~esr/irker/security.html>.
|
||||
NOTE:
|
||||
Irker does NOT have built-in authentication, which makes it vulnerable to spamming IRC channels if it is hosted outside of a firewall. Please make sure you run the daemon within a secured network to prevent abuse. For more details, read: <http://www.catb.org/~esr/irker/security.html>.
|
||||
|
||||
```plaintext
|
||||
PUT /projects/:id/services/irker
|
||||
|
|
|
@ -62,8 +62,9 @@ To use GitLab CI/CD with a Bitbucket Cloud repository:
|
|||
|
||||
1. In Bitbucket, add a script to push the pipeline status to Bitbucket.
|
||||
|
||||
> Note: changes made in GitLab are overwritten by any changes made
|
||||
> upstream in Bitbucket.
|
||||
NOTE:
|
||||
Changes made in GitLab are overwritten by any changes made
|
||||
upstream in Bitbucket.
|
||||
|
||||
Create a file `build_status` and insert the script below and run
|
||||
`chmod +x build_status` in your terminal to make the script executable.
|
||||
|
|
|
@ -10,7 +10,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
|||
|
||||
This document describes the design behind [Code Intelligence](../../user/project/code_intelligence.md).
|
||||
|
||||
GitLab's built-in Code Intelligence is powered by
|
||||
The built-in Code Intelligence in GitLab is powered by
|
||||
[LSIF](https://lsif.dev) and comes down to generating an LSIF document for a
|
||||
project in a CI job, processing the data, uploading it as a CI artifact and
|
||||
displaying this information for the files in the project.
|
||||
|
|
|
@ -188,7 +188,7 @@ All the marks and measures should be instantiated with the constants from
|
|||
`app/assets/javascripts/performance/constants.js`. When you’re ready to add a new mark’s or
|
||||
measurement’s label, you can follow the pattern.
|
||||
|
||||
NOTE: **Note:**
|
||||
NOTE:
|
||||
This pattern is a recommendation and not a hard rule.
|
||||
|
||||
```javascript
|
||||
|
|
|
@ -13,7 +13,7 @@ Workhorse and GitLab Shell.
|
|||
## Deep Dive
|
||||
|
||||
In May 2019, Bob Van Landuyt hosted a Deep Dive (GitLab team members only: `https://gitlab.com/gitlab-org/create-stage/issues/1`)
|
||||
on GitLab's [Gitaly project](https://gitlab.com/gitlab-org/gitaly) and how to contribute to it as a
|
||||
on the [Gitaly project](https://gitlab.com/gitlab-org/gitaly) and how to contribute to it as a
|
||||
Ruby developer, to share his domain specific knowledge with anyone who may work in this part of the
|
||||
codebase in the future.
|
||||
|
||||
|
|
|
@ -399,7 +399,7 @@ isn't a stable identifier and you shouldn't assume it as such when tracking vuln
|
|||
The maximum number of identifiers for a vulnerability is set as 20. If a vulnerability has more than 20 identifiers,
|
||||
the system saves only the first 20 of them. Note that vulnerabilities in the [Pipeline
|
||||
Security](../../user/application_security/security_dashboard/#pipeline-security)
|
||||
tab do not enforce this limit and will show all identifiers present in the report artifact.
|
||||
tab do not enforce this limit and all identifiers present in the report artifact are displayed.
|
||||
|
||||
### Location
|
||||
|
||||
|
|
|
@ -99,7 +99,7 @@ and complete an integration with the Secure stage.
|
|||
- In the [Security Dashboard](../../user/application_security/security_dashboard/index.md) ([Dashboard data flow](https://gitlab.com/snippets/1910005#project-and-group-dashboards)).
|
||||
1. Optional: Provide a way to interact with results as Vulnerabilities:
|
||||
- Users can interact with the findings from your artifact within their workflow. They can dismiss the findings or accept them and create a backlog issue.
|
||||
- To automatically create issues without user interaction, use the [issue API](../../api/issues.md). This will be replaced by [Standalone Vulnerabilities](https://gitlab.com/groups/gitlab-org/-/epics/634) in the future.
|
||||
- To automatically create issues without user interaction, use the [issue API](../../api/issues.md).
|
||||
1. Optional: Provide auto-remediation steps:
|
||||
- If you specified `remediations` in your artifact, it is proposed through our [automatic remediation](../../user/application_security/index.md#automatic-remediation-for-vulnerabilities)
|
||||
interface.
|
||||
|
|
|
@ -9,7 +9,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
|||
## Deep Dive
|
||||
|
||||
In April 2019, Francisco Javier López hosted a Deep Dive (GitLab team members only: `https://gitlab.com/gitlab-org/create-stage/issues/1`)
|
||||
on GitLab's [Git LFS](../topics/git/lfs/index.md) implementation to share his domain
|
||||
on the GitLab [Git LFS](../topics/git/lfs/index.md) implementation to share his domain
|
||||
specific knowledge with anyone who may work in this part of the codebase in the future.
|
||||
You can find the [recording on YouTube](https://www.youtube.com/watch?v=Yyxwcksr0Qc),
|
||||
and the slides on [Google Slides](https://docs.google.com/presentation/d/1E-aw6-z0rYd0346YhIWE7E9A65zISL9iIMAOq2zaw9E/edit)
|
||||
|
|
|
@ -74,7 +74,8 @@ We follow a simple formula roughly based on Hungarian notation.
|
|||
- `_tab`
|
||||
- `_menu_item`
|
||||
|
||||
*Note: If none of the listed types are suitable, please open a merge request to add an appropriate type to the list.*
|
||||
NOTE:
|
||||
If none of the listed types are suitable, please open a merge request to add an appropriate type to the list.
|
||||
|
||||
### Examples
|
||||
|
||||
|
|
|
@ -46,4 +46,4 @@ These resources will help you get further acclimated to working on the command l
|
|||
- [Start using Git on the command line](start-using-git.md), for some simple Git commands.
|
||||
- [Command line basics](command-line-commands.md), to create and edit files using the command line.
|
||||
|
||||
More Git resources are available in GitLab's [Git documentation](../topics/git/index.md).
|
||||
More Git resources are available in the GitLab [Git documentation](../topics/git/index.md).
|
||||
|
|
|
@ -22,7 +22,7 @@ the command line and then push your changes to the remote server.
|
|||
|
||||
This guide will help you get started with Git through the command line and can be your reference
|
||||
for Git commands in the future. If you're only looking for a quick reference of Git commands, you
|
||||
can download GitLab's [Git Cheat Sheet](https://about.gitlab.com/images/press/git-cheat-sheet.pdf).
|
||||
can download the GitLab [Git Cheat Sheet](https://about.gitlab.com/images/press/git-cheat-sheet.pdf).
|
||||
|
||||
> For more information about the advantages of working with Git and GitLab:
|
||||
>
|
||||
|
@ -128,7 +128,7 @@ to our computer:
|
|||
- If you don't have 2FA enabled, use your account's password.
|
||||
|
||||
NOTE:
|
||||
Authenticating via SSH is GitLab's recommended method. You can read more about credential storage
|
||||
Authenticating via SSH is the GitLab recommended method. You can read more about credential storage
|
||||
in the [Git Credentials documentation](https://git-scm.com/book/en/v2/Git-Tools-Credential-Storage).
|
||||
|
||||
## Git terminology
|
||||
|
|
|
@ -832,7 +832,7 @@ sudo -u git -H bundle exec rake gitlab:check RAILS_ENV=production
|
|||
|
||||
If all items are green, congratulations on successfully installing GitLab!
|
||||
|
||||
TIP: **Tip:**
|
||||
NOTE:
|
||||
Supply the `SANITIZE=true` environment variable to `gitlab:check` to omit project names from the output of the check command.
|
||||
|
||||
### Initial Login
|
||||
|
|
|
@ -70,7 +70,7 @@ When trying to integrate GitLab with services that are using self-signed certifi
|
|||
There are two approaches you can take to solve this:
|
||||
|
||||
1. Add the root certificate to the trusted chain of the OS.
|
||||
1. If using Omnibus, you can add the certificate to GitLab's trusted certificates.
|
||||
1. If using Omnibus, you can add the certificate to the GitLab trusted certificates.
|
||||
|
||||
**OS main trusted chain**
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ Once configured, you can reference external issues using the format `CODE-123`,
|
|||
|
||||
These references in GitLab merge requests, commits, or comments are automatically converted to links to the issues.
|
||||
|
||||
You can keep GitLab's issue tracker enabled in parallel or disable it. When enabled, the **Issues** link in the
|
||||
You can keep the GitLab issue tracker enabled in parallel or disable it. When enabled, the **Issues** link in the
|
||||
GitLab menu always opens the internal issue tracker. When disabled, the link is not visible in the menu.
|
||||
|
||||
## Configuration
|
||||
|
|
|
@ -12,7 +12,7 @@ From GitLab, you can trigger a Jenkins build when you push code to a repository,
|
|||
request is created. In return, the Jenkins pipeline status is shown on merge requests widgets and
|
||||
on the GitLab project's home page.
|
||||
|
||||
To better understand GitLab's Jenkins integration, watch the following video:
|
||||
To better understand the GitLab Jenkins integration, watch the following video:
|
||||
|
||||
- [GitLab workflow with Jira issues and Jenkins pipelines](https://youtu.be/Jn-_fyra7xQ)
|
||||
|
||||
|
@ -36,7 +36,7 @@ GitLab. Learn how to **migrate** from Jenkins to GitLab CI/CD in our
|
|||
|
||||
## Configure GitLab integration with Jenkins
|
||||
|
||||
GitLab's Jenkins integration requires installation and configuration in both GitLab and Jenkins.
|
||||
The GitLab Jenkins integration requires installation and configuration in both GitLab and Jenkins.
|
||||
In GitLab, you need to grant Jenkins access to the relevant projects. In Jenkins, you need to
|
||||
install and configure several plugins.
|
||||
|
||||
|
|
|
@ -76,7 +76,7 @@ in the **Authorized applications** section under **Profile Settings > Applicatio
|
|||
|
||||
![Authorized_applications](img/oauth_provider_authorized_application.png)
|
||||
|
||||
GitLab's OAuth applications support scopes, which allow various actions that any given
|
||||
The GitLab OAuth applications support scopes, which allow various actions that any given
|
||||
application can perform such as `read_user` and `api`. There are many more scopes
|
||||
available.
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ mobile applications.
|
|||
On the client side, you can use [OmniAuth::OpenIDConnect](https://github.com/jjbohn/omniauth-openid-connect/) for Rails
|
||||
applications, or any of the other available [client implementations](https://openid.net/developers/libraries/#connect).
|
||||
|
||||
GitLab's implementation uses the [doorkeeper-openid_connect](https://github.com/doorkeeper-gem/doorkeeper-openid_connect "Doorkeeper::OpenidConnect website") gem, refer
|
||||
The GitLab implementation uses the [doorkeeper-openid_connect](https://github.com/doorkeeper-gem/doorkeeper-openid_connect "Doorkeeper::OpenidConnect website") gem, refer
|
||||
to its README for more details about which parts of the specifications
|
||||
are supported.
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
|||
|
||||
NOTE:
|
||||
The preferred approach for integrating a Shibboleth authentication system
|
||||
with GitLab 10 or newer is to use [GitLab's SAML integration](saml.md). This documentation is for Omnibus GitLab 9.x installs or older.
|
||||
with GitLab 10 or newer is to use the [GitLab SAML integration](saml.md). This documentation is for Omnibus GitLab 9.x installs or older.
|
||||
|
||||
In order to enable Shibboleth support in GitLab we need to use Apache instead of NGINX (It may be possible to use NGINX, however this is difficult to configure using the bundled NGINX provided in the Omnibus GitLab package). Apache uses mod_shib2 module for Shibboleth authentication and can pass attributes as headers to OmniAuth Shibboleth provider.
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
|||
|
||||
# Trello Power-Up
|
||||
|
||||
GitLab's Trello Power-Up enables you to seamlessly attach
|
||||
The GitLab Trello Power-Up enables you to seamlessly attach
|
||||
GitLab **merge requests** to Trello cards.
|
||||
|
||||
![GitLab Trello PowerUp - Trello card](img/trello_card_with_gitlab_powerup.png)
|
||||
|
@ -35,7 +35,7 @@ If your instance's URL is `https://example.com`, your API URL is `https://exampl
|
|||
|
||||
## What is my Personal Access Token?
|
||||
|
||||
Your GitLab's personal access token enables your GitLab account to be accessed
|
||||
Your GitLab personal access token enables your GitLab account to be accessed
|
||||
from Trello.
|
||||
|
||||
> Find it in GitLab by clicking on your avatar (upright corner), from which you access
|
||||
|
|
|
@ -12,11 +12,10 @@ This Rake task enables [namespaces](../user/group/index.md#namespaces) for proje
|
|||
|
||||
This command enables the namespaces feature introduced in GitLab 4.0. It moves every project in its namespace folder.
|
||||
|
||||
Note:
|
||||
The **repository location changes as part of this task**, so you must **update all your Git URLs** to
|
||||
point to the new location.
|
||||
|
||||
- The **repository location changes as part of this task**, so you must **update all your Git URLs** to
|
||||
point to the new location.
|
||||
- The username can be changed at **Profile > Account**.
|
||||
The username can be changed at **Profile > Account**.
|
||||
|
||||
For example:
|
||||
|
||||
|
|
|
@ -32,7 +32,7 @@ ones that GitLab developed.
|
|||
- Git Annex requires a more complex setup, but has much more options than Git
|
||||
LFS. You can compare the commands each one offers by running `man git-annex`
|
||||
and `man git-lfs`.
|
||||
- Annex files cannot be browsed directly in GitLab's interface, whereas LFS
|
||||
- Annex files cannot be browsed directly in the GitLab interface, whereas LFS
|
||||
files can.
|
||||
|
||||
## Migration steps
|
||||
|
|
|
@ -8,7 +8,7 @@ type: howto
|
|||
# Numerous undo possibilities in Git
|
||||
|
||||
In this tutorial, we will show you different ways of undoing your work in Git, for which
|
||||
we will assume you have a basic working knowledge of. Check GitLab's
|
||||
we will assume you have a basic working knowledge of. Check the GitLab
|
||||
[Git documentation](../index.md) for reference.
|
||||
|
||||
Also, we will only provide some general information of the commands, which is enough
|
||||
|
|
|
@ -224,7 +224,7 @@ Not only does this rewrite history, but it also loses authorship information.
|
|||
Rebasing prevents the other authors from being attributed and sharing part of the [`git blame`](https://git-scm.com/docs/git-blame).
|
||||
|
||||
If a merge involves many commits, it may seem more difficult to undo.
|
||||
You might consider solving this by squashing all the changes into one commit just before merging by using GitLab's [Squash-and-Merge](../user/project/merge_requests/squash_and_merge.md) feature.
|
||||
You might consider solving this by squashing all the changes into one commit just before merging by using the GitLab [Squash-and-Merge](../user/project/merge_requests/squash_and_merge.md) feature.
|
||||
Fortunately, there is an easy way to undo a merge with all its commits.
|
||||
The way to do this is by reverting the merge commit.
|
||||
Preserving this ability to revert a merge is a good reason to always use the "no fast-forward" (`--no-ff`) strategy when you merge manually.
|
||||
|
|
|
@ -76,9 +76,9 @@ to deploy this application under.
|
|||
![Google auth](../autodevops/img/guide_google_auth_v12_3.png)
|
||||
|
||||
1. The last step is to provide the cluster details.
|
||||
1. Give it a name, leave the environment scope as is, and choose the GCP project under which the cluster
|
||||
will be created (per the instructions to [configure your Google account](#configuring-your-google-account), a project should have already been created for you).
|
||||
1. Choose the [region/zone](https://cloud.google.com/compute/docs/regions-zones/) under which the cluster will be created.
|
||||
1. Give it a name, leave the environment scope as is, and choose the GCP project under which to create the cluster.
|
||||
(Per the instructions to [configure your Google account](#configuring-your-google-account), a project should have already been created for you.)
|
||||
1. Choose the [region/zone](https://cloud.google.com/compute/docs/regions-zones/) to create the cluster in.
|
||||
1. Enter the number of nodes you want it to have.
|
||||
1. Choose the [machine type](https://cloud.google.com/compute/docs/machine-types).
|
||||
|
||||
|
@ -118,7 +118,7 @@ filled in the domain, click **Save changes**.
|
|||
|
||||
Prometheus should also be installed. It is an open-source monitoring and
|
||||
alerting system that is used to supervise the deployed application.
|
||||
We will not install GitLab Runner as we use the shared runners that
|
||||
Installing GitLab Runner is not required as we use the shared runners that
|
||||
GitLab.com provides.
|
||||
|
||||
## Enabling Auto DevOps (optional)
|
||||
|
|
|
@ -45,7 +45,7 @@ specific guidelines (should there be any) are covered separately.
|
|||
|
||||
### 1. Backup
|
||||
|
||||
NOTE: If you installed GitLab from source, make sure `rsync` is installed.
|
||||
If you installed GitLab from source, make sure `rsync` is installed.
|
||||
|
||||
```shell
|
||||
cd /home/git/gitlab
|
||||
|
@ -61,7 +61,8 @@ sudo service gitlab stop
|
|||
|
||||
### 3. Update Ruby
|
||||
|
||||
NOTE: Beginning in GitLab 13.6, we only support Ruby 2.7 or higher, and dropped
|
||||
NOTE:
|
||||
Beginning in GitLab 13.6, we only support Ruby 2.7 or higher, and dropped
|
||||
support for Ruby 2.6. Be sure to upgrade if necessary.
|
||||
|
||||
You can check which version you are running with `ruby -v`.
|
||||
|
@ -81,7 +82,7 @@ sudo make install
|
|||
|
||||
### 4. Update Node.js
|
||||
|
||||
NOTE: To check the minimum required Node.js version, see [Node.js versions](../install/requirements.md#nodejs-versions).
|
||||
To check the minimum required Node.js version, see [Node.js versions](../install/requirements.md#nodejs-versions).
|
||||
|
||||
GitLab also requires the use of Yarn `>= v1.10.0` to manage JavaScript
|
||||
dependencies.
|
||||
|
@ -99,7 +100,7 @@ More information can be found on the [Yarn website](https://classic.yarnpkg.com/
|
|||
|
||||
### 5. Update Go
|
||||
|
||||
NOTE: To check the minimum required Go version, see [Go versions](../install/requirements.md#go-versions).
|
||||
To check the minimum required Go version, see [Go versions](../install/requirements.md#go-versions).
|
||||
|
||||
You can check which version you are running with `go version`.
|
||||
|
||||
|
|
|
@ -90,7 +90,7 @@ These settings can be found within:
|
|||
1. From the Group's homepage, navigate to **Settings > General**.
|
||||
1. Fill in the **Repository size limit (MB)** field in the **Naming, visibility** section.
|
||||
1. Click **Save changes**.
|
||||
- GitLab's global settings:
|
||||
- GitLab global settings:
|
||||
1. From the Dashboard, navigate to **Admin Area > Settings > General**.
|
||||
1. Expand the **Account and limit** section.
|
||||
1. Fill in the **Size limit per repository (MB)** field.
|
||||
|
|
|
@ -151,7 +151,7 @@ For more details, see [Exporting a project and its data](../../../user/project/s
|
|||
|
||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/4696) in GitLab 8.10.
|
||||
|
||||
With GitLab's access restrictions, you can select with which protocols users can communicate with
|
||||
With GitLab access restrictions, you can select with which protocols users can communicate with
|
||||
GitLab.
|
||||
|
||||
Disabling an access protocol does not block access to the server itself via those ports. The ports
|
||||
|
|
|
@ -94,6 +94,31 @@ Note that the Java analyzers can also be used for variants like the
|
|||
[Grails](https://grails.org/),
|
||||
and the [Maven wrapper](https://github.com/takari/maven-wrapper).
|
||||
|
||||
### Multi-project support
|
||||
|
||||
> [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/4895) in GitLab 13.7.
|
||||
|
||||
GitLab SAST can scan repositories that contain multiple projects. All projects must be in the same
|
||||
language.
|
||||
|
||||
The following analyzers have multi-project support:
|
||||
|
||||
- Bandit
|
||||
- ESLint
|
||||
- Gosec
|
||||
- Kubesec
|
||||
- NodeJsScan
|
||||
- MobSF
|
||||
- PMD
|
||||
- Security Code Scan
|
||||
- SpotBugs
|
||||
- Sobelow
|
||||
|
||||
#### Enable multi-project support for Security Code Scan
|
||||
|
||||
Multi-project support in the Security Code Scan requires a Solution (`.sln`) file in the root of
|
||||
the repository. For details on the Solution format, see the Microsoft reference [Solution (.sln) file](https://docs.microsoft.com/en-us/visualstudio/extensibility/internals/solution-dot-sln-file?view=vs-2019).
|
||||
|
||||
### Making SAST analyzers available to all GitLab tiers
|
||||
|
||||
All open source (OSS) analyzers have been moved to the GitLab Core tier as of GitLab 13.3.
|
||||
|
|
|
@ -332,7 +332,7 @@ For information on this, see the [general Application Security troubleshooting s
|
|||
|
||||
This error is usually caused by the `GIT_DEPTH` value of 50 that is set for all [projects by default](../../../ci/pipelines/settings.md#git-shallow-clone).
|
||||
|
||||
For example, if a pipeline is triggered from a Merge Request containing 60 commits while the `GIT_DEPTH` is set to 50, the Secret Detection job will fail as the clone will not have been deep enough to contain all of the relevant commits.
|
||||
For example, if a pipeline is triggered from a Merge Request containing 60 commits while the `GIT_DEPTH` is set to 50, the Secret Detection job fails as the clone is not deep enough to contain all of the relevant commits.
|
||||
|
||||
You can confirm this to be the cause of the error by implementing a [logging level](../../application_security/secret_detection/index.md#logging-level) of `debug`. Once implemented, the logs should look similar to the following example, wherein an "object not found" error can be seen:
|
||||
|
||||
|
|
|
@ -48,13 +48,10 @@ monospaced font:
|
|||
and lines breaks will be preserved.
|
||||
```
|
||||
|
||||
An admonition paragraph grabs the reader's attention:
|
||||
Admonition paragraphs grab the reader's attention:
|
||||
|
||||
```plaintext
|
||||
NOTE: This is a brief reference, please read the full documentation at https://asciidoctor.org/docs/.
|
||||
|
||||
TIP: Lists can be indented. Leading whitespace is not significant.
|
||||
```
|
||||
- `NOTE: This is a brief reference, please read the full documentation at https://asciidoctor.org/docs/.`
|
||||
- `TIP: Lists can be indented. Leading whitespace is not significant.`
|
||||
|
||||
### Text Formatting
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ For information on how to contribute to the development of Value Stream Analytic
|
|||
|
||||
Group-level Value Stream Analytics is available via **Group > Analytics > Value Stream**.
|
||||
|
||||
Note: [Project-level Value Stream Analytics](../../analytics/value_stream_analytics.md) is also available.
|
||||
[Project-level Value Stream Analytics](../../analytics/value_stream_analytics.md) is also available.
|
||||
|
||||
## Default stages
|
||||
|
||||
|
|
|
@ -7,9 +7,9 @@ type: reference, howto
|
|||
|
||||
# GitLab Markdown
|
||||
|
||||
This Markdown guide is **valid only for GitLab's internal Markdown rendering system for entries and files**.
|
||||
This Markdown guide is **valid only for the GitLab internal Markdown rendering system for entries and files**.
|
||||
It is **not** valid for the [GitLab documentation website](https://docs.gitlab.com)
|
||||
or [GitLab's main website](https://about.gitlab.com), as they both use
|
||||
or the [GitLab main website](https://about.gitlab.com), as they both use
|
||||
[Kramdown](https://kramdown.gettalong.org) as their Markdown engine. The documentation
|
||||
website uses an extended Kramdown gem, [GitLab Kramdown](https://gitlab.com/gitlab-org/gitlab_kramdown).
|
||||
Consult the [GitLab Kramdown Guide](https://about.gitlab.com/handbook/markdown-guide/)
|
||||
|
@ -52,7 +52,7 @@ The documentation website had its [Markdown engine migrated from Redcarpet to Kr
|
|||
in October 2018.
|
||||
|
||||
You may have older issues, merge requests, or Markdown documents in your
|
||||
repository that were written using some of the nuances of GitLab's RedCarpet version
|
||||
repository that were written using some of the nuances of the GitLab RedCarpet version
|
||||
of Markdown. Since CommonMark uses slightly stricter syntax, these documents
|
||||
might now appear a little differently since we have transitioned to CommonMark.
|
||||
|
||||
|
@ -353,7 +353,7 @@ The wrapping tags can be either curly braces or square brackets:
|
|||
- [- deletion 4 -]
|
||||
```
|
||||
|
||||
![Inline diff as rendered by GitLab's interface](img/inline_diff_01_v13_3.png)
|
||||
![Inline diff as rendered by the GitLab interface](img/inline_diff_01_v13_3.png)
|
||||
|
||||
---
|
||||
|
||||
|
@ -375,7 +375,7 @@ backslash `\`, otherwise the diff highlight don't render correctly:
|
|||
- {+ Text with escaped \`backticks\` inside +}
|
||||
```
|
||||
|
||||
![Inline diff with mixed formatting, as rendered by GitLab's interface](img/inline_diff_02_v13_3.png)
|
||||
![Inline diff with mixed formatting, as rendered by the GitLab interface](img/inline_diff_02_v13_3.png)
|
||||
|
||||
### Math
|
||||
|
||||
|
@ -480,7 +480,7 @@ unordered or ordered lists:
|
|||
1. [x] Sub-task 2
|
||||
```
|
||||
|
||||
![A task list as rendered by GitLab's interface](img/completed_tasks_v13_3.png)
|
||||
![A task list as rendered by the GitLab interface](img/completed_tasks_v13_3.png)
|
||||
|
||||
### Table of contents
|
||||
|
||||
|
@ -1056,7 +1056,7 @@ are separated into their own lines:
|
|||
```
|
||||
|
||||
<!--
|
||||
Note: The example below uses HTML to force correct rendering on docs.gitlab.com,
|
||||
The example below uses HTML to force correct rendering on docs.gitlab.com,
|
||||
Markdown is fine in GitLab.
|
||||
-->
|
||||
|
||||
|
|
|
@ -16,6 +16,9 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
|||
> - The group-level Container Registry was [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/23315) in GitLab 12.10.
|
||||
> - Searching by image repository name was [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/31322) in GitLab 13.0.
|
||||
|
||||
NOTE:
|
||||
If you pull container images from Docker Hub, you can also use the [GitLab Dependency Proxy](../dependency_proxy/index.md#use-the-dependency-proxy-for-docker-images) to avoid running into rate limits and speed up your pipelines.
|
||||
|
||||
With the Docker Container Registry integrated into GitLab, every GitLab project can
|
||||
have its own space to store its Docker images.
|
||||
|
||||
|
|
|
@ -62,9 +62,8 @@ Prerequisites:
|
|||
|
||||
### Authenticate with the Dependency Proxy
|
||||
|
||||
> - [Authentication and support for private groups](https://gitlab.com/gitlab-org/gitlab/-/issues/11582) in [GitLab Core](https://about.gitlab.com/pricing/) 13.7.
|
||||
> - It was [deployed behind a feature flag](../../feature_flags.md), disabled by default.
|
||||
> - [Became enabled by default](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/49519) on GitLab 13.7.
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/11582) in [GitLab Core](https://about.gitlab.com/pricing/) 13.7.
|
||||
> - It's [deployed behind a feature flag](../../feature_flags.md), enabled by default.
|
||||
> - It's enabled on GitLab.com.
|
||||
> - It's recommended for production use.
|
||||
> - For GitLab self-managed instances, GitLab administrators can opt to [disable it](../../../administration/packages/dependency_proxy.md#disabling-authentication). **(CORE ONLY)**
|
||||
|
@ -94,7 +93,7 @@ You can authenticate using:
|
|||
|
||||
#### Authenticate within CI/CD
|
||||
|
||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/280582) in 13.7.
|
||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/280582) in GitLab 13.7.
|
||||
|
||||
To work with the Dependency Proxy in [GitLab CI/CD](../../../ci/README.md), you can use:
|
||||
|
||||
|
@ -209,6 +208,9 @@ the [Dependency Proxy API](../../../api/dependency_proxy.md).
|
|||
|
||||
> - [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/241639) in [GitLab Core](https://about.gitlab.com/pricing/) 13.7.
|
||||
|
||||
<i class="fa fa-youtube-play youtube" aria-hidden="true"></i>
|
||||
Watch how to [use the Dependency Proxy to help avoid Docker Hub rate limits](https://youtu.be/Nc4nUo7Pq08).
|
||||
|
||||
In November 2020, Docker introduced
|
||||
[rate limits on pull requests from Docker Hub](https://docs.docker.com/docker-hub/download-rate-limit/).
|
||||
If your GitLab [CI/CD configuration](../../../ci/README.md) uses
|
||||
|
|
|
@ -181,7 +181,7 @@ nuget push <package_file> -Source <source_name>
|
|||
|
||||
Prerequisite:
|
||||
|
||||
[A NuGet package created with .NET CLI](https://docs.microsoft.com/en-us/nuget/create-packages/creating-a-package-dotnet-cli).
|
||||
- [A NuGet package created with .NET CLI](https://docs.microsoft.com/en-us/nuget/create-packages/creating-a-package-dotnet-cli).
|
||||
|
||||
Publish a package by running this command:
|
||||
|
||||
|
|
|
@ -50,7 +50,7 @@ When you create a project in GitLab, you'll have access to a large number of
|
|||
- [Merge Request Approvals](merge_requests/merge_request_approvals.md): Ask for approval before
|
||||
implementing a change **(STARTER)**
|
||||
- [Fix merge conflicts from the UI](merge_requests/resolve_conflicts.md):
|
||||
Your Git diff tool right from GitLab's UI
|
||||
Your Git diff tool right from the GitLab UI
|
||||
- [Review Apps](../../ci/review_apps/index.md): Live preview the results
|
||||
of the changes proposed in a merge request in a per-branch basis
|
||||
- [Labels](labels.md): Organize issues and merge requests by labels
|
||||
|
@ -69,7 +69,7 @@ When you create a project in GitLab, you'll have access to a large number of
|
|||
|
||||
**GitLab CI/CD:**
|
||||
|
||||
- [GitLab CI/CD](../../ci/README.md): GitLab's built-in [Continuous Integration, Delivery, and Deployment](https://about.gitlab.com/blog/2016/08/05/continuous-integration-delivery-and-deployment-with-gitlab/) tool
|
||||
- [GitLab CI/CD](../../ci/README.md): the GitLab built-in [Continuous Integration, Delivery, and Deployment](https://about.gitlab.com/blog/2016/08/05/continuous-integration-delivery-and-deployment-with-gitlab/) tool
|
||||
- [Container Registry](../packages/container_registry/index.md): Build and push Docker
|
||||
images out-of-the-box
|
||||
- [Auto Deploy](../../topics/autodevops/stages.md#auto-deploy): Configure GitLab CI/CD
|
||||
|
@ -100,7 +100,7 @@ When you create a project in GitLab, you'll have access to a large number of
|
|||
- [Insights](insights/index.md): configure the Insights that matter for your projects. **(ULTIMATE)**
|
||||
- [Security Dashboard](../application_security/security_dashboard/index.md): Security Dashboard. **(ULTIMATE)**
|
||||
- [Syntax highlighting](highlighting.md): an alternative to customize
|
||||
your code blocks, overriding GitLab's default choice of language.
|
||||
your code blocks, overriding the GitLab default choice of language.
|
||||
- [Badges](badges.md): badges for the project overview.
|
||||
- [Releases](releases/index.md): a way to track deliverables in your project as snapshot in time of
|
||||
the source, build output, other metadata, and other artifacts
|
||||
|
|
|
@ -39,7 +39,7 @@ Keep in mind that you need to have the appropriate permissions for your Slack
|
|||
team in order to be able to install a new application, read more in Slack's
|
||||
docs on [Adding an app to your workspace](https://slack.com/help/articles/202035138-Add-an-app-to-your-workspace).
|
||||
|
||||
To enable GitLab's service for your Slack team:
|
||||
To enable the GitLab service for your Slack team:
|
||||
|
||||
1. Go to your project's **Settings > Integration > Slack application** (only
|
||||
visible on GitLab.com).
|
||||
|
|
|
@ -6,7 +6,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
|||
|
||||
# GitLab Jira integration
|
||||
|
||||
If you need to use Jira to track work that's implemented in GitLab, GitLab's Jira integrations make the process of working across systems more efficient.
|
||||
If you need to use Jira to track work that's implemented in GitLab, Jira integrations with GitLab make the process of working across systems more efficient.
|
||||
|
||||
This page is about the GitLab Jira integration, which is available in every GitLab project by default, allowing you to connect it to any Jira instance, whether Cloud or self-managed. To compare features with the complementary Jira Development Panel integration, see [Jira integrations](jira_integrations.md).
|
||||
|
||||
|
@ -18,7 +18,7 @@ Features include:
|
|||
- GitLab links to the Jira issue.
|
||||
- The Jira issue adds a comment with details and a link back to the activity in GitLab.
|
||||
- **Mention that a commit or MR resolves or closes a specific Jira issue** and when it's merged to the default branch:
|
||||
- GitLab's MR displays a note that it closed the Jira issue. Prior to the merge, MRs indicate which issue they close.
|
||||
- The GitLab MR displays a note that it closed the Jira issue. Prior to the merge, MRs indicate which issue they close.
|
||||
- The Jira issue shows the activity and is closed or otherwise transitioned as specified in your GitLab settings.
|
||||
- **View a list of Jira issues directly in GitLab** **(PREMIUM)**
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
|||
GitLab Issues are a tool for discussing ideas and planning and tracking work. However, your organization may already use Jira for these purposes, with
|
||||
extensive, established data and business processes they rely on.
|
||||
|
||||
Although you can [migrate](../../../user/project/import/jira.md) your Jira issues and work exclusively in GitLab, you also have the option of continuing to use Jira by using GitLab's Jira integrations.
|
||||
Although you can [migrate](../../../user/project/import/jira.md) your Jira issues and work exclusively in GitLab, you also have the option of continuing to use Jira by using the GitLab Jira integrations.
|
||||
|
||||
## Integrations
|
||||
|
||||
|
|
|
@ -110,7 +110,7 @@ result = Net::HTTP.get(URI('https://<GITLAB URL>'));0
|
|||
```
|
||||
|
||||
If GitLab is not trusting HTTPS connections to itself, then you may
|
||||
need to [add your certificate to GitLab's trusted certificates](https://docs.gitlab.com/omnibus/settings/ssl.html#install-custom-public-certificates).
|
||||
need to [add your certificate to the GitLab trusted certificates](https://docs.gitlab.com/omnibus/settings/ssl.html#install-custom-public-certificates).
|
||||
|
||||
If GitLab is not trusting connections to Slack, then the GitLab
|
||||
OpenSSL trust store is incorrect. Some typical causes: overriding
|
||||
|
|
|
@ -409,7 +409,8 @@ X-Gitlab-Event: Issue Hook
|
|||
}
|
||||
```
|
||||
|
||||
NOTE: `assignee` and `assignee_id` keys are deprecated and now show the first assignee only.
|
||||
NOTE:
|
||||
`assignee` and `assignee_id` keys are deprecated and now show the first assignee only.
|
||||
|
||||
### Comment events
|
||||
|
||||
|
@ -734,7 +735,8 @@ X-Gitlab-Event: Note Hook
|
|||
}
|
||||
```
|
||||
|
||||
NOTE: `assignee_id` field is deprecated and now shows the first assignee only.
|
||||
NOTE:
|
||||
`assignee_id` field is deprecated and now shows the first assignee only.
|
||||
|
||||
#### Comment on code snippet
|
||||
|
||||
|
@ -1603,7 +1605,7 @@ Missing intermediate certificates are a common point of verification failure.
|
|||
|
||||
## Example webhook receiver
|
||||
|
||||
If you want to see GitLab's webhooks in action for testing purposes you can use
|
||||
If you want to see GitLab webhooks in action for testing purposes you can use
|
||||
a simple echo script running in a console session. For the following script to
|
||||
work you need to have Ruby installed.
|
||||
|
||||
|
|
|
@ -95,7 +95,7 @@ you can drag and drop designs onto the dedicated drop zone to upload them.
|
|||
|
||||
[Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/202634)
|
||||
in GitLab 12.10, you can also copy images from your file system and
|
||||
paste them directly on GitLab's Design page as a new design.
|
||||
paste them directly on the GitLab Design page as a new design.
|
||||
|
||||
On macOS you can also take a screenshot and immediately copy it to
|
||||
the clipboard by simultaneously clicking <kbd>Control</kbd> + <kbd>Command</kbd> + <kbd>Shift</kbd> + <kbd>3</kbd>, and then paste it as a design.
|
||||
|
|
|
@ -126,7 +126,7 @@ Requesting a code review is an important part of contributing code. However, dec
|
|||
your code and asking for a review are no easy tasks. Using the "assignee" field for both authors and
|
||||
reviewers makes it hard for others to determine who's doing what on a merge request.
|
||||
|
||||
GitLab's Merge Request Reviewers easily allow authors to request a review as well as see the status of the
|
||||
GitLab Merge Request Reviewers easily allow authors to request a review as well as see the status of the
|
||||
review. By selecting one or more users from the **Reviewers** field in the merge request's right-hand
|
||||
sidebar, the assigned reviewers will receive a notification of the request to review the merge request.
|
||||
|
||||
|
|
|
@ -232,7 +232,7 @@ you can preview the changes submitted to a feature-branch through a merge reques
|
|||
in a per-branch basis. No need to checkout the branch, install and preview locally;
|
||||
all your changes will be available to preview by anyone with the Review Apps link.
|
||||
|
||||
With GitLab's [Route Maps](../../../ci/review_apps/index.md#route-maps) set, the
|
||||
With GitLab [Route Maps](../../../ci/review_apps/index.md#route-maps) set, the
|
||||
merge request widget takes you directly to the pages changed, making it easier and
|
||||
faster to preview proposed modifications.
|
||||
|
||||
|
|
|
@ -170,7 +170,7 @@ From time to time, it may be required to delete or clean up branches that are
|
|||
protected.
|
||||
|
||||
User with [Maintainer permissions](../permissions.md) and up can manually delete protected
|
||||
branches via GitLab's web interface:
|
||||
branches via the GitLab web interface:
|
||||
|
||||
1. Visit **Repository > Branches**
|
||||
1. Click on the delete icon next to the branch you wish to delete
|
||||
|
|
|
@ -48,7 +48,7 @@ to your repository's root.
|
|||
|
||||
**From the user interface:**
|
||||
|
||||
GitLab's UI allows you to perform lots of Git commands without having to
|
||||
The GitLab UI allows you to perform lots of Git commands without having to
|
||||
touch the command line. Even if you use the command line regularly, sometimes
|
||||
it's easier to do so [via GitLab UI](web_editor.md):
|
||||
|
||||
|
@ -67,7 +67,7 @@ To get started with the command line, please read through the
|
|||
|
||||
### Find files
|
||||
|
||||
Use GitLab's [file finder](file_finder.md) to search for files in a repository.
|
||||
Use the GitLab [file finder](file_finder.md) to search for files in a repository.
|
||||
|
||||
### Supported markup languages and extensions
|
||||
|
||||
|
@ -141,7 +141,7 @@ their filenames include `openapi` or `swagger` and their extension is `yaml`,
|
|||
|
||||
Then, to render them:
|
||||
|
||||
1. Navigate to the OpenAPI file in your repository in GitLab's UI.
|
||||
1. Navigate to the OpenAPI file in your repository in the GitLab UI.
|
||||
1. Click the "Display OpenAPI" button which is located between the "Display source"
|
||||
and "Edit" buttons (when an OpenAPI file is found, it replaces the
|
||||
"Display rendered file" button).
|
||||
|
|
|
@ -253,7 +253,7 @@ When using repository cleanup, note:
|
|||
are not be removed immediately. If you have access to the
|
||||
[Gitaly](../../../administration/gitaly/index.md) server, you may slip that delay and run `git gc --prune=now` to
|
||||
prune all loose objects immediately.
|
||||
- This process removes some copies of the rewritten commits from GitLab's cache and database,
|
||||
- This process removes some copies of the rewritten commits from the GitLab cache and database,
|
||||
but there are still numerous gaps in coverage and some of the copies may persist indefinitely.
|
||||
[Clearing the instance cache](../../../administration/raketasks/maintenance.md#clear-redis-cache)
|
||||
may help to remove some of them, but it should not be depended on for security purposes!
|
||||
|
|
|
@ -94,7 +94,7 @@ the target branch. Click **Create directory** to finish.
|
|||
|
||||
## Create a new branch
|
||||
|
||||
There are multiple ways to create a branch from GitLab's web interface.
|
||||
There are multiple ways to create a branch from the GitLab web interface.
|
||||
|
||||
### Create a new branch from an issue
|
||||
|
||||
|
|
|
@ -169,7 +169,7 @@ title, layout template, or author, but can be used to pass any kind of metadata
|
|||
generator as the page renders out to HTML. Included at the very top of each data file, the
|
||||
front matter is often formatted as YAML or JSON and requires consistent and accurate syntax.
|
||||
|
||||
To edit the front matter from the Static Site Editor you can use the GitLab's regular file editor,
|
||||
To edit the front matter from the Static Site Editor you can use the GitLab regular file editor,
|
||||
the Web IDE, or easily update the data directly from the WYSIWYG editor:
|
||||
|
||||
1. Click the **Page settings** button on the bottom-right to reveal a web form with the data you
|
||||
|
|
|
@ -64,7 +64,7 @@ When you're ready, click the **Create page** and the new page will be created.
|
|||
|
||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/33475) in GitLab 11.3.
|
||||
|
||||
Starting with GitLab 11.3, any file that is uploaded to the wiki via GitLab's
|
||||
Starting with GitLab 11.3, any file that is uploaded to the wiki via the GitLab
|
||||
interface will be stored in the wiki Git repository, and it will be available
|
||||
if you clone the wiki repository locally. All uploaded files prior to GitLab
|
||||
11.3 are stored in GitLab itself. If you want them to be part of the wiki's Git
|
||||
|
|
|
@ -40,7 +40,7 @@ storage item. Click on each project's title to see a breakdown per storage item.
|
|||
> - It's enabled on GitLab.com.
|
||||
> - It's recommended for production use.
|
||||
|
||||
CAUTION: **Warning:**
|
||||
WARNING:
|
||||
This feature might not be available to you. Check the **version history** note above for details.
|
||||
|
||||
The following storage usage statistics are available to an owner:
|
||||
|
|
|
@ -49,32 +49,3 @@ dast:
|
|||
- if: $CI_COMMIT_BRANCH &&
|
||||
$GITLAB_FEATURES =~ /\bdast\b/ &&
|
||||
$DAST_API_SPECIFICATION
|
||||
|
||||
dast_unlicensed:
|
||||
stage: dast
|
||||
allow_failure: true
|
||||
variables:
|
||||
GIT_STRATEGY: none
|
||||
rules:
|
||||
- if: $DAST_DISABLED
|
||||
when: never
|
||||
- if: $DAST_DISABLED_FOR_DEFAULT_BRANCH &&
|
||||
$CI_DEFAULT_BRANCH == $CI_COMMIT_REF_NAME
|
||||
when: never
|
||||
- if: $CI_DEFAULT_BRANCH != $CI_COMMIT_REF_NAME &&
|
||||
$REVIEW_DISABLED && $DAST_WEBSITE == null &&
|
||||
$DAST_API_SPECIFICATION == null
|
||||
when: never
|
||||
- if: $CI_COMMIT_BRANCH &&
|
||||
$CI_KUBERNETES_ACTIVE &&
|
||||
$GITLAB_FEATURES !~ /\bdast\b/
|
||||
- if: $CI_COMMIT_BRANCH &&
|
||||
$GITLAB_FEATURES !~ /\bdast\b/ &&
|
||||
$DAST_WEBSITE
|
||||
- if: $CI_COMMIT_BRANCH &&
|
||||
$GITLAB_FEATURES !~ /\bdast\b/ &&
|
||||
$DAST_API_SPECIFICATION
|
||||
script:
|
||||
- |
|
||||
echo "Error: Your GitLab project is not licensed for DAST."
|
||||
- exit 1
|
||||
|
|
|
@ -61,15 +61,15 @@ module Gitlab
|
|||
def push_frontend_feature_flag(name, *args, **kwargs)
|
||||
enabled = Feature.enabled?(name, *args, **kwargs)
|
||||
|
||||
push_to_gon_features(name, enabled)
|
||||
push_to_gon_attributes(:features, name, enabled)
|
||||
end
|
||||
|
||||
def push_to_gon_features(name, enabled)
|
||||
def push_to_gon_attributes(key, name, enabled)
|
||||
var_name = name.to_s.camelize(:lower)
|
||||
# Here the `true` argument signals gon that the value should be merged
|
||||
# into any existing ones, instead of overwriting them. This allows you to
|
||||
# use this method to push multiple feature flags.
|
||||
gon.push({ features: { var_name => enabled } }, true)
|
||||
gon.push({ key => { var_name => enabled } }, true)
|
||||
end
|
||||
|
||||
def default_avatar_url
|
||||
|
|
|
@ -31,6 +31,10 @@ const expectNotImplemented = action => {
|
|||
// subgroups when the movIssue action is called.
|
||||
const getProjectPath = path => path.split('#')[0];
|
||||
|
||||
beforeEach(() => {
|
||||
window.gon = { features: {} };
|
||||
});
|
||||
|
||||
describe('setInitialBoardData', () => {
|
||||
it('sets data object', () => {
|
||||
const mockData = {
|
||||
|
@ -67,6 +71,24 @@ describe('setFilters', () => {
|
|||
});
|
||||
});
|
||||
|
||||
describe('performSearch', () => {
|
||||
it('should dispatch setFilters action', done => {
|
||||
testAction(actions.performSearch, {}, {}, [], [{ type: 'setFilters', payload: {} }], done);
|
||||
});
|
||||
|
||||
it('should dispatch setFilters, fetchLists and resetIssues action when graphqlBoardLists FF is on', done => {
|
||||
window.gon = { features: { graphqlBoardLists: true } };
|
||||
testAction(
|
||||
actions.performSearch,
|
||||
{},
|
||||
{},
|
||||
[],
|
||||
[{ type: 'setFilters', payload: {} }, { type: 'fetchLists' }, { type: 'resetIssues' }],
|
||||
done,
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('setActiveId', () => {
|
||||
it('should commit mutation SET_ACTIVE_ID', done => {
|
||||
const state = {
|
||||
|
|
|
@ -33,16 +33,21 @@ describe('Board Store Mutations', () => {
|
|||
};
|
||||
const boardType = 'group';
|
||||
const disabled = false;
|
||||
const boardConfig = {
|
||||
milestoneTitle: 'Milestone 1',
|
||||
};
|
||||
|
||||
mutations[types.SET_INITIAL_BOARD_DATA](state, {
|
||||
...endpoints,
|
||||
boardType,
|
||||
disabled,
|
||||
boardConfig,
|
||||
});
|
||||
|
||||
expect(state.endpoints).toEqual(endpoints);
|
||||
expect(state.boardType).toEqual(boardType);
|
||||
expect(state.disabled).toEqual(disabled);
|
||||
expect(state.boardConfig).toEqual(boardConfig);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue