Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
c4a790760b
commit
22f2ba4a5e
|
|
@ -2,6 +2,7 @@ cache-workhorse:
|
|||
extends:
|
||||
- .default-retry
|
||||
- .default-before_script
|
||||
- .failure_category_after_script
|
||||
- .ruby-cache
|
||||
- .setup-test-env-cache
|
||||
- .caching:rules:cache-workhorse
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ db:setup pg16:
|
|||
extends:
|
||||
- .use-pg16
|
||||
- .default-before_script
|
||||
- .failure_category_after_script
|
||||
- .ruby-cache
|
||||
- .rails:rules:setup-test-env
|
||||
script:
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
- .default-retry
|
||||
- .default-before_script
|
||||
- .assets-compile-cache
|
||||
- .failure_category_after_script
|
||||
- .with-ci-node-image
|
||||
variables:
|
||||
SETUP_DB: "false"
|
||||
|
|
@ -30,6 +31,7 @@
|
|||
|
||||
.update-cache-base:
|
||||
after_script:
|
||||
- !reference [.failure_category_after_script, after_script]
|
||||
- yarn patch-package --reverse # To avoid caching patched modules
|
||||
|
||||
compile-production-assets:
|
||||
|
|
@ -51,6 +53,7 @@ compile-production-assets:
|
|||
after_script:
|
||||
- source scripts/utils.sh
|
||||
- echo "GLCI_ASSETS_IMAGE_TAG=$(assets_image_tag)" > $GLCI_ASSETS_TAG_ENV_FILE_PATH
|
||||
- !reference [.failure_category_after_script, after_script]
|
||||
artifacts:
|
||||
name: webpack-report
|
||||
expire_in: 31d
|
||||
|
|
@ -148,6 +151,7 @@ retrieve-frontend-fixtures:
|
|||
extends:
|
||||
- .default-retry
|
||||
- .default-before_script
|
||||
- .failure_category_after_script
|
||||
- .ruby-cache
|
||||
- .use-pg16
|
||||
- .repo-from-artifacts
|
||||
|
|
@ -259,6 +263,7 @@ upload-graphql-schema-dump:
|
|||
- .default-retry
|
||||
- .yarn-cache
|
||||
- .with-ci-node-image
|
||||
- .failure_category_after_script
|
||||
variables:
|
||||
# Disable warnings in browserslist which can break on backports
|
||||
# https://github.com/browserslist/browserslist/blob/a287ec6/node.js#L367-L384
|
||||
|
|
|
|||
|
|
@ -32,6 +32,21 @@
|
|||
- !reference [.default-utils-before_script, before_script]
|
||||
- source scripts/prepare_build.sh
|
||||
|
||||
# Requirements for this after_script:
|
||||
#
|
||||
# - Ruby
|
||||
# - From the gitlab-org/gitlab project:
|
||||
# - scripts/utils.sh
|
||||
# - tooling/lib/tooling/glci/failure_analyzer.rb
|
||||
.failure_category_after_script:
|
||||
after_script:
|
||||
# We need this at the very top, because the section_start/section_end logic is defined there.
|
||||
- source scripts/utils.sh
|
||||
- |
|
||||
section_start "failure-analyzer" "Report failure category"
|
||||
tooling/lib/tooling/glci/failure_analyzer.rb $CI_JOB_ID || true
|
||||
section_end "failure-analyzer"
|
||||
|
||||
.repo-from-artifacts:
|
||||
variables:
|
||||
GIT_STRATEGY: "${CI_FETCH_REPO_GIT_STRATEGY}"
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ graphql-verify:
|
|||
- .default-retry
|
||||
- .ruby-cache
|
||||
- .default-before_script
|
||||
- .failure_category_after_script
|
||||
- .graphql:rules:graphql-verify
|
||||
stage: test
|
||||
needs: []
|
||||
|
|
|
|||
|
|
@ -13,6 +13,7 @@ danger-review:
|
|||
extends:
|
||||
- .default-retry
|
||||
- .ruby-node-cache
|
||||
- .failure_category_after_script
|
||||
# extending from .review:rules:danger doesn't work
|
||||
rules: !reference [.review:rules:danger, rules]
|
||||
variables:
|
||||
|
|
|
|||
|
|
@ -10,8 +10,9 @@
|
|||
- .default-before_script
|
||||
- .production
|
||||
- .ruby-cache
|
||||
- .preflight:rules:rails-production-server-boot
|
||||
- .use-pg16
|
||||
- .failure_category_after_script
|
||||
- .preflight:rules:rails-production-server-boot
|
||||
artifacts:
|
||||
expire_in: 7d
|
||||
when: always
|
||||
|
|
@ -59,6 +60,7 @@ rails-production-server-boot-puma-cng:
|
|||
ruby_syntax:
|
||||
extends:
|
||||
- .preflight-job-base
|
||||
- .failure_category_after_script
|
||||
- .preflight:rules:ruby_syntax
|
||||
before_script:
|
||||
- source scripts/utils.sh
|
||||
|
|
|
|||
|
|
@ -45,6 +45,16 @@ stages:
|
|||
# image path and registry needs to be defined explicitly
|
||||
image: ${REGISTRY_HOST}/${REGISTRY_GROUP}/gitlab-build-images/ci/${BUILD_OS}-${OS_VERSION}-slim-ruby-${RUBY_VERSION}:rubygems-${RUBYGEMS_VERSION}-git-${GIT_VERSION}
|
||||
|
||||
# Taken from .gitlab/ci/global.gitlab-ci.yml, but adapted the paths
|
||||
.failure_category_after_script:
|
||||
after_script:
|
||||
# We need this at the very top, because the section_start/section_end logic is defined there.
|
||||
- source $CI_PROJECT_DIR/scripts/utils.sh
|
||||
- |
|
||||
section_start "failure-analyzer" "Report failure category"
|
||||
$CI_PROJECT_DIR/tooling/lib/tooling/glci/failure_analyzer.rb $CI_JOB_ID || true
|
||||
section_end "failure-analyzer"
|
||||
|
||||
.qa-install:
|
||||
extends:
|
||||
- .ruby-image
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ variables:
|
|||
# Helm chart ref used by test-on-cng pipeline
|
||||
GITLAB_HELM_CHART_REF: "074bb942c9c65613c2576ce418f59b8577fff37c"
|
||||
# Specific ref for cng-mirror project to trigger builds for
|
||||
GITLAB_CNG_MIRROR_REF: "d7a1ce4530de754f953e655999b617058e3f3211"
|
||||
GITLAB_CNG_MIRROR_REF: "951f0f683ca1e1bde564619619809660de68feb3"
|
||||
# Makes sure some of the common scripts from pipeline-common use bundler to execute commands
|
||||
RUN_WITH_BUNDLE: "true"
|
||||
# Makes sure reporting script defined in .gitlab-qa-report from pipeline-common is executed from correct folder
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ include:
|
|||
extends:
|
||||
- .default-retry
|
||||
- .default-before_script
|
||||
- .failure_category_after_script
|
||||
- .ruby-cache
|
||||
|
||||
.base-script:
|
||||
|
|
@ -111,10 +112,7 @@ include:
|
|||
after_script:
|
||||
# We need this at the very top, because the section_start/section_end logic is defined there.
|
||||
- source scripts/utils.sh
|
||||
- |
|
||||
section_start "failure-analyzer" "Report failure category"
|
||||
tooling/lib/tooling/glci/failure_analyzer.rb $CI_JOB_ID || true
|
||||
section_end "failure-analyzer"
|
||||
- !reference [.failure_category_after_script, after_script]
|
||||
- log_disk_usage # https://gitlab.com/gitlab-org/gitlab/-/issues/478880
|
||||
- bundle exec gem list gitlab_quality-test_tooling
|
||||
- |
|
||||
|
|
|
|||
|
|
@ -90,6 +90,7 @@ gitlab_git_test:
|
|||
verify-tests-yml:
|
||||
extends:
|
||||
- .setup:rules:verify-tests-yml
|
||||
- .failure_category_after_script
|
||||
image: ${GITLAB_DEPENDENCY_PROXY_ADDRESS}ruby:${RUBY_VERSION}-alpine3.20
|
||||
stage: preflight
|
||||
needs: []
|
||||
|
|
@ -111,6 +112,7 @@ generate-frontend-fixtures-mapping:
|
|||
extends:
|
||||
- .setup:rules:generate-frontend-fixtures-mapping
|
||||
- .use-pg16
|
||||
- .failure_category_after_script
|
||||
- .ruby-cache
|
||||
needs: ["setup-test-env"]
|
||||
stage: prepare
|
||||
|
|
@ -126,7 +128,9 @@ generate-frontend-fixtures-mapping:
|
|||
- ${FRONTEND_FIXTURES_MAPPING_PATH}
|
||||
|
||||
detect-tests:
|
||||
extends: .rails:rules:detect-tests
|
||||
extends:
|
||||
- .rails:rules:detect-tests
|
||||
- .failure_category_after_script
|
||||
image: ${GITLAB_DEPENDENCY_PROXY_ADDRESS}ruby:${RUBY_VERSION}-slim
|
||||
needs: []
|
||||
stage: prepare
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ static-analysis:
|
|||
extends:
|
||||
- .static-analysis-base
|
||||
- .static-analysis-cache
|
||||
- .failure_category_after_script
|
||||
- .static-analysis:rules:static-analysis
|
||||
parallel: 2
|
||||
script:
|
||||
|
|
@ -140,6 +141,7 @@ rubocop:
|
|||
extends:
|
||||
- .static-analysis-base
|
||||
- .rubocop-job-cache
|
||||
- .failure_category_after_script
|
||||
- .static-analysis:rules:rubocop
|
||||
needs:
|
||||
- job: detect-tests
|
||||
|
|
@ -211,6 +213,7 @@ rails-next-dependency-check:
|
|||
echo "Gemfile.next.lock contains outdated dependencies, please run the following command and push the changes:"
|
||||
echo "bundle exec rake bundler:gemfile:sync"
|
||||
fi
|
||||
- !reference [.failure_category_after_script, after_script]
|
||||
|
||||
feature-flags-usage:
|
||||
extends:
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@
|
|||
retrieve-tests-metadata:
|
||||
extends:
|
||||
- .tests-metadata-state
|
||||
- .failure_category_after_script
|
||||
- .fast-no-clone-job
|
||||
- .test-metadata:rules:retrieve-tests-metadata
|
||||
# We use a smaller image for this job only (update-tests-metadata compiles some gems)
|
||||
|
|
|
|||
|
|
@ -58,6 +58,7 @@ workflow:
|
|||
- !reference [.qa-install, before_script]
|
||||
- !reference [.cng-deploy-cmd, script]
|
||||
after_script:
|
||||
- !reference [.failure_category_after_script, after_script]
|
||||
- !reference [.gitlab-qa-report, after_script]
|
||||
- bundle exec orchestrator log events --save
|
||||
- bundle exec orchestrator log pods --save --containers all --no-fail-on-missing-pods
|
||||
|
|
|
|||
|
|
@ -62,6 +62,7 @@ workflow:
|
|||
RSPEC_LAST_RUN_RESULTS_FILE: "$CI_PROJECT_DIR/qa/tmp/examples.txt"
|
||||
GIT_STRATEGY: "none"
|
||||
after_script:
|
||||
- !reference [.failure_category_after_script, after_script]
|
||||
- !reference [.with-gdk-log, after_script]
|
||||
- !reference [.gitlab-qa-report, after_script]
|
||||
artifacts:
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@
|
|||
- echo "Running - '$QA_COMMAND'"
|
||||
- eval "$QA_COMMAND"
|
||||
after_script:
|
||||
- !reference [.failure_category_after_script, after_script]
|
||||
- !reference [.merge-junit, after_script]
|
||||
- !reference [.gitlab-qa-report, after_script]
|
||||
allow_failure: true
|
||||
|
|
|
|||
|
|
@ -150,7 +150,6 @@ Style/InlineDisableAnnotation:
|
|||
- 'app/graphql/graphql_triggers.rb'
|
||||
- 'app/graphql/mutations/issues/update.rb'
|
||||
- 'app/graphql/mutations/projects/sync_fork.rb'
|
||||
- 'app/graphql/mutations/work_items/export.rb'
|
||||
- 'app/graphql/resolvers/base_resolver.rb'
|
||||
- 'app/graphql/resolvers/ci/runner_groups_resolver.rb'
|
||||
- 'app/graphql/resolvers/ci/runner_job_count_resolver.rb'
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
<script>
|
||||
import { GlIntersperse, GlLink, GlSprintf } from '@gitlab/ui';
|
||||
import { GlIntersperse, GlLink } from '@gitlab/ui';
|
||||
import { helpPagePath } from '~/helpers/help_page_helper';
|
||||
import { s__ } from '~/locale';
|
||||
import HelpPopover from '~/vue_shared/components/help_popover.vue';
|
||||
|
|
@ -22,7 +22,6 @@ export default {
|
|||
components: {
|
||||
GlIntersperse,
|
||||
GlLink,
|
||||
GlSprintf,
|
||||
HelpPopover,
|
||||
RunnerDetail,
|
||||
RunnerMaintenanceNoteDetail: () =>
|
||||
|
|
@ -140,34 +139,13 @@ export default {
|
|||
class="gl-border-t-1 gl-border-t-default gl-pt-4 gl-border-t-solid"
|
||||
:value="runner.maintenanceNoteHtml"
|
||||
/>
|
||||
|
||||
<runner-detail>
|
||||
<template #label>
|
||||
{{ s__('Runners|Runners') }}
|
||||
<help-popover>
|
||||
<gl-sprintf
|
||||
:message="
|
||||
s__(
|
||||
'Runners|Runners are grouped when they have the same authentication token. This happens when you re-use a runner configuration in more than one runner manager. %{linkStart}How does this work?%{linkEnd}',
|
||||
)
|
||||
"
|
||||
>
|
||||
<template #link="{ content }"
|
||||
><gl-link :href="$options.RUNNER_MANAGERS_HELP_URL" target="_blank">{{
|
||||
content
|
||||
}}</gl-link></template
|
||||
>
|
||||
</gl-sprintf>
|
||||
</help-popover>
|
||||
</template>
|
||||
<template #value>
|
||||
<runner-managers-detail :runner="runner" />
|
||||
</template>
|
||||
</runner-detail>
|
||||
</dl>
|
||||
</div>
|
||||
|
||||
<runner-groups v-if="isGroupRunner" :runner="runner" />
|
||||
<runner-projects v-if="isProjectRunner" :runner="runner" />
|
||||
<div class="gl-mt-3 gl-flex gl-flex-col gl-gap-5">
|
||||
<runner-managers-detail :runner="runner" />
|
||||
<runner-groups v-if="isGroupRunner" :runner="runner" />
|
||||
<runner-projects v-if="isProjectRunner" :runner="runner" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
<script>
|
||||
import { GlCollapse, GlButton, GlIcon, GlSkeletonLoader } from '@gitlab/ui';
|
||||
import { __, s__, formatNumber } from '~/locale';
|
||||
import { GlLink, GlSprintf } from '@gitlab/ui';
|
||||
import { s__, formatNumber } from '~/locale';
|
||||
import { createAlert } from '~/alert';
|
||||
import CrudComponent from '~/vue_shared/components/crud_component.vue';
|
||||
import HelpPopover from '~/vue_shared/components/help_popover.vue';
|
||||
import runnerManagersQuery from '../graphql/show/runner_managers.query.graphql';
|
||||
import { I18N_FETCH_ERROR } from '../constants';
|
||||
import { captureException } from '../sentry_utils';
|
||||
|
|
@ -11,11 +13,11 @@ import RunnerManagersTable from './runner_managers_table.vue';
|
|||
export default {
|
||||
name: 'RunnerManagersDetail',
|
||||
components: {
|
||||
GlCollapse,
|
||||
GlButton,
|
||||
GlIcon,
|
||||
GlSkeletonLoader,
|
||||
GlLink,
|
||||
GlSprintf,
|
||||
RunnerManagersTable,
|
||||
CrudComponent,
|
||||
HelpPopover,
|
||||
},
|
||||
props: {
|
||||
runner: {
|
||||
|
|
@ -28,17 +30,12 @@ export default {
|
|||
},
|
||||
data() {
|
||||
return {
|
||||
skip: true,
|
||||
expanded: false,
|
||||
managers: [],
|
||||
};
|
||||
},
|
||||
apollo: {
|
||||
managers: {
|
||||
query: runnerManagersQuery,
|
||||
skip() {
|
||||
return this.skip;
|
||||
},
|
||||
variables() {
|
||||
return { runnerId: this.runner.id };
|
||||
},
|
||||
|
|
@ -58,24 +55,10 @@ export default {
|
|||
runnerManagersCountFormatted() {
|
||||
return formatNumber(this.runnerManagersCount);
|
||||
},
|
||||
icon() {
|
||||
return this.expanded ? 'chevron-down' : 'chevron-right';
|
||||
},
|
||||
text() {
|
||||
return this.expanded ? __('Hide details') : __('Show details');
|
||||
},
|
||||
loading() {
|
||||
return this.$apollo?.queries.managers.loading;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
fetchManagers() {
|
||||
this.skip = false;
|
||||
},
|
||||
toggleExpanded() {
|
||||
this.expanded = !this.expanded;
|
||||
},
|
||||
},
|
||||
fields: [
|
||||
tableField({ key: 'systemId', label: s__('Runners|System ID') }),
|
||||
tableField({
|
||||
|
|
@ -89,24 +72,37 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<gl-icon name="container-image" variant="subtle" />
|
||||
{{ runnerManagersCountFormatted }}
|
||||
<gl-button
|
||||
v-if="runnerManagersCount"
|
||||
data-testid="runner-button"
|
||||
variant="link"
|
||||
@mouseover.once="fetchManagers"
|
||||
@focus.once="fetchManagers"
|
||||
@click.once="fetchManagers"
|
||||
@click="toggleExpanded"
|
||||
>
|
||||
<gl-icon :name="icon" /> {{ text }}
|
||||
</gl-button>
|
||||
<crud-component
|
||||
v-if="runnerManagersCount > 0"
|
||||
:title="s__('Runners|Runners')"
|
||||
icon="container-image"
|
||||
:count="runnerManagersCountFormatted"
|
||||
:is-loading="loading"
|
||||
anchor-id="runner-managers"
|
||||
is-collapsible
|
||||
collapsed
|
||||
persist-collapsed-state
|
||||
class="!gl-mt-0"
|
||||
data-testid="runner-managers"
|
||||
>
|
||||
<template #count>
|
||||
<help-popover>
|
||||
<gl-sprintf
|
||||
:message="
|
||||
s__(
|
||||
'Runners|Runners are grouped when they have the same authentication token. This happens when you re-use a runner configuration in more than one runner manager. %{linkStart}How does this work?%{linkEnd}',
|
||||
)
|
||||
"
|
||||
>
|
||||
<template #link="{ content }"
|
||||
><gl-link :href="$options.RUNNER_MANAGERS_HELP_URL" target="_blank">{{
|
||||
content
|
||||
}}</gl-link></template
|
||||
>
|
||||
</gl-sprintf>
|
||||
</help-popover>
|
||||
</template>
|
||||
|
||||
<gl-collapse :visible="expanded" class="gl-mt-5">
|
||||
<gl-skeleton-loader v-if="loading" />
|
||||
<runner-managers-table v-else-if="managers.length" :items="managers" />
|
||||
</gl-collapse>
|
||||
</div>
|
||||
<runner-managers-table :items="managers" />
|
||||
</crud-component>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<gl-table-lite :fields="$options.fields" :items="items">
|
||||
<gl-table-lite :fields="$options.fields" :items="items" stacked="md">
|
||||
<template #head(systemId)="{ label }">
|
||||
{{ label }}
|
||||
<help-popover>
|
||||
|
|
|
|||
|
|
@ -60,6 +60,10 @@
|
|||
"MergeRequest",
|
||||
"WorkItemWidgetCurrentUserTodos"
|
||||
],
|
||||
"DependencyInterface": [
|
||||
"Dependency",
|
||||
"DependencyAggregation"
|
||||
],
|
||||
"DependencyLinkMetadata": [
|
||||
"NugetDependencyLinkMetadata"
|
||||
],
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ query requestingReview(
|
|||
$reviewerWildcardId: ReviewerWildcardId
|
||||
$mergedAfter: Time
|
||||
$not: MergeRequestsResolverNegatedParams
|
||||
$ignoredReviewerUsername: String
|
||||
$perPage: Int!
|
||||
$afterCursor: String
|
||||
$sort: MergeRequestSort = UPDATED_DESC
|
||||
|
|
@ -22,6 +23,7 @@ query requestingReview(
|
|||
reviewerWildcardId: $reviewerWildcardId
|
||||
mergedAfter: $mergedAfter
|
||||
not: $not
|
||||
ignoredReviewerUsername: $ignoredReviewerUsername
|
||||
or: $or
|
||||
first: $perPage
|
||||
after: $afterCursor
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ query requestingReviewAuthorOrAssignee(
|
|||
$reviewerWildcardId: ReviewerWildcardId
|
||||
$mergedAfter: Time
|
||||
$not: MergeRequestsResolverNegatedParams
|
||||
$ignoredReviewerUsername: String
|
||||
$perPage: Int!
|
||||
$afterCursor: String
|
||||
$sort: MergeRequestSort = UPDATED_DESC
|
||||
|
|
@ -23,6 +24,7 @@ query requestingReviewAuthorOrAssignee(
|
|||
reviewerWildcardId: $reviewerWildcardId
|
||||
mergedAfter: $mergedAfter
|
||||
not: $not
|
||||
ignoredReviewerUsername: $ignoredReviewerUsername
|
||||
or: $or
|
||||
first: $perPage
|
||||
after: $afterCursor
|
||||
|
|
|
|||
|
|
@ -59,7 +59,7 @@ export default {
|
|||
@action="trackAndClose(ideItem.tracking)"
|
||||
>
|
||||
<template #list-item>
|
||||
<span class="gl-mb-2 gl-flex gl-items-center gl-justify-between">
|
||||
<span class="gl-flex gl-items-center gl-justify-between">
|
||||
<span>{{ ideItem.text }}</span>
|
||||
<kbd v-if="ideItem.shortcut && !shortcutsDisabled" class="flat">{{ ideItem.shortcut }}</kbd>
|
||||
</span>
|
||||
|
|
|
|||
|
|
@ -147,6 +147,30 @@ export default {
|
|||
},
|
||||
}));
|
||||
},
|
||||
groups() {
|
||||
let firstVisibleGroup = null;
|
||||
|
||||
return [
|
||||
// Important: the order of this array must match the order of the
|
||||
// GlDisclosureDropdownGroups in the template.
|
||||
['sshUrl', this.sshUrl],
|
||||
['httpUrl', this.httpUrl],
|
||||
['kerberosUrl', this.kerberosUrl],
|
||||
['ideGroup', this.ideGroup.length > 0],
|
||||
['downloadSourceCode', this.directoryDownloadLinks.length > 0],
|
||||
['downloadDirectory', this.currentPath && this.directoryDownloadLinks.length > 0],
|
||||
].reduce((acc, [groupName, shouldShowGroup]) => {
|
||||
let bordered = Boolean(shouldShowGroup);
|
||||
|
||||
if (!firstVisibleGroup && shouldShowGroup) {
|
||||
firstVisibleGroup = groupName;
|
||||
bordered = false;
|
||||
}
|
||||
|
||||
acc[groupName] = { show: shouldShowGroup, bordered };
|
||||
return acc;
|
||||
}, {});
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
closeDropdown() {
|
||||
|
|
@ -189,7 +213,7 @@ export default {
|
|||
:auto-close="false"
|
||||
data-testid="code-dropdown"
|
||||
>
|
||||
<gl-disclosure-dropdown-group v-if="sshUrl">
|
||||
<gl-disclosure-dropdown-group v-if="groups.sshUrl.show" :bordered="groups.sshUrl.bordered">
|
||||
<code-dropdown-clone-item
|
||||
:label="__('Clone with SSH')"
|
||||
:link="sshUrl"
|
||||
|
|
@ -199,7 +223,7 @@ export default {
|
|||
/>
|
||||
</gl-disclosure-dropdown-group>
|
||||
|
||||
<gl-disclosure-dropdown-group v-if="httpUrl">
|
||||
<gl-disclosure-dropdown-group v-if="groups.httpUrl.show" :bordered="groups.httpUrl.bordered">
|
||||
<code-dropdown-clone-item
|
||||
:label="httpLabel"
|
||||
:link="httpUrl"
|
||||
|
|
@ -209,7 +233,10 @@ export default {
|
|||
/>
|
||||
</gl-disclosure-dropdown-group>
|
||||
|
||||
<gl-disclosure-dropdown-group v-if="kerberosUrl">
|
||||
<gl-disclosure-dropdown-group
|
||||
v-if="groups.kerberosUrl.show"
|
||||
:bordered="groups.kerberosUrl.bordered"
|
||||
>
|
||||
<code-dropdown-clone-item
|
||||
:label="__('Clone with KRB5')"
|
||||
:link="kerberosUrl"
|
||||
|
|
@ -219,7 +246,7 @@ export default {
|
|||
/>
|
||||
</gl-disclosure-dropdown-group>
|
||||
|
||||
<gl-disclosure-dropdown-group v-if="ideGroup.length" bordered>
|
||||
<gl-disclosure-dropdown-group v-if="groups.ideGroup.show" :bordered="groups.ideGroup.bordered">
|
||||
<template #group-label>{{ __('Open with') }}</template>
|
||||
<code-dropdown-ide-item
|
||||
v-for="(item, index) in ideGroup"
|
||||
|
|
@ -230,12 +257,18 @@ export default {
|
|||
/>
|
||||
</gl-disclosure-dropdown-group>
|
||||
|
||||
<gl-disclosure-dropdown-group v-if="directoryDownloadLinks.length" bordered>
|
||||
<gl-disclosure-dropdown-group
|
||||
v-if="groups.downloadSourceCode.show"
|
||||
:bordered="groups.downloadSourceCode.bordered"
|
||||
>
|
||||
<template #group-label>{{ __('Download source code') }}</template>
|
||||
<code-dropdown-download-items :items="sourceCodeGroup" @close-dropdown="closeDropdown" />
|
||||
</gl-disclosure-dropdown-group>
|
||||
|
||||
<gl-disclosure-dropdown-group v-if="currentPath && directoryDownloadLinks.length" bordered>
|
||||
<gl-disclosure-dropdown-group
|
||||
v-if="groups.downloadDirectory.show"
|
||||
:bordered="groups.downloadDirectory.bordered"
|
||||
>
|
||||
<template #group-label>{{ __('Download directory') }}</template>
|
||||
<code-dropdown-download-items
|
||||
:items="directoryDownloadGroup"
|
||||
|
|
|
|||
|
|
@ -333,7 +333,7 @@ export default {
|
|||
v-on="$listeners"
|
||||
/>
|
||||
<!-- code + mobile panel -->
|
||||
<div v-if="!isReadmeView" class="project-code-holder gl-w-full sm:gl-w-auto">
|
||||
<div class="project-code-holder gl-w-full sm:gl-w-auto">
|
||||
<div v-if="showCompactCodeDropdown" class="gl-flex gl-justify-end gl-gap-3">
|
||||
<add-to-tree
|
||||
v-if="!isReadmeView"
|
||||
|
|
@ -371,7 +371,7 @@ export default {
|
|||
/>
|
||||
<repository-overflow-menu v-if="comparePath" />
|
||||
</div>
|
||||
<template v-else>
|
||||
<template v-else-if="!isReadmeView">
|
||||
<code-dropdown
|
||||
class="git-clone-holder js-git-clone-holder gl-hidden sm:gl-inline-block"
|
||||
:ssh-url="sshUrl"
|
||||
|
|
|
|||
|
|
@ -105,7 +105,7 @@ export default {
|
|||
data() {
|
||||
return {
|
||||
isCollapsed:
|
||||
this.collapsed ||
|
||||
(this.collapsed && !this.persistCollapsedState) ||
|
||||
(this.persistCollapsedState &&
|
||||
localStorage.getItem(this.getLocalStorageKeyName()) === 'true'),
|
||||
isFormVisible: false,
|
||||
|
|
@ -146,6 +146,11 @@ export default {
|
|||
},
|
||||
mounted() {
|
||||
if (this.persistCollapsedState) {
|
||||
// If collapsed by default and not yet toggled.
|
||||
if (this.collapsed && localStorage.getItem(this.getLocalStorageKeyName()) === null) {
|
||||
this.isCollapsed = true;
|
||||
}
|
||||
|
||||
if (localStorage.getItem(this.getLocalStorageKeyName()) === 'true') {
|
||||
this.$emit('collapsed');
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -911,9 +911,9 @@ export default {
|
|||
:full-path="selectedProjectFullPath"
|
||||
:show-buttons-below-field="false"
|
||||
:hide-fullscreen-markdown-button="isModal"
|
||||
:new-work-item-type="selectedWorkItemTypeName"
|
||||
:work-item-id="workItemId"
|
||||
:work-item-iid="workItemIid"
|
||||
:work-item-type-name="selectedWorkItemTypeName"
|
||||
@error="updateError = $event"
|
||||
@updateDraft="updateDraftData('description', $event)"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -9,8 +9,8 @@ import {
|
|||
sprintfWorkItem,
|
||||
ROUTES,
|
||||
RELATED_ITEM_ID_URL_QUERY_PARAM,
|
||||
WORK_ITEM_TYPE_ENUM_INCIDENT,
|
||||
NAME_TO_ENUM_MAP,
|
||||
WORK_ITEM_TYPE_NAME_INCIDENT,
|
||||
} from '../constants';
|
||||
import CreateWorkItem from './create_work_item.vue';
|
||||
import CreateWorkItemCancelConfirmationModal from './create_work_item_cancel_confirmation_modal.vue';
|
||||
|
|
@ -231,7 +231,7 @@ export default {
|
|||
// Take incidents to the legacy detail view with a full page load
|
||||
if (
|
||||
this.useVueRouter &&
|
||||
NAME_TO_ENUM_MAP[workItem?.workItemType?.name] !== WORK_ITEM_TYPE_ENUM_INCIDENT &&
|
||||
workItem?.workItemType?.name !== WORK_ITEM_TYPE_NAME_INCIDENT &&
|
||||
this.$router.getRoutes().some((route) => route.name === 'workItem')
|
||||
) {
|
||||
this.$router.push({ name: 'workItem', params: { iid: workItem.iid } });
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
import { GlButton, GlFormCheckbox, GlTooltipDirective } from '@gitlab/ui';
|
||||
import { helpPagePath } from '~/helpers/help_page_helper';
|
||||
import { s__, __ } from '~/locale';
|
||||
import { detectAndConfirmSensitiveTokens } from '~/lib/utils/secret_detection';
|
||||
import { capitalizeFirstCharacter } from '~/lib/utils/text_utility';
|
||||
import { STATE_OPEN, WORK_ITEM_TYPE_NAME_TASK, i18n } from '~/work_items/constants';
|
||||
import { getDraft, clearDraft, updateDraft } from '~/lib/utils/autosave';
|
||||
|
|
@ -329,7 +330,7 @@ export default {
|
|||
this.$emit('cancelEditing');
|
||||
clearDraft(this.autosaveKey);
|
||||
},
|
||||
submitForm(shouldMeasureTemperature = true) {
|
||||
async submitForm(shouldMeasureTemperature = true) {
|
||||
this.isMeasuringCommentTemperature =
|
||||
this.glAbilities.measureCommentTemperature && shouldMeasureTemperature;
|
||||
|
||||
|
|
@ -341,6 +342,12 @@ export default {
|
|||
if (this.isSubmitting) {
|
||||
return;
|
||||
}
|
||||
|
||||
const confirmSubmit = await detectAndConfirmSensitiveTokens({ content: this.commentText });
|
||||
if (!confirmSubmit) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (this.toggleResolveChecked) {
|
||||
this.$emit('toggleResolveDiscussion');
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,8 +7,8 @@ import {
|
|||
} from '@gitlab/ui';
|
||||
import { s__ } from '~/locale';
|
||||
import { InternalEvents } from '~/tracking';
|
||||
import { WORK_ITEM_TYPE_NAME_EPIC } from '../../constants';
|
||||
import { workItemRoadmapPath } from '../../utils';
|
||||
import { NAME_TO_ENUM_MAP, WORK_ITEM_TYPE_ENUM_EPIC } from '../../constants';
|
||||
|
||||
export default {
|
||||
i18n: {
|
||||
|
|
@ -76,10 +76,7 @@ export default {
|
|||
};
|
||||
},
|
||||
shouldShowViewRoadmapAction() {
|
||||
return (
|
||||
NAME_TO_ENUM_MAP[this.workItemType] === WORK_ITEM_TYPE_ENUM_EPIC &&
|
||||
this.showViewRoadmapAction
|
||||
);
|
||||
return this.workItemType === WORK_ITEM_TYPE_NAME_EPIC && this.showViewRoadmapAction;
|
||||
},
|
||||
},
|
||||
methods: {
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ export default {
|
|||
required: false,
|
||||
default: true,
|
||||
},
|
||||
workItemTypeName: {
|
||||
newWorkItemType: {
|
||||
type: String,
|
||||
required: false,
|
||||
default: '',
|
||||
|
|
@ -141,11 +141,11 @@ export default {
|
|||
},
|
||||
computed: {
|
||||
createFlow() {
|
||||
return this.workItemId === newWorkItemId(this.workItemTypeName);
|
||||
return this.workItemId === newWorkItemId(this.newWorkItemType);
|
||||
},
|
||||
workItemFullPath() {
|
||||
return this.createFlow
|
||||
? newWorkItemFullPath(this.fullPath, this.workItemTypeName)
|
||||
? newWorkItemFullPath(this.fullPath, this.newWorkItemType)
|
||||
: this.fullPath;
|
||||
},
|
||||
autosaveKey() {
|
||||
|
|
|
|||
|
|
@ -338,7 +338,7 @@ export default {
|
|||
showAll() {
|
||||
this.truncated = false;
|
||||
this.trackEvent('expand_description_on_workitem', {
|
||||
label: this.workItemTypeName,
|
||||
label: this.workItemType,
|
||||
});
|
||||
},
|
||||
stripHeadingAnchors(htmlString) {
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ export default {
|
|||
workItemState() {
|
||||
return this.workItem?.state;
|
||||
},
|
||||
workItemTypeName() {
|
||||
workItemType() {
|
||||
return this.workItem?.workItemType?.name;
|
||||
},
|
||||
isLoading() {
|
||||
|
|
@ -113,17 +113,17 @@ export default {
|
|||
s__(
|
||||
'WorkItem|This %{workItemType} will be closed when any of the following is merged.',
|
||||
),
|
||||
this.workItemTypeName,
|
||||
this.workItemType,
|
||||
)
|
||||
: sprintfWorkItem(
|
||||
s__('WorkItem|This %{workItemType} will be closed when the following is merged.'),
|
||||
this.workItemTypeName,
|
||||
this.workItemType,
|
||||
);
|
||||
},
|
||||
closedStateText() {
|
||||
return sprintfWorkItem(
|
||||
s__('WorkItem|The %{workItemType} was closed automatically when a branch was merged.'),
|
||||
this.workItemTypeName,
|
||||
this.workItemType,
|
||||
);
|
||||
},
|
||||
tooltipText() {
|
||||
|
|
@ -300,7 +300,7 @@ export default {
|
|||
:show-merge-request-flow="showMergeRequestFlow"
|
||||
:work-item-iid="workItemIid"
|
||||
:work-item-id="workItemId"
|
||||
:work-item-type="workItemTypeName"
|
||||
:work-item-type="workItemType"
|
||||
:work-item-full-path="workItemFullPath"
|
||||
:is-confidential-work-item="isConfidentialWorkItem"
|
||||
:project-id="projectId"
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ export default {
|
|||
},
|
||||
},
|
||||
methods: {
|
||||
getItemsClosedLabel(workItemTypeName) {
|
||||
return sprintfWorkItem(s__('WorkItem| %{workItemType}s closed'), workItemTypeName);
|
||||
getItemsClosedLabel(workItemType) {
|
||||
return sprintfWorkItem(s__('WorkItem| %{workItemType}s closed'), workItemType);
|
||||
},
|
||||
},
|
||||
};
|
||||
|
|
|
|||
|
|
@ -0,0 +1,58 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Mutations
|
||||
module WorkItems
|
||||
module CSV
|
||||
class Export < BaseMutation
|
||||
graphql_name 'WorkItemsCsvExport'
|
||||
|
||||
include FindsProject
|
||||
include ::SearchArguments
|
||||
include ::WorkItems::SharedFilterArguments
|
||||
|
||||
authorize :export_work_items
|
||||
|
||||
argument :project_path, GraphQL::Types::ID,
|
||||
required: true,
|
||||
description: 'Full project path.'
|
||||
|
||||
argument :selected_fields, [::Types::WorkItems::AvailableExportFieldsEnum],
|
||||
required: false,
|
||||
description: 'List of selected fields to be exported. Omit to export all available fields.'
|
||||
|
||||
field :message, GraphQL::Types::String,
|
||||
null: true,
|
||||
description: 'Export request result message.'
|
||||
|
||||
def resolve(args)
|
||||
project_path = args.delete(:project_path)
|
||||
project = authorized_find!(project_path)
|
||||
|
||||
check_export_available_for!(project)
|
||||
|
||||
# This is some old code, moved to a different module. We should definitely seek to move this code
|
||||
# to a service class.
|
||||
# rubocop:disable CodeReuse/Worker -- see above
|
||||
IssuableExportCsvWorker.perform_async(:work_item, current_user.id, project.id, prepare_finder_params(args))
|
||||
# rubocop:enable CodeReuse/Worker
|
||||
|
||||
{
|
||||
message: format(
|
||||
_('Your CSV export request has succeeded. The result will be emailed to %{email}.'),
|
||||
{ email: current_user.notification_email_or_default }
|
||||
),
|
||||
errors: []
|
||||
}
|
||||
end
|
||||
|
||||
def check_export_available_for!(project)
|
||||
return if Feature.enabled?(:import_export_work_items_csv, project)
|
||||
|
||||
error = '`import_export_work_items_csv` feature flag is disabled.'
|
||||
|
||||
raise_resource_not_available_error! error
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -1,54 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module Mutations
|
||||
module WorkItems
|
||||
class Export < BaseMutation
|
||||
graphql_name 'WorkItemExport'
|
||||
|
||||
include FindsProject
|
||||
include ::SearchArguments
|
||||
include ::WorkItems::SharedFilterArguments
|
||||
|
||||
authorize :export_work_items
|
||||
|
||||
argument :project_path,
|
||||
GraphQL::Types::ID,
|
||||
required: true,
|
||||
description: 'Full project path.'
|
||||
|
||||
argument :selected_fields,
|
||||
[::Types::WorkItems::AvailableExportFieldsEnum],
|
||||
required: false,
|
||||
description: 'List of selected fields to be exported. Omit to export all available fields.'
|
||||
|
||||
field :message, GraphQL::Types::String,
|
||||
null: true,
|
||||
description: 'Export request result message.'
|
||||
|
||||
def resolve(args)
|
||||
project_path = args.delete(:project_path)
|
||||
project = authorized_find!(project_path)
|
||||
|
||||
check_export_available_for!(project)
|
||||
|
||||
# rubocop:disable CodeReuse/Worker
|
||||
IssuableExportCsvWorker.perform_async(:work_item, current_user.id, project.id, prepare_finder_params(args))
|
||||
# rubocop:enable CodeReuse/Worker
|
||||
|
||||
{
|
||||
message: format(_('Your CSV export request has succeeded. The result will be emailed to %{email}.'),
|
||||
email: current_user.notification_email_or_default),
|
||||
errors: []
|
||||
}
|
||||
end
|
||||
|
||||
def check_export_available_for!(project)
|
||||
return if Feature.enabled?(:import_export_work_items_csv, project)
|
||||
|
||||
error = '`import_export_work_items_csv` feature flag is disabled.'
|
||||
|
||||
raise_resource_not_available_error! error
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -5,7 +5,8 @@ module Types
|
|||
extend ActiveSupport::Concern
|
||||
|
||||
prepended do
|
||||
# placeholder for any FOSS mutations to be deprecated
|
||||
mount_aliased_mutation 'WorkItemExport', Mutations::WorkItems::CSV::Export,
|
||||
deprecated: { reason: 'Use WorkItemsCsvExport', milestone: '18.0' }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -231,7 +231,7 @@ module Types
|
|||
mount_mutation Mutations::WorkItems::CreateFromTask, experiment: { milestone: '15.1' }
|
||||
mount_mutation Mutations::WorkItems::Delete, experiment: { milestone: '15.1' }
|
||||
mount_mutation Mutations::WorkItems::Update, experiment: { milestone: '15.1' }
|
||||
mount_mutation Mutations::WorkItems::Export, experiment: { milestone: '15.10' }
|
||||
mount_mutation Mutations::WorkItems::CSV::Export, experiment: { milestone: '15.10' }
|
||||
mount_mutation Mutations::WorkItems::Convert, experiment: { milestone: '15.11' }
|
||||
mount_mutation Mutations::WorkItems::LinkedItems::Add, experiment: { milestone: '16.3' }
|
||||
mount_mutation Mutations::WorkItems::LinkedItems::Remove, experiment: { milestone: '16.3' }
|
||||
|
|
|
|||
|
|
@ -6,13 +6,43 @@ module Types
|
|||
graphql_name 'AvailableExportFields'
|
||||
description 'Available fields to be exported as CSV'
|
||||
|
||||
value 'ID', value: 'id', description: 'Unique identifier.'
|
||||
value 'TITLE', value: 'title', description: 'Title.'
|
||||
value 'DESCRIPTION', value: 'description', description: 'Description.'
|
||||
value 'ASSIGNEE', value: 'assignee', description: 'Assignee(s) name of the work item.'
|
||||
value 'ASSIGNEE_USERNAME', value: 'assignee username', description: 'Assignee(s) username of the work item.'
|
||||
|
||||
value 'AUTHOR', value: 'author', description: 'Author name of the work item.'
|
||||
value 'AUTHOR_USERNAME', value: 'author username', description: 'Author username of the work item.'
|
||||
|
||||
value 'CONFIDENTIAL', value: 'confidential', description: 'Confidentiality flag of the work item.'
|
||||
value 'DESCRIPTION', value: 'description', description: 'Description of the work item.'
|
||||
|
||||
value 'ID', value: 'id', description: 'Unique identifier of the work item.'
|
||||
value 'IID', value: 'iid', description: 'IID identifier of the work item.'
|
||||
|
||||
value 'LOCKED', value: 'locked', description: 'Locked discussions flag of the work item.'
|
||||
|
||||
value 'START_DATE', value: 'start date', description: 'Start date (UTC) of the work item.'
|
||||
value 'DUE_DATE', value: 'due date', description: 'Due date (UTC) of the work item.'
|
||||
|
||||
value 'CLOSED_AT', value: 'closed at', description: 'Closed at (UTC) date of the work item.'
|
||||
value 'CREATED_AT', value: 'created at', description: 'Crated at (UTC) date of the work item.'
|
||||
value 'UPDATED_AT', value: 'updated at', description: 'Updated at (UTC) date of the work item.'
|
||||
|
||||
value 'MILESTONE', value: 'milestone', description: 'Milestone of the work item.'
|
||||
|
||||
value 'PARENT_ID', value: 'parent id', description: 'Parent ID of the work item.'
|
||||
value 'PARENT_IID', value: 'parent iid', description: 'Parent IID of the work item.'
|
||||
value 'PARENT_TITLE', value: 'parent title', description: 'Parent title of the work item.'
|
||||
|
||||
value 'STATE', value: 'state', description: 'State of the work item.'
|
||||
|
||||
value 'TITLE', value: 'title', description: 'Title of the work item.'
|
||||
value 'TIME_ESTIMATE', value: 'time estimate', description: 'Time estimate of the work item.'
|
||||
value 'TIME_SPENT', value: 'time spent', description: 'Time spent of the work item.'
|
||||
value 'TYPE', value: 'type', description: 'Type of the work item.'
|
||||
value 'AUTHOR', value: 'author', description: 'Author name.'
|
||||
value 'AUTHOR_USERNAME', value: 'author username', description: 'Author username.'
|
||||
value 'CREATED_AT', value: 'created_at', description: 'Date of creation.'
|
||||
|
||||
value 'URL', value: 'url', description: 'Web URL to the work item.'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Types::WorkItems::AvailableExportFieldsEnum.prepend_mod
|
||||
|
|
|
|||
|
|
@ -598,10 +598,7 @@ module MergeRequestsHelper
|
|||
query: is_author_or_assignee ? 'authorOrAssigneeMergeRequests' : 'assignedMergeRequests',
|
||||
variables: {
|
||||
reviewStates: %w[REVIEWED REQUESTED_CHANGES],
|
||||
not: {
|
||||
onlyReviewer: true,
|
||||
reviewerUsername: 'GitlabDuo'
|
||||
}
|
||||
ignoredReviewerUsername: ::Users::Internal.duo_code_review_bot.username
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -628,7 +625,7 @@ module MergeRequestsHelper
|
|||
variables: {
|
||||
or: {
|
||||
reviewerWildcard: 'NONE',
|
||||
onlyReviewerUsername: 'GitlabDuo'
|
||||
onlyReviewerUsername: ::Users::Internal.duo_code_review_bot.username
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -654,6 +651,7 @@ module MergeRequestsHelper
|
|||
helpContent: _('Your merge requests that are waiting for approvals.'),
|
||||
query: is_author_or_assignee ? 'authorOrAssigneeMergeRequests' : 'assignedMergeRequests',
|
||||
variables: {
|
||||
ignoredReviewerUsername: ::Users::Internal.duo_code_review_bot.username,
|
||||
reviewStates: %w[UNREVIEWED UNAPPROVED REVIEW_STARTED],
|
||||
not: {
|
||||
reviewStates: %w[REQUESTED_CHANGES REVIEWED]
|
||||
|
|
@ -677,6 +675,7 @@ module MergeRequestsHelper
|
|||
helpContent: _('Your merge requests with approvals by all assigned reviewers.'),
|
||||
query: is_author_or_assignee ? 'authorOrAssigneeMergeRequests' : 'assignedMergeRequests',
|
||||
variables: {
|
||||
ignoredReviewerUsername: ::Users::Internal.duo_code_review_bot.username,
|
||||
reviewState: 'APPROVED',
|
||||
not: {
|
||||
reviewStates: %w[REQUESTED_CHANGES REVIEWED UNREVIEWED REVIEW_STARTED UNAPPROVED]
|
||||
|
|
|
|||
|
|
@ -166,7 +166,7 @@ module TreeHelper
|
|||
ssh_url: ssh_enabled? ? ssh_clone_url_to_repo(project) : '',
|
||||
http_url: http_enabled? ? http_clone_url_to_repo(project) : '',
|
||||
xcode_url: show_xcode_link?(project) ? xcode_uri_to_repo(project) : '',
|
||||
download_links: !project.empty_repo? ? download_links(project, ref, archive_prefix).to_json : '',
|
||||
download_links: !project.empty_repo? ? download_links(project, ref, archive_prefix).to_json : [],
|
||||
download_artifacts: pipeline &&
|
||||
(previous_artifacts(project, ref, pipeline.latest_builds_with_artifacts).to_json || []),
|
||||
escaped_ref: ActionDispatch::Journey::Router::Utils.escape_path(ref)
|
||||
|
|
|
|||
|
|
@ -221,7 +221,7 @@ module WorkItems
|
|||
WorkItems::Type.base_types.keys.excluding(*EE_BASE_TYPES)
|
||||
end
|
||||
|
||||
# overriden in EE to check for EE-specific restrictions
|
||||
# overridden in EE to check for EE-specific restrictions
|
||||
def authorized_types(types, _resource_parent, _relation)
|
||||
types
|
||||
end
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
module ImportCsv
|
||||
class BaseService
|
||||
include Gitlab::Utils::StrongMemoize
|
||||
include Gitlab::Allowable
|
||||
|
||||
def initialize(user, project, csv_io)
|
||||
@user = user
|
||||
|
|
@ -27,6 +28,7 @@ module ImportCsv
|
|||
private
|
||||
|
||||
attr_reader :user, :project, :csv_io, :results
|
||||
alias_method :current_user, :user
|
||||
|
||||
def attributes_for(row)
|
||||
raise NotImplementedError
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ module Security
|
|||
end
|
||||
|
||||
def description
|
||||
_('Configure Secret Detection in `.gitlab-ci.yml` using the GitLab managed template. You can [add variable overrides](https://docs.gitlab.com/ee/user/application_security/secret_detection/pipeline/#configuration) to customize Secret Detection settings.')
|
||||
_('Configure Secret Detection in `.gitlab-ci.yml` using the GitLab managed template. You can [add variable overrides](https://docs.gitlab.com/user/application_security/secret_detection/pipeline/configure) to customize Secret Detection settings.')
|
||||
end
|
||||
|
||||
def name
|
||||
|
|
|
|||
|
|
@ -2,6 +2,9 @@
|
|||
|
||||
module WorkItems
|
||||
class ExportCsvService < ExportCsv::BaseService
|
||||
include Gitlab::Routing.url_helpers
|
||||
include GitlabRoutingHelper
|
||||
|
||||
NotAvailableError = StandardError.new('This feature is currently behind a feature flag and it is not available.')
|
||||
|
||||
def csv_data
|
||||
|
|
@ -17,32 +20,88 @@ module WorkItems
|
|||
private
|
||||
|
||||
def associations_to_preload
|
||||
[:project, { work_item_type: :enabled_widget_definitions }, :author]
|
||||
[:project, { work_item_type: :enabled_widget_definitions }, :author, *widget_preloads]
|
||||
end
|
||||
|
||||
def widget_preloads
|
||||
[:assignees, :work_item_parent, :milestone, :dates_source, :labels, :timelogs]
|
||||
end
|
||||
|
||||
def header_to_value_hash
|
||||
{
|
||||
'Id' => 'iid',
|
||||
'ID' => 'id',
|
||||
'IID' => 'iid',
|
||||
'Title' => 'title',
|
||||
'Description' => ->(work_item) { get_widget_value_for(work_item, :description) },
|
||||
'Description' => ->(work_item) { widget_value_for(work_item, :description) },
|
||||
'Type' => ->(work_item) { work_item.work_item_type.name },
|
||||
'Author' => 'author_name',
|
||||
'Author Username' => ->(work_item) { work_item.author.username },
|
||||
'Created At (UTC)' => ->(work_item) { work_item.created_at.to_fs(:csv) }
|
||||
}
|
||||
'URL' => ->(work_item) { work_item_url(work_item) }
|
||||
}.merge(
|
||||
base_metadata
|
||||
).merge(
|
||||
author_and_assignees_data
|
||||
).merge(
|
||||
dates_data
|
||||
).merge(
|
||||
parent_item_data
|
||||
).merge(
|
||||
time_tracking_data
|
||||
)
|
||||
end
|
||||
|
||||
def get_widget_value_for(work_item, field)
|
||||
widget_name = field_to_widget_map[field]
|
||||
widget = work_item.get_widget(widget_name)
|
||||
|
||||
widget.try(field)
|
||||
end
|
||||
|
||||
def field_to_widget_map
|
||||
def base_metadata
|
||||
{
|
||||
description: :description
|
||||
'State' => ->(work_item) { work_item.closed? ? 'Closed' : 'Open' },
|
||||
'Confidential' => ->(work_item) { work_item.confidential? ? 'Yes' : 'No' },
|
||||
'Locked' => ->(work_item) { widget_value_for(work_item, :notes, :discussion_locked?) },
|
||||
'Milestone' => ->(work_item) { widget_value_for(work_item, :milestone)&.title },
|
||||
'Labels' => ->(work_item) { widget_value_for(work_item, :labels)&.map(&:title)&.join(', ') }
|
||||
}
|
||||
end
|
||||
|
||||
def author_and_assignees_data
|
||||
{
|
||||
'Author' => 'author_name',
|
||||
'Author Username' => ->(work_item) { work_item.author&.username },
|
||||
'Assignee(s)' => ->(work_item) { widget_value_for(work_item, :assignees)&.map(&:name)&.join(', ') },
|
||||
'Assignee(s) Username(s)' => ->(work_item) do
|
||||
widget_value_for(work_item, :assignees)&.map(&:username)&.join(', ')
|
||||
end
|
||||
}
|
||||
end
|
||||
|
||||
def dates_data
|
||||
{
|
||||
'Created At' => ->(work_item) { work_item.created_at&.to_fs(:csv) },
|
||||
'Updated At' => ->(work_item) { work_item.updated_at&.to_fs(:csv) },
|
||||
'Closed At' => ->(work_item) { work_item.closed_at&.to_fs(:csv) },
|
||||
'Due Date' => ->(work_item) { widget_value_for(work_item, :start_and_due_date, :due_date)&.to_fs(:csv) },
|
||||
'Start Date' => ->(work_item) { widget_value_for(work_item, :start_and_due_date, :start_date)&.to_fs(:csv) }
|
||||
}
|
||||
end
|
||||
|
||||
def parent_item_data
|
||||
{
|
||||
'Parent ID' => ->(work_item) { widget_value_for(work_item, :hierarchy, :parent)&.id },
|
||||
'Parent IID' => ->(work_item) { widget_value_for(work_item, :hierarchy, :parent)&.iid },
|
||||
'Parent Title' => ->(work_item) { widget_value_for(work_item, :hierarchy, :parent)&.title }
|
||||
}
|
||||
end
|
||||
|
||||
def time_tracking_data
|
||||
{
|
||||
'Time Estimate' => ->(work_item) { widget_value_for(work_item, :time_tracking, :human_time_estimate) },
|
||||
'Time Spent' => ->(work_item) { widget_value_for(work_item, :time_tracking, :human_total_time_spent) }
|
||||
}
|
||||
end
|
||||
|
||||
def widget_value_for(work_item, widget_name, attr = nil)
|
||||
widget = work_item.get_widget(widget_name)
|
||||
return if widget.nil?
|
||||
|
||||
field = attr.nil? ? widget_name : attr
|
||||
widget.try(field)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
WorkItems::ExportCsvService.prepend_mod
|
||||
|
|
|
|||
|
|
@ -1,7 +1,8 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module WorkItems
|
||||
class ImportCsvService < ImportCsv::BaseService
|
||||
class ImportCsvService < Issuable::ImportCsv::BaseService
|
||||
include Issues::IssueTypeHelpers
|
||||
extend ::Gitlab::Utils::Override
|
||||
|
||||
FeatureNotAvailableError = StandardError.new(
|
||||
|
|
@ -49,10 +50,7 @@ module WorkItems
|
|||
|
||||
override :attributes_for
|
||||
def attributes_for(row)
|
||||
{
|
||||
title: row[:title],
|
||||
work_item_type: match_work_item_type(row[:type])
|
||||
}
|
||||
super.merge({ work_item_type: match_work_item_type(csv_work_item_type_symbol(row)) })
|
||||
end
|
||||
|
||||
override :validate_headers_presence!
|
||||
|
|
@ -67,30 +65,26 @@ module WorkItems
|
|||
end
|
||||
|
||||
def match_work_item_type(work_item_type)
|
||||
match = available_work_item_types[work_item_type&.downcase]
|
||||
match[:type] if match
|
||||
available_work_item_types[work_item_type&.downcase]
|
||||
end
|
||||
|
||||
def available_work_item_types
|
||||
{
|
||||
issue: {
|
||||
allowed: Ability.allowed?(user, :create_issue, project),
|
||||
type: WorkItems::Type.default_by_type(:issue)
|
||||
}
|
||||
}.with_indifferent_access
|
||||
WorkItems::Type.all.index_by(&:name).with_indifferent_access.transform_keys(&:strip).transform_keys(&:downcase)
|
||||
end
|
||||
strong_memoize_attr :available_work_item_types
|
||||
|
||||
def preprocess!
|
||||
preprocess_milestones!
|
||||
|
||||
with_csv_lines.each do |row, line_no|
|
||||
work_item_type = row[:type]&.strip&.downcase
|
||||
work_item_type = csv_work_item_type_symbol(row)
|
||||
|
||||
if work_item_type.blank?
|
||||
type_errors[:blank] << line_no
|
||||
elsif missing?(work_item_type)
|
||||
# does this work item exist in the range of work items we support?
|
||||
(type_errors[:missing][work_item_type] ||= []) << line_no
|
||||
elsif !allowed?(work_item_type)
|
||||
elsif !work_item_type_allowed?(work_item_type)
|
||||
(type_errors[:disallowed][work_item_type] ||= []) << line_no
|
||||
end
|
||||
end
|
||||
|
|
@ -103,14 +97,33 @@ module WorkItems
|
|||
raise PreprocessError
|
||||
end
|
||||
|
||||
def csv_work_item_type_symbol(row)
|
||||
row_type = row[:type]
|
||||
|
||||
strong_memoize_with(:csv_work_item_type_symbol, row_type) do
|
||||
row_type&.strip&.downcase
|
||||
end
|
||||
end
|
||||
|
||||
def missing?(work_item_type_name)
|
||||
!available_work_item_types.key?(work_item_type_name)
|
||||
end
|
||||
|
||||
def allowed?(work_item_type_name)
|
||||
!!available_work_item_types[work_item_type_name][:allowed]
|
||||
def work_item_type_allowed?(work_item_type)
|
||||
strong_memoize_with(:work_item_type_allowed, work_item_type) do
|
||||
create_issue_type_allowed?(project, work_item_type)
|
||||
end
|
||||
end
|
||||
|
||||
def preprocess_milestones!
|
||||
# Find if these milestones exist in the project or its group and group ancestors
|
||||
provided_titles = with_csv_lines.filter_map { |row| row[:milestone]&.strip }.uniq
|
||||
finder_params = {
|
||||
project_ids: [project.id],
|
||||
title: provided_titles
|
||||
}
|
||||
finder_params[:group_ids] = project.group.self_and_ancestors.select(:id) if project.group
|
||||
@available_milestones = MilestonesFinder.new(finder_params).execute
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
WorkItems::ImportCsvService.prepend_mod
|
||||
|
|
|
|||
|
|
@ -19,7 +19,8 @@
|
|||
compare_path: compare_path,
|
||||
web_ide_button_options: web_ide_button_data.merge(fork_options).to_json,
|
||||
web_ide_button_default_branch: @project.default_branch_or_main,
|
||||
escaped_ref: ActionDispatch::Journey::Router::Utils.escape_path(ref)
|
||||
escaped_ref: ActionDispatch::Journey::Router::Utils.escape_path(ref),
|
||||
download_links: []
|
||||
}.merge(vue_readme_header_additional_data) }
|
||||
|
||||
- else
|
||||
|
|
|
|||
|
|
@ -219,15 +219,3 @@ As of GitLab 17.8, `gitlab_default_theme` can specify [a value from 1 to 10](htt
|
|||
| 8 |Light Green|
|
||||
| 9 |Red|
|
||||
| 10 |Light Red|
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -94,15 +94,3 @@ On the sign in page there should now be a JWT icon below the regular sign in for
|
|||
Select the icon to begin the authentication process. JWT asks the user to
|
||||
sign in and authorize the GitLab application. If everything goes well, the user
|
||||
is redirected to GitLab and signed in.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -222,15 +222,3 @@ For self-compiled installations:
|
|||
|
||||
You can optionally store the `bind_dn` and `password` in a separate encrypted configuration file using the
|
||||
[same steps as the regular LDAP integration](_index.md#use-encrypted-credentials).
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -143,7 +143,7 @@ Use the following attributes to customize the field GitLab checks and the format
|
|||
|
||||
For `issuer_and_serial_number`, the `<SR>` portion is in reverse-byte-order, with the least-significant byte first. For more information, see [how to map a user to a certificate using the altSecurityIdentities attribute](https://learn.microsoft.com/en-us/archive/blogs/spatdsg/howto-map-a-user-to-a-certificate-via-all-the-methods-available-in-the-altsecurityidentities-attribute).
|
||||
|
||||
The reverse issuer formats sort the issuer string from the smallest unit to the largest. Some
|
||||
The reverse issuer formats sort the issuer string from the smallest unit to the largest. Some
|
||||
Active Directory servers store certificates in this format.
|
||||
|
||||
{{< alert type="note" >}}
|
||||
|
|
@ -410,15 +410,3 @@ For self-compiled installations:
|
|||
## Passwords for users created via smart card authentication
|
||||
|
||||
The [Generated passwords for users created through integrated authentication](../../security/passwords_for_integrated_authentication_methods.md) guide provides an overview of how GitLab generates and sets passwords for users created via smart card authentication.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -48,15 +48,3 @@ To configure these values:
|
|||
1. Expand **Diff limits**.
|
||||
1. Enter a value for the diff limit.
|
||||
1. Select **Save changes**.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -45,15 +45,3 @@ to keep this feature simple.
|
|||
|
||||
On unsubscribe, users receive an email notification that unsubscribe happened.
|
||||
The endpoint that provides the unsubscribe option is rate-limited.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -93,15 +93,3 @@ HTTPS, customize your Internal URL to point to a load balancer with TLS
|
|||
terminated at the load balancer.
|
||||
|
||||
{{< /alert >}}
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -24,15 +24,3 @@ They are not available to new groups.
|
|||
Updating or adding labels in the **Admin** area does not modify labels in existing projects.
|
||||
|
||||

|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -125,15 +125,3 @@ corporate installation where all users have access to Office 365.
|
|||
gitlab_rails['gravatar_plain_url'] = 'http://outlook.office.com/owa/service.svc/s/GetPersonaPhoto?email=%{email}&size=HR120x120'
|
||||
gitlab_rails['gravatar_ssl_url'] = 'https://outlook.office.com/owa/service.svc/s/GetPersonaPhoto?email=%{email}&size=HR120x120'
|
||||
```
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
---
|
||||
stage: Create
|
||||
group: Source Code
|
||||
group: Code Review
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
|
||||
description: Configure external storage for merge request diffs on your GitLab instance.
|
||||
title: Merge request diffs storage
|
||||
|
|
|
|||
|
|
@ -162,15 +162,3 @@ This check is being exempt from Rack Attack.
|
|||
## Sidekiq
|
||||
|
||||
Learn how to configure the [Sidekiq health checks](../sidekiq/sidekiq_health_check.md).
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -182,15 +182,3 @@ For more information on token expiration emails, see:
|
|||
|
||||
- For groups, the [group access token expiry emails documentation](../../user/group/settings/group_access_tokens.md#group-access-token-expiry-emails).
|
||||
- For projects, the [project access token expiry emails documentation](../../user/project/settings/project_access_tokens.md#project-access-token-expiry-emails).
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -145,15 +145,3 @@ label defined in the [global settings](#configuration) is used.
|
|||
On all project pages, in the upper-right corner, the label appears.
|
||||
|
||||

|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -34,15 +34,3 @@ To enable user tracking for interest-based advertising:
|
|||
1. Expand **Federated Learning of Cohorts (FLoC)**.
|
||||
1. Select the **Participate in FLoC** checkbox.
|
||||
1. Select **Save changes**.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -95,15 +95,3 @@ When redirecting `/help`, GitLab:
|
|||
For example, if the URL is set to `https://docs.gitlab.com`, requests for
|
||||
`/help/administration/settings/help_page.md` redirect to:
|
||||
`https://docs.gitlab.com/${VERSION}/administration/settings/help_page`.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -318,15 +318,3 @@ To turn on approvals for role promotions:
|
|||
1. Select **Settings > General**.
|
||||
1. Expand **Sign-up restrictions**.
|
||||
1. In the **Seat control** section, select **Approve role promotions**.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -42,15 +42,3 @@ If an authenticated user declines the terms, they are signed out.
|
|||
When enabled, it adds a mandatory checkbox to the sign up page for new users:
|
||||
|
||||

|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -26,15 +26,3 @@ To toggle the display of customer experience improvement content and third-party
|
|||
1. Expand **Customer experience improvement and third-party offers**.
|
||||
1. Select **Do not display content for customer experience improvement and offers from third parties**.
|
||||
1. Select **Save changes**.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -296,15 +296,3 @@ If there are problems with the manual upload:
|
|||
1. Open a confidential issue in the [security fork of version app project](https://gitlab.com/gitlab-org/security/version.gitlab.com).
|
||||
1. Attach the JSON payload if possible.
|
||||
1. Tag `@gitlab-org/analytics-section/analytics-instrumentation` who will triage the issue.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -436,15 +436,3 @@ Prerequisites:
|
|||
- Applies to both SSH or HTTP authorized IP address ranges. You cannot split
|
||||
this list by authorization type.
|
||||
1. Select **Save changes**.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ requests and are triggered on the following events:
|
|||
|
||||
{{< alert type="note" >}}
|
||||
|
||||
Some events follow a newer schema-based format. Instead of `event_name`, these events use `object_kind`, `action`,
|
||||
Some events follow a newer schema-based format. Instead of `event_name`, these events use `object_kind`, `action`,
|
||||
and `object_attributes`:
|
||||
|
||||
- `gitlab_subscription_member_approval` (`action`: `enqueue`)
|
||||
|
|
@ -934,15 +934,3 @@ X-Gitlab-Event: System Hook
|
|||
|
||||
[Requests to local network by system hooks](../security/webhooks.md) can be allowed
|
||||
or blocked by an administrator.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -12718,8 +12718,8 @@ Input type: `WorkItemDeleteInput`
|
|||
### `Mutation.workItemExport`
|
||||
|
||||
{{< details >}}
|
||||
**Introduced** in GitLab 15.10.
|
||||
**Status**: Experiment.
|
||||
**Deprecated** in GitLab 18.0.
|
||||
Use WorkItemsCsvExport.
|
||||
{{< /details >}}
|
||||
|
||||
Input type: `WorkItemExportInput`
|
||||
|
|
@ -12894,6 +12894,55 @@ Input type: `WorkItemUserPreferenceUpdateInput`
|
|||
| <a id="mutationworkitemuserpreferenceupdateerrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during execution of the mutation. |
|
||||
| <a id="mutationworkitemuserpreferenceupdateuserpreferences"></a>`userPreferences` | [`WorkItemTypesUserPreference`](#workitemtypesuserpreference) | User preferences. |
|
||||
|
||||
### `Mutation.workItemsCsvExport`
|
||||
|
||||
{{< details >}}
|
||||
**Introduced** in GitLab 15.10.
|
||||
**Status**: Experiment.
|
||||
{{< /details >}}
|
||||
|
||||
Input type: `WorkItemsCsvExportInput`
|
||||
|
||||
#### Arguments
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="mutationworkitemscsvexportassigneeusernames"></a>`assigneeUsernames` | [`[String!]`](#string) | Usernames of users assigned to the work item. |
|
||||
| <a id="mutationworkitemscsvexportassigneewildcardid"></a>`assigneeWildcardId` | [`AssigneeWildcardId`](#assigneewildcardid) | Filter by assignee wildcard. Incompatible with `assigneeUsernames`. |
|
||||
| <a id="mutationworkitemscsvexportauthorusername"></a>`authorUsername` | [`String`](#string) | Filter work items by author username. |
|
||||
| <a id="mutationworkitemscsvexportclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
|
||||
| <a id="mutationworkitemscsvexportclosedafter"></a>`closedAfter` | [`Time`](#time) | Work items closed after the date. |
|
||||
| <a id="mutationworkitemscsvexportclosedbefore"></a>`closedBefore` | [`Time`](#time) | Work items closed before the date. |
|
||||
| <a id="mutationworkitemscsvexportconfidential"></a>`confidential` | [`Boolean`](#boolean) | Filter for confidential work items. If `false`, excludes confidential work items. If `true`, returns only confidential work items. |
|
||||
| <a id="mutationworkitemscsvexportcreatedafter"></a>`createdAfter` | [`Time`](#time) | Work items created after the timestamp. |
|
||||
| <a id="mutationworkitemscsvexportcreatedbefore"></a>`createdBefore` | [`Time`](#time) | Work items created before the timestamp. |
|
||||
| <a id="mutationworkitemscsvexportdueafter"></a>`dueAfter` | [`Time`](#time) | Work items due after the timestamp. |
|
||||
| <a id="mutationworkitemscsvexportduebefore"></a>`dueBefore` | [`Time`](#time) | Work items due before the timestamp. |
|
||||
| <a id="mutationworkitemscsvexportiids"></a>`iids` | [`[String!]`](#string) | List of IIDs of work items. For example, `["1", "2"]`. |
|
||||
| <a id="mutationworkitemscsvexportin"></a>`in` | [`[IssuableSearchableField!]`](#issuablesearchablefield) | Specify the fields to perform the search in. Defaults to `[TITLE, DESCRIPTION]`. Requires the `search` argument.'. |
|
||||
| <a id="mutationworkitemscsvexportlabelname"></a>`labelName` | [`[String!]`](#string) | Labels applied to the work item. |
|
||||
| <a id="mutationworkitemscsvexportmilestonetitle"></a>`milestoneTitle` | [`[String!]`](#string) | Milestone applied to the work item. |
|
||||
| <a id="mutationworkitemscsvexportmilestonewildcardid"></a>`milestoneWildcardId` | [`MilestoneWildcardId`](#milestonewildcardid) | Filter by milestone ID wildcard. Incompatible with `milestoneTitle`. |
|
||||
| <a id="mutationworkitemscsvexportmyreactionemoji"></a>`myReactionEmoji` | [`String`](#string) | Filter by reaction emoji applied by the current user. Wildcard values `NONE` and `ANY` are supported. |
|
||||
| <a id="mutationworkitemscsvexportnot"></a>`not` | [`NegatedWorkItemFilterInput`](#negatedworkitemfilterinput) | Negated work item arguments. |
|
||||
| <a id="mutationworkitemscsvexportor"></a>`or` | [`UnionedWorkItemFilterInput`](#unionedworkitemfilterinput) | List of arguments with inclusive `OR`. |
|
||||
| <a id="mutationworkitemscsvexportprojectpath"></a>`projectPath` | [`ID!`](#id) | Full project path. |
|
||||
| <a id="mutationworkitemscsvexportsearch"></a>`search` | [`String`](#string) | Search query for title or description. |
|
||||
| <a id="mutationworkitemscsvexportselectedfields"></a>`selectedFields` | [`[AvailableExportFields!]`](#availableexportfields) | List of selected fields to be exported. Omit to export all available fields. |
|
||||
| <a id="mutationworkitemscsvexportstate"></a>`state` | [`IssuableState`](#issuablestate) | Current state of the work item. |
|
||||
| <a id="mutationworkitemscsvexportsubscribed"></a>`subscribed` | [`SubscriptionStatus`](#subscriptionstatus) | Work items the current user is subscribed to. |
|
||||
| <a id="mutationworkitemscsvexporttypes"></a>`types` | [`[IssueType!]`](#issuetype) | Filter work items by the given work item types. |
|
||||
| <a id="mutationworkitemscsvexportupdatedafter"></a>`updatedAfter` | [`Time`](#time) | Work items updated after the timestamp. |
|
||||
| <a id="mutationworkitemscsvexportupdatedbefore"></a>`updatedBefore` | [`Time`](#time) | Work items updated before the timestamp. |
|
||||
|
||||
#### Fields
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="mutationworkitemscsvexportclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
|
||||
| <a id="mutationworkitemscsvexporterrors"></a>`errors` | [`[String!]!`](#string) | Errors encountered during execution of the mutation. |
|
||||
| <a id="mutationworkitemscsvexportmessage"></a>`message` | [`String`](#string) | Export request result message. |
|
||||
|
||||
### `Mutation.workItemsHierarchyReorder`
|
||||
|
||||
Reorder a work item in the hierarchy tree.
|
||||
|
|
@ -15392,6 +15441,29 @@ The edge type for [`DastSiteValidation`](#dastsitevalidation).
|
|||
| <a id="dastsitevalidationedgecursor"></a>`cursor` | [`String!`](#string) | A cursor for use in pagination. |
|
||||
| <a id="dastsitevalidationedgenode"></a>`node` | [`DastSiteValidation`](#dastsitevalidation) | The item at the end of the edge. |
|
||||
|
||||
#### `DependencyAggregationConnection`
|
||||
|
||||
The connection type for [`DependencyAggregation`](#dependencyaggregation).
|
||||
|
||||
##### Fields
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="dependencyaggregationconnectionedges"></a>`edges` | [`[DependencyAggregationEdge]`](#dependencyaggregationedge) | A list of edges. |
|
||||
| <a id="dependencyaggregationconnectionnodes"></a>`nodes` | [`[DependencyAggregation]`](#dependencyaggregation) | A list of nodes. |
|
||||
| <a id="dependencyaggregationconnectionpageinfo"></a>`pageInfo` | [`PageInfo!`](#pageinfo) | Information to aid in pagination. |
|
||||
|
||||
#### `DependencyAggregationEdge`
|
||||
|
||||
The edge type for [`DependencyAggregation`](#dependencyaggregation).
|
||||
|
||||
##### Fields
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="dependencyaggregationedgecursor"></a>`cursor` | [`String!`](#string) | A cursor for use in pagination. |
|
||||
| <a id="dependencyaggregationedgenode"></a>`node` | [`DependencyAggregation`](#dependencyaggregation) | The item at the end of the edge. |
|
||||
|
||||
#### `DependencyConnection`
|
||||
|
||||
The connection type for [`Dependency`](#dependency).
|
||||
|
|
@ -25228,7 +25300,6 @@ A software dependency used by a project.
|
|||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="dependencycomponent"></a>`component` | [`Component!`](#component) | Information about the component associated to the dependency. |
|
||||
| <a id="dependencyid"></a>`id` | [`GlobalID!`](#globalid) | ID of the dependency. |
|
||||
| <a id="dependencylicenses"></a>`licenses` | [`[License!]`](#license) | Licenses associated to the dependency. |
|
||||
| <a id="dependencylocation"></a>`location` | [`Location`](#location) | Information about where the dependency is located. |
|
||||
|
|
@ -25238,6 +25309,24 @@ A software dependency used by a project.
|
|||
| <a id="dependencyversion"></a>`version` | [`String`](#string) | Version of the dependency. |
|
||||
| <a id="dependencyvulnerabilitycount"></a>`vulnerabilityCount` | [`Int!`](#int) | Number of vulnerabilities within the dependency. |
|
||||
|
||||
### `DependencyAggregation`
|
||||
|
||||
A software dependency aggregation used by a group.
|
||||
|
||||
#### Fields
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="dependencyaggregationid"></a>`id` | [`GlobalID!`](#globalid) | ID of the dependency. |
|
||||
| <a id="dependencyaggregationlicenses"></a>`licenses` | [`[License!]`](#license) | Licenses associated to the dependency. |
|
||||
| <a id="dependencyaggregationlocation"></a>`location` | [`Location`](#location) | Information about where the dependency is located. |
|
||||
| <a id="dependencyaggregationname"></a>`name` | [`String!`](#string) | Name of the dependency. |
|
||||
| <a id="dependencyaggregationoccurrencecount"></a>`occurrenceCount` | [`Int!`](#int) | Number of occurrences of the dependency across projects. |
|
||||
| <a id="dependencyaggregationpackager"></a>`packager` | [`PackageManager`](#packagemanager) | Description of the tool used to manage the dependency. |
|
||||
| <a id="dependencyaggregationreachability"></a>`reachability` | [`ReachabilityType`](#reachabilitytype) | Information about reachability of a dependency. |
|
||||
| <a id="dependencyaggregationversion"></a>`version` | [`String`](#string) | Version of the dependency. |
|
||||
| <a id="dependencyaggregationvulnerabilitycount"></a>`vulnerabilityCount` | [`Int!`](#int) | Number of vulnerabilities within the dependency. |
|
||||
|
||||
### `DependencyPath`
|
||||
|
||||
Ancestor path of a given dependency.
|
||||
|
|
@ -27958,6 +28047,33 @@ four standard [pagination arguments](#pagination-arguments):
|
|||
| <a id="groupdependenciessort"></a>`sort` | [`DependencySort`](#dependencysort) | Sort dependencies by given criteria. |
|
||||
| <a id="groupdependenciessourcetypes"></a>`sourceTypes` | [`[SbomSourceType!]`](#sbomsourcetype) | Filter dependencies by source type. |
|
||||
|
||||
##### `Group.dependencyAggregations`
|
||||
|
||||
Software dependencies used by projects under this group.
|
||||
|
||||
{{< details >}}
|
||||
**Introduced** in GitLab 18.0.
|
||||
**Status**: Experiment.
|
||||
{{< /details >}}
|
||||
|
||||
Returns [`DependencyAggregationConnection`](#dependencyaggregationconnection).
|
||||
|
||||
This field returns a [connection](#connections). It accepts the
|
||||
four standard [pagination arguments](#pagination-arguments):
|
||||
`before: String`, `after: String`, `first: Int`, and `last: Int`.
|
||||
|
||||
###### Arguments
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="groupdependencyaggregationscomponentids"></a>`componentIds` | [`[SbomComponentID!]`](#sbomcomponentid) | Filter dependencies by component IDs. |
|
||||
| <a id="groupdependencyaggregationscomponentnames"></a>`componentNames` | [`[String!]`](#string) | Filter dependencies by component names. |
|
||||
| <a id="groupdependencyaggregationspackagemanagers"></a>`packageManagers` | [`[PackageManager!]`](#packagemanager) | Filter dependencies by package managers. |
|
||||
| <a id="groupdependencyaggregationsprojectcountmax"></a>`projectCountMax` | [`Int`](#int) | Filter dependencies by maximum project count. |
|
||||
| <a id="groupdependencyaggregationsprojectcountmin"></a>`projectCountMin` | [`Int`](#int) | Filter dependencies by minimum project count. |
|
||||
| <a id="groupdependencyaggregationssort"></a>`sort` | [`DependencySort`](#dependencysort) | Sort dependencies by given criteria. |
|
||||
| <a id="groupdependencyaggregationssourcetypes"></a>`sourceTypes` | [`[SbomSourceType!]`](#sbomsourcetype) | Filter dependencies by source type. |
|
||||
|
||||
##### `Group.descendantGroups`
|
||||
|
||||
List of descendant groups of this group.
|
||||
|
|
@ -42368,13 +42484,31 @@ Available fields to be exported as CSV.
|
|||
|
||||
| Value | Description |
|
||||
| ----- | ----------- |
|
||||
| <a id="availableexportfieldsauthor"></a>`AUTHOR` | Author name. |
|
||||
| <a id="availableexportfieldsauthor_username"></a>`AUTHOR_USERNAME` | Author username. |
|
||||
| <a id="availableexportfieldscreated_at"></a>`CREATED_AT` | Date of creation. |
|
||||
| <a id="availableexportfieldsdescription"></a>`DESCRIPTION` | Description. |
|
||||
| <a id="availableexportfieldsid"></a>`ID` | Unique identifier. |
|
||||
| <a id="availableexportfieldstitle"></a>`TITLE` | Title. |
|
||||
| <a id="availableexportfieldsassignee"></a>`ASSIGNEE` | Assignee(s) name of the work item. |
|
||||
| <a id="availableexportfieldsassignee_username"></a>`ASSIGNEE_USERNAME` | Assignee(s) username of the work item. |
|
||||
| <a id="availableexportfieldsauthor"></a>`AUTHOR` | Author name of the work item. |
|
||||
| <a id="availableexportfieldsauthor_username"></a>`AUTHOR_USERNAME` | Author username of the work item. |
|
||||
| <a id="availableexportfieldsclosed_at"></a>`CLOSED_AT` | Closed at (UTC) date of the work item. |
|
||||
| <a id="availableexportfieldsconfidential"></a>`CONFIDENTIAL` | Confidentiality flag of the work item. |
|
||||
| <a id="availableexportfieldscreated_at"></a>`CREATED_AT` | Crated at (UTC) date of the work item. |
|
||||
| <a id="availableexportfieldsdescription"></a>`DESCRIPTION` | Description of the work item. |
|
||||
| <a id="availableexportfieldsdue_date"></a>`DUE_DATE` | Due date (UTC) of the work item. |
|
||||
| <a id="availableexportfieldsid"></a>`ID` | Unique identifier of the work item. |
|
||||
| <a id="availableexportfieldsiid"></a>`IID` | IID identifier of the work item. |
|
||||
| <a id="availableexportfieldslocked"></a>`LOCKED` | Locked discussions flag of the work item. |
|
||||
| <a id="availableexportfieldsmilestone"></a>`MILESTONE` | Milestone of the work item. |
|
||||
| <a id="availableexportfieldsparent_id"></a>`PARENT_ID` | Parent ID of the work item. |
|
||||
| <a id="availableexportfieldsparent_iid"></a>`PARENT_IID` | Parent IID of the work item. |
|
||||
| <a id="availableexportfieldsparent_title"></a>`PARENT_TITLE` | Parent title of the work item. |
|
||||
| <a id="availableexportfieldsstart_date"></a>`START_DATE` | Start date (UTC) of the work item. |
|
||||
| <a id="availableexportfieldsstate"></a>`STATE` | State of the work item. |
|
||||
| <a id="availableexportfieldstime_estimate"></a>`TIME_ESTIMATE` | Time estimate of the work item. |
|
||||
| <a id="availableexportfieldstime_spent"></a>`TIME_SPENT` | Time spent of the work item. |
|
||||
| <a id="availableexportfieldstitle"></a>`TITLE` | Title of the work item. |
|
||||
| <a id="availableexportfieldstype"></a>`TYPE` | Type of the work item. |
|
||||
| <a id="availableexportfieldsupdated_at"></a>`UPDATED_AT` | Updated at (UTC) date of the work item. |
|
||||
| <a id="availableexportfieldsurl"></a>`URL` | Web URL to the work item. |
|
||||
| <a id="availableexportfieldsweight"></a>`WEIGHT` | Weight of the work item. |
|
||||
|
||||
### `BlobViewersType`
|
||||
|
||||
|
|
@ -47569,6 +47703,26 @@ four standard [pagination arguments](#pagination-arguments):
|
|||
| ---- | ---- | ----------- |
|
||||
| <a id="currentusertodoscurrentusertodosstate"></a>`state` | [`TodoStateEnum`](#todostateenum) | State of the to-do items. |
|
||||
|
||||
#### `DependencyInterface`
|
||||
|
||||
Implementations:
|
||||
|
||||
- [`Dependency`](#dependency)
|
||||
- [`DependencyAggregation`](#dependencyaggregation)
|
||||
|
||||
##### Fields
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="dependencyinterfaceid"></a>`id` | [`GlobalID!`](#globalid) | ID of the dependency. |
|
||||
| <a id="dependencyinterfacelicenses"></a>`licenses` | [`[License!]`](#license) | Licenses associated to the dependency. |
|
||||
| <a id="dependencyinterfacelocation"></a>`location` | [`Location`](#location) | Information about where the dependency is located. |
|
||||
| <a id="dependencyinterfacename"></a>`name` | [`String!`](#string) | Name of the dependency. |
|
||||
| <a id="dependencyinterfacepackager"></a>`packager` | [`PackageManager`](#packagemanager) | Description of the tool used to manage the dependency. |
|
||||
| <a id="dependencyinterfacereachability"></a>`reachability` | [`ReachabilityType`](#reachabilitytype) | Information about reachability of a dependency. |
|
||||
| <a id="dependencyinterfaceversion"></a>`version` | [`String`](#string) | Version of the dependency. |
|
||||
| <a id="dependencyinterfacevulnerabilitycount"></a>`vulnerabilityCount` | [`Int!`](#int) | Number of vulnerabilities within the dependency. |
|
||||
|
||||
#### `DesignFields`
|
||||
|
||||
Implementations:
|
||||
|
|
|
|||
|
|
@ -151,15 +151,3 @@ Example response:
|
|||
"content": "# This file is a template, and might need editing before it works on your project.\n# This Dockerfile installs a compiled binary into a bare system.\n# You must either commit your compiled binary into source control (not recommended)\n# or build the binary first as part of a CI/CD pipeline.\n\nFROM buildpack-deps:buster\n\nWORKDIR /usr/local/bin\n\n# Change `app` to whatever your binary is called\nAdd app .\nCMD [\"./app\"]\n"
|
||||
}
|
||||
```
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -144,15 +144,3 @@ Example response:
|
|||
"content": "*.gem\n*.rbc\n/.config\n/coverage/\n/InstalledFiles\n/pkg/\n/spec/reports/\n/spec/examples.txt\n/test/tmp/\n/test/version_tmp/\n/tmp/\n\n# Used by dotenv library to load environment variables.\n# .env\n\n## Specific to RubyMotion:\n.dat*\n.repl_history\nbuild/\n*.bridgesupport\nbuild-iPhoneOS/\nbuild-iPhoneSimulator/\n\n## Specific to RubyMotion (use of CocoaPods):\n#\n# We recommend against adding the Pods directory to your .gitignore. However\n# you should judge for yourself, the pros and cons are mentioned at:\n# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control\n#\n# vendor/Pods/\n\n## Documentation cache and generated files:\n/.yardoc/\n/_yardoc/\n/doc/\n/rdoc/\n\n## Environment normalization:\n/.bundle/\n/vendor/bundle\n/lib/bundler/man/\n\n# for a library or gem, you might want to ignore these files since the code is\n# intended to run in multiple environments; otherwise, check them in:\n# Gemfile.lock\n# .ruby-version\n# .ruby-gemset\n\n# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:\n.rvmrc\n"
|
||||
}
|
||||
```
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -145,15 +145,3 @@ Example response:
|
|||
"content": "# This file is a template, and might need editing before it works on your project.\n# You can copy and paste this template into a new `.gitlab-ci.yml` file.\n# You should not add this template to an existing `.gitlab-ci.yml` file by using the `include:` keyword.\n#\n# To contribute improvements to CI/CD templates, please follow the Development guide at:\n# https://docs.gitlab.com/development/cicd/templates/\n# This specific template is located at:\n# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Ruby.gitlab-ci.yml\n\n# Official language image. Look for the different tagged releases at:\n# https://hub.docker.com/r/library/ruby/tags/\nimage: ruby:latest\n\n# Pick zero or more services to be used on all builds.\n# Only needed when using a docker container to run your tests in.\n# Check out: https://docs.gitlab.com/ee/ci/services/\nservices:\n - mysql:latest\n - redis:latest\n - postgres:latest\n\nvariables:\n POSTGRES_DB: database_name\n\n# Cache gems in between builds\ncache:\n key:\n files:\n - Gemfile.lock\n paths:\n - vendor/ruby\n\n# This is a basic example for a gem or script which doesn't use\n# services such as redis or postgres\nbefore_script:\n - ruby -v # Print out ruby version for debugging\n # Uncomment next line if your rails app needs a JS runtime:\n # - apt-get update -q && apt-get install nodejs -yqq\n - bundle config set --local deployment true\n - bundle config set --local path './vendor/ruby' # Install dependencies into ./vendor/ruby\n - bundle install -j $(nproc)\n\n# Optional - Delete if not using `rubocop`\nrubocop:\n script:\n - rubocop\n\nrspec:\n script:\n - rspec spec\n\nrails:\n variables:\n DATABASE_URL: \"postgresql://postgres:postgres@postgres:5432/$POSTGRES_DB\"\n script:\n - rails db:migrate\n - rails db:seed\n - rails test\n\n# This deploy job uses a simple deploy flow to Heroku, other providers, e.g. AWS Elastic Beanstalk\n# are supported too: https://github.com/travis-ci/dpl\ndeploy:\n stage: deploy\n environment: production\n script:\n - gem install dpl\n - dpl --provider=heroku --app=$HEROKU_APP_NAME --api-key=$HEROKU_PRODUCTION_KEY\n"
|
||||
}
|
||||
```
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -171,15 +171,3 @@ Example response:
|
|||
"content":"The MIT License (MIT)\n\nCopyright (c) 2016 John Doe\n [...]"
|
||||
}
|
||||
```
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -163,15 +163,3 @@ To use GitLab CI/CD with a Bitbucket Cloud repository:
|
|||
|
||||
GitLab is now configured to mirror changes from Bitbucket, run CI/CD pipelines
|
||||
configured in `.gitlab-ci.yml` and push the status to Bitbucket.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -157,15 +157,3 @@ The `status` field indicates whether a deployment is blocked.
|
|||
## Related topics
|
||||
|
||||
- [Deployment approvals feature epic](https://gitlab.com/groups/gitlab-org/-/epics/6832)
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -143,15 +143,3 @@ SAML, and Kerberos. Here are some documents you might be interested in reading:
|
|||
- [Integration documentation](../../integration/_index.md)
|
||||
- [GitLab Pages configuration](../../administration/pages/_index.md)
|
||||
- [GitLab container registry configuration](../../administration/packages/container_registry.md)
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -137,15 +137,3 @@ To disable the relative URL:
|
|||
|
||||
1. Follow the same as above starting from 2. and set up the
|
||||
GitLab URL to one that doesn't contain a relative path.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -66,15 +66,3 @@ vulnerability.
|
|||
- NGINX ["Module `ngx_http_spdy_module`"](https://nginx.org/en/docs/http/ngx_http_spdy_module.html)
|
||||
- Tenable Network Security, Inc. ["Transport Layer Security (TLS) Protocol CRIME Vulnerability"](https://www.tenable.com/plugins/nessus/62565)
|
||||
- Wikipedia contributors, ["CRIME"](https://en.wikipedia.org/wiki/CRIME) Wikipedia, The Free Encyclopedia
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -62,15 +62,3 @@ You can adjust the underlying operating system to increase overall security. For
|
|||
## NIST 800-53 compliance
|
||||
|
||||
You can configure GitLab Self-Managed to enforce compliance with the NIST 800-53 security standard. For more information, see [NIST 800-53 compliance](hardening_nist_800_53.md).
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -220,15 +220,3 @@ accesses. Here are a few notables to keep in mind:
|
|||
|
||||
- Under **Notes rate limit** and **Users API rate limit** you can exclude specific users
|
||||
from those limits if needed.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -38,15 +38,3 @@ restrictions, and as different users with different roles and responsibilities c
|
|||
trigger pipelines that can interact with those environments, you should
|
||||
restrict these environments. For more information, see
|
||||
[protected environments](../ci/environments/protected_environments.md).
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -157,15 +157,3 @@ disabling the container registry entirely. You may have to adjust firewall rules
|
|||
allow access - if a completely standalone system, you should restrict access to the
|
||||
Container Registry to localhost only. Specific examples of ports used and their
|
||||
configuration are also included in the documentation.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -71,15 +71,3 @@ requires. In those cases, use a combination of external, operating system, and
|
|||
configuration options for firewall rules. Any option that uses restrictions should only
|
||||
be opened up enough to allow the subsystem to function. Whenever possible use TLS
|
||||
encryption for network traffic.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -160,15 +160,3 @@ net.ipv6.conf.default.accept_redirects=0
|
|||
net.ipv4.conf.all.send_redirects=0
|
||||
net.ipv4.conf.default.send_redirects=0
|
||||
```
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -31,15 +31,3 @@ destruction. This limitation is the reason why only certain people are allowed
|
|||
to [add users to a project](../user/project/members/_index.md)
|
||||
and why only a GitLab administrator can
|
||||
[force push a protected branch](../user/project/repository/branches/protected.md).
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -32,15 +32,3 @@ To change the minimum password length using GitLab UI:
|
|||
1. Expand **Sign-up restrictions**.
|
||||
1. Enter a **Minimum password length** value greater than or equal to `8`.
|
||||
1. Select **Save changes**.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -80,15 +80,3 @@ accounts using the key pair.
|
|||
|
||||
If your key is disallowed by this restriction, [generate a new SSH key pair](../user/ssh.md#generate-an-ssh-key-pair)
|
||||
to use instead.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -274,15 +274,3 @@ SSH key.
|
|||
|
||||
Once an OTP is verified, anyone can run Git over SSH with that private SSH key for
|
||||
the configured [session duration](../administration/settings/account_and_limit_settings.md#customize-session-duration-for-git-operations-when-2fa-is-enabled).
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -105,15 +105,3 @@ mutation{
|
|||
Project members that do not have the Owner or Maintainer role cannot access this GraphQL endpoint.
|
||||
|
||||
You can also use the REST API for [projects](../api/project_markdown_uploads.md#delete-an-uploaded-file-by-secret-and-filename) or [groups](../api/group_markdown_uploads.md#delete-an-uploaded-file-by-secret-and-filename) to delete an uploaded file.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -92,9 +92,11 @@ To change the subscription contact:
|
|||
1. Edit the contact details.
|
||||
1. Select **Save changes**.
|
||||
|
||||
### Add a secondary contact
|
||||
### Add a billing account manager
|
||||
|
||||
To add a secondary contact for your account:
|
||||
Billing account managers can view and manage subscriptions and billing account information in the Customers Portal.
|
||||
|
||||
To add another billing account manager for your account:
|
||||
|
||||
1. Ensure an account exists in the [Customers Portal](https://customers.gitlab.com/customers/sign_in) for the user you want to add.
|
||||
1. [Create a ticket with the Support team](https://support.gitlab.com/hc/en-us/requests/new?ticket_form_id=360000071293). Include any relevant material in your request.
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ When the purchase has been processed, you receive confirmation of your new subsc
|
|||
Contacts can renew a subscription, cancel a subscription, or transfer the subscription to a different namespace.
|
||||
|
||||
You can [change profile owner information](../customers_portal.md#change-profile-owner-information)
|
||||
and [add a secondary contact for your subscription](../customers_portal.md#add-a-secondary-contact).
|
||||
and [add another billing account manager](../customers_portal.md#add-a-billing-account-manager).
|
||||
|
||||
## How seat usage is determined
|
||||
|
||||
|
|
|
|||
|
|
@ -600,7 +600,7 @@ Contacts can manage subscriptions and billing account settings.
|
|||
For information about how to transfer ownership of the Customers Portal account to another person, see
|
||||
[Change profile owner information](../customers_portal.md#change-profile-owner-information).
|
||||
|
||||
To add another contact for your subscription, see [Add a secondary contact](../customers_portal.md#add-a-secondary-contact).
|
||||
To add another contact for your subscription, see [Add a billing account manager](../customers_portal.md#add-a-billing-account-manager).
|
||||
|
||||
## Subscription expiry
|
||||
|
||||
|
|
|
|||
|
|
@ -272,15 +272,3 @@ The configured user can access your cluster with the Kubernetes API.
|
|||
|
||||
- [Architectural blueprint](https://gitlab.com/gitlab-org/cluster-integration/gitlab-agent/-/blob/master/doc/kubernetes_user_access.md)
|
||||
- [Dashboard for Kubernetes](https://gitlab.com/groups/gitlab-org/-/epics/2493)
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -706,6 +706,15 @@ The limit varies depending on your plan and the number of seats in your subscrip
|
|||
| GitLab Ultimate and open source, `1,000-4,999` seats | `9,000` |
|
||||
| GitLab Ultimate and open source, `5,000` seats or more | `13,000` |
|
||||
|
||||
### Security policy limits
|
||||
|
||||
| Policy type | Default limit |
|
||||
|:--------------------------------------------------------------------|:-----------------------|
|
||||
| Merge request approval policy | 5 per security policy project |
|
||||
| Scan execution policy | 5 per security policy project |
|
||||
| Pipeline execution policy | 5 per security policy project |
|
||||
| Vulnerability management policy | 5 per security policy project |
|
||||
|
||||
### Other limits
|
||||
|
||||
| Setting | Default for GitLab.com |
|
||||
|
|
|
|||
|
|
@ -74,9 +74,13 @@ Follow this path to learn how to:
|
|||
|
||||
Want to start using GitLab Duo right now? Here's how:
|
||||
|
||||
1. Open GitLab Duo Chat by selecting **GitLab Duo Chat** in the upper-right corner of the GitLab UI.
|
||||
1. Open GitLab Duo Chat by selecting **GitLab Duo Chat** in the upper-right corner of the GitLab UI,
|
||||
or in your IDE.
|
||||
1. Ask a question about your project, code, or how to use GitLab.
|
||||
1. Try one of the AI-native features like Code Suggestions in your IDE, or use Chat to summarize a bulky issue.
|
||||
1. Try one of the AI-native features like Code Suggestions in your IDE, or use Chat:
|
||||
|
||||
- In the UI to summarize a bulky issue.
|
||||
- In the IDE to refactor some existing code.
|
||||
|
||||
[View all of the GitLab Duo possibilities →](_index.md)
|
||||
|
||||
|
|
@ -108,6 +112,7 @@ GitLab Duo is integrated with your development processes and is available:
|
|||
If you're new to GitLab Duo, start with these features:
|
||||
|
||||
- **[GitLab Duo Chat](../gitlab_duo_chat/_index.md)** - Ask questions about GitLab and get help with basic tasks
|
||||
- **[Code Suggestions](../project/repository/code_suggestions/_index.md)** - Get AI-native code completion in your IDE
|
||||
- **[Code Explanation](../project/repository/code_explain.md)** - Understand code in files or merge requests
|
||||
- **[Merge Request Summary](../project/merge_requests/duo_in_merge_requests.md#generate-a-description-by-summarizing-code-changes)** - Generate descriptions for your changes automatically
|
||||
|
||||
|
|
@ -115,7 +120,6 @@ If you're new to GitLab Duo, start with these features:
|
|||
|
||||
After you're comfortable with the basics, try these more advanced features:
|
||||
|
||||
- **[Code Suggestions](../project/repository/code_suggestions/_index.md)** - Get AI-native code completion in your IDE
|
||||
- **[Test Generation](../gitlab_duo_chat/examples.md#write-tests-in-the-ide)** - Create tests for your code automatically
|
||||
- **[Root Cause Analysis](../gitlab_duo_chat/examples.md#troubleshoot-failed-cicd-jobs-with-root-cause-analysis)** - Troubleshoot failed CI/CD jobs
|
||||
|
||||
|
|
|
|||
|
|
@ -185,15 +185,3 @@ documentation for project-level clusters.
|
|||
|
||||
For information on integrating GitLab and Kubernetes, see
|
||||
[Kubernetes clusters](../../infrastructure/clusters/_index.md).
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -69,15 +69,3 @@ For more information, see:
|
|||
|
||||
- [ClickHouse integration guidelines](../../../integration/clickhouse.md)
|
||||
- [ClickHouse usage at GitLab](https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/clickhouse_usage/)
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -118,15 +118,3 @@ A roadmap filtered for the parent epic opens.
|
|||
- [Add an emoji reaction](../../emoji_reactions.md) to an epic or its comments.
|
||||
- Collaborate on an epic by posting comments in a [thread](../../discussions/_index.md).
|
||||
- Use [health status](manage_epics.md#health-status) to track your progress.
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -75,15 +75,3 @@ To download the coverage data:
|
|||
|
||||
- [Repository analytics for projects](../../analytics/repository_analytics.md)
|
||||
- [Code coverage](../../../ci/testing/code_coverage/_index.md)
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue