Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
06e27155a5
commit
1839f3a844
|
|
@ -2,21 +2,6 @@
|
|||
# Cop supports --autocorrect.
|
||||
Graphql/Descriptions:
|
||||
Exclude:
|
||||
- 'app/graphql/types/alert_management/alert_type.rb'
|
||||
- 'app/graphql/types/award_emojis/award_emoji_type.rb'
|
||||
- 'app/graphql/types/board_list_type.rb'
|
||||
- 'app/graphql/types/branch_protections/base_access_level_type.rb'
|
||||
- 'app/graphql/types/branch_rules/branch_protection_type.rb'
|
||||
- 'app/graphql/types/ci/job_token_scope_type.rb'
|
||||
- 'app/graphql/types/ci/pipeline_type.rb'
|
||||
- 'app/graphql/types/ci/runner_status_enum.rb'
|
||||
- 'app/graphql/types/ci/runner_type.rb'
|
||||
- 'app/graphql/types/ci/runner_web_url_edge.rb'
|
||||
- 'app/graphql/types/ci/status_action_type.rb'
|
||||
- 'app/graphql/types/clusters/agent_token_type.rb'
|
||||
- 'app/graphql/types/clusters/agent_type.rb'
|
||||
- 'app/graphql/types/container_expiration_policy_type.rb'
|
||||
- 'app/graphql/types/container_repository_tag_type.rb'
|
||||
- 'app/graphql/types/container_repository_type.rb'
|
||||
- 'app/graphql/types/deployment_tag_type.rb'
|
||||
- 'app/graphql/types/design_management/design_at_version_type.rb'
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
1a16fa05c2645a0abba4e2f028e1fdbe5d85be2f
|
||||
c29c5ba968d141237000185734baa95e122db80b
|
||||
|
|
|
|||
|
|
@ -5,12 +5,12 @@ function getTruncatedName(name) {
|
|||
}
|
||||
|
||||
export function generateAgentRegistrationCommand({ name, token, version, address }) {
|
||||
const versionValue = window.gon.dot_com ? '' : `\n --set image.tag=v${version} \\`;
|
||||
return `helm repo add gitlab https://charts.gitlab.io
|
||||
helm repo update
|
||||
helm upgrade --install ${name} gitlab/gitlab-agent \\
|
||||
--namespace gitlab-agent-${getTruncatedName(name)} \\
|
||||
--create-namespace \\
|
||||
--set image.tag=v${version} \\
|
||||
--create-namespace \\${versionValue}
|
||||
--set config.token=${token} \\
|
||||
--set config.kasAddress=${address}`;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -277,7 +277,7 @@ export default {
|
|||
</template>
|
||||
</template>
|
||||
|
||||
<div v-if="!isDeleteInProgress" class="gl-display-flex gl-justify-content-center">
|
||||
<div v-if="!isDeleteInProgress" class="gl-flex gl-justify-center">
|
||||
<persisted-pagination
|
||||
class="gl-mt-3"
|
||||
:pagination="tagsPageInfo"
|
||||
|
|
|
|||
|
|
@ -98,7 +98,7 @@ export default {
|
|||
{
|
||||
text: this.$options.i18n.REMOVE_TAG_BUTTON_TITLE,
|
||||
extraAttrs: {
|
||||
class: 'gl-text-red-500!',
|
||||
class: '!gl-text-red-500',
|
||||
'data-testid': 'single-delete-button',
|
||||
},
|
||||
action: () => {
|
||||
|
|
@ -177,11 +177,11 @@ export default {
|
|||
/>
|
||||
</template>
|
||||
<template #left-primary>
|
||||
<div class="gl-display-flex gl-align-items-center">
|
||||
<div class="gl-flex gl-items-center">
|
||||
<div
|
||||
v-gl-tooltip="tag.name"
|
||||
data-testid="name"
|
||||
class="gl-text-overflow-ellipsis gl-overflow-hidden gl-whitespace-nowrap"
|
||||
class="gl-overflow-hidden gl-text-ellipsis gl-whitespace-nowrap"
|
||||
:class="mobileClasses"
|
||||
>
|
||||
{{ tag.name }}
|
||||
|
|
@ -201,7 +201,7 @@ export default {
|
|||
v-if="isInvalidTag"
|
||||
v-gl-tooltip.d0="$options.i18n.MISSING_MANIFEST_WARNING_TOOLTIP"
|
||||
name="warning"
|
||||
class="gl-text-orange-500 gl-mr-2"
|
||||
class="gl-mr-2 gl-text-orange-500"
|
||||
/>
|
||||
|
||||
<gl-icon
|
||||
|
|
@ -252,7 +252,7 @@ export default {
|
|||
category="tertiary"
|
||||
no-caret
|
||||
placement="bottom-end"
|
||||
:class="{ 'gl-opacity-0 gl-pointer-events-none': disabled }"
|
||||
:class="{ 'gl-pointer-events-none gl-opacity-0': disabled }"
|
||||
data-testid="additional-actions"
|
||||
:items="items"
|
||||
/>
|
||||
|
|
@ -312,8 +312,8 @@ export default {
|
|||
icon="pencil"
|
||||
data-testid="signatures-detail"
|
||||
>
|
||||
<div class="gl-display-flex">
|
||||
<span class="gl-text-truncate gl-mr-3 gl-flex-basis-0 gl-flex-grow-1">
|
||||
<div class="gl-flex">
|
||||
<span class="gl-mr-3 gl-grow gl-basis-0 gl-truncate">
|
||||
<gl-sprintf :message="s__('ContainerRegistry|Signature digest: %{digest}')">
|
||||
<template #digest>{{ digest }}</template>
|
||||
</gl-sprintf>
|
||||
|
|
|
|||
|
|
@ -78,8 +78,8 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div v-if="showStatus" id="status-popover-container" class="gl-inline-flex gl-align-items-center">
|
||||
<div class="gl-inline-flex gl-align-items-center">
|
||||
<div v-if="showStatus" id="status-popover-container" class="gl-inline-flex gl-items-center">
|
||||
<div class="gl-inline-flex gl-items-center">
|
||||
<gl-icon :name="expireIconName" data-testid="main-icon" />
|
||||
</div>
|
||||
<span class="gl-mx-2">
|
||||
|
|
@ -104,7 +104,7 @@ export default {
|
|||
<gl-sprintf :message="$options.i18n.PARTIAL_CLEANUP_CONTINUE_MESSAGE">
|
||||
<template #time>{{ calculatedTimeTilNextRun }}</template
|
||||
><template #link="{ content }"
|
||||
><gl-link :href="$options.cleanupPolicyHelpPage" class="gl-font-sm" target="_blank">{{
|
||||
><gl-link :href="$options.cleanupPolicyHelpPage" class="gl-text-sm" target="_blank">{{
|
||||
content
|
||||
}}</gl-link></template
|
||||
>
|
||||
|
|
|
|||
|
|
@ -27,7 +27,7 @@ export default {
|
|||
|
||||
<template>
|
||||
<ul class="gl-pl-0">
|
||||
<li v-for="(listItem, index) in images" :key="index" class="gl-list-style-none">
|
||||
<li v-for="(listItem, index) in images" :key="index" class="gl-list-none">
|
||||
<image-list-row
|
||||
:item="listItem"
|
||||
:metadata-loading="metadataLoading"
|
||||
|
|
|
|||
|
|
@ -152,7 +152,7 @@ export default {
|
|||
<router-link
|
||||
v-else
|
||||
ref="imageName"
|
||||
class="gl-text-body gl-font-bold"
|
||||
class="gl-font-bold gl-text-primary"
|
||||
data-testid="details-link"
|
||||
:to="{ name: 'details', params: { id } }"
|
||||
>
|
||||
|
|
@ -172,7 +172,7 @@ export default {
|
|||
<template v-if="!metadataLoading">
|
||||
<span v-if="deleting">{{ $options.i18n.ROW_SCHEDULED_FOR_DELETION }}</span>
|
||||
<template v-else>
|
||||
<span class="gl-display-flex gl-align-items-center" data-testid="tags-count">
|
||||
<span class="gl-flex gl-items-center" data-testid="tags-count">
|
||||
<gl-sprintf :message="tagsCountText">
|
||||
<template #count>
|
||||
{{ item.tagsCount }}
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ export default {
|
|||
<clipboard-button
|
||||
:text="dockerLoginCommand"
|
||||
:title="$options.i18n.copyLoginTitle"
|
||||
class="gl-m-0!"
|
||||
class="!gl-m-0"
|
||||
/>
|
||||
</template>
|
||||
</gl-form-input-group>
|
||||
|
|
@ -93,7 +93,7 @@ export default {
|
|||
<clipboard-button
|
||||
:text="dockerBuildCommand"
|
||||
:title="$options.i18n.copyBuildTitle"
|
||||
class="gl-m-0!"
|
||||
class="!gl-m-0"
|
||||
/>
|
||||
</template>
|
||||
</gl-form-input-group>
|
||||
|
|
@ -103,7 +103,7 @@ export default {
|
|||
<clipboard-button
|
||||
:text="dockerPushCommand"
|
||||
:title="$options.i18n.copyPushTitle"
|
||||
class="gl-m-0!"
|
||||
class="!gl-m-0"
|
||||
/>
|
||||
</template>
|
||||
</gl-form-input-group>
|
||||
|
|
|
|||
|
|
@ -348,7 +348,7 @@ export default {
|
|||
</template>
|
||||
</template>
|
||||
|
||||
<div v-if="!mutationLoading" class="gl-display-flex gl-justify-content-center">
|
||||
<div v-if="!mutationLoading" class="gl-flex gl-justify-center">
|
||||
<persisted-pagination
|
||||
class="gl-mt-3"
|
||||
:pagination="pageInfo"
|
||||
|
|
|
|||
|
|
@ -59,14 +59,14 @@ export default {
|
|||
id="code-example"
|
||||
readonly
|
||||
:value="$options.codeExample"
|
||||
class="gl-w-7/10 gl-mx-auto"
|
||||
class="gl-mx-auto gl-w-7/10"
|
||||
select-on-click
|
||||
>
|
||||
<template #append>
|
||||
<clipboard-button
|
||||
:text="$options.codeExample"
|
||||
:title="$options.i18n.copyExample"
|
||||
class="gl-m-0!"
|
||||
class="!gl-m-0"
|
||||
/>
|
||||
</template>
|
||||
</gl-form-input-group>
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ export default {
|
|||
|
||||
<template>
|
||||
<div class="gl-mt-6">
|
||||
<h3 class="gl-font-base gl-pb-3 gl-mb-0 gl-border-b-1 gl-border-gray-100 gl-border-b-solid">
|
||||
<h3 class="gl-mb-0 gl-border-b-1 gl-border-gray-100 gl-pb-3 gl-text-base gl-border-b-solid">
|
||||
{{ $options.i18n.listTitle }}
|
||||
</h3>
|
||||
|
||||
|
|
@ -61,7 +61,7 @@ export default {
|
|||
/>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="gl-display-flex gl-justify-content-center">
|
||||
<div class="gl-flex gl-justify-center">
|
||||
<gl-keyset-pagination
|
||||
v-bind="pagination"
|
||||
class="gl-mt-3"
|
||||
|
|
|
|||
|
|
@ -81,8 +81,12 @@ export default {
|
|||
<template>
|
||||
<list-item v-bind="$attrs">
|
||||
<template #left-primary>
|
||||
<div class="gl-display-flex gl-align-items-center">
|
||||
<router-link class="gl-text-body gl-font-bold gl-break-all" data-testid="name" :to="linkTo">
|
||||
<div class="gl-flex gl-items-center">
|
||||
<router-link
|
||||
class="gl-break-all gl-font-bold gl-text-primary"
|
||||
data-testid="name"
|
||||
:to="linkTo"
|
||||
>
|
||||
{{ artifact.digest }}
|
||||
</router-link>
|
||||
<clipboard-button
|
||||
|
|
@ -98,7 +102,7 @@ export default {
|
|||
<span class="gl-mr-3" data-testid="size">
|
||||
{{ formattedSize }}
|
||||
</span>
|
||||
<span id="tagsCount" class="gl-display-flex gl-align-items-center" data-testid="tags-count">
|
||||
<span id="tagsCount" class="gl-flex gl-items-center" data-testid="tags-count">
|
||||
<gl-icon name="tag" class="gl-mr-2" />
|
||||
{{ tagsCountText }}
|
||||
</span>
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ export default {
|
|||
<template>
|
||||
<list-item v-bind="$attrs">
|
||||
<template #left-primary>
|
||||
<router-link class="gl-text-body gl-font-bold" data-testid="details-link" :to="linkTo">
|
||||
<router-link class="gl-font-bold gl-text-primary" data-testid="details-link" :to="linkTo">
|
||||
{{ item.name }}
|
||||
</router-link>
|
||||
<clipboard-button
|
||||
|
|
@ -56,7 +56,7 @@ export default {
|
|||
</template>
|
||||
<template #left-secondary>
|
||||
<template v-if="!metadataLoading">
|
||||
<span class="gl-display-flex gl-align-items-center" data-testid="artifacts-count">
|
||||
<span class="gl-flex gl-items-center" data-testid="artifacts-count">
|
||||
<gl-icon name="package" class="gl-mr-2" />
|
||||
{{ artifactCountText }}
|
||||
</span>
|
||||
|
|
|
|||
|
|
@ -46,11 +46,8 @@ export default {
|
|||
<template>
|
||||
<list-item v-bind="$attrs">
|
||||
<template #left-primary>
|
||||
<div class="gl-display-flex gl-align-items-center">
|
||||
<div
|
||||
data-testid="name"
|
||||
class="gl-text-overflow-ellipsis gl-overflow-hidden gl-whitespace-nowrap"
|
||||
>
|
||||
<div class="gl-flex gl-items-center">
|
||||
<div data-testid="name" class="gl-overflow-hidden gl-text-ellipsis gl-whitespace-nowrap">
|
||||
{{ tag.name }}
|
||||
</div>
|
||||
<clipboard-button
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ export default {
|
|||
|
||||
<template v-else-if="hasVersions">
|
||||
<ul class="gl-pl-0">
|
||||
<li v-for="v in packageEntity.versions" :key="v.id" class="gl-list-style-none">
|
||||
<li v-for="v in packageEntity.versions" :key="v.id" class="gl-list-none">
|
||||
<package-list-row
|
||||
:package-entity="packageEntityWithName(v)"
|
||||
:package-link="v.id.toString()"
|
||||
|
|
|
|||
|
|
@ -96,7 +96,7 @@ export default {
|
|||
|
||||
<template>
|
||||
<div>
|
||||
<h3 class="gl-font-lg gl-mt-5">{{ __('Assets') }}</h3>
|
||||
<h3 class="gl-mt-5 gl-text-lg">{{ __('Assets') }}</h3>
|
||||
<gl-table
|
||||
:fields="filesTableHeaderFields"
|
||||
:items="filesTableRows"
|
||||
|
|
@ -120,7 +120,7 @@ export default {
|
|||
<file-icon
|
||||
:file-name="item.file_name"
|
||||
css-classes="gl-relative file-icon"
|
||||
class="gl-mr-1 gl-relative"
|
||||
class="gl-relative gl-mr-1"
|
||||
/>
|
||||
<span>{{ item.file_name }}</span>
|
||||
</gl-link>
|
||||
|
|
@ -155,7 +155,7 @@ export default {
|
|||
|
||||
<template #row-details="{ item }">
|
||||
<div
|
||||
class="gl-display-flex gl-flex-direction-column gl-flex-grow-1 gl-bg-gray-10 gl-rounded-base gl-shadow-inner-1-gray-100"
|
||||
class="gl-flex gl-grow gl-flex-col gl-rounded-base gl-bg-gray-10 gl-shadow-inner-1-gray-100"
|
||||
>
|
||||
<file-sha
|
||||
v-if="item.file_sha256"
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ export default {
|
|||
|
||||
<template>
|
||||
<div class="issuable-discussion">
|
||||
<h3 class="gl-font-lg" data-testid="title">{{ __('History') }}</h3>
|
||||
<h3 class="gl-text-lg" data-testid="title">{{ __('History') }}</h3>
|
||||
<ul class="timeline main-notes-list notes gl-mb-4" data-testid="timeline">
|
||||
<history-item icon="clock" data-testid="created-on">
|
||||
<gl-sprintf :message="$options.i18n.createdOn">
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ export default {
|
|||
|
||||
<template>
|
||||
<div>
|
||||
<h3 class="gl-font-lg">{{ __('Provision instructions') }}</h3>
|
||||
<h3 class="gl-text-lg">{{ __('Provision instructions') }}</h3>
|
||||
|
||||
<code-instruction
|
||||
:label="
|
||||
|
|
@ -60,7 +60,7 @@ export default {
|
|||
multiline
|
||||
/>
|
||||
|
||||
<h3 class="gl-font-lg">{{ __('Registry setup') }}</h3>
|
||||
<h3 class="gl-text-lg">{{ __('Registry setup') }}</h3>
|
||||
|
||||
<code-instruction
|
||||
:label="s__('InfrastructureRegistry|To authorize access to the Terraform registry:')"
|
||||
|
|
|
|||
|
|
@ -71,7 +71,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div class="gl-display-flex gl-flex-direction-column">
|
||||
<div class="gl-flex gl-flex-col">
|
||||
<slot v-if="isListEmpty && !isLoading" name="empty-state"></slot>
|
||||
|
||||
<div v-else-if="isLoading">
|
||||
|
|
@ -80,7 +80,7 @@ export default {
|
|||
|
||||
<template v-else>
|
||||
<ul data-testid="packages-table" class="gl-pl-0">
|
||||
<li v-for="packageEntity in list" :key="packageEntity.id" class="gl-list-style-none">
|
||||
<li v-for="packageEntity in list" :key="packageEntity.id" class="gl-list-none">
|
||||
<packages-list-row
|
||||
:package-entity="packageEntity"
|
||||
:package-link="packageEntity._links.web_path"
|
||||
|
|
@ -95,7 +95,7 @@ export default {
|
|||
:per-page="perPage"
|
||||
:total-items="totalItems"
|
||||
align="center"
|
||||
class="gl-w-full gl-mt-3"
|
||||
class="gl-mt-3 gl-w-full"
|
||||
/>
|
||||
|
||||
<delete-package-modal
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div class="gl-display-flex gl-align-items-center">
|
||||
<div class="gl-flex gl-items-center">
|
||||
<gl-icon name="infrastructure-registry" class="gl-ml-3 gl-mr-2" />
|
||||
<span>{{ s__('InfrastructureRegistry|Terraform') }}</span>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -80,10 +80,10 @@ export default {
|
|||
<template>
|
||||
<list-item data-testid="package-row" :disabled="disabledRow">
|
||||
<template #left-primary>
|
||||
<div class="gl-display-flex gl-align-items-center gl-mr-3 gl-min-w-0">
|
||||
<div class="gl-mr-3 gl-flex gl-min-w-0 gl-items-center">
|
||||
<gl-link
|
||||
:href="packageLink"
|
||||
class="gl-text-body gl-min-w-0"
|
||||
class="gl-min-w-0 gl-text-primary"
|
||||
data-testid="details-link"
|
||||
:disabled="disabledRow"
|
||||
>
|
||||
|
|
@ -93,7 +93,7 @@ export default {
|
|||
<gl-button
|
||||
v-if="showWarningIcon"
|
||||
v-gl-tooltip="{ title: $options.i18n.erroredPackageText }"
|
||||
class="gl-hover-bg-transparent!"
|
||||
class="hover:!gl-bg-transparent"
|
||||
icon="warning"
|
||||
category="tertiary"
|
||||
data-testid="warning-icon"
|
||||
|
|
@ -110,10 +110,10 @@ export default {
|
|||
</div>
|
||||
</template>
|
||||
<template #left-secondary>
|
||||
<div class="gl-display-flex">
|
||||
<div class="gl-flex">
|
||||
<span>{{ packageEntity.version }}</span>
|
||||
|
||||
<div v-if="hasPipeline" class="gl-hidden sm:g-flex gl-ml-2">
|
||||
<div v-if="hasPipeline" class="sm:g-flex gl-ml-2 gl-hidden">
|
||||
<gl-sprintf :message="s__('PackageRegistry|published by %{author}')">
|
||||
<template #author>{{ packageEntity.pipeline.user.name }}</template>
|
||||
</gl-sprintf>
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ export default {
|
|||
|
||||
<template>
|
||||
<div>
|
||||
<h3 v-if="isLoading || showMetadata" class="gl-font-lg" data-testid="title">
|
||||
<h3 v-if="isLoading || showMetadata" class="gl-text-lg" data-testid="title">
|
||||
{{ $options.i18n.componentTitle }}
|
||||
</h3>
|
||||
<gl-alert
|
||||
|
|
@ -100,7 +100,7 @@ export default {
|
|||
<additional-metadata-loader v-if="isLoading" />
|
||||
<div
|
||||
v-if="showMetadata"
|
||||
class="gl-bg-gray-50 gl-shadow-inner-1-gray-100 gl-rounded-base"
|
||||
class="gl-rounded-base gl-bg-gray-50 gl-shadow-inner-1-gray-100"
|
||||
data-testid="main"
|
||||
>
|
||||
<component
|
||||
|
|
|
|||
|
|
@ -14,13 +14,13 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div class="gl-bg-gray-50 gl-shadow-inner-1-gray-100 gl-rounded-base">
|
||||
<div class="gl-rounded-base gl-bg-gray-50 gl-shadow-inner-1-gray-100">
|
||||
<div
|
||||
v-for="index in $options.loader.repeat"
|
||||
:key="index"
|
||||
class="gl-display-flex gl-align-items-center gl-p-4 gl-border-gray-100 gl-border-b-1"
|
||||
class="gl-flex gl-items-center gl-border-b-1 gl-border-gray-100 gl-p-4"
|
||||
>
|
||||
<div class="gl-md-max-w-30p">
|
||||
<div class="md:gl-max-w-3/10">
|
||||
<gl-skeleton-loader :width="$options.loader.width" :height="$options.loader.height">
|
||||
<rect :width="$options.loader.width" :height="$options.loader.height" rx="4" />
|
||||
</gl-skeleton-loader>
|
||||
|
|
|
|||
|
|
@ -61,7 +61,7 @@ export default {
|
|||
:tracking-label="$options.tracking.TRACKING_LABEL_CODE_INSTRUCTION"
|
||||
/>
|
||||
|
||||
<h3 class="gl-font-lg">{{ __('Registry setup') }}</h3>
|
||||
<h3 class="gl-text-lg">{{ __('Registry setup') }}</h3>
|
||||
|
||||
<code-instruction
|
||||
:label="s__('PackageRegistry|Add Conan Remote')"
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ export default {
|
|||
<template>
|
||||
<div class="gl-responsive-table-row">
|
||||
<div class="table-section section-50">
|
||||
<strong class="gl-text-body">{{ dependencyLink.dependency.name }}</strong>
|
||||
<strong class="gl-text-primary">{{ dependencyLink.dependency.name }}</strong>
|
||||
<span v-if="showTargetFramework" data-testid="target-framework">
|
||||
({{ dependencyLink.metadata.targetFramework }})
|
||||
</span>
|
||||
|
|
@ -29,10 +29,10 @@ export default {
|
|||
|
||||
<div
|
||||
v-if="showVersion"
|
||||
class="table-section section-50 gl-display-flex gl-md-justify-content-end"
|
||||
class="table-section section-50 gl-flex md:gl-justify-end"
|
||||
data-testid="version-pattern"
|
||||
>
|
||||
<span class="gl-text-body">{{ dependencyLink.dependency.versionPattern }}</span>
|
||||
<span class="gl-text-primary">{{ dependencyLink.dependency.versionPattern }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -25,8 +25,8 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div class="gl-display-flex gl-justify-content-space-between gl-align-items-center">
|
||||
<h3 class="gl-font-lg">{{ __('Installation') }}</h3>
|
||||
<div class="gl-flex gl-items-center gl-justify-between">
|
||||
<h3 class="gl-text-lg">{{ __('Installation') }}</h3>
|
||||
<div>
|
||||
<persisted-dropdown-selection
|
||||
:storage-key="storageKey"
|
||||
|
|
|
|||
|
|
@ -161,7 +161,7 @@ export default {
|
|||
/>
|
||||
|
||||
<code-instruction
|
||||
class="gl-w-20 gl-mt-5"
|
||||
class="gl-mt-5 gl-w-20"
|
||||
:label="s__('PackageRegistry|Maven Command')"
|
||||
:instruction="$options.MAVEN_INSTALLATION_COMMAND"
|
||||
:copy-text="s__('PackageRegistry|Copy Maven command')"
|
||||
|
|
@ -169,7 +169,7 @@ export default {
|
|||
:tracking-label="$options.tracking.TRACKING_LABEL_CODE_INSTRUCTION"
|
||||
/>
|
||||
|
||||
<h3 class="gl-font-lg">{{ s__('PackageRegistry|Registry setup') }}</h3>
|
||||
<h3 class="gl-text-lg">{{ s__('PackageRegistry|Registry setup') }}</h3>
|
||||
<p>
|
||||
<gl-sprintf :message="$options.i18n.setupText">
|
||||
<template #code="{ content }">
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ export default {
|
|||
:title="$options.i18n.targetShaCopyButton"
|
||||
:text="packageMetadata.targetSha"
|
||||
category="tertiary"
|
||||
css-class="gl-p-0!"
|
||||
css-class="!gl-p-0"
|
||||
/>
|
||||
</template>
|
||||
</gl-sprintf>
|
||||
|
|
|
|||
|
|
@ -128,7 +128,7 @@ export default {
|
|||
:tracking-label="$options.tracking.TRACKING_LABEL_CODE_INSTRUCTION"
|
||||
/>
|
||||
|
||||
<h3 class="gl-font-lg">{{ __('Registry setup') }}</h3>
|
||||
<h3 class="gl-text-lg">{{ __('Registry setup') }}</h3>
|
||||
|
||||
<gl-form-radio-group
|
||||
:options="$options.packageEndpointTypeOptions"
|
||||
|
|
|
|||
|
|
@ -58,7 +58,7 @@ export default {
|
|||
:tracking-action="$options.tracking.TRACKING_ACTION_COPY_NUGET_INSTALL_COMMAND"
|
||||
:tracking-label="$options.tracking.TRACKING_LABEL_CODE_INSTRUCTION"
|
||||
/>
|
||||
<h3 class="gl-font-lg">{{ __('Registry setup') }}</h3>
|
||||
<h3 class="gl-text-lg">{{ __('Registry setup') }}</h3>
|
||||
|
||||
<code-instruction
|
||||
:label="s__('PackageRegistry|Add NuGet Source')"
|
||||
|
|
|
|||
|
|
@ -364,8 +364,8 @@ export default {
|
|||
|
||||
<template>
|
||||
<div class="gl-pt-6">
|
||||
<div class="gl-display-flex gl-align-items-center gl-justify-content-space-between">
|
||||
<h3 class="gl-font-lg gl-mt-5">{{ __('Assets') }}</h3>
|
||||
<div class="gl-flex gl-items-center gl-justify-between">
|
||||
<h3 class="gl-mt-5 gl-text-lg">{{ __('Assets') }}</h3>
|
||||
<gl-button
|
||||
v-if="!fetchPackageFilesError && canDelete"
|
||||
:disabled="isLoading || !areFilesSelected"
|
||||
|
|
@ -444,7 +444,7 @@ export default {
|
|||
<file-icon
|
||||
:file-name="item.fileName"
|
||||
css-classes="gl-relative file-icon"
|
||||
class="gl-mr-1 gl-relative"
|
||||
class="gl-relative gl-mr-1"
|
||||
/>
|
||||
<span>{{ item.fileName }}</span>
|
||||
</gl-link>
|
||||
|
|
@ -477,7 +477,7 @@ export default {
|
|||
|
||||
<template #row-details="{ item }">
|
||||
<div
|
||||
class="gl-display-flex gl-flex-direction-column gl-flex-grow-1 gl-bg-gray-10 gl-rounded-base gl-shadow-inner-1-gray-100"
|
||||
class="gl-flex gl-grow gl-flex-col gl-rounded-base gl-bg-gray-10 gl-shadow-inner-1-gray-100"
|
||||
>
|
||||
<file-sha
|
||||
v-if="item.fileSha256"
|
||||
|
|
@ -490,7 +490,7 @@ export default {
|
|||
</div>
|
||||
</template>
|
||||
</gl-table>
|
||||
<div class="gl-display-flex gl-justify-content-center">
|
||||
<div class="gl-flex gl-justify-center">
|
||||
<gl-keyset-pagination
|
||||
:disabled="isLoading"
|
||||
v-bind="pageInfo"
|
||||
|
|
|
|||
|
|
@ -130,7 +130,7 @@ export default {
|
|||
|
||||
<template>
|
||||
<div class="issuable-discussion">
|
||||
<h3 class="gl-font-lg" data-testid="title">{{ __('History') }}</h3>
|
||||
<h3 class="gl-text-lg" data-testid="title">{{ __('History') }}</h3>
|
||||
<gl-alert
|
||||
v-if="fetchPackagePipelinesError"
|
||||
variant="danger"
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div class="gl-ml-5 gl-md-max-w-70p">
|
||||
<div class="gl-ml-5 md:gl-max-w-7/10">
|
||||
<gl-skeleton-loader :width="$options.loader.width" :height="$options.loader.height">
|
||||
<rect x="49" y="9" width="531" height="16" rx="4" />
|
||||
<circle cx="16" cy="16" r="16" />
|
||||
|
|
|
|||
|
|
@ -89,10 +89,7 @@ export default {
|
|||
:avatar="packageIcon"
|
||||
>
|
||||
<template #sub-header>
|
||||
<div
|
||||
data-testid="sub-header"
|
||||
class="gl-display-flex gl-flex-wrap gl-gap-2 gl-align-items-baseline"
|
||||
>
|
||||
<div data-testid="sub-header" class="gl-flex gl-flex-wrap gl-items-baseline gl-gap-2">
|
||||
<gl-sprintf :message="$options.i18n.packageInfo">
|
||||
<template #version>{{ packageEntity.version }}</template>
|
||||
|
||||
|
|
|
|||
|
|
@ -91,7 +91,7 @@ password = <your personal access token>`;
|
|||
</template>
|
||||
</gl-form-group>
|
||||
|
||||
<h3 class="gl-font-lg">{{ __('Registry setup') }}</h3>
|
||||
<h3 class="gl-text-lg">{{ __('Registry setup') }}</h3>
|
||||
<p>
|
||||
<gl-sprintf :message="$options.i18n.setupText">
|
||||
<template #code="{ content }">
|
||||
|
|
|
|||
|
|
@ -69,7 +69,7 @@ export default {
|
|||
text: this.$options.i18n.deletePackage,
|
||||
action: () => this.$emit('delete'),
|
||||
extraAttrs: {
|
||||
class: 'gl-text-red-500!',
|
||||
class: '!gl-text-red-500',
|
||||
'data-testid': 'action-delete',
|
||||
},
|
||||
},
|
||||
|
|
@ -96,13 +96,10 @@ export default {
|
|||
/>
|
||||
</template>
|
||||
<template #left-primary>
|
||||
<div
|
||||
class="gl-display-flex gl-align-items-center gl-gap-3 gl-mr-5 gl-min-w-0"
|
||||
data-testid="package-name"
|
||||
>
|
||||
<div class="gl-mr-5 gl-flex gl-min-w-0 gl-items-center gl-gap-3" data-testid="package-name">
|
||||
<gl-link
|
||||
v-if="containsWebPathLink"
|
||||
class="gl-text-body gl-min-w-0 gl-break-all"
|
||||
class="gl-min-w-0 gl-break-all gl-text-primary"
|
||||
:class="errorPackageStyle"
|
||||
:href="packageLink"
|
||||
>
|
||||
|
|
@ -114,7 +111,7 @@ export default {
|
|||
|
||||
<div
|
||||
v-if="packageEntity.tags.nodes && packageEntity.tags.nodes.length"
|
||||
class="gl-display-flex gl-gap-2"
|
||||
class="gl-flex gl-gap-2"
|
||||
>
|
||||
<package-tags :tags="packageEntity.tags.nodes" hide-label :tag-display-limit="1" />
|
||||
</div>
|
||||
|
|
@ -131,7 +128,7 @@ export default {
|
|||
</div>
|
||||
<gl-truncate
|
||||
v-else
|
||||
class="gl-max-w-15 gl-md-max-w-26"
|
||||
class="gl-max-w-15 md:gl-max-w-26"
|
||||
:text="packageEntity.version"
|
||||
:with-tooltip="true"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -123,14 +123,11 @@ export default {
|
|||
/>
|
||||
</template>
|
||||
<template #left-primary>
|
||||
<div
|
||||
class="gl-display-flex gl-align-items-center gl-gap-3 gl-mr-5 gl-min-w-0"
|
||||
data-testid="package-name"
|
||||
>
|
||||
<div class="gl-mr-5 gl-flex gl-min-w-0 gl-items-center gl-gap-3" data-testid="package-name">
|
||||
<router-link
|
||||
v-if="containsWebPathLink"
|
||||
:class="errorPackageStyle"
|
||||
class="gl-text-body gl-min-w-0 gl-break-all"
|
||||
class="gl-min-w-0 gl-break-all gl-text-primary"
|
||||
data-testid="details-link"
|
||||
:to="{ name: 'details', params: { id: packageId } }"
|
||||
>
|
||||
|
|
@ -162,11 +159,11 @@ export default {
|
|||
<template #left-secondary>
|
||||
<div
|
||||
v-if="!errorStatusRow"
|
||||
class="gl-display-flex gl-align-items-center"
|
||||
class="gl-flex gl-items-center"
|
||||
data-testid="left-secondary-infos"
|
||||
>
|
||||
<gl-truncate
|
||||
class="gl-max-w-15 gl-md-max-w-26"
|
||||
class="gl-max-w-15 md:gl-max-w-26"
|
||||
:text="packageEntity.version"
|
||||
:with-tooltip="true"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -197,7 +197,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div class="gl-display-flex gl-flex-direction-column">
|
||||
<div class="gl-flex gl-flex-col">
|
||||
<slot v-if="isListEmpty && !isLoading" name="empty-state"></slot>
|
||||
|
||||
<div v-else-if="isLoading">
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div class="gl-display-flex gl-align-items-center">
|
||||
<div class="gl-flex gl-items-center">
|
||||
<template v-if="hasPipeline">
|
||||
<gl-icon name="merge-request" class="gl-mr-2" />
|
||||
<span data-testid="pipeline-ref" class="gl-mr-2">{{ pipeline.ref }}</span>
|
||||
|
|
|
|||
|
|
@ -247,7 +247,7 @@ export default {
|
|||
</package-list>
|
||||
</template>
|
||||
</delete-packages>
|
||||
<div v-if="!isDeleteInProgress" class="gl-display-flex gl-justify-content-center">
|
||||
<div v-if="!isDeleteInProgress" class="gl-flex gl-justify-center">
|
||||
<persisted-pagination
|
||||
class="gl-mt-3"
|
||||
:pagination="pageInfo"
|
||||
|
|
|
|||
|
|
@ -141,7 +141,7 @@ export default {
|
|||
data-testid="dependency-proxy-setting-toggle"
|
||||
>
|
||||
<template v-if="enabled" #help>
|
||||
<span class="gl-break-words gl-hyphens-auto gl-max-w-screen gl-inline-block">
|
||||
<span class="gl-inline-block gl-max-w-screen gl-hyphens-auto gl-break-words">
|
||||
<gl-sprintf :message="$options.i18n.enabledProxyHelpText">
|
||||
<template #link="{ content }">
|
||||
<gl-link data-testid="toggle-help-link" :href="groupDependencyProxyPath">{{
|
||||
|
|
|
|||
|
|
@ -167,7 +167,7 @@ export default {
|
|||
<template>
|
||||
<settings-section :heading="$options.i18n.PACKAGE_FORWARDING_SETTINGS_HEADER">
|
||||
<template #description>
|
||||
<span class="gl-block gl-mb-2" data-testid="description">
|
||||
<span class="gl-mb-2 gl-block" data-testid="description">
|
||||
{{ $options.i18n.PACKAGE_FORWARDING_SETTINGS_DESCRIPTION }}
|
||||
</span>
|
||||
<gl-sprintf :message="$options.i18n.PACKAGE_FORWARDING_SECURITY_DESCRIPTION">
|
||||
|
|
|
|||
|
|
@ -29,17 +29,17 @@ export default {
|
|||
{
|
||||
key: 'packageFormat',
|
||||
label: PACKAGE_FORMATS_TABLE_HEADER,
|
||||
thClass: 'gl-bg-gray-10!',
|
||||
thClass: '!gl-bg-gray-10',
|
||||
},
|
||||
{
|
||||
key: 'allowDuplicates',
|
||||
label: DUPLICATES_TOGGLE_LABEL,
|
||||
thClass: 'gl-bg-gray-10!',
|
||||
thClass: '!gl-bg-gray-10',
|
||||
},
|
||||
{
|
||||
key: 'exceptions',
|
||||
label: DUPLICATES_SETTING_EXCEPTION_TITLE,
|
||||
thClass: 'gl-bg-gray-10!',
|
||||
thClass: '!gl-bg-gray-10',
|
||||
},
|
||||
],
|
||||
components: {
|
||||
|
|
|
|||
|
|
@ -198,26 +198,26 @@ export default {
|
|||
<expiration-toggle
|
||||
:value="prefilledForm.enabled"
|
||||
:disabled="showLoadingIcon"
|
||||
class="gl-mb-0!"
|
||||
class="!gl-mb-0"
|
||||
data-testid="enable-toggle"
|
||||
@input="onModelChange($event, 'enabled')"
|
||||
/>
|
||||
|
||||
<div class="gl-flex gl-mt-5">
|
||||
<div class="gl-mt-5 gl-flex">
|
||||
<expiration-dropdown
|
||||
:value="prefilledForm.cadence"
|
||||
:disabled="isFieldDisabled"
|
||||
:form-options="$options.formOptions.cadence"
|
||||
:label="$options.i18n.CADENCE_LABEL"
|
||||
name="cadence"
|
||||
class="gl-mr-7 gl-mb-0!"
|
||||
class="!gl-mb-0 gl-mr-7"
|
||||
data-testid="cadence-dropdown"
|
||||
@input="onModelChange($event, 'cadence')"
|
||||
/>
|
||||
<expiration-run-text
|
||||
:value="prefilledForm.nextRunAt"
|
||||
:enabled="prefilledForm.enabled"
|
||||
class="gl-mb-0!"
|
||||
class="!gl-mb-0"
|
||||
/>
|
||||
</div>
|
||||
<gl-alert class="gl-mt-5" :dismissible="false">
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ export default {
|
|||
>
|
||||
<gl-form-input
|
||||
id="expiration-policy-info-text"
|
||||
class="gl-pl-0!"
|
||||
class="!gl-pl-0"
|
||||
plaintext
|
||||
:value="parsedValue"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -52,7 +52,7 @@ export default {
|
|||
label-position="left"
|
||||
:disabled="disabled"
|
||||
/>
|
||||
<div class="gl-text-subtle gl-mt-2" data-testid="description">
|
||||
<div class="gl-mt-2 gl-text-subtle" data-testid="description">
|
||||
<gl-sprintf :message="toggleText">
|
||||
<template #strong="{ content }">
|
||||
{{ content }}
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ export default {
|
|||
:form-options="$options.formOptions.keepNDuplicatedPackageFiles"
|
||||
:label="$options.i18n.KEEP_N_DUPLICATED_PACKAGE_FILES_LABEL"
|
||||
:description="$options.i18n.KEEP_N_DUPLICATED_PACKAGE_FILES_DESCRIPTION"
|
||||
dropdown-class="gl-md-max-w-50p"
|
||||
dropdown-class="md:gl-max-w-1/2"
|
||||
name="keep-n-duplicated-package-files"
|
||||
data-testid="keep-n-duplicated-package-files-dropdown"
|
||||
@input="onModelChange($event, 'keepNDuplicatedPackageFiles')"
|
||||
|
|
@ -147,7 +147,7 @@ export default {
|
|||
<p v-if="value.nextRunAt" data-testid="next-run-at">
|
||||
{{ nextCleanupMessage }}
|
||||
</p>
|
||||
<div class="gl-mt-6 gl-display-flex gl-align-items-center">
|
||||
<div class="gl-mt-6 gl-flex gl-items-center">
|
||||
<gl-button
|
||||
data-testid="save-button"
|
||||
type="submit"
|
||||
|
|
|
|||
|
|
@ -47,12 +47,12 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div class="gl-display-flex gl-align-items-center">
|
||||
<div class="gl-flex gl-items-center">
|
||||
<gl-icon data-testid="base-icon" name="project" class="gl-mx-3 gl-min-w-0" />
|
||||
|
||||
<gl-link
|
||||
data-testid="root-link"
|
||||
class="gl-text-gray-500 gl-min-w-0"
|
||||
class="gl-min-w-0 gl-text-gray-500"
|
||||
:href="`/${rootLink}`"
|
||||
:disabled="disabled"
|
||||
>
|
||||
|
|
@ -66,7 +66,7 @@ export default {
|
|||
<span
|
||||
v-gl-tooltip="{ title: path }"
|
||||
data-testid="ellipsis-icon"
|
||||
class="gl-shadow-inner-1-gray-200 gl-rounded-base gl-px-2 gl-min-w-0"
|
||||
class="gl-min-w-0 gl-rounded-base gl-px-2 gl-shadow-inner-1-gray-200"
|
||||
>
|
||||
<gl-icon name="ellipsis_h" />
|
||||
</span>
|
||||
|
|
@ -75,7 +75,7 @@ export default {
|
|||
|
||||
<gl-link
|
||||
data-testid="leaf-link"
|
||||
class="gl-text-gray-500 gl-min-w-0"
|
||||
class="gl-min-w-0 gl-text-gray-500"
|
||||
:href="`/${path}`"
|
||||
:disabled="disabled"
|
||||
>
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ export default {
|
|||
tagBadgeClass(index) {
|
||||
return {
|
||||
'gl-hidden': true,
|
||||
'gl-display-flex': this.tagCount === 1,
|
||||
'gl-flex': this.tagCount === 1,
|
||||
'md:!gl-flex': this.tagCount > 1,
|
||||
'gl-mr-2': index !== this.tagsToRender.length - 1,
|
||||
'gl-ml-3': !this.hideLabel && index === 0,
|
||||
|
|
@ -68,9 +68,9 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div class="gl-display-flex gl-align-items-center">
|
||||
<div v-if="!hideLabel" data-testid="tagLabel" class="gl-display-flex gl-align-items-center">
|
||||
<gl-icon name="labels" class="gl-text-gray-500 gl-mr-3" />
|
||||
<div class="gl-flex gl-items-center">
|
||||
<div v-if="!hideLabel" data-testid="tagLabel" class="gl-flex gl-items-center">
|
||||
<gl-icon name="labels" class="gl-mr-3 gl-text-gray-500" />
|
||||
<span class="gl-font-bold">{{ tagsDisplay }}</span>
|
||||
</div>
|
||||
|
||||
|
|
@ -89,7 +89,7 @@ export default {
|
|||
data-testid="moreBadge"
|
||||
variant="muted"
|
||||
:title="moreTagsTooltip"
|
||||
class="gl-hidden md:gl-flex gl-ml-2"
|
||||
class="gl-ml-2 gl-hidden md:gl-flex"
|
||||
><gl-sprintf :message="__('+%{tags} more')">
|
||||
<template #tags>
|
||||
{{ moreTagsDisplay }}
|
||||
|
|
@ -101,7 +101,7 @@ export default {
|
|||
v-if="moreTagsDisplay && hideLabel"
|
||||
data-testid="moreBadge"
|
||||
variant="muted"
|
||||
class="md:gl-hidden gl-ml-2"
|
||||
class="gl-ml-2 md:gl-hidden"
|
||||
>{{ tagsDisplay }}</gl-badge
|
||||
>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ export default {
|
|||
|
||||
<template>
|
||||
<div>
|
||||
<div class="gl-flex-direction-column sm:gl-hidden" data-testid="mobile-loader">
|
||||
<div class="gl-flex-col sm:gl-hidden" data-testid="mobile-loader">
|
||||
<gl-skeleton-loader
|
||||
v-for="index in $options.rowsToRender.mobile"
|
||||
:key="index"
|
||||
|
|
@ -36,7 +36,7 @@ export default {
|
|||
<rect width="500" height="10" x="0" y="135" rx="4" />
|
||||
</gl-skeleton-loader>
|
||||
</div>
|
||||
<div class="gl-hidden sm:gl-flex gl-flex-direction-column" data-testid="desktop-loader">
|
||||
<div class="gl-hidden gl-flex-col sm:gl-flex" data-testid="desktop-loader">
|
||||
<gl-skeleton-loader
|
||||
v-for="index in $options.rowsToRender.desktop"
|
||||
:key="index"
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ export default {
|
|||
</script>
|
||||
|
||||
<template>
|
||||
<div class="gl-display-flex gl-align-items-center">
|
||||
<div class="gl-flex gl-items-center">
|
||||
<template v-if="hasPipeline">
|
||||
<gl-icon name="merge-request" class="gl-mr-2" />
|
||||
<span data-testid="pipeline-ref" class="gl-mr-2">{{ packageEntity.pipeline.ref }}</span>
|
||||
|
|
|
|||
|
|
@ -96,11 +96,8 @@ export default {
|
|||
|
||||
<template>
|
||||
<div>
|
||||
<div
|
||||
v-if="!hiddenDelete"
|
||||
class="gl-display-flex gl-justify-content-space-between gl-mb-3 gl-mt-5 gl-align-items-center"
|
||||
>
|
||||
<div class="gl-display-flex gl-align-items-center">
|
||||
<div v-if="!hiddenDelete" class="gl-mb-3 gl-mt-5 gl-flex gl-items-center gl-justify-between">
|
||||
<div class="gl-flex gl-items-center">
|
||||
<gl-form-checkbox
|
||||
class="gl-ml-2 gl-pt-2"
|
||||
:aria-label="label"
|
||||
|
|
@ -110,7 +107,7 @@ export default {
|
|||
@change="onChange"
|
||||
/>
|
||||
|
||||
<p class="gl-font-bold gl-mb-0">{{ title }}</p>
|
||||
<p class="gl-mb-0 gl-font-bold">{{ title }}</p>
|
||||
</div>
|
||||
|
||||
<gl-button
|
||||
|
|
@ -124,7 +121,7 @@ export default {
|
|||
</div>
|
||||
|
||||
<ul class="gl-pl-0">
|
||||
<li v-for="(item, index) in items" :key="index" class="gl-list-style-none">
|
||||
<li v-for="(item, index) in items" :key="index" class="gl-list-none">
|
||||
<slot
|
||||
:select-item="selectItem"
|
||||
:is-selected="isSelected"
|
||||
|
|
@ -134,7 +131,7 @@ export default {
|
|||
</li>
|
||||
</ul>
|
||||
|
||||
<div class="gl-display-flex gl-justify-content-center">
|
||||
<div class="gl-flex gl-justify-center">
|
||||
<gl-keyset-pagination
|
||||
v-bind="pagination"
|
||||
class="gl-mt-3"
|
||||
|
|
|
|||
|
|
@ -95,6 +95,12 @@ export default {
|
|||
descriptionVersion() {
|
||||
return this.descriptionVersions[this.note.description_version_id];
|
||||
},
|
||||
singleLineDescription() {
|
||||
return !this.descriptionVersion?.match(/\n/g);
|
||||
},
|
||||
deleteButtonClasses() {
|
||||
return this.singleLineDescription ? 'gl-top-5 gl-right-2 gl-mt-2' : 'gl-top-6 gl-right-3';
|
||||
},
|
||||
isMergeRequest() {
|
||||
return this.getNoteableData.noteableType === 'MergeRequest';
|
||||
},
|
||||
|
|
@ -212,11 +218,15 @@ export default {
|
|||
<span>{{ __('Toggle commit list') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="shouldShowDescriptionVersion" class="description-version pt-2">
|
||||
<div v-if="shouldShowDescriptionVersion" class="description-version gl-relative !gl-pt-3">
|
||||
<pre v-if="isLoadingDescriptionVersion" class="loading-state">
|
||||
<gl-skeleton-loader />
|
||||
</pre>
|
||||
<pre v-else v-safe-html="descriptionVersion" class="wrapper mt-2"></pre>
|
||||
<pre
|
||||
v-else
|
||||
v-safe-html="descriptionVersion"
|
||||
class="wrapper gl-mt-3 gl-whitespace-pre-wrap gl-pr-7"
|
||||
></pre>
|
||||
<gl-button
|
||||
v-if="displayDeleteButton"
|
||||
v-gl-tooltip
|
||||
|
|
@ -225,7 +235,8 @@ export default {
|
|||
variant="default"
|
||||
category="tertiary"
|
||||
icon="remove"
|
||||
class="delete-description-history"
|
||||
class="gl-absolute"
|
||||
:class="deleteButtonClasses"
|
||||
data-testid="delete-description-version-button"
|
||||
@click="deleteDescriptionVersion"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -95,6 +95,12 @@ export default {
|
|||
descriptionVersion() {
|
||||
return this.descriptionVersions[this.descriptionVersionId];
|
||||
},
|
||||
singleLineDescription() {
|
||||
return !this.descriptionVersion?.match(/\n/g);
|
||||
},
|
||||
deleteButtonClasses() {
|
||||
return this.singleLineDescription ? 'gl-top-5 gl-right-2 gl-mt-2' : 'gl-top-6 gl-right-3';
|
||||
},
|
||||
},
|
||||
mounted() {
|
||||
renderGFM(this.$refs['gfm-content']);
|
||||
|
|
@ -148,7 +154,10 @@ export default {
|
|||
</note-header>
|
||||
</div>
|
||||
<div class="note-body">
|
||||
<div v-if="shouldShowDescriptionVersion" class="description-version !gl-pt-3 gl-pl-4">
|
||||
<div
|
||||
v-if="shouldShowDescriptionVersion"
|
||||
class="description-version gl-relative !gl-pt-3 gl-pl-4"
|
||||
>
|
||||
<pre v-if="isLoadingDescriptionVersion" class="loading-state">
|
||||
<gl-skeleton-loader />
|
||||
</pre>
|
||||
|
|
@ -156,7 +165,7 @@ export default {
|
|||
v-else
|
||||
v-safe-html="descriptionVersion"
|
||||
data-testid="description-version-diff"
|
||||
class="wrapper gl-mt-3"
|
||||
class="wrapper gl-mt-3 gl-whitespace-pre-wrap gl-pr-7"
|
||||
></pre>
|
||||
<gl-button
|
||||
v-if="displayDeleteButton"
|
||||
|
|
@ -166,7 +175,8 @@ export default {
|
|||
variant="default"
|
||||
category="tertiary"
|
||||
icon="remove"
|
||||
class="delete-description-history"
|
||||
class="gl-absolute"
|
||||
:class="deleteButtonClasses"
|
||||
data-testid="delete-description-version-button"
|
||||
@click="deleteDescriptionVersion"
|
||||
/>
|
||||
|
|
|
|||
|
|
@ -237,7 +237,7 @@ ul.related-merge-requests > li gl-emoji {
|
|||
right: var(--application-bar-right);
|
||||
width: auto;
|
||||
top: $calc-application-header-height;
|
||||
max-width: calc(100vw - #{$super-sidebar-width});
|
||||
max-width: calc(100vw - var(--application-bar-left));
|
||||
}
|
||||
|
||||
.limit-container-width {
|
||||
|
|
|
|||
|
|
@ -415,20 +415,8 @@ $system-note-icon-m-left: $avatar-m-left + $icon-size-diff / $avatar-m-ratio;
|
|||
margin-left: 1rem;
|
||||
}
|
||||
|
||||
.description-version {
|
||||
position: relative;
|
||||
|
||||
.btn.delete-description-history {
|
||||
position: absolute;
|
||||
top: 18px;
|
||||
right: 10px;
|
||||
}
|
||||
|
||||
pre {
|
||||
max-height: $dropdown-max-height-lg;
|
||||
white-space: pre-wrap;
|
||||
padding-right: 30px;
|
||||
}
|
||||
.description-version pre {
|
||||
max-height: $dropdown-max-height-lg;
|
||||
}
|
||||
|
||||
.system-note-commit-list-toggler {
|
||||
|
|
|
|||
|
|
@ -88,7 +88,7 @@ module Types
|
|||
field :event_count,
|
||||
GraphQL::Types::Int,
|
||||
null: true,
|
||||
description: 'Number of events of this alert.',
|
||||
description: 'Number of events of the alert.',
|
||||
method: :events
|
||||
|
||||
field :details, # rubocop:disable Graphql/JSONType
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ module Types
|
|||
field :unicode_version,
|
||||
GraphQL::Types::String,
|
||||
null: false,
|
||||
description: 'Unicode version for this emoji.'
|
||||
description: 'Unicode version for the emoji.'
|
||||
|
||||
field :user,
|
||||
Types::UserType,
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ module Types
|
|||
description: 'ID (global ID) of the list.'
|
||||
|
||||
field :collapsed, GraphQL::Types::Boolean, null: true,
|
||||
description: 'Indicates if the list is collapsed for this user.'
|
||||
description: 'Indicates if the list is collapsed for the user.'
|
||||
field :issues_count, GraphQL::Types::Int, null: true,
|
||||
description: 'Count of issues in the list.'
|
||||
field :label, Types::LabelType, null: true,
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ module Types
|
|||
field :access_level_description,
|
||||
type: GraphQL::Types::String,
|
||||
null: false,
|
||||
description: 'Human readable representation for this access level.',
|
||||
description: 'Human readable representation for the access level.',
|
||||
method: 'humanize'
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -11,12 +11,12 @@ module Types
|
|||
field :merge_access_levels,
|
||||
type: Types::BranchProtections::MergeAccessLevelType.connection_type,
|
||||
null: true,
|
||||
description: 'Details about who can merge when this branch is the source branch.'
|
||||
description: 'Details about who can merge when the branch is the source branch.'
|
||||
|
||||
field :push_access_levels,
|
||||
type: Types::BranchProtections::PushAccessLevelType.connection_type,
|
||||
null: true,
|
||||
description: 'Details about who can push when this branch is the source branch.'
|
||||
description: 'Details about who can push when the branch is the source branch.'
|
||||
|
||||
field :allow_force_push,
|
||||
type: GraphQL::Types::Boolean,
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ module Types
|
|||
field :projects,
|
||||
Types::ProjectType.connection_type,
|
||||
null: false,
|
||||
description: 'Allow list of projects that can be accessed by CI Job tokens created by this project.',
|
||||
description: 'Allow list of projects that can be accessed by CI Job tokens created by the project.',
|
||||
method: :outbound_projects,
|
||||
deprecated: {
|
||||
reason: 'The `projects` attribute is being deprecated. Use `outbound_allowlist`',
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ module Types
|
|||
type: ::Types::Ci::JobType,
|
||||
null: true,
|
||||
authorize: :read_build,
|
||||
description: 'Specific job in this pipeline, either by name or ID.' do
|
||||
description: 'Specific job in the pipeline, either by name or ID.' do
|
||||
argument :id,
|
||||
type: ::Types::GlobalIDType[::CommitStatus],
|
||||
required: false,
|
||||
|
|
@ -129,7 +129,7 @@ module Types
|
|||
description: 'Job where pipeline was triggered from.'
|
||||
|
||||
field :downstream, Types::Ci::PipelineType.connection_type, null: true,
|
||||
description: 'Pipelines this pipeline will trigger.',
|
||||
description: 'Pipelines the pipeline will trigger.',
|
||||
method: :triggered_pipelines_with_preloads
|
||||
|
||||
field :upstream, Types::Ci::PipelineType, null: true,
|
||||
|
|
@ -181,27 +181,27 @@ module Types
|
|||
field :merge_request_event_type, Types::Ci::PipelineMergeRequestEventTypeEnum, null: true,
|
||||
description: "Event type of the pipeline associated with a merge request."
|
||||
|
||||
field :total_jobs, GraphQL::Types::Int, null: false, method: :total_size, description: "The total number of jobs in the pipeline"
|
||||
field :total_jobs, GraphQL::Types::Int, null: false, method: :total_size, description: "Total number of jobs in the pipeline."
|
||||
|
||||
field :failure_reason, GraphQL::Types::String, null: true, description: "The reason why the pipeline failed"
|
||||
field :failure_reason, GraphQL::Types::String, null: true, description: "Reason why the pipeline failed."
|
||||
|
||||
field :triggered_by_path, GraphQL::Types::String, null: true, description: "The path that triggered this pipeline"
|
||||
field :triggered_by_path, GraphQL::Types::String, null: true, description: "Path that triggered the pipeline."
|
||||
|
||||
field :source, GraphQL::Types::String, null: true, description: "The source of the pipeline"
|
||||
field :source, GraphQL::Types::String, null: true, description: "Source of the pipeline."
|
||||
|
||||
field :child, GraphQL::Types::Boolean, null: false, method: :child?, description: "If the pipeline is a child or not"
|
||||
field :child, GraphQL::Types::Boolean, null: false, method: :child?, description: "If the pipeline is a child or not."
|
||||
|
||||
field :latest, GraphQL::Types::Boolean, null: false, method: :latest?, calls_gitaly: true, description: "If the pipeline is the latest one or not"
|
||||
field :latest, GraphQL::Types::Boolean, null: false, method: :latest?, calls_gitaly: true, description: "If the pipeline is the latest one or not."
|
||||
|
||||
field :ref_text, GraphQL::Types::String, null: false, description: "The reference text from the presenter", calls_gitaly: true
|
||||
field :ref_text, GraphQL::Types::String, null: false, description: "Reference text from the presenter.", calls_gitaly: true
|
||||
|
||||
field :merge_request, Types::MergeRequestType, null: true, description: "The MR which the Pipeline is attached to"
|
||||
field :merge_request, Types::MergeRequestType, null: true, description: "MR which the Pipeline is attached to."
|
||||
|
||||
field :stuck, GraphQL::Types::Boolean, method: :stuck?, null: false, description: "If the pipeline is stuck."
|
||||
|
||||
field :yaml_errors, GraphQL::Types::Boolean, method: :yaml_errors?, null: false, description: "If the pipeline has YAML errors."
|
||||
|
||||
field :yaml_error_messages, GraphQL::Types::String, method: :yaml_errors, null: true, description: "The pipeline YAML errors."
|
||||
field :yaml_error_messages, GraphQL::Types::String, method: :yaml_errors, null: true, description: "Pipeline YAML errors."
|
||||
|
||||
field :trigger, GraphQL::Types::Boolean, method: :trigger?, null: false, description: "If the pipeline was created by a Trigger request."
|
||||
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ module Types
|
|||
value: :stale
|
||||
|
||||
value 'NEVER_CONTACTED',
|
||||
description: 'Runner that has never contacted this instance.',
|
||||
description: 'Runner that has never contacted the instance.',
|
||||
value: :never_contacted
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -24,11 +24,11 @@ module Types
|
|||
field :admin_url, GraphQL::Types::String, null: true,
|
||||
description: 'Admin URL of the runner. Only available for administrators.'
|
||||
field :contacted_at, Types::TimeType, null: true,
|
||||
description: 'Timestamp of last contact from this runner.'
|
||||
description: 'Timestamp of last contact from the runner.'
|
||||
field :created_at, Types::TimeType, null: true,
|
||||
description: 'Timestamp of creation of this runner.'
|
||||
description: 'Timestamp of creation of the runner.'
|
||||
field :created_by, Types::UserType, null: true,
|
||||
description: 'User that created this runner.',
|
||||
description: 'User that created the runner.',
|
||||
method: :creator
|
||||
field :creation_method, Types::Ci::RunnerCreationMethodEnum, null: true,
|
||||
method: :registration_type,
|
||||
|
|
|
|||
|
|
@ -5,10 +5,10 @@ module Types
|
|||
# rubocop: disable Graphql/AuthorizeTypes
|
||||
class RunnerWebUrlEdge < ::Types::BaseEdge
|
||||
field :edit_url, GraphQL::Types::String, null: true,
|
||||
description: 'Web URL of the runner edit page. The value depends on where you put this field in the query. You can use it for projects or groups.',
|
||||
description: 'Web URL of the runner edit page. The value depends on where you put the field in the query. You can use it for projects or groups.',
|
||||
extras: [:parent]
|
||||
field :web_url, GraphQL::Types::String, null: true,
|
||||
description: 'Web URL of the runner. The value depends on where you put this field in the query. You can use it for projects or groups.',
|
||||
description: 'Web URL of the runner. The value depends on where you put the field in the query. You can use it for projects or groups.',
|
||||
extras: [:parent]
|
||||
|
||||
def initialize(node, connection)
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ module Types
|
|||
graphql_name 'StatusAction'
|
||||
|
||||
field :button_title, GraphQL::Types::String, null: true,
|
||||
description: 'Title for the button, for example: Retry this job.'
|
||||
description: 'Title for the button, for example: Retry the job.'
|
||||
field :confirmation_message, GraphQL::Types::String, null: true,
|
||||
description: 'Custom confirmation message for a manual job.',
|
||||
alpha: { milestone: '17.0' }
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ module Types
|
|||
|
||||
field :cluster_agent,
|
||||
Types::Clusters::AgentType,
|
||||
description: 'Cluster agent this token is associated with.',
|
||||
description: 'Cluster agent the token is associated with.',
|
||||
null: true
|
||||
|
||||
field :created_at,
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ module Types
|
|||
description: 'Name of the cluster agent.'
|
||||
|
||||
field :project, Types::ProjectType,
|
||||
description: 'Project this cluster agent is associated with.',
|
||||
description: 'Project the cluster agent is associated with.',
|
||||
null: true,
|
||||
authorize: :read_project
|
||||
|
||||
|
|
|
|||
|
|
@ -10,12 +10,12 @@ module Types
|
|||
|
||||
field :cadence, Types::ContainerExpirationPolicyCadenceEnum, null: false, description: 'This container expiration policy schedule.'
|
||||
field :created_at, Types::TimeType, null: false, description: 'Timestamp of when the container expiration policy was created.'
|
||||
field :enabled, GraphQL::Types::Boolean, null: false, description: 'Indicates whether this container expiration policy is enabled.'
|
||||
field :enabled, GraphQL::Types::Boolean, null: false, description: 'Indicates whether the container expiration policy is enabled.'
|
||||
field :keep_n, Types::ContainerExpirationPolicyKeepEnum, null: true, description: 'Number of tags to retain.'
|
||||
field :name_regex, Types::UntrustedRegexp, null: true, description: 'Tags with names matching this regex pattern will expire.'
|
||||
field :name_regex_keep, Types::UntrustedRegexp, null: true, description: 'Tags with names matching this regex pattern will be preserved.'
|
||||
field :next_run_at, Types::TimeType, null: true, description: 'Next time that this container expiration policy will get executed.'
|
||||
field :older_than, Types::ContainerExpirationPolicyOlderThanEnum, null: true, description: 'Tags older that this will expire.'
|
||||
field :name_regex, Types::UntrustedRegexp, null: true, description: 'Tags with names matching the regex pattern will expire.'
|
||||
field :name_regex_keep, Types::UntrustedRegexp, null: true, description: 'Tags with names matching the regex pattern will be preserved.'
|
||||
field :next_run_at, Types::TimeType, null: true, description: 'Next time that the container expiration policy will get executed.'
|
||||
field :older_than, Types::ContainerExpirationPolicyOlderThanEnum, null: true, description: 'Tags older than the given age will expire.'
|
||||
field :updated_at, Types::TimeType, null: false, description: 'Timestamp of when the container expiration policy was updated.'
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ module Types
|
|||
field :name, GraphQL::Types::String, null: false, description: 'Name of the tag.'
|
||||
field :path, GraphQL::Types::String, null: false, description: 'Path of the tag.'
|
||||
field :published_at, Types::TimeType, null: true, description: 'Timestamp when the tag was published.'
|
||||
field :referrers, [Types::ContainerRepositoryReferrerType], null: true, description: 'Referrers for this tag.'
|
||||
field :referrers, [Types::ContainerRepositoryReferrerType], null: true, description: 'Referrers for the tag.'
|
||||
field :revision, GraphQL::Types::String, null: true, description: 'Revision of the tag.'
|
||||
field :short_revision, GraphQL::Types::String, null: true, description: 'Short revision of the tag.'
|
||||
field :total_size, GraphQL::Types::BigInt, null: true, description: 'Size of the tag.'
|
||||
|
|
|
|||
|
|
@ -2435,7 +2435,7 @@
|
|||
:tags: []
|
||||
- :name: authorized_projects
|
||||
:worker_name: AuthorizedProjectsWorker
|
||||
:feature_category: :system_access
|
||||
:feature_category: :permissions
|
||||
:has_external_dependencies: false
|
||||
:urgency: :high
|
||||
:resource_boundary: :unknown
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ class AuthorizedProjectsWorker
|
|||
|
||||
sidekiq_options retry: 3
|
||||
|
||||
feature_category :system_access
|
||||
feature_category :permissions
|
||||
urgency :high
|
||||
weight 2
|
||||
idempotent!
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ feature_categories:
|
|||
description: Stores a subset of the Finding data which is used to optimize the pipeline security tab
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/40368
|
||||
milestone: '13.4'
|
||||
gitlab_schema: gitlab_main_cell
|
||||
gitlab_schema: gitlab_sec
|
||||
allow_cross_foreign_keys:
|
||||
- gitlab_main_clusterwide
|
||||
sharding_key_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/454949
|
||||
|
|
|
|||
|
|
@ -0,0 +1,27 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class RemoteDeplicatedAgentConfig < Gitlab::Database::Migration[2.2]
|
||||
milestone '17.4'
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
|
||||
class RemoteDevelopmentAgentConfig < MigrationRecord
|
||||
self.table_name = 'remote_development_agent_configs'
|
||||
end
|
||||
|
||||
def up
|
||||
latest_ids = RemoteDevelopmentAgentConfig.select("DISTINCT ON (cluster_agent_id) id")
|
||||
.order("cluster_agent_id, updated_at DESC")
|
||||
.map(&:id)
|
||||
|
||||
::Gitlab::AppLogger.warn(
|
||||
message: 'removing duplicated agent configs from migration',
|
||||
agent_config_latest_ids: latest_ids
|
||||
)
|
||||
|
||||
RemoteDevelopmentAgentConfig.where.not(id: latest_ids).delete_all
|
||||
end
|
||||
|
||||
def down
|
||||
# removing duplicated agent config is irreversible
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class AddUniqueConstraintToRemoteDevelopmentAgentConfigs < Gitlab::Database::Migration[2.2]
|
||||
disable_ddl_transaction!
|
||||
|
||||
milestone '17.4'
|
||||
INDEX_NAME = 'index_remote_development_agent_configs_on_unique_agent_id'
|
||||
EXISTING_INDEX_NAME = 'index_remote_development_agent_configs_on_cluster_agent_id'
|
||||
|
||||
def up
|
||||
add_concurrent_index :remote_development_agent_configs, :cluster_agent_id, name: INDEX_NAME, unique: true
|
||||
remove_concurrent_index_by_name :remote_development_agent_configs, EXISTING_INDEX_NAME
|
||||
end
|
||||
|
||||
def down
|
||||
add_concurrent_index :remote_development_agent_configs, :cluster_agent_id, name: EXISTING_INDEX_NAME
|
||||
remove_concurrent_index_by_name :remote_development_agent_configs, INDEX_NAME
|
||||
end
|
||||
end
|
||||
|
|
@ -0,0 +1 @@
|
|||
339b71e75f375c29d3b9b09c306018f185463fb84aebc68a07df12d029589973
|
||||
|
|
@ -0,0 +1 @@
|
|||
252acaec01a8da80da3b769b6b83ed251bca1bae7a8fb4ccdf70a9a2d53d421a
|
||||
|
|
@ -29592,10 +29592,10 @@ CREATE UNIQUE INDEX index_releases_on_project_tag_unique ON releases USING btree
|
|||
|
||||
CREATE INDEX index_releases_on_released_at ON releases USING btree (released_at);
|
||||
|
||||
CREATE INDEX index_remote_development_agent_configs_on_cluster_agent_id ON remote_development_agent_configs USING btree (cluster_agent_id);
|
||||
|
||||
CREATE INDEX index_remote_development_agent_configs_on_project_id ON remote_development_agent_configs USING btree (project_id);
|
||||
|
||||
CREATE UNIQUE INDEX index_remote_development_agent_configs_on_unique_agent_id ON remote_development_agent_configs USING btree (cluster_agent_id);
|
||||
|
||||
CREATE INDEX index_remote_mirrors_on_last_successful_update_at ON remote_mirrors USING btree (last_successful_update_at);
|
||||
|
||||
CREATE INDEX index_remote_mirrors_on_project_id ON remote_mirrors USING btree (project_id);
|
||||
|
|
|
|||
|
|
@ -9308,11 +9308,11 @@ Input type: `UpdateContainerExpirationPolicyInput`
|
|||
| ---- | ---- | ----------- |
|
||||
| <a id="mutationupdatecontainerexpirationpolicycadence"></a>`cadence` | [`ContainerExpirationPolicyCadenceEnum`](#containerexpirationpolicycadenceenum) | This container expiration policy schedule. |
|
||||
| <a id="mutationupdatecontainerexpirationpolicyclientmutationid"></a>`clientMutationId` | [`String`](#string) | A unique identifier for the client performing the mutation. |
|
||||
| <a id="mutationupdatecontainerexpirationpolicyenabled"></a>`enabled` | [`Boolean`](#boolean) | Indicates whether this container expiration policy is enabled. |
|
||||
| <a id="mutationupdatecontainerexpirationpolicyenabled"></a>`enabled` | [`Boolean`](#boolean) | Indicates whether the container expiration policy is enabled. |
|
||||
| <a id="mutationupdatecontainerexpirationpolicykeepn"></a>`keepN` | [`ContainerExpirationPolicyKeepEnum`](#containerexpirationpolicykeepenum) | Number of tags to retain. |
|
||||
| <a id="mutationupdatecontainerexpirationpolicynameregex"></a>`nameRegex` | [`UntrustedRegexp`](#untrustedregexp) | Tags with names matching this regex pattern will expire. |
|
||||
| <a id="mutationupdatecontainerexpirationpolicynameregexkeep"></a>`nameRegexKeep` | [`UntrustedRegexp`](#untrustedregexp) | Tags with names matching this regex pattern will be preserved. |
|
||||
| <a id="mutationupdatecontainerexpirationpolicyolderthan"></a>`olderThan` | [`ContainerExpirationPolicyOlderThanEnum`](#containerexpirationpolicyolderthanenum) | Tags older that this will expire. |
|
||||
| <a id="mutationupdatecontainerexpirationpolicynameregex"></a>`nameRegex` | [`UntrustedRegexp`](#untrustedregexp) | Tags with names matching the regex pattern will expire. |
|
||||
| <a id="mutationupdatecontainerexpirationpolicynameregexkeep"></a>`nameRegexKeep` | [`UntrustedRegexp`](#untrustedregexp) | Tags with names matching the regex pattern will be preserved. |
|
||||
| <a id="mutationupdatecontainerexpirationpolicyolderthan"></a>`olderThan` | [`ContainerExpirationPolicyOlderThanEnum`](#containerexpirationpolicyolderthanenum) | Tags older than the given age will expire. |
|
||||
| <a id="mutationupdatecontainerexpirationpolicyprojectpath"></a>`projectPath` | [`ID!`](#id) | Project path where the container expiration policy is located. |
|
||||
|
||||
#### Fields
|
||||
|
|
@ -11664,9 +11664,9 @@ The edge type for [`CiRunner`](#cirunner).
|
|||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="cirunneredgecursor"></a>`cursor` | [`String!`](#string) | A cursor for use in pagination. |
|
||||
| <a id="cirunneredgeediturl"></a>`editUrl` | [`String`](#string) | Web URL of the runner edit page. The value depends on where you put this field in the query. You can use it for projects or groups. |
|
||||
| <a id="cirunneredgeediturl"></a>`editUrl` | [`String`](#string) | Web URL of the runner edit page. The value depends on where you put the field in the query. You can use it for projects or groups. |
|
||||
| <a id="cirunneredgenode"></a>`node` | [`CiRunner`](#cirunner) | The item at the end of the edge. |
|
||||
| <a id="cirunneredgeweburl"></a>`webUrl` | [`String`](#string) | Web URL of the runner. The value depends on where you put this field in the query. You can use it for projects or groups. |
|
||||
| <a id="cirunneredgeweburl"></a>`webUrl` | [`String`](#string) | Web URL of the runner. The value depends on where you put the field in the query. You can use it for projects or groups. |
|
||||
|
||||
#### `CiRunnerManagerConnection`
|
||||
|
||||
|
|
@ -17181,7 +17181,7 @@ Describes an alert from the project's Alert Management.
|
|||
| <a id="alertmanagementalertdiscussions"></a>`discussions` | [`DiscussionConnection!`](#discussionconnection) | All discussions on this noteable. (see [Connections](#connections)) |
|
||||
| <a id="alertmanagementalertendedat"></a>`endedAt` | [`Time`](#time) | Timestamp the alert ended. |
|
||||
| <a id="alertmanagementalertenvironment"></a>`environment` | [`Environment`](#environment) | Environment for the alert. |
|
||||
| <a id="alertmanagementalerteventcount"></a>`eventCount` | [`Int`](#int) | Number of events of this alert. |
|
||||
| <a id="alertmanagementalerteventcount"></a>`eventCount` | [`Int`](#int) | Number of events of the alert. |
|
||||
| <a id="alertmanagementalerthosts"></a>`hosts` | [`[String!]`](#string) | List of hosts the alert came from. |
|
||||
| <a id="alertmanagementalertid"></a>`id` | [`ID!`](#id) | ID of the alert. |
|
||||
| <a id="alertmanagementalertiid"></a>`iid` | [`String!`](#string) | Internal ID of the alert. |
|
||||
|
|
@ -17918,7 +17918,7 @@ An emoji awarded by a user.
|
|||
| <a id="awardemojiemoji"></a>`emoji` | [`String!`](#string) | Emoji as an icon. |
|
||||
| <a id="awardemojiname"></a>`name` | [`String!`](#string) | Emoji name. |
|
||||
| <a id="awardemojiunicode"></a>`unicode` | [`String!`](#string) | Emoji in Unicode. |
|
||||
| <a id="awardemojiunicodeversion"></a>`unicodeVersion` | [`String!`](#string) | Unicode version for this emoji. |
|
||||
| <a id="awardemojiunicodeversion"></a>`unicodeVersion` | [`String!`](#string) | Unicode version for the emoji. |
|
||||
| <a id="awardemojiuser"></a>`user` | [`UserCore!`](#usercore) | User who awarded the emoji. |
|
||||
|
||||
### `BaseService`
|
||||
|
|
@ -18263,7 +18263,7 @@ Represents a list for an issue board.
|
|||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="boardlistassignee"></a>`assignee` | [`UserCore`](#usercore) | Assignee in the list. |
|
||||
| <a id="boardlistcollapsed"></a>`collapsed` | [`Boolean`](#boolean) | Indicates if the list is collapsed for this user. |
|
||||
| <a id="boardlistcollapsed"></a>`collapsed` | [`Boolean`](#boolean) | Indicates if the list is collapsed for the user. |
|
||||
| <a id="boardlistid"></a>`id` | [`ID!`](#id) | ID (global ID) of the list. |
|
||||
| <a id="boardlistissuescount"></a>`issuesCount` | [`Int`](#int) | Count of issues in the list. |
|
||||
| <a id="boardlistiteration"></a>`iteration` | [`Iteration`](#iteration) | Iteration of the list. |
|
||||
|
|
@ -18314,8 +18314,8 @@ Branch protection details for a branch rule.
|
|||
| ---- | ---- | ----------- |
|
||||
| <a id="branchprotectionallowforcepush"></a>`allowForcePush` | [`Boolean!`](#boolean) | Toggle force push to the branch for users with write access. |
|
||||
| <a id="branchprotectioncodeownerapprovalrequired"></a>`codeOwnerApprovalRequired` | [`Boolean!`](#boolean) | Enforce code owner approvals before allowing a merge. |
|
||||
| <a id="branchprotectionmergeaccesslevels"></a>`mergeAccessLevels` | [`MergeAccessLevelConnection`](#mergeaccesslevelconnection) | Details about who can merge when this branch is the source branch. (see [Connections](#connections)) |
|
||||
| <a id="branchprotectionpushaccesslevels"></a>`pushAccessLevels` | [`PushAccessLevelConnection`](#pushaccesslevelconnection) | Details about who can push when this branch is the source branch. (see [Connections](#connections)) |
|
||||
| <a id="branchprotectionmergeaccesslevels"></a>`mergeAccessLevels` | [`MergeAccessLevelConnection`](#mergeaccesslevelconnection) | Details about who can merge when the branch is the source branch. (see [Connections](#connections)) |
|
||||
| <a id="branchprotectionpushaccesslevels"></a>`pushAccessLevels` | [`PushAccessLevelConnection`](#pushaccesslevelconnection) | Details about who can push when the branch is the source branch. (see [Connections](#connections)) |
|
||||
| <a id="branchprotectionunprotectaccesslevels"></a>`unprotectAccessLevels` | [`UnprotectAccessLevelConnection`](#unprotectaccesslevelconnection) | Details about who can unprotect this branch. (see [Connections](#connections)) |
|
||||
|
||||
### `BranchRule`
|
||||
|
|
@ -18817,9 +18817,9 @@ CI/CD variables for a project.
|
|||
| <a id="cirunneraccesslevel"></a>`accessLevel` | [`CiRunnerAccessLevel!`](#cirunneraccesslevel) | Access level of the runner. |
|
||||
| <a id="cirunneractive"></a>`active` **{warning-solid}** | [`Boolean!`](#boolean) | **Deprecated** in GitLab 14.8. Use paused. |
|
||||
| <a id="cirunneradminurl"></a>`adminUrl` | [`String`](#string) | Admin URL of the runner. Only available for administrators. |
|
||||
| <a id="cirunnercontactedat"></a>`contactedAt` | [`Time`](#time) | Timestamp of last contact from this runner. |
|
||||
| <a id="cirunnercreatedat"></a>`createdAt` | [`Time`](#time) | Timestamp of creation of this runner. |
|
||||
| <a id="cirunnercreatedby"></a>`createdBy` | [`UserCore`](#usercore) | User that created this runner. |
|
||||
| <a id="cirunnercontactedat"></a>`contactedAt` | [`Time`](#time) | Timestamp of last contact from the runner. |
|
||||
| <a id="cirunnercreatedat"></a>`createdAt` | [`Time`](#time) | Timestamp of creation of the runner. |
|
||||
| <a id="cirunnercreatedby"></a>`createdBy` | [`UserCore`](#usercore) | User that created the runner. |
|
||||
| <a id="cirunnercreationmethod"></a>`creationMethod` **{warning-solid}** | [`CiRunnerCreationMethod`](#cirunnercreationmethod) | **Introduced** in GitLab 17.0. **Status**: Experiment. Type of runner registration. |
|
||||
| <a id="cirunnerdescription"></a>`description` | [`String`](#string) | Description of the runner. |
|
||||
| <a id="cirunnereditadminurl"></a>`editAdminUrl` | [`String`](#string) | Admin form URL of the runner. Only available for administrators. |
|
||||
|
|
@ -19090,7 +19090,7 @@ GitLab CI/CD configuration template.
|
|||
| <a id="clusteragentcreatedbyuser"></a>`createdByUser` | [`UserCore`](#usercore) | User object, containing information about the person who created the agent. |
|
||||
| <a id="clusteragentid"></a>`id` | [`ID!`](#id) | ID of the cluster agent. |
|
||||
| <a id="clusteragentname"></a>`name` | [`String`](#string) | Name of the cluster agent. |
|
||||
| <a id="clusteragentproject"></a>`project` | [`Project`](#project) | Project this cluster agent is associated with. |
|
||||
| <a id="clusteragentproject"></a>`project` | [`Project`](#project) | Project the cluster agent is associated with. |
|
||||
| <a id="clusteragentremotedevelopmentagentconfig"></a>`remoteDevelopmentAgentConfig` | [`RemoteDevelopmentAgentConfig`](#remotedevelopmentagentconfig) | Remote development agent config for the cluster agent. |
|
||||
| <a id="clusteragenttokens"></a>`tokens` | [`ClusterAgentTokenConnection`](#clusteragenttokenconnection) | Tokens associated with the cluster agent. (see [Connections](#connections)) |
|
||||
| <a id="clusteragentupdatedat"></a>`updatedAt` | [`Time`](#time) | Timestamp the cluster agent was updated. |
|
||||
|
|
@ -19154,7 +19154,7 @@ four standard [pagination arguments](#pagination-arguments):
|
|||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="clusteragenttokenclusteragent"></a>`clusterAgent` | [`ClusterAgent`](#clusteragent) | Cluster agent this token is associated with. |
|
||||
| <a id="clusteragenttokenclusteragent"></a>`clusterAgent` | [`ClusterAgent`](#clusteragent) | Cluster agent the token is associated with. |
|
||||
| <a id="clusteragenttokencreatedat"></a>`createdAt` | [`Time`](#time) | Timestamp the token was created. |
|
||||
| <a id="clusteragenttokencreatedbyuser"></a>`createdByUser` | [`UserCore`](#usercore) | User who created the token. |
|
||||
| <a id="clusteragenttokendescription"></a>`description` | [`String`](#string) | Description of the token. |
|
||||
|
|
@ -19572,12 +19572,12 @@ A tag expiration policy designed to keep only the images that matter most.
|
|||
| ---- | ---- | ----------- |
|
||||
| <a id="containerexpirationpolicycadence"></a>`cadence` | [`ContainerExpirationPolicyCadenceEnum!`](#containerexpirationpolicycadenceenum) | This container expiration policy schedule. |
|
||||
| <a id="containerexpirationpolicycreatedat"></a>`createdAt` | [`Time!`](#time) | Timestamp of when the container expiration policy was created. |
|
||||
| <a id="containerexpirationpolicyenabled"></a>`enabled` | [`Boolean!`](#boolean) | Indicates whether this container expiration policy is enabled. |
|
||||
| <a id="containerexpirationpolicyenabled"></a>`enabled` | [`Boolean!`](#boolean) | Indicates whether the container expiration policy is enabled. |
|
||||
| <a id="containerexpirationpolicykeepn"></a>`keepN` | [`ContainerExpirationPolicyKeepEnum`](#containerexpirationpolicykeepenum) | Number of tags to retain. |
|
||||
| <a id="containerexpirationpolicynameregex"></a>`nameRegex` | [`UntrustedRegexp`](#untrustedregexp) | Tags with names matching this regex pattern will expire. |
|
||||
| <a id="containerexpirationpolicynameregexkeep"></a>`nameRegexKeep` | [`UntrustedRegexp`](#untrustedregexp) | Tags with names matching this regex pattern will be preserved. |
|
||||
| <a id="containerexpirationpolicynextrunat"></a>`nextRunAt` | [`Time`](#time) | Next time that this container expiration policy will get executed. |
|
||||
| <a id="containerexpirationpolicyolderthan"></a>`olderThan` | [`ContainerExpirationPolicyOlderThanEnum`](#containerexpirationpolicyolderthanenum) | Tags older that this will expire. |
|
||||
| <a id="containerexpirationpolicynameregex"></a>`nameRegex` | [`UntrustedRegexp`](#untrustedregexp) | Tags with names matching the regex pattern will expire. |
|
||||
| <a id="containerexpirationpolicynameregexkeep"></a>`nameRegexKeep` | [`UntrustedRegexp`](#untrustedregexp) | Tags with names matching the regex pattern will be preserved. |
|
||||
| <a id="containerexpirationpolicynextrunat"></a>`nextRunAt` | [`Time`](#time) | Next time that the container expiration policy will get executed. |
|
||||
| <a id="containerexpirationpolicyolderthan"></a>`olderThan` | [`ContainerExpirationPolicyOlderThanEnum`](#containerexpirationpolicyolderthanenum) | Tags older than the given age will expire. |
|
||||
| <a id="containerexpirationpolicyupdatedat"></a>`updatedAt` | [`Time!`](#time) | Timestamp of when the container expiration policy was updated. |
|
||||
|
||||
### `ContainerRegistryProtectionRule`
|
||||
|
|
@ -19735,7 +19735,7 @@ A tag from a container repository.
|
|||
| <a id="containerrepositorytagname"></a>`name` | [`String!`](#string) | Name of the tag. |
|
||||
| <a id="containerrepositorytagpath"></a>`path` | [`String!`](#string) | Path of the tag. |
|
||||
| <a id="containerrepositorytagpublishedat"></a>`publishedAt` | [`Time`](#time) | Timestamp when the tag was published. |
|
||||
| <a id="containerrepositorytagreferrers"></a>`referrers` | [`[ContainerRepositoryReferrer!]`](#containerrepositoryreferrer) | Referrers for this tag. |
|
||||
| <a id="containerrepositorytagreferrers"></a>`referrers` | [`[ContainerRepositoryReferrer!]`](#containerrepositoryreferrer) | Referrers for the tag. |
|
||||
| <a id="containerrepositorytagrevision"></a>`revision` | [`String`](#string) | Revision of the tag. |
|
||||
| <a id="containerrepositorytagshortrevision"></a>`shortRevision` | [`String`](#string) | Short revision of the tag. |
|
||||
| <a id="containerrepositorytagtotalsize"></a>`totalSize` | [`BigInt`](#bigint) | Size of the tag. |
|
||||
|
|
@ -25095,7 +25095,7 @@ Defines which user roles, users, or groups can merge into a protected branch.
|
|||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="mergeaccesslevelaccesslevel"></a>`accessLevel` | [`Int!`](#int) | GitLab::Access level. |
|
||||
| <a id="mergeaccesslevelaccessleveldescription"></a>`accessLevelDescription` | [`String!`](#string) | Human readable representation for this access level. |
|
||||
| <a id="mergeaccesslevelaccessleveldescription"></a>`accessLevelDescription` | [`String!`](#string) | Human readable representation for the access level. |
|
||||
| <a id="mergeaccesslevelgroup"></a>`group` | [`AccessLevelGroup`](#accesslevelgroup) | Group associated with this access level. |
|
||||
| <a id="mergeaccessleveluser"></a>`user` | [`AccessLevelUser`](#accessleveluser) | User associated with this access level. |
|
||||
|
||||
|
|
@ -28195,16 +28195,16 @@ Returns [`UserMergeRequestInteraction`](#usermergerequestinteraction).
|
|||
| <a id="pipelinecreatedat"></a>`createdAt` | [`Time!`](#time) | Timestamp of the pipeline's creation. |
|
||||
| <a id="pipelinedastprofile"></a>`dastProfile` | [`DastProfile`](#dastprofile) | DAST profile associated with the pipeline. |
|
||||
| <a id="pipelinedetailedstatus"></a>`detailedStatus` | [`DetailedStatus!`](#detailedstatus) | Detailed status of the pipeline. |
|
||||
| <a id="pipelinedownstream"></a>`downstream` | [`PipelineConnection`](#pipelineconnection) | Pipelines this pipeline will trigger. (see [Connections](#connections)) |
|
||||
| <a id="pipelinedownstream"></a>`downstream` | [`PipelineConnection`](#pipelineconnection) | Pipelines the pipeline will trigger. (see [Connections](#connections)) |
|
||||
| <a id="pipelineduration"></a>`duration` | [`Int`](#int) | Duration of the pipeline in seconds. |
|
||||
| <a id="pipelinefailurereason"></a>`failureReason` | [`String`](#string) | The reason why the pipeline failed. |
|
||||
| <a id="pipelinefailurereason"></a>`failureReason` | [`String`](#string) | Reason why the pipeline failed. |
|
||||
| <a id="pipelinefinishedat"></a>`finishedAt` | [`Time`](#time) | Timestamp of the pipeline's completion. |
|
||||
| <a id="pipelineid"></a>`id` | [`ID!`](#id) | ID of the pipeline. |
|
||||
| <a id="pipelineiid"></a>`iid` | [`String!`](#string) | Internal ID of the pipeline. |
|
||||
| <a id="pipelinejobartifacts"></a>`jobArtifacts` | [`[CiJobArtifact!]`](#cijobartifact) | Job artifacts of the pipeline. |
|
||||
| <a id="pipelinelatest"></a>`latest` | [`Boolean!`](#boolean) | If the pipeline is the latest one or not. |
|
||||
| <a id="pipelinemanualvariables"></a>`manualVariables` | [`PipelineManualVariableConnection`](#pipelinemanualvariableconnection) | CI/CD variables added to a manual pipeline. (see [Connections](#connections)) |
|
||||
| <a id="pipelinemergerequest"></a>`mergeRequest` | [`MergeRequest`](#mergerequest) | The MR which the Pipeline is attached to. |
|
||||
| <a id="pipelinemergerequest"></a>`mergeRequest` | [`MergeRequest`](#mergerequest) | MR which the Pipeline is attached to. |
|
||||
| <a id="pipelinemergerequesteventtype"></a>`mergeRequestEventType` | [`PipelineMergeRequestEventType`](#pipelinemergerequesteventtype) | Event type of the pipeline associated with a merge request. |
|
||||
| <a id="pipelinename"></a>`name` | [`String`](#string) | Name of the pipeline. |
|
||||
| <a id="pipelinepath"></a>`path` | [`String`](#string) | Relative path to the pipeline's page. |
|
||||
|
|
@ -28212,19 +28212,19 @@ Returns [`UserMergeRequestInteraction`](#usermergerequestinteraction).
|
|||
| <a id="pipelinequeuedduration"></a>`queuedDuration` | [`Duration`](#duration) | How long the pipeline was queued before starting. |
|
||||
| <a id="pipelineref"></a>`ref` | [`String`](#string) | Reference to the branch from which the pipeline was triggered. |
|
||||
| <a id="pipelinerefpath"></a>`refPath` | [`String`](#string) | Reference path to the branch from which the pipeline was triggered. |
|
||||
| <a id="pipelinereftext"></a>`refText` | [`String!`](#string) | The reference text from the presenter. |
|
||||
| <a id="pipelinereftext"></a>`refText` | [`String!`](#string) | Reference text from the presenter. |
|
||||
| <a id="pipelineretryable"></a>`retryable` | [`Boolean!`](#boolean) | Specifies if a pipeline's jobs can be retried. |
|
||||
| <a id="pipelinesecurityreportsummary"></a>`securityReportSummary` | [`SecurityReportSummary`](#securityreportsummary) | Vulnerability and scanned resource counts for each security scanner of the pipeline. |
|
||||
| <a id="pipelinesource"></a>`source` | [`String`](#string) | The source of the pipeline. |
|
||||
| <a id="pipelinesource"></a>`source` | [`String`](#string) | Source of the pipeline. |
|
||||
| <a id="pipelinesourcejob"></a>`sourceJob` | [`CiJob`](#cijob) | Job where pipeline was triggered from. |
|
||||
| <a id="pipelinestages"></a>`stages` | [`CiStageConnection`](#cistageconnection) | Stages of the pipeline. (see [Connections](#connections)) |
|
||||
| <a id="pipelinestartedat"></a>`startedAt` | [`Time`](#time) | Timestamp when the pipeline was started. |
|
||||
| <a id="pipelinestatus"></a>`status` | [`PipelineStatusEnum!`](#pipelinestatusenum) | Status of the pipeline (CREATED, WAITING_FOR_RESOURCE, PREPARING, WAITING_FOR_CALLBACK, PENDING, RUNNING, FAILED, SUCCESS, CANCELED, CANCELING, SKIPPED, MANUAL, SCHEDULED). |
|
||||
| <a id="pipelinestuck"></a>`stuck` | [`Boolean!`](#boolean) | If the pipeline is stuck. |
|
||||
| <a id="pipelinetestreportsummary"></a>`testReportSummary` | [`TestReportSummary!`](#testreportsummary) | Summary of the test report generated by the pipeline. |
|
||||
| <a id="pipelinetotaljobs"></a>`totalJobs` | [`Int!`](#int) | The total number of jobs in the pipeline. |
|
||||
| <a id="pipelinetotaljobs"></a>`totalJobs` | [`Int!`](#int) | Total number of jobs in the pipeline. |
|
||||
| <a id="pipelinetrigger"></a>`trigger` | [`Boolean!`](#boolean) | If the pipeline was created by a Trigger request. |
|
||||
| <a id="pipelinetriggeredbypath"></a>`triggeredByPath` | [`String`](#string) | The path that triggered this pipeline. |
|
||||
| <a id="pipelinetriggeredbypath"></a>`triggeredByPath` | [`String`](#string) | Path that triggered the pipeline. |
|
||||
| <a id="pipelineupdatedat"></a>`updatedAt` | [`Time!`](#time) | Timestamp of the pipeline's last activity. |
|
||||
| <a id="pipelineupstream"></a>`upstream` | [`Pipeline`](#pipeline) | Pipeline that triggered the pipeline. |
|
||||
| <a id="pipelineuser"></a>`user` | [`UserCore`](#usercore) | Pipeline user. |
|
||||
|
|
@ -28232,14 +28232,14 @@ Returns [`UserMergeRequestInteraction`](#usermergerequestinteraction).
|
|||
| <a id="pipelineusesneeds"></a>`usesNeeds` | [`Boolean`](#boolean) | Indicates if the pipeline has jobs with `needs` dependencies. |
|
||||
| <a id="pipelinewarningmessages"></a>`warningMessages` | [`[PipelineMessage!]`](#pipelinemessage) | Pipeline warning messages. |
|
||||
| <a id="pipelinewarnings"></a>`warnings` | [`Boolean!`](#boolean) | Indicates if a pipeline has warnings. |
|
||||
| <a id="pipelineyamlerrormessages"></a>`yamlErrorMessages` | [`String`](#string) | The pipeline YAML errors. |
|
||||
| <a id="pipelineyamlerrormessages"></a>`yamlErrorMessages` | [`String`](#string) | Pipeline YAML errors. |
|
||||
| <a id="pipelineyamlerrors"></a>`yamlErrors` | [`Boolean!`](#boolean) | If the pipeline has YAML errors. |
|
||||
|
||||
#### Fields with arguments
|
||||
|
||||
##### `Pipeline.job`
|
||||
|
||||
Specific job in this pipeline, either by name or ID.
|
||||
Specific job in the pipeline, either by name or ID.
|
||||
|
||||
Returns [`CiJob`](#cijob).
|
||||
|
||||
|
|
@ -31094,7 +31094,7 @@ Defines which user roles, users, or groups can push to a protected branch.
|
|||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="pushaccesslevelaccesslevel"></a>`accessLevel` | [`Int!`](#int) | GitLab::Access level. |
|
||||
| <a id="pushaccesslevelaccessleveldescription"></a>`accessLevelDescription` | [`String!`](#string) | Human readable representation for this access level. |
|
||||
| <a id="pushaccesslevelaccessleveldescription"></a>`accessLevelDescription` | [`String!`](#string) | Human readable representation for the access level. |
|
||||
| <a id="pushaccessleveldeploykey"></a>`deployKey` | [`AccessLevelDeployKey`](#accessleveldeploykey) | Deploy key assigned to the access level. |
|
||||
| <a id="pushaccesslevelgroup"></a>`group` | [`AccessLevelGroup`](#accesslevelgroup) | Group associated with this access level. |
|
||||
| <a id="pushaccessleveluser"></a>`user` | [`AccessLevelUser`](#accessleveluser) | User associated with this access level. |
|
||||
|
|
@ -32204,7 +32204,7 @@ Progress of standards adherence checks.
|
|||
|
||||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="statusactionbuttontitle"></a>`buttonTitle` | [`String`](#string) | Title for the button, for example: Retry this job. |
|
||||
| <a id="statusactionbuttontitle"></a>`buttonTitle` | [`String`](#string) | Title for the button, for example: Retry the job. |
|
||||
| <a id="statusactionconfirmationmessage"></a>`confirmationMessage` **{warning-solid}** | [`String`](#string) | **Introduced** in GitLab 17.0. **Status**: Experiment. Custom confirmation message for a manual job. |
|
||||
| <a id="statusactionicon"></a>`icon` | [`String`](#string) | Icon used in the action button. |
|
||||
| <a id="statusactionid"></a>`id` | [`String!`](#string) | ID for a status action. |
|
||||
|
|
@ -32734,7 +32734,7 @@ Defines which user roles, users, or groups can unprotect a protected branch.
|
|||
| Name | Type | Description |
|
||||
| ---- | ---- | ----------- |
|
||||
| <a id="unprotectaccesslevelaccesslevel"></a>`accessLevel` | [`Int!`](#int) | GitLab::Access level. |
|
||||
| <a id="unprotectaccesslevelaccessleveldescription"></a>`accessLevelDescription` | [`String!`](#string) | Human readable representation for this access level. |
|
||||
| <a id="unprotectaccesslevelaccessleveldescription"></a>`accessLevelDescription` | [`String!`](#string) | Human readable representation for the access level. |
|
||||
| <a id="unprotectaccesslevelgroup"></a>`group` | [`AccessLevelGroup`](#accesslevelgroup) | Group associated with this access level. |
|
||||
| <a id="unprotectaccessleveluser"></a>`user` | [`AccessLevelUser`](#accessleveluser) | User associated with this access level. |
|
||||
|
||||
|
|
@ -35177,7 +35177,7 @@ Values for sorting runners.
|
|||
| Value | Description |
|
||||
| ----- | ----------- |
|
||||
| <a id="cirunnerstatusactive"></a>`ACTIVE` **{warning-solid}** | **Deprecated** in GitLab 14.6. This was renamed. Use: [`CiRunner.paused`](#cirunnerpaused). |
|
||||
| <a id="cirunnerstatusnever_contacted"></a>`NEVER_CONTACTED` | Runner that has never contacted this instance. |
|
||||
| <a id="cirunnerstatusnever_contacted"></a>`NEVER_CONTACTED` | Runner that has never contacted the instance. |
|
||||
| <a id="cirunnerstatusoffline"></a>`OFFLINE` | Runner that has not contacted this instance within the last 2 hours. Will be considered `STALE` if offline for more than 7 days. |
|
||||
| <a id="cirunnerstatusonline"></a>`ONLINE` | Runner that contacted this instance within the last 2 hours. |
|
||||
| <a id="cirunnerstatuspaused"></a>`PAUSED` **{warning-solid}** | **Deprecated** in GitLab 14.6. This was renamed. Use: [`CiRunner.paused`](#cirunnerpaused). |
|
||||
|
|
|
|||
|
|
@ -2659,6 +2659,7 @@ PUT /groups/:id/push_rule
|
|||
| `commit_committer_name_check` | boolean | no | Users can only push commits to this repository if the commit author name is consistent with their GitLab account name |
|
||||
| `reject_unsigned_commits` | boolean | no | Reject commit when it’s not signed |
|
||||
| `reject_non_dco_commits` | boolean | no | Reject commit when it’s not DCO certified |
|
||||
|
||||
<!-- markdownlint-enable MD056 -->
|
||||
|
||||
```shell
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ For example:
|
|||
- [GitLab Runner](https://gitlab.com/gitlab-org/gitlab-runner)
|
||||
- [Gitaly](https://gitlab.com/gitlab-org/gitaly)
|
||||
- [GLab](https://gitlab.com/gitlab-org/cli)
|
||||
- [GitLab Terraform Provider](https://gitlab.com/gitlab-org/terraform-provider-gitlab)
|
||||
|
||||
We have [development style guides for each technology](style_guides.md) to help you align with our coding standards.
|
||||
|
||||
|
|
@ -47,7 +48,10 @@ Select the appropriate template and add all the necessary information about the
|
|||
That way you can get more guidance and support.
|
||||
|
||||
If you're not sure what to work on, you can
|
||||
[view issues with the `~quick win` label](https://gitlab.com/groups/gitlab-org/-/issues/?label_name%5B%5D=quick%20win).
|
||||
[view issues with the `~quick win` label](https://gitlab.com/groups/gitlab-org/-/issues/?sort=created_asc&state=opened&label_name%5B%5D=quick%20win&first_page_size=100),
|
||||
and filter specifically for [documentation `~quick win`](https://gitlab.com/groups/gitlab-org/-/issues/?sort=created_asc&state=opened&label_name%5B%5D=quick%20win&label_name%5B%5D=documentation&first_page_size=100),
|
||||
[backend `~quick win`](https://gitlab.com/groups/gitlab-org/-/issues/?sort=created_asc&state=opened&label_name%5B%5D=quick%20win&label_name%5B%5D=backend&first_page_size=100),
|
||||
or [frontend `~quick win`](https://gitlab.com/groups/gitlab-org/-/issues/?sort=created_asc&state=opened&label_name%5B%5D=quick%20win&label_name%5B%5D=frontend&first_page_size=100).
|
||||
|
||||
When you find an issue you want to work on, leave a comment on it.
|
||||
This helps the GitLab team and members of the wider GitLab community know that you will be working on that issue.
|
||||
|
|
@ -55,6 +59,7 @@ This helps the GitLab team and members of the wider GitLab community know that y
|
|||
This is a good opportunity to [validate the issue](issue_workflow.md#clarifyingvalidating-an-issue).
|
||||
Confirm that the issue is still valid, clarify your intended approach, and ask if a feature or change is likely to be accepted.
|
||||
You do not need to be assigned to the issue to get started.
|
||||
If the issue already has an assignee, ask if they are still working on the issue or if they would like to collaborate.
|
||||
|
||||
For details, see [the issues workflow](issue_workflow.md).
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
stage: Monitor
|
||||
group: Observability
|
||||
description: Track errors, application performance issues and manage incident response
|
||||
description: Track errors, application performance issues, and manage incident response.
|
||||
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
|
||||
---
|
||||
|
||||
|
|
@ -9,7 +9,6 @@ info: To determine the technical writer assigned to the Stage/Group associated w
|
|||
|
||||
Visualize and analyze errors, traces, metrics and logs collected from your application and its infrastructure. Monitor, identify and resolve performance issues and incidents collaboratively.
|
||||
|
||||
| | | |
|
||||
|--|--|--|
|
||||
| [**Getting started**](../user/get_started/get_started_monitoring.md) **{chevron-right}** | [**Error tracking**](error_tracking.md) **{chevron-right}** | [**Distributed tracing**](tracing.md) **{chevron-right}** |
|
||||
| [**Metrics**](metrics.md) **{chevron-right}** | [**Logs**](logs.md) **{chevron-right}** | [**Incident management**](incident_management/index.md) **{chevron-right}** |
|
||||
| [**Getting started**](../user/get_started/get_started_monitoring.md) **{chevron-right}**<br><br>Overview of how features fit together. | [**Error tracking**](error_tracking.md) **{chevron-right}**<br><br>Error tracking, logging, debugging, data retention. | [**Distributed tracing**](tracing.md) **{chevron-right}**<br><br>Monitoring, troubleshooting, performance analysis, request tracking. |
|
||||
| [**Metrics**](metrics.md) **{chevron-right}**<br><br>Monitoring, visualization, aggregation, analysis, retention. | [**Logs**](logs.md) **{chevron-right}**<br><br>Centralized logging, analysis, configuration, viewing, filtering. | [**Incident management**](incident_management/index.md) **{chevron-right}**<br><br>Alert handling, response coordination, escalation procedures. |
|
||||
|
|
|
|||
|
|
@ -11,9 +11,9 @@ Use CI/CD to generate your application.
|
|||
|
||||
| | | |
|
||||
|--|--|--|
|
||||
| [**Getting started**](../ci/index.md) **{chevron-right}** | [**CI/CD YAML syntax reference**](../ci/yaml/index.md) **{chevron-right}** | [**Runners**](https://docs.gitlab.com/runner/) **{chevron-right}** |
|
||||
| [**Pipelines**](../ci/pipelines/index.md) **{chevron-right}** | [**Jobs**](../ci/jobs/index.md) **{chevron-right}** | [**CI/CD components**](../ci/components/index.md) **{chevron-right}** |
|
||||
| [**Variables**](../ci/variables/index.md) **{chevron-right}** | [**Pipeline security**](../ci/pipelines/pipeline_security.md) **{chevron-right}** | [**Services**](../ci/services/index.md) **{chevron-right}** |
|
||||
| [**Auto DevOps**](autodevops/index.md) **{chevron-right}** | [**Testing**](../ci/testing/index.md) **{chevron-right}** | [**SSH keys**](../ci/ssh_keys/index.md) **{chevron-right}** |
|
||||
| [**ChatOps**](../ci/chatops/index.md) **{chevron-right}** | [**Mobile DevOps**](../ci/mobile_devops.md) **{chevron-right}** | [**Google cloud integration**](../ci/gitlab_google_cloud_integration/index.md) **{chevron-right}** |
|
||||
|[**External repository integrations**](../ci/ci_cd_for_external_repos/index.md) **{chevron-right}** | | |
|
||||
| [**Getting started**](../ci/index.md) **{chevron-right}**<br><br>Overview of how features fit together. | [**CI/CD YAML syntax reference**](../ci/yaml/index.md) **{chevron-right}**<br><br>Pipeline definition, artifacts, debugging, examples, steps. | [**Runners**](https://docs.gitlab.com/runner/) **{chevron-right}**<br><br>Execution, agents, job processing, installation, configuration. |
|
||||
| [**Pipelines**](../ci/pipelines/index.md) **{chevron-right}**<br><br>Configuration, automation, stages, jobs, schedules, efficiency. | [**Jobs**](../ci/jobs/index.md) **{chevron-right}**<br><br>Configuration, logs, artifacts. | [**CI/CD components**](../ci/components/index.md) **{chevron-right}**<br><br>Reusable, versioned CI/CD components for pipelines. |
|
||||
| [**Variables**](../ci/variables/index.md) **{chevron-right}**<br><br> Configuration, usage, security, troubleshooting. | [**Pipeline security**](../ci/pipelines/pipeline_security.md) **{chevron-right}**<br><br>Secrets management, job tokens, secure files, cloud security. | [**Services**](../ci/services/index.md) **{chevron-right}**<br><br>Reusable database or caching images. |
|
||||
| [**Auto DevOps**](autodevops/index.md) **{chevron-right}**<br><br>Automated DevOps, CI/CD, language detection, deployment, customization. | [**Testing**](../ci/testing/index.md) **{chevron-right}**<br><br>Unit tests, integration tests, test reports, coverage, quality assurance. | [**SSH keys**](../ci/ssh_keys/index.md) **{chevron-right}**<br><br>Authentication, secure access, deployment, remote execution, key management. |
|
||||
| [**ChatOps**](../ci/chatops/index.md) **{chevron-right}**<br><br>Collaboration, chat integration, commands, automation, communication. | [**Mobile DevOps**](../ci/mobile_devops.md) **{chevron-right}**<br><br>Mobile apps, Android, build automation, app distribution. | [**Google cloud integration**](../ci/gitlab_google_cloud_integration/index.md) **{chevron-right}**<br><br>Cloud services, Kubernetes deployments. |
|
||||
|[**External repository integrations**](../ci/ci_cd_for_external_repos/index.md) **{chevron-right}**<br><br>GitHub, Bitbucket, external sources, mirroring, cross-platform. | | |
|
||||
|
|
|
|||
|
|
@ -363,11 +363,6 @@ git rebase -i commit-id
|
|||
> - [Enabled on GitLab.com](https://gitlab.com/gitlab-org/gitlab/-/issues/462999) in GitLab 17.2.
|
||||
> - [Enabled on self-managed and GitLab Dedicated](https://gitlab.com/gitlab-org/gitlab/-/issues/462999) in GitLab 17.3.
|
||||
|
||||
FLAG:
|
||||
The availability of this feature is controlled by a feature flag.
|
||||
For more information, see the history.
|
||||
This feature is available for testing, but not ready for production use.
|
||||
|
||||
Permanently delete sensitive or confidential information that was accidentally committed, ensuring
|
||||
it's no longer accessible in your repository's history.
|
||||
Replaces a list of strings with `***REMOVED***`.
|
||||
|
|
|
|||
|
|
@ -16,9 +16,9 @@ release features incrementally.
|
|||
|
||||
| | | |
|
||||
|--|--|--|
|
||||
| [**Getting started**](../user/get_started/get_started_deploy_release.md) **{chevron-right}** | [**Packages and registries**](../user/packages/index.md) **{chevron-right}** | [**Environments and deployments**](../ci/environments/index.md) **{chevron-right}** |
|
||||
| [**Releases**](../user/project/releases/index.md) **{chevron-right}** | [**Roll out an application incrementally**](../ci/environments/incremental_rollouts.md) **{chevron-right}** | [**Feature flags**](../operations/feature_flags.md) **{chevron-right}** |
|
||||
| [**GitLab Pages**](../user/project/pages/index.md) **{chevron-right}** | | |
|
||||
| [**Getting started**](../user/get_started/get_started_deploy_release.md) **{chevron-right}**<br><br>Overview of how features fit together. | [**Packages and registries**](../user/packages/index.md) **{chevron-right}**<br><br>Package management, container registry, artifact storage, dependency management. | [**Environments and deployments**](../ci/environments/index.md) **{chevron-right}**<br><br>Environments, deployments, rollbacks, safety, approvals. |
|
||||
| [**Releases**](../user/project/releases/index.md) **{chevron-right}**<br><br>Releases, versioning, assets, tags, milestones, evidence. | [**Roll out an application incrementally**](../ci/environments/incremental_rollouts.md) **{chevron-right}**<br><br>Kubernetes, CI/CD, risk mitigation, deployment. | [**Feature flags**](../operations/feature_flags.md) **{chevron-right}**<br><br>Progressive delivery, controlled deployment, risk reduction. |
|
||||
| [**GitLab Pages**](../user/project/pages/index.md) **{chevron-right}**<br><br>Static site hosting, documentation publishing, project websites, custom domains. | | |
|
||||
|
||||
## Related topics
|
||||
|
||||
|
|
|
|||
|
|
@ -87,6 +87,55 @@ For more information about upgrading GitLab Helm Chart, see [the release notes f
|
|||
the upgrade. This bug has been fixed with GitLab 17.1.2 and upgrading from GitLab 16.x directly to 17.1.2 will not
|
||||
cause these issues.
|
||||
|
||||
## Issues to be aware of when upgrading from 17.3
|
||||
|
||||
- Migration failures when upgrading from GitLab 17.3.
|
||||
|
||||
When upgrading from 17.3 to 17.4, there is a slight chance of encountering an error. During the migration process, you might see an error message like the one below:
|
||||
|
||||
```shell
|
||||
main: == [advisory_lock_connection] object_id: 127900, pg_backend_pid: 76263
|
||||
main: == 20240812040748 AddUniqueConstraintToRemoteDevelopmentAgentConfigs: migrating
|
||||
main: -- transaction_open?(nil)
|
||||
main: -> 0.0000s
|
||||
main: -- view_exists?(:postgres_partitions)
|
||||
main: -> 0.0181s
|
||||
main: -- index_exists?(:remote_development_agent_configs, :cluster_agent_id, {:name=>"index_remote_development_agent_configs_on_unique_agent_id", :unique=>true, :algorithm=>:concurrently})
|
||||
main: -> 0.0026s
|
||||
main: -- execute("SET statement_timeout TO 0")
|
||||
main: -> 0.0004s
|
||||
main: -- add_index(:remote_development_agent_configs, :cluster_agent_id, {:name=>"index_remote_development_agent_configs_on_unique_agent_id", :unique=>true, :algorithm=>:concurrently})
|
||||
main: -- execute("RESET statement_timeout")
|
||||
main: -> 0.0002s
|
||||
main: == [advisory_lock_connection] object_id: 127900, pg_backend_pid: 76263
|
||||
rake aborted!
|
||||
StandardError: An error has occurred, all later migrations canceled:
|
||||
|
||||
PG::UniqueViolation: ERROR: could not create unique index "index_remote_development_agent_configs_on_unique_agent_id"
|
||||
DETAIL: Key (cluster_agent_id)=(1000141) is duplicated.
|
||||
```
|
||||
|
||||
This error occurs because the migration adds a unique constraint on the `cluster_agent_id` column in the `remote_development_agent_configs` table, but there are still duplicate entries. The previous migration is supposed to remove these duplicates, but in rare cases, new duplicates may be inserted between the two migrations.
|
||||
|
||||
To safely resolve this issue, follow these steps:
|
||||
|
||||
1. Open the Rails console where the migrations are being run.
|
||||
1. Copy and paste the script below into the console and execute it.
|
||||
1. Re-run the migrations, and they should complete successfully.
|
||||
|
||||
```Ruby
|
||||
# Get the IDs to keep for each cluster_agent_id; if there are duplicates, only the row with the latest updated_at will be kept.
|
||||
latest_ids = ::RemoteDevelopment::RemoteDevelopmentAgentConfig.select("DISTINCT ON (cluster_agent_id) id")
|
||||
.order("cluster_agent_id, updated_at DESC")
|
||||
.map(&:id)
|
||||
|
||||
# Get the list of remote_development_agent_configs to be removed.
|
||||
agent_configs_to_remove = ::RemoteDevelopment::RemoteDevelopmentAgentConfig.where.not(id: latest_ids)
|
||||
|
||||
# Delete all duplicated agent_configs.
|
||||
agent_configs_to_remove.delete_all
|
||||
```
|
||||
|
||||
### Linux package installations
|
||||
|
||||
Specific information applies to Linux package installations:
|
||||
|
|
|
|||
|
|
@ -11,12 +11,11 @@ GitLab can check your applications for security vulnerabilities.
|
|||
|
||||
| | | |
|
||||
|--|--|--|
|
||||
| [**Getting started**](get-started-security.md) **{chevron-right}** | [**Application security**](index.md) **{chevron-right}** | [**Security configuration**](configuration/index.md) **{chevron-right}** |
|
||||
| [**Container Scanning**](container_scanning/index.md) **{chevron-right}** | [**Dependency Scanning**](dependency_scanning/index.md) **{chevron-right}** | [**Comparison**](comparison_dependency_and_container_scanning.md) **{chevron-right}** |
|
||||
| [**Dependency List**](dependency_list/index.md) **{chevron-right}** | [**Continuous Vulnerability Scanning**](continuous_vulnerability_scanning/index.md) **{chevron-right}** | [**Static Application Security Testing**](sast/index.md) **{chevron-right}** |
|
||||
| [**Infrastructure as Code (IaC) Scanning**](iac_scanning/index.md) **{chevron-right}** | [**Secret detection**](secret_detection/index.md) **{chevron-right}** | [**Dynamic Application Security Testing (DAST)**](dast/index.md) **{chevron-right}** |
|
||||
| [**API Security**](api_security/index.md) **{chevron-right}** | [**Web API Fuzz Testing**](api_fuzzing/index.md) **{chevron-right}** | [**Coverage-guided fuzz testing**](coverage_fuzzing/index.md) **{chevron-right}** |
|
||||
| [**Security Dashboard**](security_dashboard/index.md) **{chevron-right}** | [**Offline environments**](offline_deployments/index.md) **{chevron-right}** | [**Vulnerability Report**](vulnerability_report/index.md) **{chevron-right}** |
|
||||
| [**Vulnerability Page**](vulnerabilities/index.md) **{chevron-right}** | [**Vulnerability severity levels**](vulnerabilities/severities.md) **{chevron-right}** | [**GitLab Advisory Database**](gitlab_advisory_database/index.md) **{chevron-right}** |
|
||||
| [**CVE ID requests**](cve_id_request.md) **{chevron-right}** | [**Policies**](policies/index.md) **{chevron-right}** | [**Security scanner integration**](../../development/integrations/secure.md) **{chevron-right}** |
|
||||
| [**Secure and Govern glossary**](terminology/index.md) **{chevron-right}** | | |
|
||||
| [**Getting started**](get-started-security.md) **{chevron-right}**<br><br>Overview of how features fit together. | [**Application security**](index.md) **{chevron-right}**<br><br>Scanning, vulnerabilities, compliance, customization, reporting. | [**Security configuration**](configuration/index.md) **{chevron-right}**<br><br>Configuration, testing, compliance, scanning, enablement. |
|
||||
| [**Container Scanning**](container_scanning/index.md) **{chevron-right}**<br><br>Image vulnerability scanning, configuration, customization, reporting. | [**Dependency Scanning**](dependency_scanning/index.md) **{chevron-right}**<br><br>Vulnerabilities, remediation, configuration, analyzers, reports. | [**Comparison**](comparison_dependency_and_container_scanning.md) **{chevron-right}**<br><br>Dependency Scanning compared to Container Scanning. |
|
||||
| [**Dependency List**](dependency_list/index.md) **{chevron-right}**<br><br>vulnerabilities, licenses, filtering, exporting. | [**Continuous Vulnerability Scanning**](continuous_vulnerability_scanning/index.md) **{chevron-right}**<br><br>Scanning, dependencies, advisories, background jobs. | [**Static Application Security Testing**](sast/index.md) **{chevron-right}**<br><br>Scanning, configuration, analyzers, vulnerabilities, reporting, customization, integration. |
|
||||
| [**Infrastructure as Code (IaC) Scanning**](iac_scanning/index.md) **{chevron-right}**<br><br>Vulnerability detection, configuration analysis, pipeline integration. | [**Secret detection**](secret_detection/index.md) **{chevron-right}**<br><br>Detection, prevention, monitoring, storage, revocation, reporting. | [**Dynamic Application Security Testing (DAST)**](dast/index.md) **{chevron-right}**<br><br>Automated penetration testing, vulnerability detection, web application scanning, security assessment, CI/CD integration. |
|
||||
| [**API Security**](api_security/index.md) **{chevron-right}**<br><br>Protection, analysis, testing, scanning, discovery. | [**Web API Fuzz Testing**](api_fuzzing/index.md) **{chevron-right}**<br><br>Testing, security, vulnerabilities, automation, errors. | [**Coverage-guided fuzz testing**](coverage_fuzzing/index.md) **{chevron-right}**<br><br>Coverage-guided fuzzing, random inputs, unexpected behavior. |
|
||||
| [**Security Dashboard**](security_dashboard/index.md) **{chevron-right}**<br><br>Security dashboards, vulnerability trends, project ratings, metrics. | [**Offline environments**](offline_deployments/index.md) **{chevron-right}**<br><br>Offline security scanning, resolving vulnerabilities. | [**Vulnerability Report**](vulnerability_report/index.md) **{chevron-right}**<br><br>Filtering, grouping, exporting, manual addition. |
|
||||
| [**Vulnerability Page**](vulnerabilities/index.md) **{chevron-right}**<br><br>Vulnerability details, status, resolution, linking issues. | [**Vulnerability severity levels**](vulnerabilities/severities.md) **{chevron-right}**<br><br>Classification, impact, prioritization, risk assessment. | [**GitLab Advisory Database**](gitlab_advisory_database/index.md) **{chevron-right}**<br><br>Security advisories, vulnerabilities, dependencies, database, updates. |
|
||||
| [**CVE ID requests**](cve_id_request.md) **{chevron-right}**<br><br>Vulnerability tracking, security disclosure. | [**Policies**](policies/index.md) **{chevron-right}**<br><br>Security policies, enforcement, compliance, approvals, scans. | [**Security scanner integration**](../../development/integrations/secure.md) **{chevron-right}**<br><br>Reporting, vulnerabilities, remediations, tracking. |
|
||||
|
|
|
|||
|
|
@ -11,5 +11,5 @@ Use GitLab to speed up and simplify your infrastructure management practices.
|
|||
|
||||
| | | |
|
||||
|--|--|--|
|
||||
| [**Getting started**](../get_started/get_started_managing_infrastructure.md) **{chevron-right}** | [**Infrastructure as Code**](iac/index.md) **{chevron-right}** | [**Create Kubernetes clusters**](../clusters/create/index.md) **{chevron-right}** |
|
||||
| [**Connect Kubernetes clusters**](../clusters/agent/index.md) **{chevron-right}** | [**Runbooks**](../project/clusters/runbooks/index.md) **{chevron-right}** | |
|
||||
| [**Getting started**](../get_started/get_started_managing_infrastructure.md) **{chevron-right}**<br><br>Overview of how features fit together. | [**Infrastructure as Code**](iac/index.md) **{chevron-right}**<br><br>Infrastructure management, versioning, automation, state storage, modules. | [**Create Kubernetes clusters**](../clusters/create/index.md) **{chevron-right}**<br><br>Amazon EKS, Azure AKS, Google GKE, Civo. |
|
||||
| [**Connect Kubernetes clusters**](../clusters/agent/index.md) **{chevron-right}**<br><br>Kubernetes integration, GitOps, CI/CD, agent deployment, cluster management. | [**Runbooks**](../project/clusters/runbooks/index.md) **{chevron-right}**<br><br>Executable runbooks, automation, troubleshooting, operations. | |
|
||||
|
|
|
|||
|
|
@ -248,11 +248,6 @@ When using repository cleanup, note:
|
|||
> - [Enabled on GitLab.com](https://gitlab.com/gitlab-org/gitlab/-/issues/462999) in GitLab 17.2.
|
||||
> - [Enabled on self-managed and GitLab Dedicated](https://gitlab.com/gitlab-org/gitlab/-/issues/462999) in GitLab 17.3.
|
||||
|
||||
FLAG:
|
||||
The availability of this feature is controlled by a feature flag.
|
||||
For more information, see the history.
|
||||
This feature is available for testing, but not ready for production use.
|
||||
|
||||
Permanently delete sensitive or confidential information that was accidentally committed, ensuring
|
||||
it's no longer accessible in your repository's history.
|
||||
|
||||
|
|
|
|||
72
package.json
72
package.json
|
|
@ -89,41 +89,41 @@
|
|||
"@snowplow/browser-plugin-timezone": "^3.24.2",
|
||||
"@snowplow/browser-tracker": "^3.24.2",
|
||||
"@sourcegraph/code-host-integration": "0.0.95",
|
||||
"@tiptap/core": "^2.6.4",
|
||||
"@tiptap/extension-blockquote": "^2.6.4",
|
||||
"@tiptap/extension-bold": "^2.6.4",
|
||||
"@tiptap/extension-bubble-menu": "^2.6.4",
|
||||
"@tiptap/extension-bullet-list": "^2.6.4",
|
||||
"@tiptap/extension-code": "^2.6.4",
|
||||
"@tiptap/extension-code-block": "^2.6.4",
|
||||
"@tiptap/extension-code-block-lowlight": "^2.6.4",
|
||||
"@tiptap/extension-document": "^2.6.4",
|
||||
"@tiptap/extension-dropcursor": "^2.6.4",
|
||||
"@tiptap/extension-gapcursor": "^2.6.4",
|
||||
"@tiptap/extension-hard-break": "^2.6.4",
|
||||
"@tiptap/extension-heading": "^2.6.4",
|
||||
"@tiptap/extension-highlight": "^2.6.4",
|
||||
"@tiptap/extension-history": "^2.6.4",
|
||||
"@tiptap/extension-horizontal-rule": "^2.6.4",
|
||||
"@tiptap/extension-image": "^2.6.4",
|
||||
"@tiptap/extension-italic": "^2.6.4",
|
||||
"@tiptap/extension-link": "^2.6.4",
|
||||
"@tiptap/extension-list-item": "^2.6.4",
|
||||
"@tiptap/extension-ordered-list": "^2.6.4",
|
||||
"@tiptap/extension-paragraph": "^2.6.4",
|
||||
"@tiptap/extension-strike": "^2.6.4",
|
||||
"@tiptap/extension-subscript": "^2.6.4",
|
||||
"@tiptap/extension-superscript": "^2.6.4",
|
||||
"@tiptap/extension-table": "^2.6.4",
|
||||
"@tiptap/extension-table-cell": "^2.6.4",
|
||||
"@tiptap/extension-table-header": "^2.6.4",
|
||||
"@tiptap/extension-table-row": "^2.6.4",
|
||||
"@tiptap/extension-task-item": "^2.6.4",
|
||||
"@tiptap/extension-task-list": "^2.6.4",
|
||||
"@tiptap/extension-text": "^2.6.4",
|
||||
"@tiptap/pm": "^2.6.4",
|
||||
"@tiptap/suggestion": "^2.6.4",
|
||||
"@tiptap/vue-2": "^2.6.4",
|
||||
"@tiptap/core": "^2.6.5",
|
||||
"@tiptap/extension-blockquote": "^2.6.5",
|
||||
"@tiptap/extension-bold": "^2.6.5",
|
||||
"@tiptap/extension-bubble-menu": "^2.6.5",
|
||||
"@tiptap/extension-bullet-list": "^2.6.5",
|
||||
"@tiptap/extension-code": "^2.6.5",
|
||||
"@tiptap/extension-code-block": "^2.6.5",
|
||||
"@tiptap/extension-code-block-lowlight": "^2.6.5",
|
||||
"@tiptap/extension-document": "^2.6.5",
|
||||
"@tiptap/extension-dropcursor": "^2.6.5",
|
||||
"@tiptap/extension-gapcursor": "^2.6.5",
|
||||
"@tiptap/extension-hard-break": "^2.6.5",
|
||||
"@tiptap/extension-heading": "^2.6.5",
|
||||
"@tiptap/extension-highlight": "^2.6.5",
|
||||
"@tiptap/extension-history": "^2.6.5",
|
||||
"@tiptap/extension-horizontal-rule": "^2.6.5",
|
||||
"@tiptap/extension-image": "^2.6.5",
|
||||
"@tiptap/extension-italic": "^2.6.5",
|
||||
"@tiptap/extension-link": "^2.6.5",
|
||||
"@tiptap/extension-list-item": "^2.6.5",
|
||||
"@tiptap/extension-ordered-list": "^2.6.5",
|
||||
"@tiptap/extension-paragraph": "^2.6.5",
|
||||
"@tiptap/extension-strike": "^2.6.5",
|
||||
"@tiptap/extension-subscript": "^2.6.5",
|
||||
"@tiptap/extension-superscript": "^2.6.5",
|
||||
"@tiptap/extension-table": "^2.6.5",
|
||||
"@tiptap/extension-table-cell": "^2.6.5",
|
||||
"@tiptap/extension-table-header": "^2.6.5",
|
||||
"@tiptap/extension-table-row": "^2.6.5",
|
||||
"@tiptap/extension-task-item": "^2.6.5",
|
||||
"@tiptap/extension-task-list": "^2.6.5",
|
||||
"@tiptap/extension-text": "^2.6.5",
|
||||
"@tiptap/pm": "^2.6.5",
|
||||
"@tiptap/suggestion": "^2.6.5",
|
||||
"@tiptap/vue-2": "^2.6.5",
|
||||
"@vue/apollo-components": "^4.0.0-beta.4",
|
||||
"@vue/apollo-option": "^4.0.0-beta.4",
|
||||
"apollo-upload-client": "15.0.0",
|
||||
|
|
@ -303,7 +303,7 @@
|
|||
"swagger-cli": "^4.0.4",
|
||||
"tailwindcss": "^3.4.1",
|
||||
"timezone-mock": "^1.0.8",
|
||||
"vite": "^5.4.1",
|
||||
"vite": "^5.4.2",
|
||||
"vite-plugin-ruby": "^5.0.0",
|
||||
"vue-loader-vue3": "npm:vue-loader@17.4.2",
|
||||
"vue-test-utils-compat": "0.0.14",
|
||||
|
|
|
|||
|
|
@ -94,12 +94,38 @@ describe('InstallAgentModal', () => {
|
|||
expect(findAlert().text()).toBe(I18N_AGENT_TOKEN.tokenSingleUseWarningTitle);
|
||||
});
|
||||
|
||||
it('shows code block with agent installation command', () => {
|
||||
expect(findCodeBlock().props('code')).toContain(`helm upgrade --install ${agentName}`);
|
||||
expect(findCodeBlock().props('code')).toContain(`--namespace gitlab-agent-${agentName}`);
|
||||
expect(findCodeBlock().props('code')).toContain(`--set config.token=${agentToken}`);
|
||||
expect(findCodeBlock().props('code')).toContain(`--set config.kasAddress=${kasAddress}`);
|
||||
expect(findCodeBlock().props('code')).toContain(`--set image.tag=v${kasInstallVersion}`);
|
||||
describe('when on dot_com', () => {
|
||||
beforeEach(() => {
|
||||
gon.dot_com = true;
|
||||
|
||||
createWrapper();
|
||||
});
|
||||
|
||||
it('shows code block with agent installation command without image version', () => {
|
||||
expect(findCodeBlock().props('code')).toContain(`helm upgrade --install ${agentName}`);
|
||||
expect(findCodeBlock().props('code')).toContain(`--namespace gitlab-agent-${agentName}`);
|
||||
expect(findCodeBlock().props('code')).toContain(`--set config.token=${agentToken}`);
|
||||
expect(findCodeBlock().props('code')).toContain(`--set config.kasAddress=${kasAddress}`);
|
||||
expect(findCodeBlock().props('code')).not.toContain(
|
||||
`--set image.tag=v${kasInstallVersion}`,
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
describe('when not on dot_com', () => {
|
||||
beforeEach(() => {
|
||||
gon.dot_com = false;
|
||||
|
||||
createWrapper();
|
||||
});
|
||||
|
||||
it('shows code block with agent installation command with image version', () => {
|
||||
expect(findCodeBlock().props('code')).toContain(`helm upgrade --install ${agentName}`);
|
||||
expect(findCodeBlock().props('code')).toContain(`--namespace gitlab-agent-${agentName}`);
|
||||
expect(findCodeBlock().props('code')).toContain(`--set config.token=${agentToken}`);
|
||||
expect(findCodeBlock().props('code')).toContain(`--set config.kasAddress=${kasAddress}`);
|
||||
expect(findCodeBlock().props('code')).toContain(`--set image.tag=v${kasInstallVersion}`);
|
||||
});
|
||||
});
|
||||
|
||||
it('truncates the namespace name if it exceeds the maximum length', () => {
|
||||
|
|
|
|||
|
|
@ -333,7 +333,7 @@ describe('tags list row', () => {
|
|||
|
||||
expect(findDeleteButton().exists()).toBe(true);
|
||||
expect(findDeleteButton().props('item').extraAttrs).toMatchObject({
|
||||
class: 'gl-text-red-500!',
|
||||
class: '!gl-text-red-500',
|
||||
'data-testid': 'single-delete-button',
|
||||
});
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
exports[`TerraformInstallation renders all the messages 1`] = `
|
||||
<div>
|
||||
<h3
|
||||
class="gl-font-lg"
|
||||
class="gl-text-lg"
|
||||
>
|
||||
Provision instructions
|
||||
</h3>
|
||||
|
|
@ -19,7 +19,7 @@ exports[`TerraformInstallation renders all the messages 1`] = `
|
|||
trackinglabel=""
|
||||
/>
|
||||
<h3
|
||||
class="gl-font-lg"
|
||||
class="gl-text-lg"
|
||||
>
|
||||
Registry setup
|
||||
</h3>
|
||||
|
|
|
|||
|
|
@ -18,10 +18,10 @@ exports[`packages_list_row renders 1`] = `
|
|||
class="gl-flex gl-font-semibold gl-items-center gl-min-h-6 gl-min-w-0 gl-text-primary"
|
||||
>
|
||||
<div
|
||||
class="gl-align-items-center gl-display-flex gl-min-w-0 gl-mr-3"
|
||||
class="gl-flex gl-items-center gl-min-w-0 gl-mr-3"
|
||||
>
|
||||
<gl-link-stub
|
||||
class="gl-min-w-0 gl-text-body"
|
||||
class="gl-min-w-0 gl-text-primary"
|
||||
data-testid="details-link"
|
||||
href="foo"
|
||||
>
|
||||
|
|
@ -36,7 +36,7 @@ exports[`packages_list_row renders 1`] = `
|
|||
class="gl-flex gl-gap-3 gl-grow gl-items-center gl-min-h-6 gl-min-w-0 gl-text-sm gl-text-subtle"
|
||||
>
|
||||
<div
|
||||
class="gl-display-flex"
|
||||
class="gl-flex"
|
||||
>
|
||||
<span>
|
||||
1.0.0
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ exports[`ConanInstallation renders all the messages 1`] = `
|
|||
trackinglabel="code_instruction"
|
||||
/>
|
||||
<h3
|
||||
class="gl-font-lg"
|
||||
class="gl-text-lg"
|
||||
>
|
||||
Registry setup
|
||||
</h3>
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ exports[`DependencyRow renders full dependency 1`] = `
|
|||
class="section-50 table-section"
|
||||
>
|
||||
<strong
|
||||
class="gl-text-body"
|
||||
class="gl-text-primary"
|
||||
>
|
||||
Ninject.Extensions.Factory
|
||||
</strong>
|
||||
|
|
@ -19,11 +19,11 @@ exports[`DependencyRow renders full dependency 1`] = `
|
|||
</span>
|
||||
</div>
|
||||
<div
|
||||
class="gl-display-flex gl-md-justify-content-end section-50 table-section"
|
||||
class="gl-flex md:gl-justify-end section-50 table-section"
|
||||
data-testid="version-pattern"
|
||||
>
|
||||
<span
|
||||
class="gl-text-body"
|
||||
class="gl-text-primary"
|
||||
>
|
||||
3.3.2
|
||||
</span>
|
||||
|
|
|
|||
|
|
@ -95,7 +95,7 @@ exports[`MavenInstallation maven renders all the messages 1`] = `
|
|||
trackinglabel="code_instruction"
|
||||
/>
|
||||
<h3
|
||||
class="gl-font-lg"
|
||||
class="gl-text-lg"
|
||||
>
|
||||
Registry setup
|
||||
</h3>
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ exports[`NpmInstallation renders all the messages 1`] = `
|
|||
trackinglabel="code_instruction"
|
||||
/>
|
||||
<h3
|
||||
class="gl-font-lg"
|
||||
class="gl-text-lg"
|
||||
>
|
||||
Registry setup
|
||||
</h3>
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue