Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
0ebbf19f2d
commit
8a03b5424b
|
@ -112,7 +112,3 @@ overrides:
|
|||
import/no-nodejs-modules: off
|
||||
filenames/match-regex: off
|
||||
no-console: off
|
||||
- files:
|
||||
- '*.stories.js'
|
||||
rules:
|
||||
filenames/match-regex: off
|
||||
|
|
|
@ -344,18 +344,3 @@ startup-css-check as-if-foss:
|
|||
needs:
|
||||
- job: "compile-test-assets 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
|
||||
|
|
|
@ -159,7 +159,7 @@
|
|||
- *assets-cache-push
|
||||
|
||||
.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:
|
||||
- name: postgres:11.6
|
||||
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
|
||||
|
@ -168,7 +168,7 @@
|
|||
POSTGRES_HOST_AUTH_METHOD: trust
|
||||
|
||||
.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:
|
||||
- name: postgres:12
|
||||
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
|
||||
|
@ -177,7 +177,7 @@
|
|||
POSTGRES_HOST_AUTH_METHOD: trust
|
||||
|
||||
.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:
|
||||
- name: postgres:11.6
|
||||
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
|
||||
|
@ -188,7 +188,7 @@
|
|||
POSTGRES_HOST_AUTH_METHOD: trust
|
||||
|
||||
.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:
|
||||
- name: postgres:12
|
||||
command: ["postgres", "-c", "fsync=off", "-c", "synchronous_commit=off", "-c", "full_page_writes=off"]
|
||||
|
|
|
@ -8,14 +8,12 @@ pages:
|
|||
- coverage-frontend
|
||||
- karma
|
||||
- compile-production-assets
|
||||
- compile-storybook
|
||||
script:
|
||||
- mv public/ .public/
|
||||
- mkdir public/
|
||||
- mv coverage/ public/coverage-ruby/ || true
|
||||
- mv coverage-frontend/ public/coverage-frontend/ || 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.gz public/application.css.gz || true
|
||||
artifacts:
|
||||
|
|
|
@ -1 +1 @@
|
|||
df2eb006d241b399b8b6b877afab97713bb5c36a
|
||||
22f7db01953debe8e7c1c46ff2b1ffb5a143c566
|
||||
|
|
|
@ -17,7 +17,11 @@ export default {
|
|||
};
|
||||
</script>
|
||||
<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" />
|
||||
<tiptap-editor-content class="md" :editor="contentEditor.tiptapEditor" />
|
||||
</div>
|
||||
|
|
|
@ -80,6 +80,15 @@ export default {
|
|||
:tiptap-editor="contentEditor.tiptapEditor"
|
||||
@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
|
||||
data-testid="bullet-list"
|
||||
content-type="bulletList"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
import { CodeBlockLowlight } from '@tiptap/extension-code-block-lowlight';
|
||||
import * as lowlight from 'lowlight';
|
||||
import { defaultMarkdownSerializer } from 'prosemirror-markdown/src/to_markdown';
|
||||
|
||||
const extractLanguage = (element) => element.getAttribute('lang');
|
||||
|
@ -6,7 +7,14 @@ const extractLanguage = (element) => element.getAttribute('lang');
|
|||
const ExtendedCodeBlockLowlight = CodeBlockLowlight.extend({
|
||||
addAttributes() {
|
||||
return {
|
||||
...this.parent(),
|
||||
language: {
|
||||
default: null,
|
||||
parseHTML: (element) => {
|
||||
return {
|
||||
language: extractLanguage(element),
|
||||
};
|
||||
},
|
||||
},
|
||||
/* `params` is the name of the attribute that
|
||||
prosemirror-markdown uses to extract the language
|
||||
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;
|
||||
|
|
|
@ -9,6 +9,13 @@ export class ContentEditor {
|
|||
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) {
|
||||
const { _tiptapEditor: editor, _serializer: serializer } = this;
|
||||
|
||||
|
|
|
@ -14,8 +14,17 @@ import axios from '~/lib/utils/axios_utils';
|
|||
import csrf from '~/lib/utils/csrf';
|
||||
import { setUrlFragment } from '~/lib/utils/url_utility';
|
||||
import { s__, sprintf } from '~/locale';
|
||||
import Tracking from '~/tracking';
|
||||
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 = {
|
||||
markdown: '[Link Title](page-slug)',
|
||||
|
@ -104,7 +113,7 @@ export default {
|
|||
directives: {
|
||||
GlModalDirective,
|
||||
},
|
||||
mixins: [glFeatureFlagMixin()],
|
||||
mixins: [trackingMixin],
|
||||
inject: ['formatOptions', 'pageInfo'],
|
||||
data() {
|
||||
return {
|
||||
|
@ -120,6 +129,10 @@ export default {
|
|||
};
|
||||
},
|
||||
computed: {
|
||||
noContent() {
|
||||
if (this.isContentEditorActive) return this.contentEditor?.empty;
|
||||
return !this.content;
|
||||
},
|
||||
csrfToken() {
|
||||
return csrf.token;
|
||||
},
|
||||
|
@ -161,10 +174,10 @@ export default {
|
|||
return this.format === 'markdown';
|
||||
},
|
||||
showContentEditorButton() {
|
||||
return this.isMarkdownFormat && !this.useContentEditor && this.glFeatures.wikiContentEditor;
|
||||
return this.isMarkdownFormat && !this.useContentEditor;
|
||||
},
|
||||
disableSubmitButton() {
|
||||
return !this.content || !this.title || this.contentEditorRenderFailed;
|
||||
return this.noContent || !this.title || this.contentEditorRenderFailed;
|
||||
},
|
||||
isContentEditorActive() {
|
||||
return this.isMarkdownFormat && this.useContentEditor;
|
||||
|
@ -188,6 +201,8 @@ export default {
|
|||
handleFormSubmit() {
|
||||
if (this.useContentEditor) {
|
||||
this.content = this.contentEditor.getSerializedContent();
|
||||
|
||||
this.trackFormSubmit();
|
||||
}
|
||||
|
||||
this.isDirty = false;
|
||||
|
@ -236,6 +251,8 @@ export default {
|
|||
try {
|
||||
await this.contentEditor.setSerializedContent(this.content);
|
||||
this.isContentEditorLoading = false;
|
||||
|
||||
this.trackContentEditorLoaded();
|
||||
} catch (e) {
|
||||
this.contentEditorRenderFailed = true;
|
||||
}
|
||||
|
@ -258,6 +275,16 @@ export default {
|
|||
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>
|
||||
|
|
|
@ -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';
|
|
@ -1,12 +1,12 @@
|
|||
<script>
|
||||
import { GlAlert, GlLoadingIcon } from '@gitlab/ui';
|
||||
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 LocalStorageSync from '~/vue_shared/components/local_storage_sync.vue';
|
||||
import glFeatureFlagMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
|
||||
import { DEFAULT, DRAW_FAILURE, LOAD_FAILURE } from '../../constants';
|
||||
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 { listByLayers } from '../parsing_utils';
|
||||
import { IID_FAILURE, LAYER_VIEW, STAGE_VIEW, VIEW_TYPE_KEY } from './constants';
|
||||
|
|
|
@ -141,6 +141,9 @@ export default function setupVueRepositoryList() {
|
|||
href: `${historyLink}/${
|
||||
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')],
|
||||
|
|
|
@ -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' },
|
||||
};
|
|
@ -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>
|
|
@ -1,4 +1,5 @@
|
|||
@import 'mixins_and_variables_and_functions';
|
||||
@import 'highlight.js/scss/a11y-light';
|
||||
|
||||
.title .edit-wiki-header {
|
||||
width: 780px;
|
||||
|
|
|
@ -10,6 +10,10 @@
|
|||
color: $gl-text-color-secondary;
|
||||
}
|
||||
|
||||
.tree-ref-holder {
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
@include media-breakpoint-up(sm) {
|
||||
display: flex;
|
||||
|
||||
|
@ -28,7 +32,6 @@
|
|||
|
||||
.tree-ref-holder {
|
||||
float: left;
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
.tree-ref-target-holder {
|
||||
|
@ -44,8 +47,11 @@
|
|||
}
|
||||
|
||||
@include media-breakpoint-down(xs) {
|
||||
.tree-ref-container {
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.repo-breadcrumb {
|
||||
margin-top: 10px;
|
||||
position: relative;
|
||||
|
||||
.dropdown-menu {
|
||||
|
|
|
@ -6,8 +6,4 @@ class Projects::WikisController < Projects::ApplicationController
|
|||
alias_method :container, :project
|
||||
|
||||
feature_category :wiki
|
||||
|
||||
before_action do
|
||||
push_frontend_feature_flag(:wiki_content_editor, project, default_enabled: :yaml)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -11,6 +11,9 @@ class ImportExportUpload < ApplicationRecord
|
|||
mount_uploader :import_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)
|
||||
Upload.find_by(model: self, path: paths)
|
||||
end
|
||||
|
|
|
@ -26,7 +26,18 @@ module Pages
|
|||
end
|
||||
|
||||
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
|
||||
|
||||
def prefix
|
||||
|
@ -46,32 +57,5 @@ module Pages
|
|||
project.pages_metadatum.pages_deployment
|
||||
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
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
class ImportExportCleanUpService
|
||||
LAST_MODIFIED_TIME_IN_MINUTES = 1440
|
||||
DIR_DEPTH = 5
|
||||
|
||||
attr_reader :mmin, :path
|
||||
|
||||
|
@ -27,15 +28,42 @@ class ImportExportCleanUpService
|
|||
end
|
||||
|
||||
def clean_up_export_files
|
||||
Gitlab::Popen.popen(%W(find #{path} -not -path #{path} -mmin +#{mmin} -delete))
|
||||
end
|
||||
old_directories do |dir|
|
||||
FileUtils.remove_entry(dir)
|
||||
|
||||
# rubocop: disable CodeReuse/ActiveRecord
|
||||
def clean_up_export_object_files
|
||||
ImportExportUpload.where('updated_at < ?', mmin.minutes.ago).each do |upload|
|
||||
upload.remove_export_file!
|
||||
upload.save!
|
||||
logger.info(
|
||||
message: 'Removed Import/Export tmp directory',
|
||||
dir_path: dir
|
||||
)
|
||||
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
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
- add_page_startup_api_call project_blob_path(@project, tree_join(@ref, readme_path), viewer: "rich", format: "json")
|
||||
|
||||
#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
|
||||
|
||||
#js-last-commit
|
||||
|
|
|
@ -7,9 +7,11 @@
|
|||
= 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?
|
||||
.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-body
|
||||
The source project of this merge request has been removed.
|
||||
.gl-alert-container
|
||||
= sprite_icon('error', size: 16, css_class: 'gl-icon gl-alert-icon gl-alert-icon-no-title')
|
||||
.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-body
|
||||
|
|
|
@ -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
|
||||
:plain
|
||||
window.gl = window.gl || {};
|
||||
window.gl.mrWidgetData = #{serialize_issuable(@merge_request, serializer: 'widget', issues_links: true)}
|
||||
= javascript_tag do
|
||||
:plain
|
||||
window.gl = window.gl || {};
|
||||
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_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.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.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.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.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.codequality_help_path = '#{help_page_path("user/project/merge_requests/code_quality", anchor: "code-quality-reports")}';
|
||||
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.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.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.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.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.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")}';
|
||||
|
||||
#js-vue-mr-widget.mr-widget
|
||||
#js-vue-mr-widget.mr-widget
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
.tree-ref-container
|
||||
.tree-ref-container.gl-display-flex.mb-2.mb-md-0
|
||||
.tree-ref-holder
|
||||
= render 'shared/ref_switcher', destination: 'tree', path: @path, show_create: true
|
||||
|
||||
|
@ -16,5 +16,5 @@
|
|||
.project-clone-holder.d-none.d-md-inline-block>
|
||||
= 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"
|
||||
|
|
|
@ -1622,15 +1622,6 @@
|
|||
:weight: 5
|
||||
:idempotent:
|
||||
: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
|
||||
:worker_name: StageUpdateWorker
|
||||
:feature_category: :continuous_integration
|
||||
|
|
|
@ -13,9 +13,7 @@ class PipelineProcessWorker # rubocop:disable Scalability/IdempotentWorker
|
|||
data_consistency :delayed, feature_flag: :load_balancing_for_pipeline_process_worker
|
||||
|
||||
# rubocop: disable CodeReuse/ActiveRecord
|
||||
# `_build_ids` is deprecated and will be removed in 14.0
|
||||
# See: https://gitlab.com/gitlab-org/gitlab/-/issues/232806
|
||||
def perform(pipeline_id, _build_ids = nil)
|
||||
def perform(pipeline_id)
|
||||
Ci::Pipeline.find_by(id: pipeline_id).try do |pipeline|
|
||||
Ci::ProcessPipelineService
|
||||
.new(pipeline)
|
||||
|
|
|
@ -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
|
|
@ -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
|
||||
milestone: '13.9'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: true
|
||||
|
|
|
@ -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
|
||||
milestone: '11.10'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -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
|
||||
milestone: '12.4'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/14
|
|||
rollout_issue_url:
|
||||
milestone: '10.0'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
---
|
||||
name: wiki_content_editor
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/57370
|
||||
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/255919
|
||||
group: group::editor
|
||||
type: development
|
||||
default_enabled: false
|
||||
name: cached_mr_widget
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/61584
|
||||
rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/330803
|
||||
milestone: '13.12'
|
||||
type: development
|
||||
group: group::code review
|
||||
default_enabled: false
|
|
@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/30708
|
|||
rollout_issue_url:
|
||||
milestone: '13.0'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: true
|
||||
|
|
|
@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/7238
|
|||
rollout_issue_url:
|
||||
milestone: '11.7'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -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
|
||||
milestone: '13.5'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -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
|
||||
milestone: '13.5'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -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
|
||||
milestone: '13.12'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -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
|
||||
milestone: '14.0'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/23790
|
|||
rollout_issue_url:
|
||||
milestone: '12.9'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: true
|
||||
|
|
|
@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/5255
|
|||
rollout_issue_url:
|
||||
milestone: '10.8'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -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
|
||||
milestone: '13.12'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -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
|
||||
milestone: '13.12'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/34160
|
|||
rollout_issue_url:
|
||||
milestone: '13.2'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: true
|
||||
|
|
|
@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/33712
|
|||
rollout_issue_url:
|
||||
milestone: '13.2'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: true
|
||||
|
|
|
@ -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
|
||||
milestone: '13.5'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -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
|
||||
milestone: '13.12'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -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
|
||||
milestone: '13.12'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -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
|
||||
milestone: '13.10'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/8638
|
|||
rollout_issue_url:
|
||||
milestone: '11.6'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: true
|
||||
|
|
|
@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/32391
|
|||
rollout_issue_url:
|
||||
milestone: '13.1'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -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
|
||||
milestone: '12.0'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: true
|
||||
|
|
|
@ -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
|
||||
milestone: '13.3'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -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
|
||||
milestone: "13.11"
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: true
|
||||
|
|
|
@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/27
|
|||
rollout_issue_url:
|
||||
milestone: '11.10'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/53716
|
|||
rollout_issue_url:
|
||||
milestone: '13.9'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/54909
|
|||
rollout_issue_url:
|
||||
milestone: '13.10'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -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
|
||||
milestone: '13.11'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -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
|
||||
milestone: '13.12'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -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
|
||||
milestone: "13.11"
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: true
|
||||
|
|
|
@ -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
|
||||
milestone: '14.0'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: true
|
||||
|
|
|
@ -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
|
||||
milestone: '13.8'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: true
|
||||
|
|
|
@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/57045
|
|||
rollout_issue_url:
|
||||
milestone: '13.11'
|
||||
type: development
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/41304
|
|||
rollout_issue_url:
|
||||
milestone: '13.4'
|
||||
type: ops
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: true
|
||||
|
|
|
@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/56658
|
|||
rollout_issue_url:
|
||||
milestone: "13.12"
|
||||
type: ops
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -4,5 +4,5 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/44409
|
|||
rollout_issue_url:
|
||||
milestone: '13.5'
|
||||
type: ops
|
||||
group: group::continuous integration
|
||||
group: group::pipeline execution
|
||||
default_enabled: false
|
||||
|
|
|
@ -23,6 +23,7 @@ exceptions:
|
|||
- AWS
|
||||
- BSD
|
||||
- CAS
|
||||
- CDN
|
||||
- CLI
|
||||
- CNA
|
||||
- CNAME
|
||||
|
@ -48,10 +49,12 @@ exceptions:
|
|||
- EOL
|
||||
- EXIF
|
||||
- FAQ
|
||||
- FIFO
|
||||
- FIPS
|
||||
- FOSS
|
||||
- FQDN
|
||||
- FREE
|
||||
- FTP
|
||||
- GCP
|
||||
- GDK
|
||||
- GDPR
|
||||
|
@ -61,6 +64,7 @@ exceptions:
|
|||
- GNU
|
||||
- GPG
|
||||
- GPL
|
||||
- GPU
|
||||
- GUI
|
||||
- HAML
|
||||
- HDD
|
||||
|
@ -94,11 +98,13 @@ exceptions:
|
|||
- MIT
|
||||
- MVC
|
||||
- NAT
|
||||
- NDA
|
||||
- NFS
|
||||
- NGINX
|
||||
- NOTE
|
||||
- NTP
|
||||
- ONLY
|
||||
- OSS
|
||||
- OWASP
|
||||
- PAT
|
||||
- PCI-DSS
|
||||
|
@ -108,8 +114,10 @@ exceptions:
|
|||
- PGP
|
||||
- PHP
|
||||
- PNG
|
||||
- POSIX
|
||||
- POST
|
||||
- PUT
|
||||
- RAID
|
||||
- RAM
|
||||
- RDP
|
||||
- REST
|
||||
|
@ -131,6 +139,7 @@ exceptions:
|
|||
- SDK
|
||||
- SELF
|
||||
- SEO
|
||||
- SFTP
|
||||
- SHA
|
||||
- SLA
|
||||
- SMS
|
||||
|
@ -165,6 +174,7 @@ exceptions:
|
|||
- UUID
|
||||
- VCS
|
||||
- VPC
|
||||
- VPN
|
||||
- WIP
|
||||
- WSL
|
||||
- XML
|
||||
|
|
|
@ -441,6 +441,7 @@ Pritaly
|
|||
Priyanka
|
||||
profiler
|
||||
Prometheus
|
||||
ProseMirror
|
||||
protobuf
|
||||
protobufs
|
||||
proxied
|
||||
|
@ -642,6 +643,7 @@ timeboxed
|
|||
timeboxes
|
||||
timeboxing
|
||||
timecop
|
||||
tiptap
|
||||
todos
|
||||
tokenizer
|
||||
Tokenizers
|
||||
|
|
|
@ -79,7 +79,7 @@ adapter.ldap_search(options)
|
|||
```
|
||||
|
||||
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
|
||||
|
||||
|
|
|
@ -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
|
||||
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.
|
||||
|
||||
Follow the steps below to set up a custom hook:
|
||||
|
|
|
@ -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).
|
||||
|
||||
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.
|
||||
|
||||
|
|
|
@ -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
|
||||
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.
|
||||
|
||||
NOTE:
|
||||
|
|
|
@ -17,7 +17,7 @@ server.
|
|||
|
||||
## 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:
|
||||
|
||||
### For HTTP
|
||||
|
|
|
@ -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
|
||||
`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.
|
||||
- `/home/git/gitlab/log/exceptions_json.log` for installations from source.
|
||||
|
|
|
@ -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):
|
||||
|
||||
```ruby
|
||||
::Gitlab::CurrentSettings.update_attributes!(maintenance_mode: true)
|
||||
::Gitlab::CurrentSettings.update_attributes!(maintenance_mode_message: "New message")
|
||||
::Gitlab::CurrentSettings.update!(maintenance_mode: true)
|
||||
::Gitlab::CurrentSettings.update!(maintenance_mode_message: "New message")
|
||||
```
|
||||
|
||||
## Disable Maintenance Mode
|
||||
|
|
|
@ -25,7 +25,7 @@ NOTE:
|
|||
The instructions below must be modified in accordance with your
|
||||
configuration settings if you have used the advanced Redis
|
||||
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.
|
||||
|
||||
|
|
|
@ -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:
|
||||
|
||||
- [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 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)
|
||||
|
||||
Each entry in the above files represents a queue on which Sidekiq processes
|
||||
can be started.
|
||||
|
|
|
@ -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
|
||||
settings in `gitlab.yml`.
|
||||
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.
|
||||
|
||||
The contents of `gitlab.yml` are:
|
||||
|
|
|
@ -27,7 +27,7 @@ be textually exported. This ensures that:
|
|||
To configure the Pseudonymizer, you need to:
|
||||
|
||||
- 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.
|
||||
Alternatively, you can use an absolute file path.
|
||||
- Use an object storage and specify the connection parameters in the `pseudonymizer.upload.connection` configuration option.
|
||||
|
|
|
@ -59,7 +59,7 @@ care of upgrading Redis to the latest supported version.
|
|||
Note also that you may elect to override all references to
|
||||
`/home/git/gitlab/config/resque.yml` in accordance with the advanced Redis
|
||||
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
|
||||
[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:
|
||||
|
||||
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:
|
||||
|
||||
```yaml
|
||||
|
|
|
@ -875,7 +875,7 @@ License.current.trial?
|
|||
|
||||
### 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
|
||||
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
|
||||
|
||||
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
|
||||
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:
|
||||
|
||||
```ruby
|
||||
ApplicationSetting.last.update_attributes(elasticsearch_url: '<your ES URL and port>')
|
||||
ApplicationSetting.last.update(elasticsearch_url: '<your ES URL and port>')
|
||||
|
||||
#or
|
||||
|
||||
ApplicationSetting.last.update_attributes(elasticsearch_indexing: false)
|
||||
ApplicationSetting.last.update(elasticsearch_indexing: false)
|
||||
```
|
||||
|
||||
#### Getting attributes
|
||||
|
|
|
@ -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.
|
||||
|
||||
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.
|
||||
Contributions are welcome.
|
||||
|
||||
|
@ -73,7 +73,7 @@ Only API version v4 is available. Version v3 was removed in
|
|||
## How to use 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`.
|
||||
|
||||
### Valid API request
|
||||
|
|
|
@ -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.
|
||||
|
||||
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
|
||||
|
||||
|
|
|
@ -7321,6 +7321,38 @@ Represents an epic on an issue board.
|
|||
|
||||
#### 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`
|
||||
|
||||
Children (sub-epics) of the epic.
|
||||
|
@ -8479,6 +8511,38 @@ Represents an epic.
|
|||
|
||||
#### 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`
|
||||
|
||||
Children (sub-epics) of the epic.
|
||||
|
|
|
@ -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",
|
||||
"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",
|
||||
"license_url": "https://gitlab.com/gitlab-org/gitlab/blob/master/LICENSE",
|
||||
"license_url": "https://gitlab.com/gitlab-org/gitlab/-/blob/master/LICENSE",
|
||||
"license": {
|
||||
"key": "mit",
|
||||
"name": "MIT License",
|
||||
|
|
|
@ -754,7 +754,7 @@ Set Jira service for a project.
|
|||
|
||||
> Starting with GitLab 8.14, `api_url`, `issues_url`, `new_issue_url` and
|
||||
> `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
|
||||
PUT /projects/:id/services/jira
|
||||
|
|
|
@ -122,7 +122,7 @@ For similar reasons as highlighted above, currently, it's not feasible to extrac
|
|||
|
||||
#### 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.
|
||||
|
||||
|
|
|
@ -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,
|
||||
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
|
||||
|
||||
|
@ -162,7 +162,7 @@ Instead, we tell npm to use `./.npm`, and cache it per-branch:
|
|||
|
||||
```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
|
||||
|
||||
|
@ -189,7 +189,7 @@ are cached per-branch:
|
|||
|
||||
```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
|
||||
|
||||
|
@ -218,7 +218,7 @@ pip's cache is defined under `.cache/pip/` and both are cached per-branch:
|
|||
|
||||
```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
|
||||
|
||||
|
@ -258,7 +258,7 @@ jobs inherit it. Gems are installed in `vendor/ruby/` and are cached per-branch:
|
|||
|
||||
```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
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ separate example projects:
|
|||
## CI/CD templates
|
||||
|
||||
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
|
||||
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
|
||||
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)**
|
||||
|
||||
|
|
|
@ -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
|
||||
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`.
|
||||
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
|
||||
|
|
|
@ -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 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
|
||||
[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.
|
||||
|
||||
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:
|
||||
|
||||
|
@ -4218,7 +4218,7 @@ finishes.
|
|||
|
||||
### `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).
|
||||
Requires the [`release-cli`](https://gitlab.com/gitlab-org/release-cli/-/tree/master/docs)
|
||||
|
|
|
@ -61,7 +61,7 @@ GitLab instance, see the [administration documentation](../administration/index.
|
|||
|
||||
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)
|
||||
- [Guidelines for implementing Enterprise Edition features](ee_features.md)
|
||||
- [Danger bot](dangerbot.md)
|
||||
|
|
|
@ -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).
|
||||
|
||||
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`.
|
||||
|
||||
## Deep Dive
|
||||
|
@ -862,7 +862,7 @@ overhead. If you are writing:
|
|||
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 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
|
||||
`Internal service error`.
|
||||
|
||||
|
@ -1649,7 +1649,7 @@ is merged.
|
|||
|
||||
### `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
|
||||
`Time` and `DateTime` objects.
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ to access them as we do in Rails views), local variables are fine.
|
|||
|
||||
## 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
|
||||
|
||||
|
@ -28,7 +28,7 @@ See the [Documentation Style Guide RESTful API page](documentation/restful_api_s
|
|||
## Methods and parameters description
|
||||
|
||||
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):
|
||||
|
||||
- `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
|
||||
associations and data returned in the API. An example of this scope can
|
||||
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
|
||||
(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.
|
||||
|
||||
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 more context and discussion about preloading see
|
||||
|
|
|
@ -94,7 +94,7 @@ project.actual_limits.exceeded?(:project_hooks, 10)
|
|||
|
||||
#### `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
|
||||
that the count of the records for the current model does not exceed the defined
|
||||
limit.
|
||||
|
|
|
@ -46,14 +46,14 @@ and pre-compiled assets.
|
|||
|
||||
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
|
||||
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.
|
||||
|
||||
When serving repositories over HTTP/HTTPS GitLab uses the GitLab API to resolve authorization and
|
||||
access and to serve Git objects.
|
||||
|
||||
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
|
||||
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.
|
||||
|
@ -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)
|
||||
- [Charts](https://docs.gitlab.com/charts/charts/gitlab/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)
|
||||
- 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:
|
||||
- [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)
|
||||
- [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)
|
||||
- [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)
|
||||
- Layer: Monitoring
|
||||
- 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)
|
||||
- [Charts](https://docs.gitlab.com/charts/charts/gitlab/sidekiq/)
|
||||
- [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)
|
||||
- [GDK](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)
|
||||
- Layer: Core Service (Processor)
|
||||
- Process: `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.
|
||||
|
||||
- [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:
|
||||
- [Omnibus](https://docs.gitlab.com/omnibus/settings/puma.html)
|
||||
- [Charts](https://docs.gitlab.com/charts/charts/gitlab/webservice/)
|
||||
- [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)
|
||||
- Process: `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:
|
||||
- [Omnibus](../administration/auth/ldap/index.md)
|
||||
- [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)
|
||||
- Layer: Core Service (Processor)
|
||||
- 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:
|
||||
- [Omnibus](https://docs.gitlab.com/omnibus/settings/smtp.html)
|
||||
- [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)
|
||||
- [GDK](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)
|
||||
- Layer: Core Service (Processor)
|
||||
- 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:
|
||||
- [Omnibus](../administration/incoming_email.md)
|
||||
- [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)
|
||||
- [GDK](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)
|
||||
- Layer: Core Service (Processor)
|
||||
- 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
|
||||
`~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.
|
||||
|
||||
[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
|
||||
|
||||
[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:
|
||||
|
||||
```shell
|
||||
|
|
|
@ -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).
|
||||
|
||||
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
|
||||
template is a top-level template that includes other sub-templates,
|
||||
which then defines jobs.
|
||||
|
@ -29,12 +29,12 @@ which then defines jobs.
|
|||
Some jobs use images that are built from external projects:
|
||||
|
||||
- [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
|
||||
[`auto-build-image`](https://gitlab.com/gitlab-org/cluster-integration/auto-build-image)
|
||||
project.
|
||||
- [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
|
||||
[`auto-deploy-image`](https://gitlab.com/gitlab-org/cluster-integration/auto-deploy-image)
|
||||
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
|
||||
DevOps is enabled that are not present in a normal CI job. These can be
|
||||
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
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ file, as well as information and history about our changelog process.
|
|||
## Overview
|
||||
|
||||
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
|
||||
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
|
||||
|
|
|
@ -67,7 +67,7 @@ The communication between runners and the Rails server occurs through a set of A
|
|||
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,
|
||||
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
|
||||
`running` state, which again triggers `ProcessPipelineService` due to the status change.
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
|
@ -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.
|
||||
|
||||
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. Assigns it to the runner
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue