Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2021-06-08 18:10:23 +00:00
parent 0ebbf19f2d
commit 8a03b5424b
230 changed files with 1705 additions and 11575 deletions

View File

@ -112,7 +112,3 @@ overrides:
import/no-nodejs-modules: off import/no-nodejs-modules: off
filenames/match-regex: off filenames/match-regex: off
no-console: off no-console: off
- files:
- '*.stories.js'
rules:
filenames/match-regex: off

View File

@ -344,18 +344,3 @@ startup-css-check as-if-foss:
needs: needs:
- job: "compile-test-assets as-if-foss" - job: "compile-test-assets as-if-foss"
- job: "rspec frontend_fixture as-if-foss" - job: "rspec frontend_fixture as-if-foss"
compile-storybook:
extends:
- .compile-assets-base
script:
- source scripts/utils.sh
- cd storybook/
- run_timed_command "retry yarn install --frozen-lockfile"
- yarn build
artifacts:
name: storybook
expire_in: 31d
when: always
paths:
- storybook/public

View File

@ -159,7 +159,7 @@
- *assets-cache-push - *assets-cache-push
.use-pg11: .use-pg11:
image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.2.patched-golang-1.14-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36" image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.2.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36"
services: services:
- name: postgres:11.6 - name: postgres:11.6
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
@ -168,7 +168,7 @@
POSTGRES_HOST_AUTH_METHOD: trust POSTGRES_HOST_AUTH_METHOD: trust
.use-pg12: .use-pg12:
image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.2.patched-golang-1.14-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36" image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.2.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36"
services: services:
- name: postgres:12 - name: postgres:12
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
@ -177,7 +177,7 @@
POSTGRES_HOST_AUTH_METHOD: trust POSTGRES_HOST_AUTH_METHOD: trust
.use-pg11-ee: .use-pg11-ee:
image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.2.patched-golang-1.14-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36" image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.2.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-11-graphicsmagick-1.3.36"
services: services:
- name: postgres:11.6 - name: postgres:11.6
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
@ -188,7 +188,7 @@
POSTGRES_HOST_AUTH_METHOD: trust POSTGRES_HOST_AUTH_METHOD: trust
.use-pg12-ee: .use-pg12-ee:
image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.2.patched-golang-1.14-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36" image: "registry.gitlab.com/gitlab-org/gitlab-build-images:ruby-2.7.2.patched-golang-1.16-git-2.31-lfs-2.9-chrome-89-node-14.15-yarn-1.22-postgresql-12-graphicsmagick-1.3.36"
services: services:
- name: postgres:12 - name: postgres:12
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"] command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]

View File

@ -8,14 +8,12 @@ pages:
- coverage-frontend - coverage-frontend
- karma - karma
- compile-production-assets - compile-production-assets
- compile-storybook
script: script:
- mv public/ .public/ - mv public/ .public/
- mkdir public/ - mkdir public/
- mv coverage/ public/coverage-ruby/ || true - mv coverage/ public/coverage-ruby/ || true
- mv coverage-frontend/ public/coverage-frontend/ || true - mv coverage-frontend/ public/coverage-frontend/ || true
- mv coverage-javascript/ public/coverage-javascript/ || true - mv coverage-javascript/ public/coverage-javascript/ || true
- mv storybook/public public/storybook || true
- cp .public/assets/application-*.css public/application.css || true - cp .public/assets/application-*.css public/application.css || true
- cp .public/assets/application-*.css.gz public/application.css.gz || true - cp .public/assets/application-*.css.gz public/application.css.gz || true
artifacts: artifacts:

View File

@ -1 +1 @@
df2eb006d241b399b8b6b877afab97713bb5c36a 22f7db01953debe8e7c1c46ff2b1ffb5a143c566

View File

@ -17,7 +17,11 @@ export default {
}; };
</script> </script>
<template> <template>
<div class="md-area" :class="{ 'is-focused': contentEditor.tiptapEditor.isFocused }"> <div
data-testid="content-editor"
class="md-area"
:class="{ 'is-focused': contentEditor.tiptapEditor.isFocused }"
>
<top-toolbar class="gl-mb-4" :content-editor="contentEditor" /> <top-toolbar class="gl-mb-4" :content-editor="contentEditor" />
<tiptap-editor-content class="md" :editor="contentEditor.tiptapEditor" /> <tiptap-editor-content class="md" :editor="contentEditor.tiptapEditor" />
</div> </div>

View File

@ -80,6 +80,15 @@ export default {
:tiptap-editor="contentEditor.tiptapEditor" :tiptap-editor="contentEditor.tiptapEditor"
@execute="trackToolbarControlExecution" @execute="trackToolbarControlExecution"
/> />
<toolbar-button
data-testid="code-block"
content-type="codeBlock"
icon-name="doc-code"
editor-command="toggleCodeBlock"
:label="__('Insert a code block')"
:tiptap-editor="contentEditor.tiptapEditor"
@execute="trackToolbarControlExecution"
/>
<toolbar-button <toolbar-button
data-testid="bullet-list" data-testid="bullet-list"
content-type="bulletList" content-type="bulletList"

View File

@ -1,4 +1,5 @@
import { CodeBlockLowlight } from '@tiptap/extension-code-block-lowlight'; import { CodeBlockLowlight } from '@tiptap/extension-code-block-lowlight';
import * as lowlight from 'lowlight';
import { defaultMarkdownSerializer } from 'prosemirror-markdown/src/to_markdown'; import { defaultMarkdownSerializer } from 'prosemirror-markdown/src/to_markdown';
const extractLanguage = (element) => element.getAttribute('lang'); const extractLanguage = (element) => element.getAttribute('lang');
@ -6,7 +7,14 @@ const extractLanguage = (element) => element.getAttribute('lang');
const ExtendedCodeBlockLowlight = CodeBlockLowlight.extend({ const ExtendedCodeBlockLowlight = CodeBlockLowlight.extend({
addAttributes() { addAttributes() {
return { return {
...this.parent(), language: {
default: null,
parseHTML: (element) => {
return {
language: extractLanguage(element),
};
},
},
/* `params` is the name of the attribute that /* `params` is the name of the attribute that
prosemirror-markdown uses to extract the language prosemirror-markdown uses to extract the language
of a codeblock. of a codeblock.
@ -19,8 +27,16 @@ const ExtendedCodeBlockLowlight = CodeBlockLowlight.extend({
}; };
}, },
}, },
class: {
default: 'code highlight js-syntax-highlight',
},
}; };
}, },
renderHTML({ HTMLAttributes }) {
return ['pre', HTMLAttributes, ['code', {}, 0]];
},
}).configure({
lowlight,
}); });
export const tiptapExtension = ExtendedCodeBlockLowlight; export const tiptapExtension = ExtendedCodeBlockLowlight;

View File

@ -9,6 +9,13 @@ export class ContentEditor {
return this._tiptapEditor; return this._tiptapEditor;
} }
get empty() {
const doc = this.tiptapEditor?.state.doc;
// Makes sure the document has more than one empty paragraph
return doc.childCount === 0 || (doc.childCount === 1 && doc.child(0).childCount === 0);
}
async setSerializedContent(serializedContent) { async setSerializedContent(serializedContent) {
const { _tiptapEditor: editor, _serializer: serializer } = this; const { _tiptapEditor: editor, _serializer: serializer } = this;

View File

@ -14,8 +14,17 @@ import axios from '~/lib/utils/axios_utils';
import csrf from '~/lib/utils/csrf'; import csrf from '~/lib/utils/csrf';
import { setUrlFragment } from '~/lib/utils/url_utility'; import { setUrlFragment } from '~/lib/utils/url_utility';
import { s__, sprintf } from '~/locale'; import { s__, sprintf } from '~/locale';
import Tracking from '~/tracking';
import MarkdownField from '~/vue_shared/components/markdown/field.vue'; import MarkdownField from '~/vue_shared/components/markdown/field.vue';
import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; import {
WIKI_CONTENT_EDITOR_TRACKING_LABEL,
CONTENT_EDITOR_LOADED_ACTION,
SAVED_USING_CONTENT_EDITOR_ACTION,
} from '../constants';
const trackingMixin = Tracking.mixin({
label: WIKI_CONTENT_EDITOR_TRACKING_LABEL,
});
const MARKDOWN_LINK_TEXT = { const MARKDOWN_LINK_TEXT = {
markdown: '[Link Title](page-slug)', markdown: '[Link Title](page-slug)',
@ -104,7 +113,7 @@ export default {
directives: { directives: {
GlModalDirective, GlModalDirective,
}, },
mixins: [glFeatureFlagMixin()], mixins: [trackingMixin],
inject: ['formatOptions', 'pageInfo'], inject: ['formatOptions', 'pageInfo'],
data() { data() {
return { return {
@ -120,6 +129,10 @@ export default {
}; };
}, },
computed: { computed: {
noContent() {
if (this.isContentEditorActive) return this.contentEditor?.empty;
return !this.content;
},
csrfToken() { csrfToken() {
return csrf.token; return csrf.token;
}, },
@ -161,10 +174,10 @@ export default {
return this.format === 'markdown'; return this.format === 'markdown';
}, },
showContentEditorButton() { showContentEditorButton() {
return this.isMarkdownFormat && !this.useContentEditor && this.glFeatures.wikiContentEditor; return this.isMarkdownFormat && !this.useContentEditor;
}, },
disableSubmitButton() { disableSubmitButton() {
return !this.content || !this.title || this.contentEditorRenderFailed; return this.noContent || !this.title || this.contentEditorRenderFailed;
}, },
isContentEditorActive() { isContentEditorActive() {
return this.isMarkdownFormat && this.useContentEditor; return this.isMarkdownFormat && this.useContentEditor;
@ -188,6 +201,8 @@ export default {
handleFormSubmit() { handleFormSubmit() {
if (this.useContentEditor) { if (this.useContentEditor) {
this.content = this.contentEditor.getSerializedContent(); this.content = this.contentEditor.getSerializedContent();
this.trackFormSubmit();
} }
this.isDirty = false; this.isDirty = false;
@ -236,6 +251,8 @@ export default {
try { try {
await this.contentEditor.setSerializedContent(this.content); await this.contentEditor.setSerializedContent(this.content);
this.isContentEditorLoading = false; this.isContentEditorLoading = false;
this.trackContentEditorLoaded();
} catch (e) { } catch (e) {
this.contentEditorRenderFailed = true; this.contentEditorRenderFailed = true;
} }
@ -258,6 +275,16 @@ export default {
this.$refs.confirmSwitchToOldEditorModal.show(); this.$refs.confirmSwitchToOldEditorModal.show();
} }
}, },
async trackContentEditorLoaded() {
await this.track(CONTENT_EDITOR_LOADED_ACTION);
},
async trackFormSubmit() {
if (this.isContentEditorActive) {
await this.track(SAVED_USING_CONTENT_EDITOR_ACTION);
}
},
}, },
}; };
</script> </script>

View File

@ -0,0 +1,4 @@
export const WIKI_CONTENT_EDITOR_TRACKING_LABEL = 'wiki_content_editor';
export const CONTENT_EDITOR_LOADED_ACTION = 'content_editor_loaded';
export const SAVED_USING_CONTENT_EDITOR_ACTION = 'saved_using_content_editor';

View File

@ -1,12 +1,12 @@
<script> <script>
import { GlAlert, GlLoadingIcon } from '@gitlab/ui'; import { GlAlert, GlLoadingIcon } from '@gitlab/ui';
import getPipelineDetails from 'shared_queries/pipelines/get_pipeline_details.query.graphql'; import getPipelineDetails from 'shared_queries/pipelines/get_pipeline_details.query.graphql';
import getUserCallouts from '~/graphql_shared/queries/get_user_callouts.query.graphql';
import { __ } from '~/locale'; import { __ } from '~/locale';
import LocalStorageSync from '~/vue_shared/components/local_storage_sync.vue'; import LocalStorageSync from '~/vue_shared/components/local_storage_sync.vue';
import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
import { DEFAULT, DRAW_FAILURE, LOAD_FAILURE } from '../../constants'; import { DEFAULT, DRAW_FAILURE, LOAD_FAILURE } from '../../constants';
import DismissPipelineGraphCallout from '../../graphql/mutations/dismiss_pipeline_notification.graphql'; import DismissPipelineGraphCallout from '../../graphql/mutations/dismiss_pipeline_notification.graphql';
import getUserCallouts from '../../graphql/queries/get_user_callouts.query.graphql';
import { reportToSentry, reportMessageToSentry } from '../../utils'; import { reportToSentry, reportMessageToSentry } from '../../utils';
import { listByLayers } from '../parsing_utils'; import { listByLayers } from '../parsing_utils';
import { IID_FAILURE, LAYER_VIEW, STAGE_VIEW, VIEW_TYPE_KEY } from './constants'; import { IID_FAILURE, LAYER_VIEW, STAGE_VIEW, VIEW_TYPE_KEY } from './constants';

View File

@ -141,6 +141,9 @@ export default function setupVueRepositoryList() {
href: `${historyLink}/${ href: `${historyLink}/${
this.$route.params.path ? escapeFileUrl(this.$route.params.path) : '' this.$route.params.path ? escapeFileUrl(this.$route.params.path) : ''
}`, }`,
// Ideally passing this class to `props` should work
// But it doesn't work here. :(
class: 'btn btn-default btn-md gl-button ml-sm-0',
}, },
}, },
[__('History')], [__('History')],

View File

@ -1,23 +0,0 @@
/* eslint-disable @gitlab/require-i18n-strings */
import TodoButton from './todo_button.vue';
export default {
component: TodoButton,
title: 'vue_shared/components/todo_button',
};
const Template = (args, { argTypes }) => ({
components: { TodoButton },
props: Object.keys(argTypes),
template: '<todo-button v-bind="$props" v-on="$props" />',
});
export const Default = Template.bind({});
Default.argTypes = {
isTodo: {
description: 'True if to-do is unresolved (i.e. not "done")',
control: { type: 'boolean' },
},
click: { action: 'clicked' },
};

View File

@ -0,0 +1,175 @@
<script>
import dismissUserCalloutMutation from '~/graphql_shared/mutations/dismiss_user_callout.mutation.graphql';
import getUserCalloutsQuery from '~/graphql_shared/queries/get_user_callouts.query.graphql';
/**
* A renderless component for querying/dismissing UserCallouts via GraphQL.
*
* Simplest example usage:
*
* <user-callout-dismisser feature-name="my_user_callout">
* <template #default="{ dismiss, shouldShowCallout }">
* <my-callout-component
* v-if="shouldShowCallout"
* @close="dismiss"
* />
* </template>
* </user-callout-dismisser>
*
* If you don't want the asynchronous query to run when the component is
* created, and know by some other means whether the user callout has already
* been dismissed, you can use the `skipQuery` prop, and a regular `v-if`
* directive:
*
* <user-callout-dismisser
* v-if="userCalloutIsNotDismissed"
* feature-name="my_user_callout"
* skip-query
* >
* <template #default="{ dismiss, shouldShowCallout }">
* <my-callout-component
* v-if="shouldShowCallout"
* @close="dismiss"
* />
* </template>
* </user-callout-dismisser>
*
* The component exposes various scoped slot props on the default slot,
* allowing for granular rendering behaviors based on the state of the initial
* query and user-initiated mutation:
*
* - dismiss: Function
* - Triggers mutation to dismiss the user callout.
* - isAnonUser: boolean
* - Whether the current user is anonymous or not (i.e., whether or not
* they're logged in).
* - isDismissed: boolean
* - Whether the given user callout has been dismissed or not.
* - isLoadingMutation: boolean
* - Whether the mutation is loading.
* - isLoadingQuery: boolean
* - Whether the initial query is loading.
* - mutationError: string[] | null
* - The mutation's errors, if any; otherwise `null`.
* - queryError: Error | null
* - The query's error, if any; otherwise `null`.
* - shouldShowCallout: boolean
* - A combination of the above which should cover 95% of use cases: `true`
* if the query has loaded without error, and the user is logged in, and
* the callout has not been dismissed yet; `false` otherwise.
*/
export default {
name: 'UserCalloutDismisser',
props: {
featureName: {
type: String,
required: true,
},
skipQuery: {
type: Boolean,
required: false,
default: false,
},
},
data() {
return {
currentUser: null,
isDismissedLocal: false,
isLoadingMutation: false,
mutationError: null,
queryError: null,
};
},
apollo: {
currentUser: {
query: getUserCalloutsQuery,
update(data) {
return data?.currentUser;
},
error(err) {
this.queryError = err;
},
skip() {
return this.skipQuery;
},
},
},
computed: {
featureNameEnumValue() {
return this.featureName.toUpperCase();
},
isLoadingQuery() {
return this.$apollo.queries.currentUser.loading;
},
isAnonUser() {
return !(this.skipQuery || this.queryError || this.isLoadingQuery || this.currentUser);
},
isDismissedRemote() {
const callouts = this.currentUser?.callouts?.nodes ?? [];
return callouts.some(({ featureName }) => featureName === this.featureNameEnumValue);
},
isDismissed() {
return this.isDismissedLocal || this.isDismissedRemote;
},
slotProps() {
const {
dismiss,
isAnonUser,
isDismissed,
isLoadingMutation,
isLoadingQuery,
mutationError,
queryError,
shouldShowCallout,
} = this;
return {
dismiss,
isAnonUser,
isDismissed,
isLoadingMutation,
isLoadingQuery,
mutationError,
queryError,
shouldShowCallout,
};
},
shouldShowCallout() {
return !(this.isLoadingQuery || this.isDismissed || this.queryError || this.isAnonUser);
},
},
methods: {
async dismiss() {
this.isLoadingMutation = true;
this.isDismissedLocal = true;
try {
const { data } = await this.$apollo.mutate({
mutation: dismissUserCalloutMutation,
variables: {
input: {
featureName: this.featureName,
},
},
});
const errors = data?.userCalloutCreate?.errors ?? [];
if (errors.length > 0) {
this.onDismissalError(errors);
}
} catch (err) {
this.onDismissalError([err.message]);
} finally {
this.isLoadingMutation = false;
}
},
onDismissalError(errors) {
this.mutationError = errors;
},
},
render() {
return this.$scopedSlots.default(this.slotProps);
},
};
</script>

View File

@ -1,4 +1,5 @@
@import 'mixins_and_variables_and_functions'; @import 'mixins_and_variables_and_functions';
@import 'highlight.js/scss/a11y-light';
.title .edit-wiki-header { .title .edit-wiki-header {
width: 780px; width: 780px;

View File

@ -10,6 +10,10 @@
color: $gl-text-color-secondary; color: $gl-text-color-secondary;
} }
.tree-ref-holder {
margin-right: 15px;
}
@include media-breakpoint-up(sm) { @include media-breakpoint-up(sm) {
display: flex; display: flex;
@ -28,7 +32,6 @@
.tree-ref-holder { .tree-ref-holder {
float: left; float: left;
margin-right: 15px;
} }
.tree-ref-target-holder { .tree-ref-target-holder {
@ -44,8 +47,11 @@
} }
@include media-breakpoint-down(xs) { @include media-breakpoint-down(xs) {
.tree-ref-container {
justify-content: space-between;
}
.repo-breadcrumb { .repo-breadcrumb {
margin-top: 10px;
position: relative; position: relative;
.dropdown-menu { .dropdown-menu {

View File

@ -6,8 +6,4 @@ class Projects::WikisController < Projects::ApplicationController
alias_method :container, :project alias_method :container, :project
feature_category :wiki feature_category :wiki
before_action do
push_frontend_feature_flag(:wiki_content_editor, project, default_enabled: :yaml)
end
end end

View File

@ -11,6 +11,9 @@ class ImportExportUpload < ApplicationRecord
mount_uploader :import_file, ImportExportUploader mount_uploader :import_file, ImportExportUploader
mount_uploader :export_file, ImportExportUploader mount_uploader :export_file, ImportExportUploader
scope :updated_before, ->(date) { where('updated_at < ?', date) }
scope :with_export_file, -> { where.not(export_file: nil) }
def retrieve_upload(_identifier, paths) def retrieve_upload(_identifier, paths)
Upload.find_by(model: self, path: paths) Upload.find_by(model: self, path: paths)
end end

View File

@ -26,7 +26,18 @@ module Pages
end end
def source def source
zip_source || legacy_source return unless deployment&.file
global_id = ::Gitlab::GlobalId.build(deployment, id: deployment.id).to_s
{
type: 'zip',
path: deployment.file.url_or_file_path(expire_at: 1.day.from_now),
global_id: global_id,
sha256: deployment.file_sha256,
file_size: deployment.size,
file_count: deployment.file_count
}
end end
def prefix def prefix
@ -46,32 +57,5 @@ module Pages
project.pages_metadatum.pages_deployment project.pages_metadatum.pages_deployment
end end
end end
def zip_source
return unless deployment&.file
global_id = ::Gitlab::GlobalId.build(deployment, id: deployment.id).to_s
{
type: 'zip',
path: deployment.file.url_or_file_path(expire_at: 1.day.from_now),
global_id: global_id,
sha256: deployment.file_sha256,
file_size: deployment.size,
file_count: deployment.file_count
}
end
# TODO: remove support for legacy storage in 14.3 https://gitlab.com/gitlab-org/gitlab/-/issues/328712
# we support this till 14.3 to allow people to still use legacy storage if something goes very wrong
# on self-hosted installations, and we'll need some time to fix it
def legacy_source
return unless ::Settings.pages.local_store.enabled
{
type: 'file',
path: File.join(project.full_path, 'public/')
}
end
end end
end end

View File

@ -2,6 +2,7 @@
class ImportExportCleanUpService class ImportExportCleanUpService
LAST_MODIFIED_TIME_IN_MINUTES = 1440 LAST_MODIFIED_TIME_IN_MINUTES = 1440
DIR_DEPTH = 5
attr_reader :mmin, :path attr_reader :mmin, :path
@ -27,15 +28,42 @@ class ImportExportCleanUpService
end end
def clean_up_export_files def clean_up_export_files
Gitlab::Popen.popen(%W(find #{path} -not -path #{path} -mmin +#{mmin} -delete)) old_directories do |dir|
end FileUtils.remove_entry(dir)
# rubocop: disable CodeReuse/ActiveRecord logger.info(
def clean_up_export_object_files message: 'Removed Import/Export tmp directory',
ImportExportUpload.where('updated_at < ?', mmin.minutes.ago).each do |upload| dir_path: dir
upload.remove_export_file! )
upload.save!
end end
end end
# rubocop: enable CodeReuse/ActiveRecord
def clean_up_export_object_files
ImportExportUpload.with_export_file.updated_before(mmin.minutes.ago).each do |upload|
upload.remove_export_file!
upload.save!
logger.info(
message: 'Removed Import/Export export_file',
project_id: upload.project_id,
group_id: upload.group_id
)
end
end
def old_directories
IO.popen(directories_cmd) do |find|
find.each_line(chomp: true) do |directory|
yield directory
end
end
end
def directories_cmd
%W(find #{path} -mindepth #{DIR_DEPTH} -maxdepth #{DIR_DEPTH} -type d -not -path #{path} -mmin +#{mmin})
end
def logger
@logger ||= Gitlab::Import::Logger.build
end
end end

View File

@ -7,7 +7,7 @@
- add_page_startup_api_call project_blob_path(@project, tree_join(@ref, readme_path), viewer: "rich", format: "json") - add_page_startup_api_call project_blob_path(@project, tree_join(@ref, readme_path), viewer: "rich", format: "json")
#tree-holder.tree-holder.clearfix #tree-holder.tree-holder.clearfix
.nav-block.gl-display-flex.gl-align-items-center .nav-block.gl-display-flex.gl-xs-flex-direction-column.gl-align-items-stretch
= render 'projects/tree/tree_header', tree: @tree = render 'projects/tree/tree_header', tree: @tree
#js-last-commit #js-last-commit

View File

@ -7,9 +7,11 @@
= cache_if(Feature.enabled?(:cached_mr_title, @project, default_enabled: :yaml), cache_key, expires_in: 1.day) do = cache_if(Feature.enabled?(:cached_mr_title, @project, default_enabled: :yaml), cache_key, expires_in: 1.day) do
- if @merge_request.closed_or_merged_without_fork? - if @merge_request.closed_or_merged_without_fork?
.gl-alert.gl-alert-danger.gl-mb-5 .gl-alert.gl-alert-danger.gl-mb-5
= sprite_icon('error', size: 16, css_class: 'gl-icon gl-alert-icon gl-alert-icon-no-title') .gl-alert-container
.gl-alert-body = sprite_icon('error', size: 16, css_class: 'gl-icon gl-alert-icon gl-alert-icon-no-title')
The source project of this merge request has been removed. .gl-alert-content
.gl-alert-body
The source project of this merge request has been removed.
.detail-page-header.border-bottom-0.pt-0.pb-0 .detail-page-header.border-bottom-0.pt-0.pb-0
.detail-page-header-body .detail-page-header-body

View File

@ -1,21 +1,22 @@
- artifacts_endpoint_placeholder = ':pipeline_artifacts_id' = cache_if(Feature.enabled?(:cached_mr_widget, @merge_request.project), [@merge_request.project, @merge_request, current_user], expires_in: 10.minutes) do
- artifacts_endpoint_placeholder = ':pipeline_artifacts_id'
= javascript_tag do = javascript_tag do
:plain :plain
window.gl = window.gl || {}; window.gl = window.gl || {};
window.gl.mrWidgetData = #{serialize_issuable(@merge_request, serializer: 'widget', issues_links: true)} window.gl.mrWidgetData = #{serialize_issuable(@merge_request, serializer: 'widget', issues_links: true)}
window.gl.mrWidgetData.artifacts_endpoint = '#{downloadable_artifacts_project_pipeline_path(@project, artifacts_endpoint_placeholder, format: :json)}'; window.gl.mrWidgetData.artifacts_endpoint = '#{downloadable_artifacts_project_pipeline_path(@project, artifacts_endpoint_placeholder, format: :json)}';
window.gl.mrWidgetData.artifacts_endpoint_placeholder = '#{artifacts_endpoint_placeholder}'; window.gl.mrWidgetData.artifacts_endpoint_placeholder = '#{artifacts_endpoint_placeholder}';
window.gl.mrWidgetData.squash_before_merge_help_path = '#{help_page_path("user/project/merge_requests/squash_and_merge")}'; window.gl.mrWidgetData.squash_before_merge_help_path = '#{help_page_path("user/project/merge_requests/squash_and_merge")}';
window.gl.mrWidgetData.ci_troubleshooting_docs_path = '#{help_page_path('ci/troubleshooting.md')}'; window.gl.mrWidgetData.ci_troubleshooting_docs_path = '#{help_page_path('ci/troubleshooting.md')}';
window.gl.mrWidgetData.mr_troubleshooting_docs_path = '#{help_page_path('user/project/merge_requests/reviews/index.md', anchor: 'troubleshooting')}'; window.gl.mrWidgetData.mr_troubleshooting_docs_path = '#{help_page_path('user/project/merge_requests/reviews/index.md', anchor: 'troubleshooting')}';
window.gl.mrWidgetData.pipeline_must_succeed_docs_path = '#{help_page_path('user/project/merge_requests/merge_when_pipeline_succeeds.md', anchor: 'only-allow-merge-requests-to-be-merged-if-the-pipeline-succeeds')}'; window.gl.mrWidgetData.pipeline_must_succeed_docs_path = '#{help_page_path('user/project/merge_requests/merge_when_pipeline_succeeds.md', anchor: 'only-allow-merge-requests-to-be-merged-if-the-pipeline-succeeds')}';
window.gl.mrWidgetData.security_approvals_help_page_path = '#{help_page_path('user/application_security/index.md', anchor: 'security-approvals-in-merge-requests')}'; window.gl.mrWidgetData.security_approvals_help_page_path = '#{help_page_path('user/application_security/index.md', anchor: 'security-approvals-in-merge-requests')}';
window.gl.mrWidgetData.license_compliance_docs_path = '#{help_page_path('user/compliance/license_compliance/index.md', anchor: 'policies')}'; window.gl.mrWidgetData.license_compliance_docs_path = '#{help_page_path('user/compliance/license_compliance/index.md', anchor: 'policies')}';
window.gl.mrWidgetData.eligible_approvers_docs_path = '#{help_page_path('user/project/merge_requests/merge_request_approvals', anchor: 'eligible-approvers')}'; window.gl.mrWidgetData.eligible_approvers_docs_path = '#{help_page_path('user/project/merge_requests/merge_request_approvals', anchor: 'eligible-approvers')}';
window.gl.mrWidgetData.approvals_help_path = '#{help_page_path("user/project/merge_requests/merge_request_approvals")}'; window.gl.mrWidgetData.approvals_help_path = '#{help_page_path("user/project/merge_requests/merge_request_approvals")}';
window.gl.mrWidgetData.pipelines_empty_svg_path = '#{image_path('illustrations/pipelines_empty.svg')}'; window.gl.mrWidgetData.pipelines_empty_svg_path = '#{image_path('illustrations/pipelines_empty.svg')}';
window.gl.mrWidgetData.codequality_help_path = '#{help_page_path("user/project/merge_requests/code_quality", anchor: "code-quality-reports")}'; window.gl.mrWidgetData.codequality_help_path = '#{help_page_path("user/project/merge_requests/code_quality", anchor: "code-quality-reports")}';
#js-vue-mr-widget.mr-widget #js-vue-mr-widget.mr-widget

View File

@ -1,4 +1,4 @@
.tree-ref-container .tree-ref-container.gl-display-flex.mb-2.mb-md-0
.tree-ref-holder .tree-ref-holder
= render 'shared/ref_switcher', destination: 'tree', path: @path, show_create: true = render 'shared/ref_switcher', destination: 'tree', path: @path, show_create: true
@ -16,5 +16,5 @@
.project-clone-holder.d-none.d-md-inline-block> .project-clone-holder.d-none.d-md-inline-block>
= render "projects/buttons/clone", dropdown_class: 'dropdown-menu-right' = render "projects/buttons/clone", dropdown_class: 'dropdown-menu-right'
.project-clone-holder.d-block.d-md-none.mt-sm-2.mt-md-0.ml-sm-2> .project-clone-holder.d-block.d-md-none.mt-sm-2.mt-md-0.ml-md-2>
= render "shared/mobile_clone_panel" = render "shared/mobile_clone_panel"

View File

@ -1622,15 +1622,6 @@
:weight: 5 :weight: 5
:idempotent: :idempotent:
:tags: [] :tags: []
- :name: pipeline_processing:pipeline_update
:worker_name: PipelineUpdateWorker
:feature_category: :continuous_integration
:has_external_dependencies:
:urgency: :high
:resource_boundary: :unknown
:weight: 5
:idempotent: true
:tags: []
- :name: pipeline_processing:stage_update - :name: pipeline_processing:stage_update
:worker_name: StageUpdateWorker :worker_name: StageUpdateWorker
:feature_category: :continuous_integration :feature_category: :continuous_integration

View File

@ -13,9 +13,7 @@ class PipelineProcessWorker # rubocop:disable Scalability/IdempotentWorker
data_consistency :delayed, feature_flag: :load_balancing_for_pipeline_process_worker data_consistency :delayed, feature_flag: :load_balancing_for_pipeline_process_worker
# rubocop: disable CodeReuse/ActiveRecord # rubocop: disable CodeReuse/ActiveRecord
# `_build_ids` is deprecated and will be removed in 14.0 def perform(pipeline_id)
# See: https://gitlab.com/gitlab-org/gitlab/-/issues/232806
def perform(pipeline_id, _build_ids = nil)
Ci::Pipeline.find_by(id: pipeline_id).try do |pipeline| Ci::Pipeline.find_by(id: pipeline_id).try do |pipeline|
Ci::ProcessPipelineService Ci::ProcessPipelineService
.new(pipeline) .new(pipeline)

View File

@ -1,19 +0,0 @@
# frozen_string_literal: true
# This worker is deprecated and will be removed in 14.0
# See: https://gitlab.com/gitlab-org/gitlab/-/issues/232806
class PipelineUpdateWorker
include ApplicationWorker
sidekiq_options retry: 3
include PipelineQueue
queue_namespace :pipeline_processing
urgency :high
idempotent!
def perform(_pipeline_id)
# no-op
end
end

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/security/gitlab/-/merge_request
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/301106 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/301106
milestone: '13.9' milestone: '13.9'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: true default_enabled: true

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/10566
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/257849 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/257849
milestone: '11.10' milestone: '11.10'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/16654
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/254938 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/254938
milestone: '12.4' milestone: '12.4'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/14
rollout_issue_url: rollout_issue_url:
milestone: '10.0' milestone: '10.0'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -1,8 +1,8 @@
--- ---
name: wiki_content_editor name: cached_mr_widget
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/57370 introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61584
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/255919 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/330803
group: group::editor
type: development
default_enabled: false
milestone: '13.12' milestone: '13.12'
type: development
group: group::code review
default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/30708
rollout_issue_url: rollout_issue_url:
milestone: '13.0' milestone: '13.0'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: true default_enabled: true

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/7238
rollout_issue_url: rollout_issue_url:
milestone: '11.7' milestone: '11.7'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/39464
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/247103 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/247103
milestone: '13.5' milestone: '13.5'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/39464
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/247103 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/247103
milestone: '13.5' milestone: '13.5'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/security/gitlab/-/merge_request
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/329390 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/329390
milestone: '13.12' milestone: '13.12'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61166
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/326709 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/326709
milestone: '14.0' milestone: '14.0'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/23790
rollout_issue_url: rollout_issue_url:
milestone: '12.9' milestone: '12.9'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: true default_enabled: true

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/5255
rollout_issue_url: rollout_issue_url:
milestone: '10.8' milestone: '10.8'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/59263
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/329197 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/329197
milestone: '13.12' milestone: '13.12'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61581
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/331496 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/331496
milestone: '13.12' milestone: '13.12'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/34160
rollout_issue_url: rollout_issue_url:
milestone: '13.2' milestone: '13.2'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: true default_enabled: true

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/33712
rollout_issue_url: rollout_issue_url:
milestone: '13.2' milestone: '13.2'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: true default_enabled: true

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/41864
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/247486 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/247486
milestone: '13.5' milestone: '13.5'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61152
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/330104 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/330104
milestone: '13.12' milestone: '13.12'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61152
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/330105 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/330105
milestone: '13.12' milestone: '13.12'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/55518
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/323317 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/323317
milestone: '13.10' milestone: '13.10'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/8638
rollout_issue_url: rollout_issue_url:
milestone: '11.6' milestone: '11.6'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: true default_enabled: true

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/32391
rollout_issue_url: rollout_issue_url:
milestone: '13.1' milestone: '13.1'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://dev.gitlab.org/gitlab/gitlabhq/-/merge_requests/3126
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab-foss/-/issues/56018 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab-foss/-/issues/56018
milestone: '12.0' milestone: '12.0'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: true default_enabled: true

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/35878
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/238535 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/238535
milestone: '13.3' milestone: '13.3'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/56353
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/326679 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/326679
milestone: "13.11" milestone: "13.11"
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: true default_enabled: true

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/27
rollout_issue_url: rollout_issue_url:
milestone: '11.10' milestone: '11.10'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/53716
rollout_issue_url: rollout_issue_url:
milestone: '13.9' milestone: '13.9'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/54909
rollout_issue_url: rollout_issue_url:
milestone: '13.10' milestone: '13.10'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/57155
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/327500 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/327500
milestone: '13.11' milestone: '13.11'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61766
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/330960 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/330960
milestone: '13.12' milestone: '13.12'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/57694
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/326477 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/326477
milestone: "13.11" milestone: "13.11"
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: true default_enabled: true

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/62349
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/331695 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/331695
milestone: '14.0' milestone: '14.0'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: true default_enabled: true

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/50922
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/296772 rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/296772
milestone: '13.8' milestone: '13.8'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: true default_enabled: true

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/57045
rollout_issue_url: rollout_issue_url:
milestone: '13.11' milestone: '13.11'
type: development type: development
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/41304
rollout_issue_url: rollout_issue_url:
milestone: '13.4' milestone: '13.4'
type: ops type: ops
group: group::continuous integration group: group::pipeline execution
default_enabled: true default_enabled: true

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/56658
rollout_issue_url: rollout_issue_url:
milestone: "13.12" milestone: "13.12"
type: ops type: ops
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/44409
rollout_issue_url: rollout_issue_url:
milestone: '13.5' milestone: '13.5'
type: ops type: ops
group: group::continuous integration group: group::pipeline execution
default_enabled: false default_enabled: false

View File

@ -23,6 +23,7 @@ exceptions:
- AWS - AWS
- BSD - BSD
- CAS - CAS
- CDN
- CLI - CLI
- CNA - CNA
- CNAME - CNAME
@ -48,10 +49,12 @@ exceptions:
- EOL - EOL
- EXIF - EXIF
- FAQ - FAQ
- FIFO
- FIPS - FIPS
- FOSS - FOSS
- FQDN - FQDN
- FREE - FREE
- FTP
- GCP - GCP
- GDK - GDK
- GDPR - GDPR
@ -61,6 +64,7 @@ exceptions:
- GNU - GNU
- GPG - GPG
- GPL - GPL
- GPU
- GUI - GUI
- HAML - HAML
- HDD - HDD
@ -94,11 +98,13 @@ exceptions:
- MIT - MIT
- MVC - MVC
- NAT - NAT
- NDA
- NFS - NFS
- NGINX - NGINX
- NOTE - NOTE
- NTP - NTP
- ONLY - ONLY
- OSS
- OWASP - OWASP
- PAT - PAT
- PCI-DSS - PCI-DSS
@ -108,8 +114,10 @@ exceptions:
- PGP - PGP
- PHP - PHP
- PNG - PNG
- POSIX
- POST - POST
- PUT - PUT
- RAID
- RAM - RAM
- RDP - RDP
- REST - REST
@ -131,6 +139,7 @@ exceptions:
- SDK - SDK
- SELF - SELF
- SEO - SEO
- SFTP
- SHA - SHA
- SLA - SLA
- SMS - SMS
@ -165,6 +174,7 @@ exceptions:
- UUID - UUID
- VCS - VCS
- VPC - VPC
- VPN
- WIP - WIP
- WSL - WSL
- XML - XML

View File

@ -441,6 +441,7 @@ Pritaly
Priyanka Priyanka
profiler profiler
Prometheus Prometheus
ProseMirror
protobuf protobuf
protobufs protobufs
proxied proxied
@ -642,6 +643,7 @@ timeboxed
timeboxes timeboxes
timeboxing timeboxing
timecop timecop
tiptap
todos todos
tokenizer tokenizer
Tokenizers Tokenizers

View File

@ -79,7 +79,7 @@ adapter.ldap_search(options)
``` ```
For examples of how this is run, For examples of how this is run,
[review the `Adapter` module](https://gitlab.com/gitlab-org/gitlab/blob/master/ee/lib/ee/gitlab/auth/ldap/adapter.rb). [review the `Adapter` module](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/lib/ee/gitlab/auth/ldap/adapter.rb).
### User sign-ins ### User sign-ins

View File

@ -33,7 +33,7 @@ see the [system hooks](../system_hooks/system_hooks.md) documentation.
The file hooks must be placed directly into the `file_hooks` directory, subdirectories The file hooks must be placed directly into the `file_hooks` directory, subdirectories
are ignored. There is an are ignored. There is an
[`example` directory inside `file_hooks`](https://gitlab.com/gitlab-org/gitlab/tree/master/file_hooks/examples) [`example` directory inside `file_hooks`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/file_hooks/examples)
where you can find some basic examples. where you can find some basic examples.
Follow the steps below to set up a custom hook: Follow the steps below to set up a custom hook:

View File

@ -27,7 +27,7 @@ to clone and fetch large repositories, speeding up development.
For a video introduction to Geo, see [Introduction to GitLab Geo - GitLab Features](https://www.youtube.com/watch?v=-HDLxSjEh6w). For a video introduction to Geo, see [Introduction to GitLab Geo - GitLab Features](https://www.youtube.com/watch?v=-HDLxSjEh6w).
To make sure you're using the right version of the documentation, navigate to [the Geo page on GitLab.com](https://gitlab.com/gitlab-org/gitlab/blob/master/doc/administration/geo/index.md) and choose the appropriate release from the **Switch branch/tag** dropdown. For example, [`v13.7.6-ee`](https://gitlab.com/gitlab-org/gitlab/-/blob/v13.7.6-ee/doc/administration/geo/index.md). To make sure you're using the right version of the documentation, navigate to [the Geo page on GitLab.com](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/administration/geo/index.md) and choose the appropriate release from the **Switch branch/tag** dropdown. For example, [`v13.7.6-ee`](https://gitlab.com/gitlab-org/gitlab/-/blob/v13.7.6-ee/doc/administration/geo/index.md).
Geo uses a set of defined terms that is described in the [Geo Glossary](glossary.md), please familiarize yourself with those terms. Geo uses a set of defined terms that is described in the [Geo Glossary](glossary.md), please familiarize yourself with those terms.

View File

@ -20,7 +20,7 @@ in the project's default branch.
In order to change the pattern you need to have access to the server that GitLab In order to change the pattern you need to have access to the server that GitLab
is installed on. is installed on.
The default pattern can be located in [`gitlab.yml.example`](https://gitlab.com/gitlab-org/gitlab/blob/master/config/gitlab.yml.example) The default pattern can be located in [`gitlab.yml.example`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/gitlab.yml.example)
under the "Automatic issue closing" section. under the "Automatic issue closing" section.
NOTE: NOTE:

View File

@ -17,7 +17,7 @@ server.
## Configuration ## Configuration
In the [`gitlab.yml` gravatar section](https://gitlab.com/gitlab-org/gitlab/blob/672bd3902d86b78d730cea809fce312ec49d39d7/config/gitlab.yml.example#L122), set In the [`gitlab.yml` gravatar section](https://gitlab.com/gitlab-org/gitlab/-/blob/672bd3902d86b78d730cea809fce312ec49d39d7/config/gitlab.yml.example#L122), set
the configuration options as follows: the configuration options as follows:
### For HTTP ### For HTTP

View File

@ -789,7 +789,7 @@ Line breaks have been added to the following example line for clarity:
This file logs the information about exceptions being tracked by This file logs the information about exceptions being tracked by
`Gitlab::ErrorTracking`, which provides a standard and consistent way of `Gitlab::ErrorTracking`, which provides a standard and consistent way of
[processing rescued exceptions](https://gitlab.com/gitlab-org/gitlab/blob/master/doc/development/logging.md#exception-handling). This file is stored in: [processing rescued exceptions](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/development/logging.md#exception-handling). This file is stored in:
- `/var/log/gitlab/gitlab-rails/exceptions_json.log` for Omnibus GitLab packages. - `/var/log/gitlab/gitlab-rails/exceptions_json.log` for Omnibus GitLab packages.
- `/home/git/gitlab/log/exceptions_json.log` for installations from source. - `/home/git/gitlab/log/exceptions_json.log` for installations from source.

View File

@ -35,8 +35,8 @@ There are three ways to enable Maintenance Mode as an administrator:
- [**Rails console**](../operations/rails_console.md#starting-a-rails-console-session): - [**Rails console**](../operations/rails_console.md#starting-a-rails-console-session):
```ruby ```ruby
::Gitlab::CurrentSettings.update_attributes!(maintenance_mode: true) ::Gitlab::CurrentSettings.update!(maintenance_mode: true)
::Gitlab::CurrentSettings.update_attributes!(maintenance_mode_message: "New message") ::Gitlab::CurrentSettings.update!(maintenance_mode_message: "New message")
``` ```
## Disable Maintenance Mode ## Disable Maintenance Mode

View File

@ -25,7 +25,7 @@ NOTE:
The instructions below must be modified in accordance with your The instructions below must be modified in accordance with your
configuration settings if you have used the advanced Redis configuration settings if you have used the advanced Redis
settings outlined in settings outlined in
[Configuration Files Documentation](https://gitlab.com/gitlab-org/gitlab/blob/master/config/README.md). [Configuration Files Documentation](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/README.md).
First we define a shell function with the proper Redis connection details. First we define a shell function with the proper Redis connection details.

View File

@ -18,8 +18,8 @@ The information in this page applies only to Omnibus GitLab.
For a list of the existing Sidekiq queues, check the following files: For a list of the existing Sidekiq queues, check the following files:
- [Queues for both GitLab Community and Enterprise Editions](https://gitlab.com/gitlab-org/gitlab/blob/master/app/workers/all_queues.yml) - [Queues for both GitLab Community and Enterprise Editions](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/workers/all_queues.yml)
- [Queues for GitLab Enterprise Editions only](https://gitlab.com/gitlab-org/gitlab/blob/master/ee/app/workers/all_queues.yml) - [Queues for GitLab Enterprise Editions only](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/app/workers/all_queues.yml)
Each entry in the above files represents a queue on which Sidekiq processes Each entry in the above files represents a queue on which Sidekiq processes
can be started. can be started.

View File

@ -44,7 +44,7 @@ If you have installed GitLab from source:
1. After the installation is complete, to enable it, you must configure the Registry's 1. After the installation is complete, to enable it, you must configure the Registry's
settings in `gitlab.yml`. settings in `gitlab.yml`.
1. Use the sample NGINX configuration file from under 1. Use the sample NGINX configuration file from under
[`lib/support/nginx/registry-ssl`](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/support/nginx/registry-ssl) and edit it to match the [`lib/support/nginx/registry-ssl`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/support/nginx/registry-ssl) and edit it to match the
`host`, `port`, and TLS certificate paths. `host`, `port`, and TLS certificate paths.
The contents of `gitlab.yml` are: The contents of `gitlab.yml` are:

View File

@ -27,7 +27,7 @@ be textually exported. This ensures that:
To configure the Pseudonymizer, you need to: To configure the Pseudonymizer, you need to:
- Provide a manifest file that describes which fields should be included or - Provide a manifest file that describes which fields should be included or
pseudonymized ([example `manifest.yml` file](https://gitlab.com/gitlab-org/gitlab/tree/master/config/pseudonymizer.yml)). pseudonymized ([example `manifest.yml` file](https://gitlab.com/gitlab-org/gitlab/-/tree/master/config/pseudonymizer.yml)).
A default manifest is provided with the GitLab installation, using a relative file path that resolves from the Rails root. A default manifest is provided with the GitLab installation, using a relative file path that resolves from the Rails root.
Alternatively, you can use an absolute file path. Alternatively, you can use an absolute file path.
- Use an object storage and specify the connection parameters in the `pseudonymizer.upload.connection` configuration option. - Use an object storage and specify the connection parameters in the `pseudonymizer.upload.connection` configuration option.

View File

@ -59,7 +59,7 @@ care of upgrading Redis to the latest supported version.
Note also that you may elect to override all references to Note also that you may elect to override all references to
`/home/git/gitlab/config/resque.yml` in accordance with the advanced Redis `/home/git/gitlab/config/resque.yml` in accordance with the advanced Redis
settings outlined in settings outlined in
[Configuration Files Documentation](https://gitlab.com/gitlab-org/gitlab/blob/master/config/README.md). [Configuration Files Documentation](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/README.md).
We cannot stress enough the importance of reading the We cannot stress enough the importance of reading the
[replication and failover](replication_and_failover.md) documentation of the [replication and failover](replication_and_failover.md) documentation of the
@ -218,7 +218,7 @@ The following steps should be performed in the GitLab application server
which ideally should not have Redis or Sentinels in the same machine: which ideally should not have Redis or Sentinels in the same machine:
1. Edit `/home/git/gitlab/config/resque.yml` following the example in 1. Edit `/home/git/gitlab/config/resque.yml` following the example in
[resque.yml.example](https://gitlab.com/gitlab-org/gitlab/blob/master/config/resque.yml.example), and uncomment the Sentinel lines, pointing to [resque.yml.example](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/resque.yml.example), and uncomment the Sentinel lines, pointing to
the correct server credentials: the correct server credentials:
```yaml ```yaml

View File

@ -875,7 +875,7 @@ License.current.trial?
### Check if a project feature is available on the instance ### Check if a project feature is available on the instance
Features listed in <https://gitlab.com/gitlab-org/gitlab/blob/master/ee/app/models/license.rb>. Features listed in <https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/app/models/license.rb>.
```ruby ```ruby
License.current.feature_available?(:jira_dev_panel_integration) License.current.feature_available?(:jira_dev_panel_integration)
@ -883,7 +883,7 @@ License.current.feature_available?(:jira_dev_panel_integration)
### Check if a project feature is available in a project ### Check if a project feature is available in a project
Features listed in [`license.rb`](https://gitlab.com/gitlab-org/gitlab/blob/master/ee/app/models/license.rb). Features listed in [`license.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/ee/app/models/license.rb).
```ruby ```ruby
p = Project.find_by_full_path('<group>/<project>') p = Project.find_by_full_path('<group>/<project>')
@ -1215,11 +1215,11 @@ Among other attributes, in the output you will notice that all the settings avai
You can then set anyone of Elasticsearch integration settings by issuing a command similar to: You can then set anyone of Elasticsearch integration settings by issuing a command similar to:
```ruby ```ruby
ApplicationSetting.last.update_attributes(elasticsearch_url: '<your ES URL and port>') ApplicationSetting.last.update(elasticsearch_url: '<your ES URL and port>')
#or #or
ApplicationSetting.last.update_attributes(elasticsearch_indexing: false) ApplicationSetting.last.update(elasticsearch_indexing: false)
``` ```
#### Getting attributes #### Getting attributes

View File

@ -8,7 +8,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
Use the GitLab [REST](http://spec.openapis.org/oas/v3.0.3) API to automate GitLab. Use the GitLab [REST](http://spec.openapis.org/oas/v3.0.3) API to automate GitLab.
You can also use a partial [OpenAPI definition](https://gitlab.com/gitlab-org/gitlab/blob/master/doc/api/openapi/openapi.yaml), You can also use a partial [OpenAPI definition](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/api/openapi/openapi.yaml),
to test the API directly from the GitLab user interface. to test the API directly from the GitLab user interface.
Contributions are welcome. Contributions are welcome.
@ -73,7 +73,7 @@ Only API version v4 is available. Version v3 was removed in
## How to use the API ## How to use the API
API requests must include both `api` and the API version. The API API requests must include both `api` and the API version. The API
version is defined in [`lib/api.rb`](https://gitlab.com/gitlab-org/gitlab/tree/master/lib/api/api.rb). version is defined in [`lib/api.rb`](https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/api/api.rb).
For example, the root of the v4 API is at `/api/v4`. For example, the root of the v4 API is at `/api/v4`.
### Valid API request ### Valid API request

View File

@ -134,7 +134,7 @@ New associations and root level objects are constantly being added.
See the [GraphQL API Reference](reference/index.md) for up-to-date information. See the [GraphQL API Reference](reference/index.md) for up-to-date information.
Root-level queries are defined in Root-level queries are defined in
[`app/graphql/types/query_type.rb`](https://gitlab.com/gitlab-org/gitlab/blob/master/app/graphql/types/query_type.rb). [`app/graphql/types/query_type.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/graphql/types/query_type.rb).
### Multiplex queries ### Multiplex queries

View File

@ -7321,6 +7321,38 @@ Represents an epic on an issue board.
#### Fields with arguments #### Fields with arguments
##### `BoardEpic.ancestors`
Ancestors (parents) of the epic.
Returns [`EpicConnection`](#epicconnection).
This field returns a [connection](#connections). It accepts the
four standard [pagination arguments](#connection-pagination-arguments):
`before: String`, `after: String`, `first: Int`, `last: Int`.
###### Arguments
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="boardepicancestorsauthorusername"></a>`authorUsername` | [`String`](#string) | Filter epics by author. |
| <a id="boardepicancestorsconfidential"></a>`confidential` | [`Boolean`](#boolean) | Filter epics by given confidentiality. |
| <a id="boardepicancestorsenddate"></a>`endDate` **{warning-solid}** | [`Time`](#time) | **Deprecated** in 13.5. Use timeframe.end. |
| <a id="boardepicancestorsiid"></a>`iid` | [`ID`](#id) | IID of the epic, e.g., "1". |
| <a id="boardepicancestorsiidstartswith"></a>`iidStartsWith` | [`String`](#string) | Filter epics by IID for autocomplete. |
| <a id="boardepicancestorsiids"></a>`iids` | [`[ID!]`](#id) | List of IIDs of epics, e.g., [1, 2]. |
| <a id="boardepicancestorsincludeancestorgroups"></a>`includeAncestorGroups` | [`Boolean`](#boolean) | Include epics from ancestor groups. |
| <a id="boardepicancestorsincludedescendantgroups"></a>`includeDescendantGroups` | [`Boolean`](#boolean) | Include epics from descendant groups. |
| <a id="boardepicancestorslabelname"></a>`labelName` | [`[String!]`](#string) | Filter epics by labels. |
| <a id="boardepicancestorsmilestonetitle"></a>`milestoneTitle` | [`String`](#string) | Filter epics by milestone title, computed from epic's issues. |
| <a id="boardepicancestorsmyreactionemoji"></a>`myReactionEmoji` | [`String`](#string) | Filter by reaction emoji applied by the current user. |
| <a id="boardepicancestorsnot"></a>`not` | [`NegatedEpicFilterInput`](#negatedepicfilterinput) | Negated epic arguments. |
| <a id="boardepicancestorssearch"></a>`search` | [`String`](#string) | Search query for epic title or description. |
| <a id="boardepicancestorssort"></a>`sort` | [`EpicSort`](#epicsort) | List epics by sort order. |
| <a id="boardepicancestorsstartdate"></a>`startDate` **{warning-solid}** | [`Time`](#time) | **Deprecated** in 13.5. Use timeframe.start. |
| <a id="boardepicancestorsstate"></a>`state` | [`EpicState`](#epicstate) | Filter epics by state. |
| <a id="boardepicancestorstimeframe"></a>`timeframe` | [`Timeframe`](#timeframe) | List items overlapping the given timeframe. |
##### `BoardEpic.children` ##### `BoardEpic.children`
Children (sub-epics) of the epic. Children (sub-epics) of the epic.
@ -8479,6 +8511,38 @@ Represents an epic.
#### Fields with arguments #### Fields with arguments
##### `Epic.ancestors`
Ancestors (parents) of the epic.
Returns [`EpicConnection`](#epicconnection).
This field returns a [connection](#connections). It accepts the
four standard [pagination arguments](#connection-pagination-arguments):
`before: String`, `after: String`, `first: Int`, `last: Int`.
###### Arguments
| Name | Type | Description |
| ---- | ---- | ----------- |
| <a id="epicancestorsauthorusername"></a>`authorUsername` | [`String`](#string) | Filter epics by author. |
| <a id="epicancestorsconfidential"></a>`confidential` | [`Boolean`](#boolean) | Filter epics by given confidentiality. |
| <a id="epicancestorsenddate"></a>`endDate` **{warning-solid}** | [`Time`](#time) | **Deprecated** in 13.5. Use timeframe.end. |
| <a id="epicancestorsiid"></a>`iid` | [`ID`](#id) | IID of the epic, e.g., "1". |
| <a id="epicancestorsiidstartswith"></a>`iidStartsWith` | [`String`](#string) | Filter epics by IID for autocomplete. |
| <a id="epicancestorsiids"></a>`iids` | [`[ID!]`](#id) | List of IIDs of epics, e.g., [1, 2]. |
| <a id="epicancestorsincludeancestorgroups"></a>`includeAncestorGroups` | [`Boolean`](#boolean) | Include epics from ancestor groups. |
| <a id="epicancestorsincludedescendantgroups"></a>`includeDescendantGroups` | [`Boolean`](#boolean) | Include epics from descendant groups. |
| <a id="epicancestorslabelname"></a>`labelName` | [`[String!]`](#string) | Filter epics by labels. |
| <a id="epicancestorsmilestonetitle"></a>`milestoneTitle` | [`String`](#string) | Filter epics by milestone title, computed from epic's issues. |
| <a id="epicancestorsmyreactionemoji"></a>`myReactionEmoji` | [`String`](#string) | Filter by reaction emoji applied by the current user. |
| <a id="epicancestorsnot"></a>`not` | [`NegatedEpicFilterInput`](#negatedepicfilterinput) | Negated epic arguments. |
| <a id="epicancestorssearch"></a>`search` | [`String`](#string) | Search query for epic title or description. |
| <a id="epicancestorssort"></a>`sort` | [`EpicSort`](#epicsort) | List epics by sort order. |
| <a id="epicancestorsstartdate"></a>`startDate` **{warning-solid}** | [`Time`](#time) | **Deprecated** in 13.5. Use timeframe.start. |
| <a id="epicancestorsstate"></a>`state` | [`EpicState`](#epicstate) | Filter epics by state. |
| <a id="epicancestorstimeframe"></a>`timeframe` | [`Timeframe`](#timeframe) | List items overlapping the given timeframe. |
##### `Epic.children` ##### `Epic.children`
Children (sub-epics) of the epic. Children (sub-epics) of the epic.

View File

@ -1020,7 +1020,7 @@ If the project is a fork, and you provide a valid token to authenticate, the
"http_url_to_repo":"https://gitlab.com/gitlab-org/gitlab-foss.git", "http_url_to_repo":"https://gitlab.com/gitlab-org/gitlab-foss.git",
"web_url":"https://gitlab.com/gitlab-org/gitlab-foss", "web_url":"https://gitlab.com/gitlab-org/gitlab-foss",
"avatar_url":"https://assets.gitlab-static.net/uploads/-/system/project/avatar/13083/logo-extra-whitespace.png", "avatar_url":"https://assets.gitlab-static.net/uploads/-/system/project/avatar/13083/logo-extra-whitespace.png",
"license_url": "https://gitlab.com/gitlab-org/gitlab/blob/master/LICENSE", "license_url": "https://gitlab.com/gitlab-org/gitlab/-/blob/master/LICENSE",
"license": { "license": {
"key": "mit", "key": "mit",
"name": "MIT License", "name": "MIT License",

View File

@ -754,7 +754,7 @@ Set Jira service for a project.
> Starting with GitLab 8.14, `api_url`, `issues_url`, `new_issue_url` and > Starting with GitLab 8.14, `api_url`, `issues_url`, `new_issue_url` and
> `project_url` are replaced by `url`. If you are using an > `project_url` are replaced by `url`. If you are using an
> older version, [follow this documentation](https://gitlab.com/gitlab-org/gitlab/blob/8-13-stable-ee/doc/api/services.md#jira). > older version, [follow this documentation](https://gitlab.com/gitlab-org/gitlab/-/blob/8-13-stable-ee/doc/api/services.md#jira).
```plaintext ```plaintext
PUT /projects/:id/services/jira PUT /projects/:id/services/jira

View File

@ -122,7 +122,7 @@ For similar reasons as highlighted above, currently, it's not feasible to extrac
#### Additional Features #### Additional Features
Due to the metadata limitations, it's currently not feasible to implement valuable features such as [pagination](https://gitlab.com/gitlab-org/container-registry/-/issues/13#note_271769891), filtering and sorting for HTTP API, and more advanced features such as the ability to [distinguish between Docker and Helm charts images](https://gitlab.com/gitlab-org/gitlab/issues/38047). Due to the metadata limitations, it's currently not feasible to implement valuable features such as [pagination](https://gitlab.com/gitlab-org/container-registry/-/issues/13#note_271769891), filtering and sorting for HTTP API, and more advanced features such as the ability to [distinguish between Docker and Helm charts images](https://gitlab.com/gitlab-org/gitlab/-/issues/38047).
Because of all these constraints, we decided to [freeze the development of new features](https://gitlab.com/gitlab-org/container-registry/-/issues/44) until we have a solution in place to overcome all these foundational limitations. Because of all these constraints, we decided to [freeze the development of new features](https://gitlab.com/gitlab-org/container-registry/-/issues/44) until we have a solution in place to overcome all these foundational limitations.

View File

@ -150,7 +150,7 @@ The most common use case of caching is to avoid downloading content like depende
or libraries repeatedly between subsequent runs of jobs. Node.js packages, or libraries repeatedly between subsequent runs of jobs. Node.js packages,
PHP packages, Ruby gems, Python libraries, and others can all be cached. PHP packages, Ruby gems, Python libraries, and others can all be cached.
For more examples, check out our [GitLab CI/CD templates](https://gitlab.com/gitlab-org/gitlab/tree/master/lib/gitlab/ci/templates). For more examples, check out our [GitLab CI/CD templates](https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates).
### Cache Node.js dependencies ### Cache Node.js dependencies
@ -162,7 +162,7 @@ Instead, we tell npm to use `./.npm`, and cache it per-branch:
```yaml ```yaml
# #
# https://gitlab.com/gitlab-org/gitlab/tree/master/lib/gitlab/ci/templates/Nodejs.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates/Nodejs.gitlab-ci.yml
# #
image: node:latest image: node:latest
@ -189,7 +189,7 @@ are cached per-branch:
```yaml ```yaml
# #
# https://gitlab.com/gitlab-org/gitlab/tree/master/lib/gitlab/ci/templates/PHP.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates/PHP.gitlab-ci.yml
# #
image: php:7.2 image: php:7.2
@ -218,7 +218,7 @@ pip's cache is defined under `.cache/pip/` and both are cached per-branch:
```yaml ```yaml
# #
# https://gitlab.com/gitlab-org/gitlab/tree/master/lib/gitlab/ci/templates/Python.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates/Python.gitlab-ci.yml
# #
image: python:latest image: python:latest
@ -258,7 +258,7 @@ jobs inherit it. Gems are installed in `vendor/ruby/` and are cached per-branch:
```yaml ```yaml
# #
# https://gitlab.com/gitlab-org/gitlab/tree/master/lib/gitlab/ci/templates/Ruby.gitlab-ci.yml # https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates/Ruby.gitlab-ci.yml
# #
image: ruby:2.6 image: ruby:2.6

View File

@ -56,7 +56,7 @@ separate example projects:
## CI/CD templates ## CI/CD templates
Get started with GitLab CI/CD and your favorite programming language or framework by using a Get started with GitLab CI/CD and your favorite programming language or framework by using a
`.gitlab-ci.yml` [template](https://gitlab.com/gitlab-org/gitlab/tree/master/lib/gitlab/ci/templates). `.gitlab-ci.yml` [template](https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates).
When you create a `gitlab-ci.yml` file in the UI, you can When you create a `gitlab-ci.yml` file in the UI, you can
choose one of these templates: choose one of these templates:
@ -99,7 +99,7 @@ choose one of these templates:
If a programming language or framework template is not in this list, you can contribute If a programming language or framework template is not in this list, you can contribute
one. To create a template, submit a merge request one. To create a template, submit a merge request
to [the templates list](https://gitlab.com/gitlab-org/gitlab/tree/master/lib/gitlab/ci/templates). to [the templates list](https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates).
### Adding templates to your GitLab installation **(PREMIUM SELF)** ### Adding templates to your GitLab installation **(PREMIUM SELF)**

View File

@ -136,7 +136,7 @@ In the pipeline, the result is a group named `build ruby` with three jobs:
The jobs are ordered by comparing the numbers from left to right. You The jobs are ordered by comparing the numbers from left to right. You
usually want the first number to be the index and the second number to be the total. usually want the first number to be the index and the second number to be the total.
[This regular expression](https://gitlab.com/gitlab-org/gitlab/blob/2f3dc314f42dbd79813e6251792853bc231e69dd/app/models/commit_status.rb#L99) [This regular expression](https://gitlab.com/gitlab-org/gitlab/-/blob/2f3dc314f42dbd79813e6251792853bc231e69dd/app/models/commit_status.rb#L99)
evaluates the job names: `([\b\s:]+((\[.*\])|(\d+[\s:\/\\]+\d+)))+\s*\z`. evaluates the job names: `([\b\s:]+((\[.*\])|(\d+[\s:\/\\]+\d+)))+\s*\z`.
One or more `: [...]`, `X Y`, `X/Y`, or `X\Y` sequences are removed from the **end** One or more `: [...]`, `X Y`, `X/Y`, or `X\Y` sequences are removed from the **end**
of job names only. Matching substrings found at the beginning or in the middle of of job names only. Matching substrings found at the beginning or in the middle of

View File

@ -15,7 +15,7 @@ This document lists the configuration options for your GitLab `.gitlab-ci.yml` f
- For a quick introduction to GitLab CI/CD, follow the [quick start guide](../quick_start/index.md). - For a quick introduction to GitLab CI/CD, follow the [quick start guide](../quick_start/index.md).
- For a collection of examples, see [GitLab CI/CD Examples](../examples/README.md). - For a collection of examples, see [GitLab CI/CD Examples](../examples/README.md).
- To view a large `.gitlab-ci.yml` file used in an enterprise, see the [`.gitlab-ci.yml` file for `gitlab`](https://gitlab.com/gitlab-org/gitlab/blob/master/.gitlab-ci.yml). - To view a large `.gitlab-ci.yml` file used in an enterprise, see the [`.gitlab-ci.yml` file for `gitlab`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/.gitlab-ci.yml).
When you are editing your `.gitlab-ci.yml` file, you can validate it with the When you are editing your `.gitlab-ci.yml` file, you can validate it with the
[CI Lint](../lint.md) tool. [CI Lint](../lint.md) tool.
@ -609,7 +609,7 @@ so you can only `include` public projects or templates.
> [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/53445) in GitLab 11.7. > [Introduced](https://gitlab.com/gitlab-org/gitlab-foss/-/issues/53445) in GitLab 11.7.
Use `include:template` to include `.gitlab-ci.yml` templates that are Use `include:template` to include `.gitlab-ci.yml` templates that are
[shipped with GitLab](https://gitlab.com/gitlab-org/gitlab/tree/master/lib/gitlab/ci/templates). [shipped with GitLab](https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates).
For example: For example:
@ -4218,7 +4218,7 @@ finishes.
### `release` ### `release`
> [Introduced](https://gitlab.com/gitlab-org/gitlab/merge_requests/19298) in GitLab 13.2. > [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/19298) in GitLab 13.2.
Use `release` to create a [release](../../user/project/releases/index.md). Use `release` to create a [release](../../user/project/releases/index.md).
Requires the [`release-cli`](https://gitlab.com/gitlab-org/release-cli/-/tree/master/docs) Requires the [`release-cli`](https://gitlab.com/gitlab-org/release-cli/-/tree/master/docs)

View File

@ -61,7 +61,7 @@ GitLab instance, see the [administration documentation](../administration/index.
Complementary reads: Complementary reads:
- [GitLab core team & GitLab Inc. contribution process](https://gitlab.com/gitlab-org/gitlab/blob/master/PROCESS.md) - [GitLab core team & GitLab Inc. contribution process](https://gitlab.com/gitlab-org/gitlab/-/blob/master/PROCESS.md)
- [Security process for developers](https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md#security-releases-critical-non-critical-as-a-developer) - [Security process for developers](https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md#security-releases-critical-non-critical-as-a-developer)
- [Guidelines for implementing Enterprise Edition features](ee_features.md) - [Guidelines for implementing Enterprise Edition features](ee_features.md)
- [Danger bot](dangerbot.md) - [Danger bot](dangerbot.md)

View File

@ -16,7 +16,7 @@ We use the [GraphQL Ruby gem](https://graphql-ruby.org/) written by [Robert Moso
In addition, we have a subscription to [GraphQL Pro](https://graphql.pro/). For details see [GraphQL Pro subscription](graphql_guide/graphql_pro.md). In addition, we have a subscription to [GraphQL Pro](https://graphql.pro/). For details see [GraphQL Pro subscription](graphql_guide/graphql_pro.md).
All GraphQL queries are directed to a single endpoint All GraphQL queries are directed to a single endpoint
([`app/controllers/graphql_controller.rb#execute`](https://gitlab.com/gitlab-org/gitlab/blob/master/app%2Fcontrollers%2Fgraphql_controller.rb)), ([`app/controllers/graphql_controller.rb#execute`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app%2Fcontrollers%2Fgraphql_controller.rb)),
which is exposed as an API endpoint at `/api/graphql`. which is exposed as an API endpoint at `/api/graphql`.
## Deep Dive ## Deep Dive
@ -862,7 +862,7 @@ overhead. If you are writing:
Resolvers may raise errors, which will be converted to top-level errors as Resolvers may raise errors, which will be converted to top-level errors as
appropriate. All anticipated errors should be caught and transformed to an appropriate. All anticipated errors should be caught and transformed to an
appropriate GraphQL error (see appropriate GraphQL error (see
[`Gitlab::Graphql::Errors`](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/graphql/errors.rb)). [`Gitlab::Graphql::Errors`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/graphql/errors.rb)).
Any uncaught errors will be suppressed and the client will receive the message Any uncaught errors will be suppressed and the client will receive the message
`Internal service error`. `Internal service error`.
@ -1649,7 +1649,7 @@ is merged.
### `Types::TimeType` ### `Types::TimeType`
[`Types::TimeType`](https://gitlab.com/gitlab-org/gitlab/blob/master/app%2Fgraphql%2Ftypes%2Ftime_type.rb) [`Types::TimeType`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app%2Fgraphql%2Ftypes%2Ftime_type.rb)
must be used as the type for all fields and arguments that deal with Ruby must be used as the type for all fields and arguments that deal with Ruby
`Time` and `DateTime` objects. `Time` and `DateTime` objects.

View File

@ -15,7 +15,7 @@ to access them as we do in Rails views), local variables are fine.
## Entities ## Entities
Always use an [Entity](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/api/entities) to present the endpoint's payload. Always use an [Entity](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/api/entities) to present the endpoint's payload.
## Documentation ## Documentation
@ -28,7 +28,7 @@ See the [Documentation Style Guide RESTful API page](documentation/restful_api_s
## Methods and parameters description ## Methods and parameters description
Every method must be described using the [Grape DSL](https://github.com/ruby-grape/grape#describing-methods) Every method must be described using the [Grape DSL](https://github.com/ruby-grape/grape#describing-methods)
(see [`environments.rb`](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/api/environments.rb) (see [`environments.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/api/environments.rb)
for a good example): for a good example):
- `desc` for the method summary. You should pass it a block for additional - `desc` for the method summary. You should pass it a block for additional
@ -252,7 +252,7 @@ A standard way to do this within the API is for models to implement a
scope called `with_api_entity_associations` that preloads the scope called `with_api_entity_associations` that preloads the
associations and data returned in the API. An example of this scope can associations and data returned in the API. An example of this scope can
be seen in be seen in
[the `Issue` model](https://gitlab.com/gitlab-org/gitlab/blob/2fedc47b97837ea08c3016cf2fb773a0300a4a25/app%2Fmodels%2Fissue.rb#L62). [the `Issue` model](https://gitlab.com/gitlab-org/gitlab/-/blob/2fedc47b97837ea08c3016cf2fb773a0300a4a25/app%2Fmodels%2Fissue.rb#L62).
In situations where the same model has multiple entities in the API In situations where the same model has multiple entities in the API
(for instance, `UserBasic`, `User` and `UserPublic`) you should use your (for instance, `UserBasic`, `User` and `UserPublic`) you should use your
@ -260,7 +260,7 @@ discretion with applying this scope. It may be that you optimize for the
most basic entity, with successive entities building upon that scope. most basic entity, with successive entities building upon that scope.
The `with_api_entity_associations` scope also [automatically preloads The `with_api_entity_associations` scope also [automatically preloads
data](https://gitlab.com/gitlab-org/gitlab/blob/19f74903240e209736c7668132e6a5a735954e7c/app%2Fmodels%2Ftodo.rb#L34) data](https://gitlab.com/gitlab-org/gitlab/-/blob/19f74903240e209736c7668132e6a5a735954e7c/app%2Fmodels%2Ftodo.rb#L34)
for `Todo` _targets_ when returned in the [to-dos API](../api/todos.md). for `Todo` _targets_ when returned in the [to-dos API](../api/todos.md).
For more context and discussion about preloading see For more context and discussion about preloading see

View File

@ -94,7 +94,7 @@ project.actual_limits.exceeded?(:project_hooks, 10)
#### `Limitable` concern #### `Limitable` concern
The [`Limitable` concern](https://gitlab.com/gitlab-org/gitlab/blob/master/app/models/concerns/limitable.rb) The [`Limitable` concern](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/models/concerns/limitable.rb)
can be used to validate that a model does not exceed the limits. It ensures can be used to validate that a model does not exceed the limits. It ensures
that the count of the records for the current model does not exceed the defined that the count of the records for the current model does not exceed the defined
limit. limit.

View File

@ -46,14 +46,14 @@ and pre-compiled assets.
The GitLab application uses PostgreSQL for persistent database information (for example, users, The GitLab application uses PostgreSQL for persistent database information (for example, users,
permissions, issues, or other metadata). GitLab stores the bare Git repositories in the location permissions, issues, or other metadata). GitLab stores the bare Git repositories in the location
defined in [the configuration file, `repositories:` section](https://gitlab.com/gitlab-org/gitlab/blob/master/config/gitlab.yml.example). defined in [the configuration file, `repositories:` section](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/gitlab.yml.example).
It also keeps default branch and hook information with the bare repository. It also keeps default branch and hook information with the bare repository.
When serving repositories over HTTP/HTTPS GitLab uses the GitLab API to resolve authorization and When serving repositories over HTTP/HTTPS GitLab uses the GitLab API to resolve authorization and
access and to serve Git objects. access and to serve Git objects.
The add-on component GitLab Shell serves repositories over SSH. It manages the SSH keys within the The add-on component GitLab Shell serves repositories over SSH. It manages the SSH keys within the
location defined in [the configuration file, `GitLab Shell` section](https://gitlab.com/gitlab-org/gitlab/blob/master/config/gitlab.yml.example). location defined in [the configuration file, `GitLab Shell` section](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/gitlab.yml.example).
The file in that location should never be manually edited. GitLab Shell accesses the bare The file in that location should never be manually edited. GitLab Shell accesses the bare
repositories through Gitaly to serve Git objects, and communicates with Redis to submit jobs to repositories through Gitaly to serve Git objects, and communicates with Redis to submit jobs to
Sidekiq for GitLab to process. GitLab Shell queries the GitLab API to determine authorization and access. Sidekiq for GitLab to process. GitLab Shell queries the GitLab API to determine authorization and access.
@ -435,7 +435,7 @@ GitLab CI/CD is the open-source continuous integration service included with Git
- [Omnibus](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template) - [Omnibus](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template)
- [Charts](https://docs.gitlab.com/charts/charts/gitlab/gitlab-shell/) - [Charts](https://docs.gitlab.com/charts/charts/gitlab/gitlab-shell/)
- [Source](../install/installation.md#install-gitlab-shell) - [Source](../install/installation.md#install-gitlab-shell)
- [GDK](https://gitlab.com/gitlab-org/gitlab/blob/master/config/gitlab.yml.example) - [GDK](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/gitlab.yml.example)
- Layer: Core Service (Processor) - Layer: Core Service (Processor)
- GitLab.com: [Service Architecture](https://about.gitlab.com/handbook/engineering/infrastructure/production/architecture/#service-architecture) - GitLab.com: [Service Architecture](https://about.gitlab.com/handbook/engineering/infrastructure/production/architecture/#service-architecture)
@ -668,8 +668,8 @@ An external registry can also be configured to use GitLab as an auth endpoint.
- Configuration: - Configuration:
- [Omnibus](https://docs.gitlab.com/omnibus/settings/configuration.html#error-reporting-and-logging-with-sentry) - [Omnibus](https://docs.gitlab.com/omnibus/settings/configuration.html#error-reporting-and-logging-with-sentry)
- [Charts](https://docs.gitlab.com/charts/charts/globals#sentry-settings) - [Charts](https://docs.gitlab.com/charts/charts/globals#sentry-settings)
- [Source](https://gitlab.com/gitlab-org/gitlab/blob/master/config/gitlab.yml.example) - [Source](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/gitlab.yml.example)
- [GDK](https://gitlab.com/gitlab-org/gitlab/blob/master/config/gitlab.yml.example) - [GDK](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/gitlab.yml.example)
- Layer: Monitoring - Layer: Monitoring
- GitLab.com: [Searching Sentry](https://about.gitlab.com/handbook/support/workflows/500_errors.html#searching-sentry) - GitLab.com: [Searching Sentry](https://about.gitlab.com/handbook/support/workflows/500_errors.html#searching-sentry)
@ -685,8 +685,8 @@ For monitoring deployed apps, see the [Sentry integration docs](../operations/er
- [Omnibus](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template) - [Omnibus](https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template)
- [Charts](https://docs.gitlab.com/charts/charts/gitlab/sidekiq/) - [Charts](https://docs.gitlab.com/charts/charts/gitlab/sidekiq/)
- [Minikube Minimal](https://docs.gitlab.com/charts/charts/gitlab/sidekiq/index.html) - [Minikube Minimal](https://docs.gitlab.com/charts/charts/gitlab/sidekiq/index.html)
- [Source](https://gitlab.com/gitlab-org/gitlab/blob/master/config/gitlab.yml.example) - [Source](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/gitlab.yml.example)
- [GDK](https://gitlab.com/gitlab-org/gitlab/blob/master/config/gitlab.yml.example) - [GDK](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/gitlab.yml.example)
- Layer: Core Service (Processor) - Layer: Core Service (Processor)
- Process: `sidekiq` - Process: `sidekiq`
- GitLab.com: [Sidekiq](../user/gitlab_com/index.md#sidekiq) - GitLab.com: [Sidekiq](../user/gitlab_com/index.md#sidekiq)
@ -697,12 +697,12 @@ Sidekiq is a Ruby background job processor that pulls jobs from the Redis queue
Starting with GitLab 13.0, Puma is the default web server. Starting with GitLab 13.0, Puma is the default web server.
- [Project page](https://gitlab.com/gitlab-org/gitlab/blob/master/README.md) - [Project page](https://gitlab.com/gitlab-org/gitlab/-/blob/master/README.md)
- Configuration: - Configuration:
- [Omnibus](https://docs.gitlab.com/omnibus/settings/puma.html) - [Omnibus](https://docs.gitlab.com/omnibus/settings/puma.html)
- [Charts](https://docs.gitlab.com/charts/charts/gitlab/webservice/) - [Charts](https://docs.gitlab.com/charts/charts/gitlab/webservice/)
- [Source](../install/installation.md#configure-it) - [Source](../install/installation.md#configure-it)
- [GDK](https://gitlab.com/gitlab-org/gitlab/blob/master/config/gitlab.yml.example) - [GDK](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/gitlab.yml.example)
- Layer: Core Service (Processor) - Layer: Core Service (Processor)
- Process: `puma` - Process: `puma`
- GitLab.com: [Puma](../user/gitlab_com/index.md#puma) - GitLab.com: [Puma](../user/gitlab_com/index.md#puma)
@ -714,7 +714,7 @@ Starting with GitLab 13.0, Puma is the default web server.
- Configuration: - Configuration:
- [Omnibus](../administration/auth/ldap/index.md) - [Omnibus](../administration/auth/ldap/index.md)
- [Charts](https://docs.gitlab.com/charts/charts/globals.html#ldap) - [Charts](https://docs.gitlab.com/charts/charts/globals.html#ldap)
- [Source](https://gitlab.com/gitlab-org/gitlab/blob/master/config/gitlab.yml.example) - [Source](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/gitlab.yml.example)
- [GDK](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/main/doc/howto/ldap.md) - [GDK](https://gitlab.com/gitlab-org/gitlab-development-kit/blob/main/doc/howto/ldap.md)
- Layer: Core Service (Processor) - Layer: Core Service (Processor)
- GitLab.com: [Product Tiers](https://about.gitlab.com/pricing/#gitlab-com) - GitLab.com: [Product Tiers](https://about.gitlab.com/pricing/#gitlab-com)
@ -724,8 +724,8 @@ Starting with GitLab 13.0, Puma is the default web server.
- Configuration: - Configuration:
- [Omnibus](https://docs.gitlab.com/omnibus/settings/smtp.html) - [Omnibus](https://docs.gitlab.com/omnibus/settings/smtp.html)
- [Charts](https://docs.gitlab.com/charts/installation/command-line-options.html#outgoing-email-configuration) - [Charts](https://docs.gitlab.com/charts/installation/command-line-options.html#outgoing-email-configuration)
- [Source](https://gitlab.com/gitlab-org/gitlab/blob/master/config/gitlab.yml.example) - [Source](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/gitlab.yml.example)
- [GDK](https://gitlab.com/gitlab-org/gitlab/blob/master/config/gitlab.yml.example) - [GDK](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/gitlab.yml.example)
- Layer: Core Service (Processor) - Layer: Core Service (Processor)
- GitLab.com: [Mail configuration](../user/gitlab_com/index.md#mail-configuration) - GitLab.com: [Mail configuration](../user/gitlab_com/index.md#mail-configuration)
@ -734,8 +734,8 @@ Starting with GitLab 13.0, Puma is the default web server.
- Configuration: - Configuration:
- [Omnibus](../administration/incoming_email.md) - [Omnibus](../administration/incoming_email.md)
- [Charts](https://docs.gitlab.com/charts/installation/command-line-options.html#incoming-email-configuration) - [Charts](https://docs.gitlab.com/charts/installation/command-line-options.html#incoming-email-configuration)
- [Source](https://gitlab.com/gitlab-org/gitlab/blob/master/config/gitlab.yml.example) - [Source](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/gitlab.yml.example)
- [GDK](https://gitlab.com/gitlab-org/gitlab/blob/master/config/gitlab.yml.example) - [GDK](https://gitlab.com/gitlab-org/gitlab/-/blob/master/config/gitlab.yml.example)
- Layer: Core Service (Processor) - Layer: Core Service (Processor)
- GitLab.com: [Mail configuration](../user/gitlab_com/index.md#mail-configuration) - GitLab.com: [Mail configuration](../user/gitlab_com/index.md#mail-configuration)
@ -878,7 +878,7 @@ instead of `git upload-pack`.
If fast SSH key lookups are not enabled, the SSH server reads from the If fast SSH key lookups are not enabled, the SSH server reads from the
`~git/.ssh/authorized_keys` file to determine what command to run for a given `~git/.ssh/authorized_keys` file to determine what command to run for a given
SSH session. This is kept up to date by an [`AuthorizedKeysWorker`](https://gitlab.com/gitlab-org/gitlab/blob/master/app/workers/authorized_keys_worker.rb) SSH session. This is kept up to date by an [`AuthorizedKeysWorker`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/workers/authorized_keys_worker.rb)
in Rails, scheduled to run whenever an SSH key is modified by a user. in Rails, scheduled to run whenever an SSH key is modified by a user.
[SSH certificates](../administration/operations/ssh_certificates.md) may be used [SSH certificates](../administration/operations/ssh_certificates.md) may be used
@ -1017,7 +1017,7 @@ GitLab Shell has a configuration file at `/home/git/gitlab-shell/config.yml`.
### Maintenance tasks ### Maintenance tasks
[GitLab](https://gitlab.com/gitlab-org/gitlab/tree/master) provides Rake tasks with which you see version information and run a quick check on your configuration to ensure it is configured properly within the application. See [maintenance Rake tasks](../administration/raketasks/maintenance.md). [GitLab](https://gitlab.com/gitlab-org/gitlab/-/tree/master) provides Rake tasks with which you see version information and run a quick check on your configuration to ensure it is configured properly within the application. See [maintenance Rake tasks](../administration/raketasks/maintenance.md).
In a nutshell, do the following: In a nutshell, do the following:
```shell ```shell

View File

@ -21,7 +21,7 @@ project, the user does not need to explicitly include any pipeline configuration
through a [`.gitlab-ci.yml` file](../ci/yaml/README.md). through a [`.gitlab-ci.yml` file](../ci/yaml/README.md).
In the absence of a `.gitlab-ci.yml` file, the [Auto DevOps CI In the absence of a `.gitlab-ci.yml` file, the [Auto DevOps CI
template](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml) template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml)
is used implicitly to configure the pipeline for the project. This is used implicitly to configure the pipeline for the project. This
template is a top-level template that includes other sub-templates, template is a top-level template that includes other sub-templates,
which then defines jobs. which then defines jobs.
@ -29,12 +29,12 @@ which then defines jobs.
Some jobs use images that are built from external projects: Some jobs use images that are built from external projects:
- [Auto Build](../topics/autodevops/stages.md#auto-build) uses - [Auto Build](../topics/autodevops/stages.md#auto-build) uses
[configuration](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Build.gitlab-ci.yml) [configuration](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Jobs/Build.gitlab-ci.yml)
in which the `build` job uses an image that is built using the in which the `build` job uses an image that is built using the
[`auto-build-image`](https://gitlab.com/gitlab-org/cluster-integration/auto-build-image) [`auto-build-image`](https://gitlab.com/gitlab-org/cluster-integration/auto-build-image)
project. project.
- [Auto Deploy](../topics/autodevops/stages.md#auto-deploy) uses - [Auto Deploy](../topics/autodevops/stages.md#auto-deploy) uses
[configuration](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml) [configuration](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Jobs/Deploy.gitlab-ci.yml)
in which the jobs defined in this template use an image that is built using the in which the jobs defined in this template use an image that is built using the
[`auto-deploy-image`](https://gitlab.com/gitlab-org/cluster-integration/auto-deploy-image) [`auto-deploy-image`](https://gitlab.com/gitlab-org/cluster-integration/auto-deploy-image)
project. By default, the Helm chart defined in project. By default, the Helm chart defined in
@ -43,7 +43,7 @@ Some jobs use images that are built from external projects:
There are extra variables that get passed to the CI jobs when Auto There are extra variables that get passed to the CI jobs when Auto
DevOps is enabled that are not present in a normal CI job. These can be DevOps is enabled that are not present in a normal CI job. These can be
found in found in
[`ProjectAutoDevops`](https://gitlab.com/gitlab-org/gitlab/blob/bf69484afa94e091c3e1383945f60dbe4e8681af/app/models/project_auto_devops.rb). [`ProjectAutoDevops`](https://gitlab.com/gitlab-org/gitlab/-/blob/bf69484afa94e091c3e1383945f60dbe4e8681af/app/models/project_auto_devops.rb).
## Development environment ## Development environment

View File

@ -12,7 +12,7 @@ file, as well as information and history about our changelog process.
## Overview ## Overview
Each bullet point, or **entry**, in our Each bullet point, or **entry**, in our
[`CHANGELOG.md`](https://gitlab.com/gitlab-org/gitlab/blob/master/CHANGELOG.md) [`CHANGELOG.md`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/CHANGELOG.md)
file is generated from the subject line of a Git commit. Commits are included file is generated from the subject line of a Git commit. Commits are included
when they contain the `Changelog` [Git trailer](https://git-scm.com/docs/git-interpret-trailers). when they contain the `Changelog` [Git trailer](https://git-scm.com/docs/git-interpret-trailers).
When generating the changelog, author and merge request details are added When generating the changelog, author and merge request details are added

View File

@ -67,7 +67,7 @@ The communication between runners and the Rails server occurs through a set of A
the `Runner API Gateway`. the `Runner API Gateway`.
We can register, delete, and verify runners, which also causes read/write queries to the database. After a runner is connected, We can register, delete, and verify runners, which also causes read/write queries to the database. After a runner is connected,
it keeps asking for the next job to execute. This invokes the [`RegisterJobService`](https://gitlab.com/gitlab-org/gitlab/blob/master/app/services/ci/register_job_service.rb) it keeps asking for the next job to execute. This invokes the [`RegisterJobService`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/services/ci/register_job_service.rb)
which picks the next job and assigns it to the runner. At this point the job transitions to a which picks the next job and assigns it to the runner. At this point the job transitions to a
`running` state, which again triggers `ProcessPipelineService` due to the status change. `running` state, which again triggers `ProcessPipelineService` due to the status change.
For more details read [Job scheduling](#job-scheduling)). For more details read [Job scheduling](#job-scheduling)).
@ -103,7 +103,7 @@ A job with the `created` state isn't seen by the runner yet. To make it possible
When the runner is connected, it requests the next `pending` job to run by polling the server continuously. When the runner is connected, it requests the next `pending` job to run by polling the server continuously.
NOTE: NOTE:
API endpoints used by the runner to interact with GitLab are defined in [`lib/api/ci/runner.rb`](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/api/ci/runner.rb) API endpoints used by the runner to interact with GitLab are defined in [`lib/api/ci/runner.rb`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/api/ci/runner.rb)
After the server receives the request it selects a `pending` job based on the [`Ci::RegisterJobService` algorithm](#ciregisterjobservice), then assigns and sends the job to the runner. After the server receives the request it selects a `pending` job based on the [`Ci::RegisterJobService` algorithm](#ciregisterjobservice), then assigns and sends the job to the runner.
@ -121,7 +121,7 @@ Once the runner is [registered](https://docs.gitlab.com/runner/register/) using
The runner initiates the communication by requesting jobs to execute with `POST /api/v4/jobs/request`. Although this polling generally happens every few seconds we leverage caching via HTTP headers to reduce the server-side work load if the job queue doesn't change. The runner initiates the communication by requesting jobs to execute with `POST /api/v4/jobs/request`. Although this polling generally happens every few seconds we leverage caching via HTTP headers to reduce the server-side work load if the job queue doesn't change.
This API endpoint runs [`Ci::RegisterJobService`](https://gitlab.com/gitlab-org/gitlab/blob/master/app/services/ci/register_job_service.rb), which: This API endpoint runs [`Ci::RegisterJobService`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/services/ci/register_job_service.rb), which:
1. Picks the next job to run from the pool of `pending` jobs 1. Picks the next job to run from the pool of `pending` jobs
1. Assigns it to the runner 1. Assigns it to the runner

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