From 6aaf8cf6f4a561152e9b08b4a6470ad88195cd2f Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 16 Dec 2020 03:09:46 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- Gemfile | 1 - Gemfile.lock | 3 - app/assets/images/checkmark.png | Bin 0 -> 596 bytes app/assets/images/chevron-down.png | Bin 0 -> 599 bytes app/assets/javascripts/boards/boards_util.js | 5 + .../boards/components/board_list_new.vue | 8 -- .../boards/components/modal/filters.js | 3 +- .../boards/filtered_search_boards.js | 23 +++- app/assets/javascripts/boards/index.js | 43 +++---- .../javascripts/boards/stores/actions.js | 13 ++ .../javascripts/boards/stores/boards_store.js | 4 - .../javascripts/boards/stores/mutations.js | 3 +- app/assets/javascripts/boards/stores/state.js | 1 + app/assets/stylesheets/application.scss | 3 - .../components/milestone_combobox.scss | 11 +- .../stylesheets/fontawesome_custom.scss | 81 ++++++------- .../stylesheets/framework/dropdowns.scss | 28 ++--- .../stylesheets/framework/typography.scss | 7 +- .../lazy_bundles/select2_overrides.scss | 22 +--- app/controllers/projects/issues_controller.rb | 2 +- app/helpers/icons_helper.rb | 1 - app/models/concerns/triggerable_hooks.rb | 2 - .../gitlab/whats_new/item_presenter.rb | 2 +- .../unreleased/mw-wiki-page-specific-css.yml | 5 + .../remove_dast_unlicensed_290958.yml | 5 + config/application.rb | 5 - data/whats_new/202008180001_12_10.yml | 8 +- data/whats_new/202008180002_13_0.yml | 8 +- data/whats_new/202008180003_13_01.yml | 8 +- data/whats_new/202008210001_13_02.yml | 6 +- data/whats_new/202009150001_13_03.yml | 4 +- data/whats_new/202009300001_13_04.yml | 2 +- data/whats_new/202010230001_13_05.yml | 4 +- data/whats_new/202011230001_13_06.yml | 10 +- doc/.vale/gitlab/AlertBoxStyle.yml | 21 ++++ doc/administration/file_hooks.md | 2 +- doc/administration/geo/index.md | 1 - .../geo/replication/troubleshooting.md | 3 +- doc/administration/gitaly/index.md | 4 +- doc/administration/gitaly/praefect.md | 113 ++++++++++++++---- .../operations/fast_ssh_key_lookup.md | 3 +- .../operations/moving_repositories.md | 2 +- .../operations/ssh_certificates.md | 3 +- .../repository_storage_paths.md | 43 ++++--- doc/administration/server_hooks.md | 16 +-- doc/api/services.md | 3 +- .../bitbucket_integration.md | 5 +- doc/development/code_intelligence/index.md | 2 +- doc/development/fe_guide/performance.md | 2 +- doc/development/gitaly.md | 2 +- doc/development/integrations/secure.md | 2 +- .../secure_partner_integration.md | 2 +- doc/development/lfs.md | 2 +- .../testing_guide/end_to_end/style_guide.md | 3 +- doc/gitlab-basics/README.md | 2 +- doc/gitlab-basics/start-using-git.md | 4 +- doc/install/installation.md | 2 +- doc/integration/README.md | 2 +- doc/integration/external-issue-tracker.md | 2 +- doc/integration/jenkins.md | 4 +- doc/integration/oauth_provider.md | 2 +- doc/integration/openid_connect_provider.md | 2 +- doc/integration/shibboleth.md | 2 +- doc/integration/trello_power_up.md | 4 +- doc/raketasks/features.md | 7 +- .../lfs/migrate_from_git_annex_to_git_lfs.md | 2 +- .../index.md | 2 +- doc/topics/gitlab_flow.md | 2 +- .../quick_start_guide.md | 8 +- doc/update/upgrading_from_source.md | 9 +- .../settings/account_and_limit_settings.md | 2 +- .../visibility_and_access_controls.md | 2 +- doc/user/application_security/sast/index.md | 25 ++++ .../secret_detection/index.md | 2 +- doc/user/asciidoc.md | 9 +- .../group/value_stream_analytics/index.md | 2 +- doc/user/markdown.md | 14 +-- doc/user/packages/container_registry/index.md | 3 + doc/user/packages/dependency_proxy/index.md | 10 +- doc/user/packages/nuget_repository/index.md | 2 +- doc/user/project/index.md | 6 +- .../integrations/gitlab_slack_application.md | 2 +- doc/user/project/integrations/jira.md | 4 +- .../project/integrations/jira_integrations.md | 2 +- doc/user/project/integrations/slack.md | 2 +- doc/user/project/integrations/webhooks.md | 8 +- doc/user/project/issues/design_management.md | 2 +- .../project/merge_requests/getting_started.md | 2 +- .../reviewing_and_managing_merge_requests.md | 2 +- doc/user/project/protected_branches.md | 2 +- doc/user/project/repository/index.md | 6 +- .../reducing_the_repo_size_using_git.md | 2 +- doc/user/project/repository/web_editor.md | 2 +- doc/user/project/static_site_editor/index.md | 2 +- doc/user/project/wiki/index.md | 2 +- doc/user/usage_quotas.md | 2 +- .../ci/templates/Security/DAST.gitlab-ci.yml | 29 ----- lib/gitlab/gon_helper.rb | 6 +- spec/frontend/boards/stores/actions_spec.js | 22 ++++ spec/frontend/boards/stores/mutations_spec.js | 5 + .../gitlab/whats_new/item_presenter_spec.rb | 6 +- 101 files changed, 448 insertions(+), 360 deletions(-) create mode 100644 app/assets/images/checkmark.png create mode 100644 app/assets/images/chevron-down.png create mode 100644 changelogs/unreleased/mw-wiki-page-specific-css.yml create mode 100644 changelogs/unreleased/remove_dast_unlicensed_290958.yml create mode 100644 doc/.vale/gitlab/AlertBoxStyle.yml diff --git a/Gemfile b/Gemfile index 1ddf90a4cb4..ef04c0880a7 100644 --- a/Gemfile +++ b/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' diff --git a/Gemfile.lock b/Gemfile.lock index 939c9d8b17b..8c7960c8811 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -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) diff --git a/app/assets/images/checkmark.png b/app/assets/images/checkmark.png new file mode 100644 index 0000000000000000000000000000000000000000..6e47fda5cdcb31b432e2620cad6aa954309d49e6 GIT binary patch literal 596 zcmV-a0;~OrP)EX>4Tx04R}tkv&MmKpe$iQ$>+#2Rn#31gTCIL`5963Pq?8YK2xEOfLO`CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#IXWr2NQwVT3N2zhIPS;0dyl(!fKV?p&FUBjG~G5+ ziMW`_u8Li+2qBCzBx-kgEhn zjs;YpL3aJ%fAG6oD?d5mC57TZ=ZoWfi~wD`K%?e3-^Y&AI01ssz?I(eSL(pbC+W48 z7Ci#O+rY(jOH=lM%N=0g$&gLim4Y;dd>(i|qi@Or{kK5Rn%7%%AEysMnz~Bf00)P_ zXo0fVecs*O-rK)tn*IF%e~fah+S*G;00006VoOIv0RI600RN!9r;`8x010qNS#tmY z4c7nw4c7reD4Tcy000McNliru|jwy9(( i?=|!3k|_M+BhUf(V;nWN+)c*-0000EX>4Tx04R}tkv&MmKpe$iQ$>+#2Rn#31gTCIL`5963Pq?8YK2xEOfLO`CJjl7 zi=*ILaPVWX>fqw6tAnc`2!4P#IXWr2NQwVT3N2zhIPS;0dyl(!fKV?p&FUBjG~G5+ ziMW`_u8Li+2qBCzBx-kgEhn zjs;YpL3aJ%fAG6oD?d5mC57TZ=ZoWfi~wD`K%?e3-^Y&AI01ssz?I(eSL(pbC+W48 z7Ci#O+rY(jOH=lM%N=0g$&gLim4Y;dd>(i|qi@Or{kK5Rn%7%%AEysMnz~Bf00)P_ zXo0fVecs*O-rK)tn*IF%e~fah+S*G;00006VoOIv0RI600RN!9r;`8x010qNS#tmY z4c7nw4c7reD4Tcy000McNliru { this.showCount = this.scrollHeight() > Math.ceil(this.listHeight()); diff --git a/app/assets/javascripts/boards/components/modal/filters.js b/app/assets/javascripts/boards/components/modal/filters.js index 41f09a1895f..56a0fde5a91 100644 --- a/app/assets/javascripts/boards/components/modal/filters.js +++ b/app/assets/javascripts/boards/components/modal/filters.js @@ -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(); diff --git a/app/assets/javascripts/boards/filtered_search_boards.js b/app/assets/javascripts/boards/filtered_search_boards.js index 9e857bbfad2..1667dcc9f2e 100644 --- a/app/assets/javascripts/boards/filtered_search_boards.js +++ b/app/assets/javascripts/boards/filtered_search_boards.js @@ -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(); } diff --git a/app/assets/javascripts/boards/index.js b/app/assets/javascripts/boards/index.js index a58afa759fb..64a4f246735 100644 --- a/app/assets/javascripts/boards/index.js +++ b/app/assets/javascripts/boards/index.js @@ -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) { diff --git a/app/assets/javascripts/boards/stores/actions.js b/app/assets/javascripts/boards/stores/actions.js index b4c646b0223..59b97eba9fe 100644 --- a/app/assets/javascripts/boards/stores/actions.js +++ b/app/assets/javascripts/boards/stores/actions.js @@ -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; diff --git a/app/assets/javascripts/boards/stores/boards_store.js b/app/assets/javascripts/boards/stores/boards_store.js index 90ca4851a4c..36702b6ca5f 100644 --- a/app/assets/javascripts/boards/stores/boards_store.js +++ b/app/assets/javascripts/boards/stores/boards_store.js @@ -492,10 +492,6 @@ const boardsStore = { eventHub.$emit('updateTokens'); }, - performSearch() { - eventHub.$emit('performSearch'); - }, - setListDetail(newList) { this.detail.list = newList; }, diff --git a/app/assets/javascripts/boards/stores/mutations.js b/app/assets/javascripts/boards/stores/mutations.js index b58564e358e..8c4e514710f 100644 --- a/app/assets/javascripts/boards/stores/mutations.js +++ b/app/assets/javascripts/boards/stores/mutations.js @@ -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) => { diff --git a/app/assets/javascripts/boards/stores/state.js b/app/assets/javascripts/boards/stores/state.js index a2f026862df..573e98e56e0 100644 --- a/app/assets/javascripts/boards/stores/state.js +++ b/app/assets/javascripts/boards/stores/state.js @@ -14,6 +14,7 @@ export default () => ({ pageInfoByListId: {}, issues: {}, filterParams: {}, + boardConfig: {}, error: undefined, // TODO: remove after ce/ee split of board_content.vue isShowingEpicsSwimlanes: false, diff --git a/app/assets/stylesheets/application.scss b/app/assets/stylesheets/application.scss index 85a7fa1d2b1..9ef1b58ed24 100644 --- a/app/assets/stylesheets/application.scss +++ b/app/assets/stylesheets/application.scss @@ -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'; diff --git a/app/assets/stylesheets/components/milestone_combobox.scss b/app/assets/stylesheets/components/milestone_combobox.scss index e0637088bbb..f73ec4d5998 100644 --- a/app/assets/stylesheets/components/milestone_combobox.scss +++ b/app/assets/stylesheets/components/milestone_combobox.scss @@ -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 { diff --git a/app/assets/stylesheets/fontawesome_custom.scss b/app/assets/stylesheets/fontawesome_custom.scss index 693632c3af1..b9bb3edaaab 100644 --- a/app/assets/stylesheets/fontawesome_custom.scss +++ b/app/assets/stylesheets/fontawesome_custom.scss @@ -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'; + } } diff --git a/app/assets/stylesheets/framework/dropdowns.scss b/app/assets/stylesheets/framework/dropdowns.scss index ad26766cdfa..e2335c184b0 100644 --- a/app/assets/stylesheets/framework/dropdowns.scss +++ b/app/assets/stylesheets/framework/dropdowns.scss @@ -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; } } } diff --git a/app/assets/stylesheets/framework/typography.scss b/app/assets/stylesheets/framework/typography.scss index 8ba1158ffa2..1a568bb41a5 100644 --- a/app/assets/stylesheets/framework/typography.scss +++ b/app/assets/stylesheets/framework/typography.scss @@ -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 { diff --git a/app/assets/stylesheets/lazy_bundles/select2_overrides.scss b/app/assets/stylesheets/lazy_bundles/select2_overrides.scss index 6c51c4b0ec3..b148cc8f0e7 100644 --- a/app/assets/stylesheets/lazy_bundles/select2_overrides.scss +++ b/app/assets/stylesheets/lazy_bundles/select2_overrides.scss @@ -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 { diff --git a/app/controllers/projects/issues_controller.rb b/app/controllers/projects/issues_controller.rb index 552905ca522..3a0e40f9745 100644 --- a/app/controllers/projects/issues_controller.rb +++ b/app/controllers/projects/issues_controller.rb @@ -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) diff --git a/app/helpers/icons_helper.rb b/app/helpers/icons_helper.rb index 07f471cd7bd..096a3f2269b 100644 --- a/app/helpers/icons_helper.rb +++ b/app/helpers/icons_helper.rb @@ -4,7 +4,6 @@ require 'json' module IconsHelper extend self - include FontAwesome::Rails::IconHelper DEFAULT_ICON_SIZE = 16 diff --git a/app/models/concerns/triggerable_hooks.rb b/app/models/concerns/triggerable_hooks.rb index 325a5531926..8b165cef0db 100644 --- a/app/models/concerns/triggerable_hooks.rb +++ b/app/models/concerns/triggerable_hooks.rb @@ -21,8 +21,6 @@ module TriggerableHooks extend ActiveSupport::Concern class_methods do - attr_reader :triggerable_hooks - attr_reader :triggers def hooks_for(trigger) diff --git a/app/presenters/gitlab/whats_new/item_presenter.rb b/app/presenters/gitlab/whats_new/item_presenter.rb index 26a5b9aab02..9f66e19ade0 100644 --- a/app/presenters/gitlab/whats_new/item_presenter.rb +++ b/app/presenters/gitlab/whats_new/item_presenter.rb @@ -4,7 +4,7 @@ module Gitlab module WhatsNew class ItemPresenter DICTIONARY = { - free: 'Free', + core: 'Free', starter: 'Bronze', premium: 'Silver', ultimate: 'Gold' diff --git a/changelogs/unreleased/mw-wiki-page-specific-css.yml b/changelogs/unreleased/mw-wiki-page-specific-css.yml new file mode 100644 index 00000000000..4c9100ac17d --- /dev/null +++ b/changelogs/unreleased/mw-wiki-page-specific-css.yml @@ -0,0 +1,5 @@ +--- +title: Replace wiki fontawesome icons with emojis +merge_request: 49097 +author: +type: other diff --git a/changelogs/unreleased/remove_dast_unlicensed_290958.yml b/changelogs/unreleased/remove_dast_unlicensed_290958.yml new file mode 100644 index 00000000000..ab3a62bc1d8 --- /dev/null +++ b/changelogs/unreleased/remove_dast_unlicensed_290958.yml @@ -0,0 +1,5 @@ +--- +title: Remove dast_unlicensed job +merge_request: 50129 +author: +type: changed diff --git a/config/application.rb b/config/application.rb index 003e8a5ced7..178a5c1d3dd 100644 --- a/config/application.rb +++ b/config/application.rb @@ -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" diff --git a/data/whats_new/202008180001_12_10.yml b/data/whats_new/202008180001_12_10.yml index 6ffe58e0a62..f3a2467c91b 100644 --- a/data/whats_new/202008180001_12_10.yml +++ b/data/whats_new/202008180001_12_10.yml @@ -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 diff --git a/data/whats_new/202008180002_13_0.yml b/data/whats_new/202008180002_13_0.yml index c2f86d1ec51..b8363adb8f4 100644 --- a/data/whats_new/202008180002_13_0.yml +++ b/data/whats_new/202008180002_13_0.yml @@ -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 diff --git a/data/whats_new/202008180003_13_01.yml b/data/whats_new/202008180003_13_01.yml index d8bea8ece92..ff2dc0322ba 100644 --- a/data/whats_new/202008180003_13_01.yml +++ b/data/whats_new/202008180003_13_01.yml @@ -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 diff --git a/data/whats_new/202008210001_13_02.yml b/data/whats_new/202008210001_13_02.yml index a9821329cd1..9048e15aa26 100644 --- a/data/whats_new/202008210001_13_02.yml +++ b/data/whats_new/202008210001_13_02.yml @@ -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 diff --git a/data/whats_new/202009150001_13_03.yml b/data/whats_new/202009150001_13_03.yml index 662f6b7e97b..92b4e144543 100644 --- a/data/whats_new/202009150001_13_03.yml +++ b/data/whats_new/202009150001_13_03.yml @@ -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 diff --git a/data/whats_new/202009300001_13_04.yml b/data/whats_new/202009300001_13_04.yml index c4457303479..0c5642152ae 100644 --- a/data/whats_new/202009300001_13_04.yml +++ b/data/whats_new/202009300001_13_04.yml @@ -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 diff --git a/data/whats_new/202010230001_13_05.yml b/data/whats_new/202010230001_13_05.yml index 4c80af05359..6a36e27d2ee 100644 --- a/data/whats_new/202010230001_13_05.yml +++ b/data/whats_new/202010230001_13_05.yml @@ -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 diff --git a/data/whats_new/202011230001_13_06.yml b/data/whats_new/202011230001_13_06.yml index d4dd958192f..94d26f5e217 100644 --- a/data/whats_new/202011230001_13_06.yml +++ b/data/whats_new/202011230001_13_06.yml @@ -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 diff --git a/doc/.vale/gitlab/AlertBoxStyle.yml b/doc/.vale/gitlab/AlertBoxStyle.yml new file mode 100644 index 00000000000..bdf66236ef2 --- /dev/null +++ b/doc/.vale/gitlab/AlertBoxStyle.yml @@ -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 diff --git a/doc/administration/file_hooks.md b/doc/administration/file_hooks.md index e8ef9d5c5e9..5de2e4aec3f 100644 --- a/doc/administration/file_hooks.md +++ b/doc/administration/file_hooks.md @@ -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 diff --git a/doc/administration/geo/index.md b/doc/administration/geo/index.md index fca33434f11..334f05ef3ce 100644 --- a/doc/administration/geo/index.md +++ b/doc/administration/geo/index.md @@ -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). diff --git a/doc/administration/geo/replication/troubleshooting.md b/doc/administration/geo/replication/troubleshooting.md index 580c6696a3a..2c0160ed02a 100644 --- a/doc/administration/geo/replication/troubleshooting.md +++ b/doc/administration/geo/replication/troubleshooting.md @@ -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: diff --git a/doc/administration/gitaly/index.md b/doc/administration/gitaly/index.md index a7735caa428..e0b0d52fe3f 100644 --- a/doc/administration/gitaly/index.md +++ b/doc/administration/gitaly/index.md @@ -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. diff --git a/doc/administration/gitaly/praefect.md b/doc/administration/gitaly/praefect.md index 209744cc66a..446edb1b60c 100644 --- a/doc/administration/gitaly/praefect.md +++ b/doc/administration/gitaly/praefect.md @@ -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 -repository -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 ] @@ -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! ``` diff --git a/doc/administration/operations/fast_ssh_key_lookup.md b/doc/administration/operations/fast_ssh_key_lookup.md index 55852ebf11a..b93af074795 100644 --- a/doc/administration/operations/fast_ssh_key_lookup.md +++ b/doc/administration/operations/fast_ssh_key_lookup.md @@ -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 diff --git a/doc/administration/operations/moving_repositories.md b/doc/administration/operations/moving_repositories.md index ac1ce851b6a..7cc15f9cea4 100644 --- a/doc/administration/operations/moving_repositories.md +++ b/doc/administration/operations/moving_repositories.md @@ -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`. diff --git a/doc/administration/operations/ssh_certificates.md b/doc/administration/operations/ssh_certificates.md index 6671e9a9d54..c0525cf6258 100644 --- a/doc/administration/operations/ssh_certificates.md +++ b/doc/administration/operations/ssh_certificates.md @@ -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) diff --git a/doc/administration/repository_storage_paths.md b/doc/administration/repository_storage_paths.md index fcc00d3eace..090f95eca12 100644 --- a/doc/administration/repository_storage_paths.md +++ b/doc/administration/repository_storage_paths.md @@ -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** diff --git a/doc/administration/server_hooks.md b/doc/administration/server_hooks.md index ce8c25ec28a..645d3bc4e9f 100644 --- a/doc/administration/server_hooks.md +++ b/doc/administration/server_hooks.md @@ -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: +`.d` must be either `pre-receive.d`, `post-receive.d`, or `update.d` to work properly. +Any other names are ignored. -- `.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 `.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 `.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 diff --git a/doc/api/services.md b/doc/api/services.md index 9968901d6f5..68485d23557 100644 --- a/doc/api/services.md +++ b/doc/api/services.md @@ -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: . +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: . ```plaintext PUT /projects/:id/services/irker diff --git a/doc/ci/ci_cd_for_external_repos/bitbucket_integration.md b/doc/ci/ci_cd_for_external_repos/bitbucket_integration.md index 6d564010aae..a466214374b 100644 --- a/doc/ci/ci_cd_for_external_repos/bitbucket_integration.md +++ b/doc/ci/ci_cd_for_external_repos/bitbucket_integration.md @@ -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. diff --git a/doc/development/code_intelligence/index.md b/doc/development/code_intelligence/index.md index f66878045d3..c5673f6eee2 100644 --- a/doc/development/code_intelligence/index.md +++ b/doc/development/code_intelligence/index.md @@ -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. diff --git a/doc/development/fe_guide/performance.md b/doc/development/fe_guide/performance.md index 1d983dd8683..7825c89b7cf 100644 --- a/doc/development/fe_guide/performance.md +++ b/doc/development/fe_guide/performance.md @@ -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 diff --git a/doc/development/gitaly.md b/doc/development/gitaly.md index 3d1568c7f49..57a4e24679c 100644 --- a/doc/development/gitaly.md +++ b/doc/development/gitaly.md @@ -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. diff --git a/doc/development/integrations/secure.md b/doc/development/integrations/secure.md index 234ca5105d4..fb9d894d203 100644 --- a/doc/development/integrations/secure.md +++ b/doc/development/integrations/secure.md @@ -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 diff --git a/doc/development/integrations/secure_partner_integration.md b/doc/development/integrations/secure_partner_integration.md index c43eb2b4570..80f632639ca 100644 --- a/doc/development/integrations/secure_partner_integration.md +++ b/doc/development/integrations/secure_partner_integration.md @@ -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. diff --git a/doc/development/lfs.md b/doc/development/lfs.md index 34ad09ad732..9df1f659654 100644 --- a/doc/development/lfs.md +++ b/doc/development/lfs.md @@ -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) diff --git a/doc/development/testing_guide/end_to_end/style_guide.md b/doc/development/testing_guide/end_to_end/style_guide.md index 9e7e70715a0..ac4d26df794 100644 --- a/doc/development/testing_guide/end_to_end/style_guide.md +++ b/doc/development/testing_guide/end_to_end/style_guide.md @@ -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 diff --git a/doc/gitlab-basics/README.md b/doc/gitlab-basics/README.md index 415e103726c..b933cb873c8 100644 --- a/doc/gitlab-basics/README.md +++ b/doc/gitlab-basics/README.md @@ -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). diff --git a/doc/gitlab-basics/start-using-git.md b/doc/gitlab-basics/start-using-git.md index ac8ea6161dd..22b10c32434 100644 --- a/doc/gitlab-basics/start-using-git.md +++ b/doc/gitlab-basics/start-using-git.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 diff --git a/doc/install/installation.md b/doc/install/installation.md index 7bad3c5eb2b..983c7ed577f 100644 --- a/doc/install/installation.md +++ b/doc/install/installation.md @@ -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 diff --git a/doc/integration/README.md b/doc/integration/README.md index a99fbb4dce0..227e2eec53c 100644 --- a/doc/integration/README.md +++ b/doc/integration/README.md @@ -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** diff --git a/doc/integration/external-issue-tracker.md b/doc/integration/external-issue-tracker.md index 215a2a8c21d..b1eb9d0d2fe 100644 --- a/doc/integration/external-issue-tracker.md +++ b/doc/integration/external-issue-tracker.md @@ -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 diff --git a/doc/integration/jenkins.md b/doc/integration/jenkins.md index 94195ec87a0..7be2a6efd71 100644 --- a/doc/integration/jenkins.md +++ b/doc/integration/jenkins.md @@ -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. diff --git a/doc/integration/oauth_provider.md b/doc/integration/oauth_provider.md index 6e26aa947da..82cb409c560 100644 --- a/doc/integration/oauth_provider.md +++ b/doc/integration/oauth_provider.md @@ -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. diff --git a/doc/integration/openid_connect_provider.md b/doc/integration/openid_connect_provider.md index 0287bd4bcbd..5bf079df800 100644 --- a/doc/integration/openid_connect_provider.md +++ b/doc/integration/openid_connect_provider.md @@ -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. diff --git a/doc/integration/shibboleth.md b/doc/integration/shibboleth.md index 4b085af14a1..e811cac4f0b 100644 --- a/doc/integration/shibboleth.md +++ b/doc/integration/shibboleth.md @@ -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. diff --git a/doc/integration/trello_power_up.md b/doc/integration/trello_power_up.md index 7545afcf06f..d30308cea7a 100644 --- a/doc/integration/trello_power_up.md +++ b/doc/integration/trello_power_up.md @@ -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 diff --git a/doc/raketasks/features.md b/doc/raketasks/features.md index f5470f19544..bf67522c256 100644 --- a/doc/raketasks/features.md +++ b/doc/raketasks/features.md @@ -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: diff --git a/doc/topics/git/lfs/migrate_from_git_annex_to_git_lfs.md b/doc/topics/git/lfs/migrate_from_git_annex_to_git_lfs.md index 224dcc797d5..30be9c42f01 100644 --- a/doc/topics/git/lfs/migrate_from_git_annex_to_git_lfs.md +++ b/doc/topics/git/lfs/migrate_from_git_annex_to_git_lfs.md @@ -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 diff --git a/doc/topics/git/numerous_undo_possibilities_in_git/index.md b/doc/topics/git/numerous_undo_possibilities_in_git/index.md index d845cdea23a..8fc2259c83e 100644 --- a/doc/topics/git/numerous_undo_possibilities_in_git/index.md +++ b/doc/topics/git/numerous_undo_possibilities_in_git/index.md @@ -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 diff --git a/doc/topics/gitlab_flow.md b/doc/topics/gitlab_flow.md index 5ad8d402a03..292e35922d6 100644 --- a/doc/topics/gitlab_flow.md +++ b/doc/topics/gitlab_flow.md @@ -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. diff --git a/doc/topics/web_application_firewall/quick_start_guide.md b/doc/topics/web_application_firewall/quick_start_guide.md index a29966cec73..df355ff2413 100644 --- a/doc/topics/web_application_firewall/quick_start_guide.md +++ b/doc/topics/web_application_firewall/quick_start_guide.md @@ -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) diff --git a/doc/update/upgrading_from_source.md b/doc/update/upgrading_from_source.md index 926595a1827..770eade6542 100644 --- a/doc/update/upgrading_from_source.md +++ b/doc/update/upgrading_from_source.md @@ -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`. diff --git a/doc/user/admin_area/settings/account_and_limit_settings.md b/doc/user/admin_area/settings/account_and_limit_settings.md index 9eb15c53b66..bc266216714 100644 --- a/doc/user/admin_area/settings/account_and_limit_settings.md +++ b/doc/user/admin_area/settings/account_and_limit_settings.md @@ -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. diff --git a/doc/user/admin_area/settings/visibility_and_access_controls.md b/doc/user/admin_area/settings/visibility_and_access_controls.md index 85132f2fd57..fe1841e7020 100644 --- a/doc/user/admin_area/settings/visibility_and_access_controls.md +++ b/doc/user/admin_area/settings/visibility_and_access_controls.md @@ -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 diff --git a/doc/user/application_security/sast/index.md b/doc/user/application_security/sast/index.md index a952c045bb1..fb3bc256e11 100644 --- a/doc/user/application_security/sast/index.md +++ b/doc/user/application_security/sast/index.md @@ -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. diff --git a/doc/user/application_security/secret_detection/index.md b/doc/user/application_security/secret_detection/index.md index 19be55c0d77..8f57e2c5535 100644 --- a/doc/user/application_security/secret_detection/index.md +++ b/doc/user/application_security/secret_detection/index.md @@ -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: diff --git a/doc/user/asciidoc.md b/doc/user/asciidoc.md index 67048211e26..546746af535 100644 --- a/doc/user/asciidoc.md +++ b/doc/user/asciidoc.md @@ -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 diff --git a/doc/user/group/value_stream_analytics/index.md b/doc/user/group/value_stream_analytics/index.md index a2c7429ef1a..0f9afdef995 100644 --- a/doc/user/group/value_stream_analytics/index.md +++ b/doc/user/group/value_stream_analytics/index.md @@ -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 diff --git a/doc/user/markdown.md b/doc/user/markdown.md index 15bb77efa17..d0a032a24e5 100644 --- a/doc/user/markdown.md +++ b/doc/user/markdown.md @@ -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: ``` diff --git a/doc/user/packages/container_registry/index.md b/doc/user/packages/container_registry/index.md index 7bef737aeed..4e8d105adfa 100644 --- a/doc/user/packages/container_registry/index.md +++ b/doc/user/packages/container_registry/index.md @@ -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. diff --git a/doc/user/packages/dependency_proxy/index.md b/doc/user/packages/dependency_proxy/index.md index 42729776fe1..4b70769892c 100644 --- a/doc/user/packages/dependency_proxy/index.md +++ b/doc/user/packages/dependency_proxy/index.md @@ -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. + +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 diff --git a/doc/user/packages/nuget_repository/index.md b/doc/user/packages/nuget_repository/index.md index 76376280090..bdf50ecef0b 100644 --- a/doc/user/packages/nuget_repository/index.md +++ b/doc/user/packages/nuget_repository/index.md @@ -181,7 +181,7 @@ nuget push -Source 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: diff --git a/doc/user/project/index.md b/doc/user/project/index.md index 80d55386a4e..e3079c3731d 100644 --- a/doc/user/project/index.md +++ b/doc/user/project/index.md @@ -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 diff --git a/doc/user/project/integrations/gitlab_slack_application.md b/doc/user/project/integrations/gitlab_slack_application.md index 9fdcd5d8857..8344baebd82 100644 --- a/doc/user/project/integrations/gitlab_slack_application.md +++ b/doc/user/project/integrations/gitlab_slack_application.md @@ -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). diff --git a/doc/user/project/integrations/jira.md b/doc/user/project/integrations/jira.md index 3cf655fbc10..11c5e27ecd2 100644 --- a/doc/user/project/integrations/jira.md +++ b/doc/user/project/integrations/jira.md @@ -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)** diff --git a/doc/user/project/integrations/jira_integrations.md b/doc/user/project/integrations/jira_integrations.md index 8cf8b86bafb..f15a5ee4429 100644 --- a/doc/user/project/integrations/jira_integrations.md +++ b/doc/user/project/integrations/jira_integrations.md @@ -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 diff --git a/doc/user/project/integrations/slack.md b/doc/user/project/integrations/slack.md index 94b11663374..9e9f5b8297f 100644 --- a/doc/user/project/integrations/slack.md +++ b/doc/user/project/integrations/slack.md @@ -110,7 +110,7 @@ result = Net::HTTP.get(URI('https://'));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 diff --git a/doc/user/project/integrations/webhooks.md b/doc/user/project/integrations/webhooks.md index 2ab7067713d..d8b51e8b777 100644 --- a/doc/user/project/integrations/webhooks.md +++ b/doc/user/project/integrations/webhooks.md @@ -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. diff --git a/doc/user/project/issues/design_management.md b/doc/user/project/issues/design_management.md index ba011f52749..3739070be01 100644 --- a/doc/user/project/issues/design_management.md +++ b/doc/user/project/issues/design_management.md @@ -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 Control + Command + Shift + 3, and then paste it as a design. diff --git a/doc/user/project/merge_requests/getting_started.md b/doc/user/project/merge_requests/getting_started.md index b4abac7ebba..530b75d45bf 100644 --- a/doc/user/project/merge_requests/getting_started.md +++ b/doc/user/project/merge_requests/getting_started.md @@ -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. diff --git a/doc/user/project/merge_requests/reviewing_and_managing_merge_requests.md b/doc/user/project/merge_requests/reviewing_and_managing_merge_requests.md index 51a84f515be..e2d6ba9ea1c 100644 --- a/doc/user/project/merge_requests/reviewing_and_managing_merge_requests.md +++ b/doc/user/project/merge_requests/reviewing_and_managing_merge_requests.md @@ -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. diff --git a/doc/user/project/protected_branches.md b/doc/user/project/protected_branches.md index 8a7678b6864..5754a3b7a9d 100644 --- a/doc/user/project/protected_branches.md +++ b/doc/user/project/protected_branches.md @@ -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 diff --git a/doc/user/project/repository/index.md b/doc/user/project/repository/index.md index 14bdf437bb0..e1d84baec4d 100644 --- a/doc/user/project/repository/index.md +++ b/doc/user/project/repository/index.md @@ -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). diff --git a/doc/user/project/repository/reducing_the_repo_size_using_git.md b/doc/user/project/repository/reducing_the_repo_size_using_git.md index 2092ff07d23..fb798738160 100644 --- a/doc/user/project/repository/reducing_the_repo_size_using_git.md +++ b/doc/user/project/repository/reducing_the_repo_size_using_git.md @@ -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! diff --git a/doc/user/project/repository/web_editor.md b/doc/user/project/repository/web_editor.md index 9f506b89415..24bfeee5e7f 100644 --- a/doc/user/project/repository/web_editor.md +++ b/doc/user/project/repository/web_editor.md @@ -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 diff --git a/doc/user/project/static_site_editor/index.md b/doc/user/project/static_site_editor/index.md index 8523744a280..07f122a7828 100644 --- a/doc/user/project/static_site_editor/index.md +++ b/doc/user/project/static_site_editor/index.md @@ -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 diff --git a/doc/user/project/wiki/index.md b/doc/user/project/wiki/index.md index 64ee84128ec..7802f2ba95e 100644 --- a/doc/user/project/wiki/index.md +++ b/doc/user/project/wiki/index.md @@ -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 diff --git a/doc/user/usage_quotas.md b/doc/user/usage_quotas.md index a6047dc47b3..5f637c8d5cb 100644 --- a/doc/user/usage_quotas.md +++ b/doc/user/usage_quotas.md @@ -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: diff --git a/lib/gitlab/ci/templates/Security/DAST.gitlab-ci.yml b/lib/gitlab/ci/templates/Security/DAST.gitlab-ci.yml index 98f85c0ce1b..7abecfb7e49 100644 --- a/lib/gitlab/ci/templates/Security/DAST.gitlab-ci.yml +++ b/lib/gitlab/ci/templates/Security/DAST.gitlab-ci.yml @@ -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 diff --git a/lib/gitlab/gon_helper.rb b/lib/gitlab/gon_helper.rb index 7261589473a..362da8ea53e 100644 --- a/lib/gitlab/gon_helper.rb +++ b/lib/gitlab/gon_helper.rb @@ -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 diff --git a/spec/frontend/boards/stores/actions_spec.js b/spec/frontend/boards/stores/actions_spec.js index 80a2881ad25..0cae6456887 100644 --- a/spec/frontend/boards/stores/actions_spec.js +++ b/spec/frontend/boards/stores/actions_spec.js @@ -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 = { diff --git a/spec/frontend/boards/stores/mutations_spec.js b/spec/frontend/boards/stores/mutations_spec.js index f767c0d81f1..d93119ede3d 100644 --- a/spec/frontend/boards/stores/mutations_spec.js +++ b/spec/frontend/boards/stores/mutations_spec.js @@ -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); }); }); diff --git a/spec/presenters/gitlab/whats_new/item_presenter_spec.rb b/spec/presenters/gitlab/whats_new/item_presenter_spec.rb index b7b711e04c7..9b04741aa60 100644 --- a/spec/presenters/gitlab/whats_new/item_presenter_spec.rb +++ b/spec/presenters/gitlab/whats_new/item_presenter_spec.rb @@ -4,7 +4,7 @@ require 'spec_helper' RSpec.describe Gitlab::WhatsNew::ItemPresenter do let(:present) { Gitlab::WhatsNew::ItemPresenter.present(item) } - let(:item) { { "packages" => %w(Premium Ultimate) } } + let(:item) { { "packages" => %w(Core Starter Premium Ultimate) } } let(:gitlab_com) { true } before do @@ -14,7 +14,7 @@ RSpec.describe Gitlab::WhatsNew::ItemPresenter do describe '.present' do context 'when on Gitlab.com' do it 'transforms package names to gitlab.com friendly package names' do - expect(present).to eq({ "packages" => %w(Silver Gold) }) + expect(present).to eq({ "packages" => %w(Free Bronze Silver Gold) }) end end @@ -22,7 +22,7 @@ RSpec.describe Gitlab::WhatsNew::ItemPresenter do let(:gitlab_com) { false } it 'does not transform package names' do - expect(present).to eq({ "packages" => %w(Premium Ultimate) }) + expect(present).to eq({ "packages" => %w(Core Starter Premium Ultimate) }) end end end