Add latest changes from gitlab-org/gitlab@master

This commit is contained in:
GitLab Bot 2024-01-08 18:13:21 +00:00
parent 025c440ddc
commit fdeb53bebf
81 changed files with 491 additions and 381 deletions

View File

@ -225,7 +225,7 @@ gem 'asciidoctor-plantuml', '~> 0.0.16' # rubocop:todo Gemfile/MissingFeatureCat
gem 'asciidoctor-kroki', '~> 0.8.0', require: false # rubocop:todo Gemfile/MissingFeatureCategory
gem 'rouge', '~> 4.2.0' # rubocop:todo Gemfile/MissingFeatureCategory
gem 'truncato', '~> 0.7.12' # rubocop:todo Gemfile/MissingFeatureCategory
gem 'nokogiri', '~> 1.15', '>= 1.15.5' # rubocop:todo Gemfile/MissingFeatureCategory
gem 'nokogiri', '~> 1.16' # rubocop:todo Gemfile/MissingFeatureCategory
# Calendar rendering
gem 'icalendar' # rubocop:todo Gemfile/MissingFeatureCategory
@ -268,7 +268,7 @@ gem 'rainbow', '~> 3.0' # rubocop:todo Gemfile/MissingFeatureCategory
gem 'ruby-progressbar', '~> 1.10' # rubocop:todo Gemfile/MissingFeatureCategory
# Linear-time regex library for untrusted regular expressions
gem 're2', '2.5.0' # rubocop:todo Gemfile/MissingFeatureCategory
gem 're2', '2.6.0' # rubocop:todo Gemfile/MissingFeatureCategory
# Misc

View File

@ -396,17 +396,17 @@
{"name":"nio4r","version":"2.5.8","platform":"java","checksum":"b2b1800f6bf7ce4b797ca8b639ad278a99c9c904fb087a91d944f38e4bd71401"},
{"name":"nio4r","version":"2.5.8","platform":"ruby","checksum":"3becb4ad95ab8ac0a9bd2e1b16466869402be62848082bf6329ae9091f276676"},
{"name":"no_proxy_fix","version":"0.1.2","platform":"ruby","checksum":"4e9b4c31bb146de7fcf347dc1087bb13ac2039b56d50aa019e61036256abcd00"},
{"name":"nokogiri","version":"1.15.5","platform":"aarch64-linux","checksum":"6dfa1d9837ddb233e234d56e244560ab1bc545d3d1744478060e18691f44ded7"},
{"name":"nokogiri","version":"1.15.5","platform":"arm-linux","checksum":"e3ac6608c6e1714bc11ff04e29a43fedf4cac2aea1bd88256cc3b927c06f347f"},
{"name":"nokogiri","version":"1.15.5","platform":"arm64-darwin","checksum":"4d7b15d53c0397d131376a19875aa97dd1c8b404c2c03bd2171f9b77e9592d40"},
{"name":"nokogiri","version":"1.15.5","platform":"java","checksum":"5f87e71aaeb4f7479b94698737a0aacea77836b4805c7433b655e9565bd56cfe"},
{"name":"nokogiri","version":"1.15.5","platform":"ruby","checksum":"22448ca35dbcbdcec60dbe25ccf452b685a5436c28f21b2fec2e20917aba9100"},
{"name":"nokogiri","version":"1.15.5","platform":"x64-mingw-ucrt","checksum":"7612be800909ae51e0a7cfbe1f768757857a9ff0339686814ca67d9bae271ca2"},
{"name":"nokogiri","version":"1.15.5","platform":"x64-mingw32","checksum":"28fd78d98e12005fe017db5ceccb74b2497f30582e6e26a3344200625fe46aae"},
{"name":"nokogiri","version":"1.15.5","platform":"x86-linux","checksum":"0d1b564d7f148a6766380966bb48b23afa72c72c992c69c71d21acd4a7f5c0e4"},
{"name":"nokogiri","version":"1.15.5","platform":"x86-mingw32","checksum":"d27dbf44c19b83e570e65b660a8a921441d1e8b6063ab1b985b516f78e0a2854"},
{"name":"nokogiri","version":"1.15.5","platform":"x86_64-darwin","checksum":"10bafa54935f68aebd23235cb0fc7dfb8f6f5e52131379484771247eb3a0cc70"},
{"name":"nokogiri","version":"1.15.5","platform":"x86_64-linux","checksum":"c5d9453cc155dc15f08ac699cc1293fd994ec6cfacec48e67653aa95ee946adf"},
{"name":"nokogiri","version":"1.16.0","platform":"aarch64-linux","checksum":"8cd981dfd4bea4f519ceebb885cf3b422b71c059d841c039d327e73b19247f53"},
{"name":"nokogiri","version":"1.16.0","platform":"arm-linux","checksum":"c68d861155c40777eee3eb4efbb375d665c8c889cebd5cd1ba32f30a8aac6c21"},
{"name":"nokogiri","version":"1.16.0","platform":"arm64-darwin","checksum":"10c08f246085709790ea628b5fa031cf23dadd843e173711b335ba6287b59d0a"},
{"name":"nokogiri","version":"1.16.0","platform":"java","checksum":"f76f2dc353993862d07eccfc5561e373e8058d62e265bae9bcf4f4793c35c9e2"},
{"name":"nokogiri","version":"1.16.0","platform":"ruby","checksum":"341388184e975d091e6e38ce3f3b3388bfb7e4ac3d790efd8e39124844040bd1"},
{"name":"nokogiri","version":"1.16.0","platform":"x64-mingw-ucrt","checksum":"5c59792f7f5f8a76e17a87b89b9057544853a6f713b692a75b7f8895a854b74f"},
{"name":"nokogiri","version":"1.16.0","platform":"x64-mingw32","checksum":"286950458a58bdf09bb3a800ac16f0aa361aa9a6c9a63bcd71e98e3c34d314a8"},
{"name":"nokogiri","version":"1.16.0","platform":"x86-linux","checksum":"159107da8a35f1fc22ee5b78d70da9bda4098a3771a29beac3f727cafd5041cb"},
{"name":"nokogiri","version":"1.16.0","platform":"x86-mingw32","checksum":"27d3d96f53b3fa1da9c4d9d69fffadc34abf7350a8e22be61a7483f15f065438"},
{"name":"nokogiri","version":"1.16.0","platform":"x86_64-darwin","checksum":"237aa89b9ef6b8e014f197167677926ebc4bdb9cafb2b101399d8001fda4fa43"},
{"name":"nokogiri","version":"1.16.0","platform":"x86_64-linux","checksum":"6f55093bb47e75d412138f4b9462f960d3aad96cb6b43dbe9a3de62c2d31a742"},
{"name":"notiffany","version":"0.1.3","platform":"ruby","checksum":"d37669605b7f8dcb04e004e6373e2a780b98c776f8eb503ac9578557d7808738"},
{"name":"numerizer","version":"0.2.0","platform":"ruby","checksum":"e58076d5ee5370417b7e52d9cb25836d62acd1b8d9a194c308707986c1705d7b"},
{"name":"oauth","version":"0.5.6","platform":"ruby","checksum":"4085fe28e0c5e2434135e00a6555294fd2a4ff96a98d1bdecdcd619fc6368dff"},
@ -499,16 +499,16 @@
{"name":"rbtrace","version":"0.4.14","platform":"ruby","checksum":"162bbf89cecabfc4f09c869b655f6f3a679c4870ebb7cbdcadf7393a81cc1769"},
{"name":"rbtree","version":"0.4.6","platform":"ruby","checksum":"14eea4469b24fd2472542e5f3eb105d6344c8ccf36f0b56d55fdcfeb4e0f10fc"},
{"name":"rchardet","version":"1.8.0","platform":"ruby","checksum":"693acd5253d5ade81a51940697955f6dd4bb2f0d245bda76a8e23deec70a52c7"},
{"name":"re2","version":"2.5.0","platform":"aarch64-linux","checksum":"b370a5f08b011f86bd41e4934c21f66389a34ac9949b754b321986c560a2ae8d"},
{"name":"re2","version":"2.5.0","platform":"arm-linux","checksum":"91f73d83d638413f515a24e5a98e79c7bd40f1f059b13c857e751185f8b98b43"},
{"name":"re2","version":"2.5.0","platform":"arm64-darwin","checksum":"4b20c4539a12787102b22012e678968af23f87e35f88843744835bd13ac9f6bc"},
{"name":"re2","version":"2.5.0","platform":"ruby","checksum":"42bbf4292ef80aef54070d0904d3a7ccbb5f907dcf9006914a8b2ce6ea8b0646"},
{"name":"re2","version":"2.5.0","platform":"x64-mingw-ucrt","checksum":"2d2a3c98e0dedebd1763f660773a776cb7d0a15d43428d68a7ff0f160d0c0d8f"},
{"name":"re2","version":"2.5.0","platform":"x64-mingw32","checksum":"3ccd08b73995d461646ca1515535c8715756cc674df75394d072e056c87c380f"},
{"name":"re2","version":"2.5.0","platform":"x86-linux","checksum":"ec165b08ee161c339582fb73ccd412f44b627ced1151cc8400c566b5bc2e8fbd"},
{"name":"re2","version":"2.5.0","platform":"x86-mingw32","checksum":"39de555fb04b3ce0d37ea961525cab7a77e7015f0fc0692b30e4950d4d6314f8"},
{"name":"re2","version":"2.5.0","platform":"x86_64-darwin","checksum":"1c926ee5f7ed7649f7d84d677f499a1c04542a4bf007a5765f9f33906753e2d3"},
{"name":"re2","version":"2.5.0","platform":"x86_64-linux","checksum":"fbe9c0e939dceb4117fd9da5d35f69de57d96ef077edfb14e2661c877f4290ef"},
{"name":"re2","version":"2.6.0","platform":"aarch64-linux","checksum":"1cb558bdeabe01bb935988f49969613a83681014392c81ed10caa62351fb91d6"},
{"name":"re2","version":"2.6.0","platform":"arm-linux","checksum":"b6007820d8a7a723d9549e44118a696dd289d8822a324c52d3663d3d1e9479f6"},
{"name":"re2","version":"2.6.0","platform":"arm64-darwin","checksum":"ba6fda7a29cd16179d5401c1b4917ba204c92e5ca9d25df80d840ed76fca439f"},
{"name":"re2","version":"2.6.0","platform":"ruby","checksum":"78e13aa6a9ee962b76eb2aa08b6e3246652a1ce3d7b097eb114b13ff4606486a"},
{"name":"re2","version":"2.6.0","platform":"x64-mingw-ucrt","checksum":"8332068cbb0ec170938bd27c518a298e9d78be53d2e7ea004f4994290559c330"},
{"name":"re2","version":"2.6.0","platform":"x64-mingw32","checksum":"e9c114c59332fa782e68d6695d2f511eb5eb973e535c55a903de4470501b4cf0"},
{"name":"re2","version":"2.6.0","platform":"x86-linux","checksum":"0177a4d83268cd125e15acef96d6bde625ab4bb892d04999733104e39155b270"},
{"name":"re2","version":"2.6.0","platform":"x86-mingw32","checksum":"5b3f1413edc3c0c54df27f6b27f130ed3d64a124df93fdf676f078dd6faf2bfe"},
{"name":"re2","version":"2.6.0","platform":"x86_64-darwin","checksum":"0f2463816345fd5b6a1e552711c2a3d5f86275e3f72dcfee0d400c89e14842c2"},
{"name":"re2","version":"2.6.0","platform":"x86_64-linux","checksum":"eabc7877470c5dd08f4ecd12040f6c44400403a9252dddda024a3092f2af1604"},
{"name":"recaptcha","version":"5.12.3","platform":"ruby","checksum":"37d1894add9e70a54d0c6c7f0ecbeedffbfa7d075acfbd4c509818dfdebdb7ee"},
{"name":"recursive-open-struct","version":"1.1.3","platform":"ruby","checksum":"a3538a72552fcebcd0ada657bdff313641a4a5fbc482c08cfb9a65acb1c9de5a"},
{"name":"redcarpet","version":"3.6.0","platform":"ruby","checksum":"8ad1889c0355ff4c47174af14edd06d62f45a326da1da6e8a121d59bdcd2e9e9"},

View File

@ -1108,7 +1108,7 @@ GEM
netrc (0.11.0)
nio4r (2.5.8)
no_proxy_fix (0.1.2)
nokogiri (1.15.5)
nokogiri (1.16.0)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
notiffany (0.1.3)
@ -1349,7 +1349,7 @@ GEM
optimist (>= 3.0.0)
rbtree (0.4.6)
rchardet (1.8.0)
re2 (2.5.0)
re2 (2.6.0)
mini_portile2 (~> 2.8.5)
recaptcha (5.12.3)
json
@ -1986,7 +1986,7 @@ DEPENDENCIES
net-ldap (~> 0.17.1)
net-ntp
net-protocol (~> 0.1.3)
nokogiri (~> 1.15, >= 1.15.5)
nokogiri (~> 1.16)
oauth2 (~> 2.0)
octokit (~> 6.0)
ohai (~> 18.1)
@ -2039,7 +2039,7 @@ DEPENDENCIES
rails-i18n (~> 7.0)
rainbow (~> 3.0)
rbtrace (~> 0.4)
re2 (= 2.5.0)
re2 (= 2.6.0)
recaptcha (~> 5.12)
redis (~> 4.8.0)
redis-actionpack (~> 5.4.0)

View File

@ -1,6 +1,6 @@
<script>
import { isEmpty } from 'lodash';
import { GlBadge, GlButton } from '@gitlab/ui';
import { GlBadge, GlButton, GlTooltipDirective } from '@gitlab/ui';
import Pagination from '~/vue_shared/components/incubation/pagination.vue';
import MetadataItem from '~/vue_shared/components/registry/metadata_item.vue';
import TitleArea from '~/vue_shared/components/registry/title_area.vue';
@ -10,6 +10,7 @@ import * as i18n from '../translations';
import { BASE_SORT_FIELDS, MODEL_ENTITIES } from '../constants';
import SearchBar from '../components/search_bar.vue';
import ModelRow from '../components/model_row.vue';
import ActionsDropdown from '../components/actions_dropdown.vue';
export default {
name: 'IndexMlModels',
@ -22,6 +23,15 @@ export default {
GlBadge,
EmptyState,
GlButton,
ActionsDropdown,
},
directives: {
GlTooltip: GlTooltipDirective,
},
provide() {
return {
mlflowTrackingUrl: this.mlflowTrackingUrl,
};
},
props: {
models: {
@ -46,6 +56,11 @@ export default {
required: false,
default: false,
},
mlflowTrackingUrl: {
type: String,
required: false,
default: '',
},
},
computed: {
hasModels() {
@ -77,6 +92,8 @@ export default {
<gl-button v-if="canWriteModelRegistry" :href="createModelPath">{{
$options.i18n.CREATE_MODEL_LABEL
}}</gl-button>
<actions-dropdown />
</template>
</title-area>
<template v-if="hasModels">

View File

@ -0,0 +1,34 @@
<script>
import { GlDisclosureDropdown, GlDisclosureDropdownItem } from '@gitlab/ui';
import { s__ } from '~/locale';
export default {
components: {
GlDisclosureDropdownItem,
GlDisclosureDropdown,
},
inject: ['mlflowTrackingUrl'],
computed: {
copyIdItem() {
return {
text: s__('MlModelRegistry|Copy MLflow tracking URL'),
action: () => {
this.$toast.show(s__('MlModelRegistry|Copied MLflow tracking URL to clipboard'));
},
};
},
},
};
</script>
<template>
<gl-disclosure-dropdown
placement="right"
category="tertiary"
:aria-label="__('More actions')"
icon="ellipsis_v"
no-caret
>
<gl-disclosure-dropdown-item :item="copyIdItem" :data-clipboard-text="mlflowTrackingUrl" />
</gl-disclosure-dropdown>
</template>

View File

@ -22,7 +22,8 @@ $super-sidebar-transition-hint-duration: $super-sidebar-transition-duration / 4;
.super-sidebar {
--super-sidebar-bg: #{$gray-10};
--super-sidebar-border-color: #{$t-gray-a-08};
--super-sidebar-primary: #{$blue-500};
--super-sidebar-context-header-color: inherit;
--super-sidebar-active-indicator-color: #{$blue-500};
--super-sidebar-notification-dot: #{$blue-500};
--super-sidebar-user-bar-bg: #{$t-gray-a-04};
@ -42,6 +43,8 @@ $super-sidebar-transition-hint-duration: $super-sidebar-transition-duration / 4;
--super-sidebar-nav-item-current-bg: #{$t-gray-a-08};
--super-sidebar-nav-item-icon-color: #{$gray-500};
--super-sidebar-hr-mix-blend-mode: normal;
.gl-dark & {
--super-sidebar-border-color: #{$t-white-a-08};
--super-sidebar-user-bar-bg: #{$t-white-a-04};
@ -58,7 +61,148 @@ $super-sidebar-transition-hint-duration: $super-sidebar-transition-duration / 4;
--super-sidebar-nav-item-current-bg: #{$t-white-a-08};
--super-sidebar-nav-item-icon-color: #{$gray-600};
}
}
@mixin super-sidebar-theme(
$background,
$user-bar-background,
$user-bar-button-color,
$user-bar-button-icon-color,
$context-header,
$active-indicator,
$notification-dot,
) {
.super-sidebar {
--super-sidebar-bg: #{$background};
--super-sidebar-user-bar-bg: #{$user-bar-background};
--super-sidebar-context-header-color: #{$context-header};
--super-sidebar-active-indicator-color: #{$active-indicator};
--super-sidebar-notification-dot: #{$notification-dot};
--super-sidebar-user-bar-button-bg: #{$t-white-a-16};
--super-sidebar-user-bar-button-color: #{$user-bar-button-color};
--super-sidebar-user-bar-button-border-color: #{$t-white-a-16};
--super-sidebar-user-bar-button-hover-bg: #{$t-white-a-24};
--super-sidebar-user-bar-button-hover-color: #{$white};
--super-sidebar-user-bar-button-active-bg: #{$t-white-a-36};
--super-sidebar-user-bar-button-icon-color: #{$user-bar-button-icon-color};
--super-sidebar-user-bar-button-icon-hover-color: #{$user-bar-button-icon-color};
--super-sidebar-user-bar-button-icon-mix-blend-mode: screen;
--super-sidebar-hr-mix-blend-mode: multiply;
}
}
.ui-blue {
@include super-sidebar-theme(
$background: $theme-blue-10,
$user-bar-background: $theme-blue-900,
$user-bar-button-color: $theme-blue-50,
$user-bar-button-icon-color: $theme-blue-100,
$context-header: $theme-blue-900,
$active-indicator: $theme-blue-900,
$notification-dot: $theme-blue-900,
);
}
.ui-gray {
@include super-sidebar-theme(
$background: $gray-10,
$user-bar-background: $gray-900,
$user-bar-button-color: $gray-50,
$user-bar-button-icon-color: $gray-100,
$context-header: $gray-900,
$active-indicator: $gray-900,
$notification-dot: $gray-900,
);
}
.ui-green {
@include super-sidebar-theme(
$background: $theme-green-10,
$user-bar-background: $theme-green-900,
$user-bar-button-color: $theme-green-50,
$user-bar-button-icon-color: $theme-green-100,
$context-header: $theme-green-900,
$active-indicator: $theme-green-900,
$notification-dot: $theme-green-900,
);
}
.ui-indigo {
@include super-sidebar-theme(
$background: $theme-indigo-10,
$user-bar-background: $theme-indigo-900,
$user-bar-button-color: $theme-indigo-50,
$user-bar-button-icon-color: $theme-indigo-100,
$context-header: $theme-indigo-900,
$active-indicator: $theme-indigo-900,
$notification-dot: $theme-indigo-900,
);
}
.ui-light-blue {
@include super-sidebar-theme(
$background: $theme-light-blue-10,
$user-bar-background: $theme-light-blue-700,
$user-bar-button-color: $theme-light-blue-50,
$user-bar-button-icon-color: $theme-light-blue-100,
$context-header: $theme-light-blue-900,
$active-indicator: $theme-light-blue-900,
$notification-dot: $theme-light-blue-900,
);
}
.ui-light-green {
@include super-sidebar-theme(
$background: $theme-green-10,
$user-bar-background: $theme-green-700,
$user-bar-button-color: $theme-green-50,
$user-bar-button-icon-color: $theme-green-100,
$context-header: $theme-green-900,
$active-indicator: $theme-green-900,
$notification-dot: $theme-green-900,
);
}
.ui-light-indigo {
@include super-sidebar-theme(
$background: $theme-indigo-10,
$user-bar-background: $theme-indigo-700,
$user-bar-button-color: $theme-indigo-50,
$user-bar-button-icon-color: $theme-indigo-100,
$context-header: $theme-indigo-900,
$active-indicator: $theme-indigo-900,
$notification-dot: $theme-indigo-900,
);
}
.ui-light-red {
@include super-sidebar-theme(
$background: $theme-light-red-10,
$user-bar-background: $theme-light-red-700,
$user-bar-button-color: $theme-light-red-50,
$user-bar-button-icon-color: $theme-light-red-100,
$context-header: $theme-light-red-900,
$active-indicator: $theme-light-red-900,
$notification-dot: $theme-light-red-900,
);
}
.ui-red {
@include super-sidebar-theme(
$background: $theme-red-10,
$user-bar-background: $theme-red-900,
$user-bar-button-color: $theme-red-50,
$user-bar-button-icon-color: $theme-red-100,
$context-header: $theme-red-900,
$active-indicator: $theme-red-900,
$notification-dot: $theme-red-900,
);
}
.super-sidebar {
display: flex;
flex-direction: column;
position: fixed;
@ -167,8 +311,12 @@ $super-sidebar-transition-hint-duration: $super-sidebar-transition-duration / 4;
color: var(--super-sidebar-nav-item-icon-color);
}
hr {
mix-blend-mode: var(--super-sidebar-hr-mix-blend-mode);
}
.active-indicator {
background-color: var(--super-sidebar-primary);
background-color: var(--super-sidebar-active-indicator-color);
}
.btn-with-notification {
@ -200,6 +348,10 @@ $super-sidebar-transition-hint-duration: $super-sidebar-transition-duration / 4;
}
}
.super-sidebar-context-header {
color: var(--super-sidebar-context-header-color);
}
.super-sidebar-overlay {
display: none;
}

View File

@ -1,7 +1,6 @@
@import './themes/dark';
@import '@gitlab/ui/dist/tokens/css/tokens.dark';
@import 'page_bundles/mixins_and_variables_and_functions';
@import './themes/theme_helper';
:root {
color-scheme: dark;

View File

@ -1,14 +0,0 @@
@import './theme_helper';
:root {
&.ui-blue {
.page-with-super-sidebar {
@include gitlab-theme-super-sidebar(
$theme-blue-50,
$theme-blue-100,
$theme-blue-900,
$theme-blue-900,
);
}
}
}

View File

@ -1,14 +0,0 @@
@import './theme_helper';
:root {
&.ui-gray {
.page-with-super-sidebar {
@include gitlab-theme-super-sidebar(
$gray-50,
$gray-100,
$gray-900,
$gray-900,
);
}
}
}

View File

@ -1,14 +0,0 @@
@import './theme_helper';
:root {
&.ui-green {
.page-with-super-sidebar {
@include gitlab-theme-super-sidebar(
$theme-green-50,
$theme-green-100,
$theme-green-900,
$theme-green-900,
);
}
}
}

View File

@ -1,36 +0,0 @@
@import '../page_bundles/mixins_and_variables_and_functions';
/**
* Styles the GitLab application with a specific color theme
*/
@mixin gitlab-theme-super-sidebar(
$theme-color-lightest,
$theme-color-light,
$theme-color,
$theme-color-darkest,
) {
.super-sidebar {
--super-sidebar-bg: #{mix(white, $theme-color-lightest, 50%)};
--super-sidebar-user-bar-bg: #{$theme-color};
--super-sidebar-primary: #{$theme-color};
--super-sidebar-notification-dot: #{$theme-color-darkest};
--super-sidebar-user-bar-button-bg: #{$t-white-a-16};
--super-sidebar-user-bar-button-color: #{$theme-color-lightest};
--super-sidebar-user-bar-button-border-color: #{$t-white-a-16};
--super-sidebar-user-bar-button-hover-bg: #{$t-white-a-24};
--super-sidebar-user-bar-button-hover-color: #{$white};
--super-sidebar-user-bar-button-active-bg: #{$t-white-a-36};
--super-sidebar-user-bar-button-icon-color: #{$theme-color-light};
--super-sidebar-user-bar-button-icon-hover-color: #{$theme-color-light};
--super-sidebar-user-bar-button-icon-mix-blend-mode: screen;
hr {
mix-blend-mode: multiply;
}
.super-sidebar-context-header {
color: var(--super-sidebar-primary);
}
}
}

View File

@ -1,14 +0,0 @@
@import './theme_helper';
:root {
&.ui-indigo {
.page-with-super-sidebar {
@include gitlab-theme-super-sidebar(
$theme-indigo-50,
$theme-indigo-100,
$theme-indigo-900,
$theme-indigo-900,
);
}
}
}

View File

@ -1,14 +0,0 @@
@import './theme_helper';
:root {
&.ui-light-blue {
.page-with-super-sidebar {
@include gitlab-theme-super-sidebar(
$theme-light-blue-50,
$theme-light-blue-100,
$theme-light-blue-700,
$theme-light-blue-900,
);
}
}
}

View File

@ -1,2 +0,0 @@
// "Light gray" is the default unthemed state of the sidebar.
// Nothing to do here.

View File

@ -1,14 +0,0 @@
@import './theme_helper';
:root {
&.ui-light-green {
.page-with-super-sidebar {
@include gitlab-theme-super-sidebar(
$theme-green-50,
$theme-green-100,
$theme-green-700,
$theme-green-900,
);
}
}
}

View File

@ -1,14 +0,0 @@
@import './theme_helper';
:root {
&.ui-light-indigo {
.page-with-super-sidebar {
@include gitlab-theme-super-sidebar(
$theme-indigo-50,
$theme-indigo-100,
$theme-indigo-700,
$theme-indigo-900,
);
}
}
}

View File

@ -1,14 +0,0 @@
@import './theme_helper';
:root {
&.ui-light-red {
.page-with-super-sidebar {
@include gitlab-theme-super-sidebar(
$theme-light-red-50,
$theme-light-red-100,
$theme-light-red-700,
$theme-light-red-900,
);
}
}
}

View File

@ -1,14 +0,0 @@
@import './theme_helper';
:root {
&.ui-red {
.page-with-super-sidebar {
@include gitlab-theme-super-sidebar(
$theme-red-50,
$theme-red-100,
$theme-red-900,
$theme-red-900,
);
}
}
}

View File

@ -4,6 +4,7 @@ module Projects
module Ml
class ModelsIndexComponent < ViewComponent::Base
include Rails.application.routes.url_helpers
include API::Helpers::RelatedResourcesHelpers
attr_reader :paginator, :model_count, :project, :user
@ -22,7 +23,8 @@ module Projects
page_info: page_info_view_model,
model_count: model_count,
create_model_path: create_model_path,
can_write_model_registry: user.can?(:write_model_registry, project)
can_write_model_registry: user.can?(:write_model_registry, project),
mlflow_tracking_url: mlflow_tracking_url
}
Gitlab::Json.generate(vm.deep_transform_keys { |k| k.to_s.camelize(:lower) })
@ -53,6 +55,14 @@ module Projects
end_cursor: paginator.cursor_for_next_page
}
end
def mlflow_tracking_url
path = api_v4_projects_ml_mlflow_api_2_0_mlflow_registered_models_create_path(id: project.id)
path = path.delete_suffix('registered-models/create')
expose_url(path)
end
end
end
end

View File

@ -75,10 +75,6 @@ module PreferencesHelper
user_application_theme == 'gl-dark'
end
def user_application_theme_css_filename
@user_application_theme_css_filename ||= Gitlab::Themes.for_user(current_user).css_filename
end
def user_theme_primary_color
Gitlab::Themes.for_user(current_user).primary_color
end

View File

@ -15,6 +15,9 @@ module Integrations
field :token,
type: :password,
title: -> { _('Campfire token') },
description: -> do
_('API authentication token from Campfire. To get the token, sign in to Campfire and select **My info**.')
end,
help: -> { s_('CampfireService|API authentication token from Campfire.') },
non_empty_password_title: -> { s_('ProjectService|Enter new token') },
non_empty_password_help: -> { s_('ProjectService|Leave blank to use your current token.') },
@ -23,18 +26,22 @@ module Integrations
field :subdomain,
title: -> { _('Campfire subdomain (optional)') },
description: -> do
_("`.campfirenow.com` subdomain when you're signed in.")
end,
placeholder: '',
exposes_secrets: true,
help: -> do
format(ERB::Util.html_escape(
s_('CampfireService|The %{code_open}.campfirenow.com%{code_close} subdomain.')
s_('CampfireService|%{code_open}.campfirenow.com%{code_close} subdomain.')
), code_open: '<code>'.html_safe, code_close: '</code>'.html_safe)
end
field :room,
title: -> { _('Campfire room ID (optional)') },
description: -> { _("ID portion of the Campfire room URL.") },
placeholder: '123456',
help: -> { s_('CampfireService|From the end of the room URL.') }
help: -> { s_('CampfireService|ID portion of the Campfire room URL.') }
def self.title
'Campfire'

View File

@ -19,7 +19,6 @@
= yield :prefetch_asset_tags
- diffs_colors = user_diffs_colors
= stylesheet_link_tag "themes/#{user_application_theme_css_filename}" if user_application_theme_css_filename
= render 'layouts/diffs_colors_css', diffs_colors if diffs_colors.present? || request.path == profile_preferences_path
- if user_application_theme == 'gl-dark'

View File

@ -9,9 +9,6 @@
- data_attributes = { themes: @themes, integration_views: integration_views.to_json, user_fields: user_fields, body_classes: Gitlab::Themes.body_classes, profile_preferences_path: profile_preferences_path }
- @force_desktop_expanded_sidebar = true
- Gitlab::Themes.each do |theme|
= stylesheet_link_tag "themes/#{theme.css_filename}" if theme.css_filename
= gitlab_ui_form_for @user, url: profile_preferences_path, remote: true, method: :put, html: { id: "profile-preferences-form" } do |f|
= render_if_exists 'profiles/preferences/code_suggestions_settings_self_assignment'
.settings-section.js-preferences-form.js-search-settings-section.application-theme#navigation-theme

View File

@ -0,0 +1,17 @@
# frozen_string_literal: true
class AddRootNamespaceIdToCiFinishedBuilds < ClickHouse::Migration
def up
execute <<~SQL
ALTER TABLE ci_finished_builds
ADD COLUMN IF NOT EXISTS root_namespace_id UInt64 DEFAULT 0
SQL
end
def down
execute <<~SQL
ALTER TABLE ci_finished_builds
DROP COLUMN IF EXISTS root_namespace_id
SQL
end
end

View File

@ -6,4 +6,4 @@ introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/139515
milestone: '16.8'
queued_migration_version: 20231218092401
finalize_after: '2023-12-23'
finalized_by: # version of the migration that finalized this BBM
finalized_by: 20240104101601

View File

@ -0,0 +1,23 @@
# frozen_string_literal: true
class FinalizeBackfillPartitionIdCiPipelineChatData < Gitlab::Database::Migration[2.2]
milestone '16.8'
MIGRATION = 'BackfillPartitionIdCiPipelineChatData'
disable_ddl_transaction!
restrict_gitlab_migration gitlab_schema: :gitlab_ci
def up
ensure_batched_background_migration_is_finished(
job_class_name: MIGRATION,
table_name: :ci_pipeline_chat_data,
column_name: :id,
job_arguments: [],
finalize: true
)
end
def down
# no-op
end
end

View File

@ -0,0 +1 @@
729cc1d2d73610b8e1a8efec30635dded7c85ece9afdc40e24ed60ddd82c4068

View File

@ -1,7 +1,8 @@
---
info: For assistance with this tutorial, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments-to-other-projects-and-subjects.
stage: none
group: Tutorials
description: Administration overview.
info: For assistance with this tutorial, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments-to-other-projects-and-subjects.
---
# Get started administering GitLab **(FREE SELF)**

View File

@ -28,7 +28,7 @@ run as a process group leader (for example, using `chpst -P`). If using a Linux
## Configuring the limits
Sidekiq memory limits are controlled using environment variables.
Sidekiq memory limits are controlled using [environment variables](https://docs.gitlab.com/omnibus/settings/environment-variables.html#setting-custom-environment-variables)
- `SIDEKIQ_MEMORY_KILLER_MAX_RSS` (KB): defines the Sidekiq process soft limit for allowed RSS.
If the Sidekiq process RSS (expressed in kilobytes) exceeds `SIDEKIQ_MEMORY_KILLER_MAX_RSS`,

View File

@ -1,6 +1,7 @@
---
stage: Manage
group: Import and Integrate
description: Programmatic interaction with GitLab.
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
---

View File

@ -303,9 +303,9 @@ Parameters:
| Parameter | Type | Required | Description |
|---------------|---------|----------|---------------------------------------------------------------------------------------------|
| `token` | string | true | Campfire API token. To find it, sign in to Campfire and select **My info**. |
| `subdomain` | string | false | Campfire subdomain. Text between `https://` and `.campfirenow.com` when you're logged in. |
| `room` | string | false | Campfire room. The last part of the URL when you're in a room. |
| `token` | string | true | API authentication token from Campfire. To get the token, sign in to Campfire and select **My info**. |
| `subdomain` | string | false | `.campfirenow.com` subdomain when you're signed in. |
| `room` | string | false | ID portion of the Campfire room URL. |
### Disable Campfire

View File

@ -1,6 +1,7 @@
---
stage: Govern
group: Authentication
description: Third-party authorization to GitLab.
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
---

View File

@ -1,6 +1,7 @@
---
stage: Manage
group: Import and Integrate
description: Programmatic interaction with GitLab.
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
---

View File

@ -8,7 +8,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
In GitLab, there is an API endpoint available to work with GitLab CI/CD YAML. For more
information on CI/CD pipeline configuration in GitLab, see the
[configuration reference documentation](../../ci/yaml/index.md).
[CI/CD YAML syntax reference](../../ci/yaml/index.md).
## List GitLab CI YAML templates

View File

@ -143,7 +143,7 @@ configuration into more independent [parent-child pipelines](../ci/pipelines/pip
Pipeline configuration warnings are shown when you:
- [Validate configuration with the CI Lint tool](yaml/index.md).
- [Validate configuration with the CI Lint tool](lint.md).
- [Manually run a pipeline](pipelines/index.md#run-a-pipeline-manually).
### `Job may allow multiple pipelines to run for a single action` warning

View File

@ -8,7 +8,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
Environments describe where code is deployed.
Each time [GitLab CI/CD](../yaml/index.md) deploys a version of code to an environment,
Each time [GitLab CI/CD](../index.md) deploys a version of code to an environment,
a deployment is created.
GitLab:
@ -1039,7 +1039,7 @@ deploy:
Since `$ENVIRONMENT` variable does not exist in the pipeline, GitLab tries to
create an environment with a name `production/`, which is invalid in
[the environment name constraint](../yaml/index.md).
[the environment name constraint](../yaml/index.md#environmentname).
To fix this, use one of the following solutions:

View File

@ -144,7 +144,7 @@ new browser window interacting with your app as you specified.
Which brings us to the exciting part: how do we run this in GitLab CI/CD? There are two things we
need to do for this:
1. Set up [CI/CD jobs](../../yaml/index.md) that actually have a browser available.
1. Set up [CI/CD jobs](../../jobs/index.md) that actually have a browser available.
1. Update our WebdriverIO configuration to use those browsers to visit the review apps.
For the scope of this article, we've defined an additional [CI/CD stage](../../yaml/index.md#stages)

View File

@ -37,8 +37,8 @@ In the `.gitlab-ci.yml` file, you can define:
**Get started:**
- [Create your first `.gitlab-ci.yml` file](quick_start/index.md).
- [View all the possible keywords that you can use in the `.gitlab-ci.yml` file](yaml/index.md).
the configuration.
- View all the possible keywords that you can use in the `.gitlab-ci.yml` file in
the [CI/CD YAML syntax reference](../index.md).
- Use the [pipeline editor](pipeline_editor/index.md) to edit or [visualize](pipeline_editor/index.md#visualize-ci-configuration)
your CI/CD configuration.

View File

@ -134,7 +134,7 @@ jobs. Select to expand them.
![Grouped pipelines](img/pipeline_grouped_jobs_v14_2.png)
To create a group of jobs, in the [CI/CD pipeline configuration file](../yaml/index.md),
To create a group of jobs, in the [`.gitlab-ci.yml` file](../index.md#the-gitlab-ciyml-file),
separate each job name with a number and one of the following:
- A slash (`/`), for example, `slash-test 1/3`, `slash-test 2/3`, `slash-test 3/3`.

View File

@ -14,7 +14,7 @@ exported from the Bamboo UI or stored in Spec repositories.
If you are new to GitLab CI/CD, use the [Getting started guide](../index.md) to learn
the basic concepts and how to create your first [`.gitlab-ci.yml` file](../quick_start/index.md).
If you already have some experience using GitLab CI/CD, you can review [keywords reference documentation](../yaml/index.md)
If you already have some experience using GitLab CI/CD, you can review [CI/CD YAML syntax reference](../yaml/index.md)
to see the full list of available keywords.
You can also take a look at [Auto DevOps](../../topics/autodevops/index.md), which automatically
@ -77,7 +77,7 @@ Bamboo Specs can also be [repository-stored](https://confluence.atlassian.com/ba
#### `.gitlab-ci.yml` configuration file
GitLab, by default, uses a [`.gitlab-ci.yml` file](../yaml/index.md) for CI/CD configuration.
GitLab, by default, uses a [`.gitlab-ci.yml` file](../index.md#the-gitlab-ciyml-file) for CI/CD configuration.
Alternatively, [Auto DevOps](../../topics/autodevops/index.md) can automatically build,
test, and deploy your application without a manually configured `.gitlab-ci.yml` file.
@ -754,7 +754,7 @@ Before doing any migration work, you should first:
- Follow tutorials to create [your first GitLab pipeline](../quick_start/index.md)
and [more complex pipelines](../quick_start/tutorial.md) that build, test, and deploy
a static site.
- Review the [`.gitlab-ci.yml` keyword reference](../yaml/index.md).
- Review the [CI/CD YAML syntax reference](../yaml/index.md).
1. Set up and configure GitLab.
1. Test your GitLab instance.
- Ensure [runners](../runners/index.md) are available, either by using shared GitLab.com runners or installing new runners.

View File

@ -672,7 +672,7 @@ Before doing any migration work, you should first:
1. Get familiar with GitLab.
- Read about the [key GitLab CI/CD features](../../ci/index.md).
- Follow tutorials to create [your first GitLab pipeline](../quick_start/index.md) and [more complex pipelines](../quick_start/tutorial.md) that build, test, and deploys a static site.
- Review the [`.gitlab-ci.yml` keyword reference](../yaml/index.md).
- Review the [CI/CD YAML syntax reference](../yaml/index.md).
1. Set up and configure GitLab.
1. Test your GitLab instance.
- Ensure [runners](../runners/index.md) are available, either by using shared GitLab.com runners or installing new runners.

View File

@ -699,7 +699,7 @@ Before doing any migration work, you should first:
1. Get familiar with GitLab.
- Read about the [key GitLab CI/CD features](../../ci/index.md).
- Follow tutorials to create [your first GitLab pipeline](../quick_start/index.md) and [more complex pipelines](../quick_start/tutorial.md) that build, test, and deploys a static site.
- Review the [`.gitlab-ci.yml` keyword reference](../yaml/index.md).
- Review the [CI/CD YAML syntax reference](../yaml/index.md).
1. Set up and configure GitLab.
1. Test your GitLab instance.
- Ensure [runners](../runners/index.md) are available, either by using shared GitLab.com runners or installing new runners.

View File

@ -67,7 +67,7 @@ Pipelines and their component jobs and stages are defined in the CI/CD pipeline
- [Jobs](../jobs/index.md) are the basic configuration component.
- Stages are defined by using the [`stages`](../yaml/index.md#stages) keyword.
For a list of configuration options in the CI pipeline file, see the [GitLab CI/CD Pipeline Configuration Reference](../yaml/index.md).
For a list of configuration options in the CI pipeline file, see the [CI/CD YAML syntax reference](../yaml/index.md).
You can also configure specific aspects of your pipelines through the GitLab UI. For example:

View File

@ -58,7 +58,7 @@ The three types of merge request pipelines are:
To use merge request pipelines:
- Your project's [CI/CD configuration file](../yaml/index.md) must be configured with
- Your project's [`.gitlab-ci.yml` file](../index.md#the-gitlab-ciyml-file) must be configured with
jobs that run in merge request pipelines. To do this, you can use:
- [`rules`](#use-rules-to-add-jobs).
- [`only/except`](#use-only-to-add-jobs).
@ -160,7 +160,7 @@ GitLab shows a warning that you must accept before the pipeline runs. Otherwise,
Prerequisites:
- The parent project's [CI/CD configuration file](../yaml/index.md) must be configured to
- The parent project's [`.gitlab-ci.yml` file](../index.md#the-gitlab-ciyml-file) must be configured to
[run jobs in merge request pipelines](#prerequisites).
- You must be a member of the parent project with [permissions to run CI/CD pipelines](../../user/permissions.md#gitlab-cicd-permissions).
You might need additional permissions if the branch is protected.

View File

@ -28,7 +28,7 @@ and [is labeled as `merge request`](merge_request_pipelines.md#types-of-merge-re
To use merged results pipelines:
- Your project's [CI/CD configuration file](../yaml/index.md) must be configured to
- Your project's [`.gitlab-ci.yml` file](../index.md#the-gitlab-ciyml-file) must be configured to
[run jobs in merge request pipelines](merge_request_pipelines.md#prerequisites).
- Your repository must be a GitLab repository, not an
[external repository](../ci_cd_for_external_repos/index.md).

View File

@ -15,7 +15,7 @@ For a scheduled pipeline to run:
- The schedule owner must have the Developer role. For pipelines on protected branches,
the schedule owner must be [allowed to merge](../../user/project/protected_branches.md#add-protection-to-existing-branches)
to the branch.
- The [CI/CD configuration](../yaml/index.md) must be valid.
- The [`.gitlab-ci.yml` file](../index.md#the-gitlab-ciyml-file) must have valid syntax.
Otherwise, the pipeline is not created. No error message is displayed.

View File

@ -136,7 +136,7 @@ Now you can get started customizing your `.gitlab-ci.yml` and defining more adva
Here are some tips to get started working with the `.gitlab-ci.yml` file.
For the complete `.gitlab-ci.yml` syntax, see [the full `.gitlab-ci.yml` keyword reference](../yaml/index.md).
For the complete `.gitlab-ci.yml` syntax, see the full [CI/CD YAML syntax reference](../yaml/index.md).
- Use the [pipeline editor](../pipeline_editor/index.md) to edit your `.gitlab-ci.yml` file.
- Each job contains a script section and belongs to a stage:

View File

@ -502,5 +502,5 @@ Use a merge request to commit this pipeline configuration to the default branch.
The file is simpler, but it should have the same behavior as the previous step.
You've just created a full pipeline and streamlined it to be more efficient. Nice work!
Now you can take this knowledge, learn about [the rest of the `.gitlab-ci.yml` keywords](../yaml/index.md),
and build your own pipelines.
Now you can take this knowledge, learn about the rest of the `.gitlab-ci.yml` keywords
in the [CI/CD YAML syntax reference](../yaml/index.md), and build your own pipelines.

View File

@ -178,7 +178,7 @@ the [`coverage-report`](https://gitlab.com/gitlab-org/ci-sample-projects/coverag
### JavaScript example
The following [`.gitlab-ci.yml`](../yaml/index.md) example uses [Mocha](https://mochajs.org/)
The following `.gitlab-ci.yml` example uses [Mocha](https://mochajs.org/)
JavaScript testing and [nyc](https://github.com/istanbuljs/nyc) coverage-tooling to
generate the coverage artifact:
@ -198,7 +198,7 @@ test:
#### Maven example
The following [`.gitlab-ci.yml`](../yaml/index.md) example for Java or Kotlin uses [Maven](https://maven.apache.org/)
The following `.gitlab-ci.yml` example for Java or Kotlin uses [Maven](https://maven.apache.org/)
to build the project and [JaCoCo](https://www.eclemma.org/jacoco/) coverage-tooling to
generate the coverage artifact.
You can check the [Docker image configuration and scripts](https://gitlab.com/haynes/jacoco2cobertura) if you want to build your own image.
@ -236,7 +236,7 @@ coverage-jdk11:
#### Gradle example
The following [`.gitlab-ci.yml`](../yaml/index.md) example for Java or Kotlin uses [Gradle](https://gradle.org/)
The following `.gitlab-ci.yml` example for Java or Kotlin uses [Gradle](https://gradle.org/)
to build the project and [JaCoCo](https://www.eclemma.org/jacoco/) coverage-tooling to
generate the coverage artifact.
You can check the [Docker image configuration and scripts](https://gitlab.com/haynes/jacoco2cobertura) if you want to build your own image.
@ -274,7 +274,7 @@ coverage-jdk11:
### Python example
The following [`.gitlab-ci.yml`](../yaml/index.md) example uses [pytest-cov](https://pytest-cov.readthedocs.io/) to collect test coverage data:
The following `.gitlab-ci.yml` example uses [pytest-cov](https://pytest-cov.readthedocs.io/) to collect test coverage data:
```yaml
run tests:
@ -293,7 +293,7 @@ run tests:
### PHP example
The following [`.gitlab-ci.yml`](../yaml/index.md) example for PHP uses [PHPUnit](https://phpunit.readthedocs.io/)
The following `.gitlab-ci.yml` example for PHP uses [PHPUnit](https://phpunit.readthedocs.io/)
to collect test coverage data and generate the report.
With a minimal [`phpunit.xml`](https://docs.phpunit.de/en/10.2/configuration.html) file (you may reference
@ -331,7 +331,7 @@ to find Cobertura in the appropriate path.
### C/C++ example
The following [`.gitlab-ci.yml`](../yaml/index.md) example for C/C++ with
The following `.gitlab-ci.yml` example for C/C++ with
`gcc` or `g++` as the compiler uses [`gcovr`](https://gcovr.com/en/stable/) to generate the coverage
output file in Cobertura XML format.
@ -362,7 +362,7 @@ run tests:
### Go example
The following [`.gitlab-ci.yml`](../yaml/index.md) example for Go uses:
The following `.gitlab-ci.yml` example for Go uses:
- [`go test`](https://go.dev/doc/tutorial/add-a-test) to run tests.
- [`gocover-cobertura`](https://github.com/boumenot/gocover-cobertura) to convert Go's coverage profile into the Cobertura XML format.
@ -391,7 +391,7 @@ run tests:
### Ruby example
The following [`.gitlab-ci.yml`](../yaml/index.md) example for Ruby uses
The following `.gitlab-ci.yml` example for Ruby uses
- [`rspec`](https://rspec.info/) to run tests.
- [`simplecov`](https://github.com/simplecov-ruby/simplecov) and [`simplecov-cobertura`](https://github.com/dashingrocket/simplecov-cobertura)

View File

@ -147,7 +147,7 @@ To add or update variables in the project settings:
in job logs. The variable fails to save if the value does not meet the
[masking requirements](#mask-a-cicd-variable).
After you create a variable, you can use it in the [`.gitlab-ci.yml` configuration](../yaml/index.md)
After you create a variable, you can use it in the pipeline configuration
or in [job scripts](#use-cicd-variables-in-job-scripts).
### For a group

View File

@ -164,9 +164,9 @@ These variables are available when:
| `CI_MERGE_REQUEST_DIFF_BASE_SHA` | 13.7 | all | The base SHA of the merge request diff. |
| `CI_MERGE_REQUEST_DIFF_ID` | 13.7 | all | The version of the merge request diff. |
| `CI_MERGE_REQUEST_EVENT_TYPE` | 12.3 | all | The event type of the merge request. Can be `detached`, `merged_result` or `merge_train`. |
| `CI_MERGE_REQUEST_ID` | 11.6 | all | The instance-level ID of the merge request. This is a unique ID across all projects on the GitLab instance. |
| `CI_MERGE_REQUEST_DESCRIPTION` | 16.7 | all | The description of the merge request. If the description is more than 2700 characters long, only the first 2700 characters are stored in the variable. |
| `CI_MERGE_REQUEST_DESCRIPTION_IS_TRUNCATED` | 16.8 | all | `true` if `CI_MERGE_REQUEST_DESCRIPTION` is truncated down to 2700 characters because the description of the merge request is too long. |
| `CI_MERGE_REQUEST_ID` | 11.6 | all | The instance-level ID of the merge request. This is a unique ID across all projects on the GitLab instance. |
| `CI_MERGE_REQUEST_IID` | 11.6 | all | The project-level IID (internal ID) of the merge request. This ID is unique for the current project, and is the number used in the merge request URL, page title, and other visible locations. |
| `CI_MERGE_REQUEST_LABELS` | 11.9 | all | Comma-separated label names of the merge request. |
| `CI_MERGE_REQUEST_MILESTONE` | 11.9 | all | The milestone title of the merge request. |

View File

@ -16,7 +16,7 @@ This document describes where and how the different types of variables can be us
There are two places defined variables can be used. On the:
1. GitLab side, in the [`.gitlab-ci.yml` file](../yaml/index.md).
1. GitLab side, in the [`.gitlab-ci.yml` file](../index.md#the-gitlab-ciyml-file).
1. The GitLab Runner side, in `config.toml`.
### `.gitlab-ci.yml` file

View File

@ -18,7 +18,7 @@ is also available on YouTube.
Auto DevOps builds on top of GitLab CI/CD to create an automatic pipeline
based on your project contents. When Auto DevOps is enabled for a
project, the user does not need to explicitly include any pipeline configuration
through a [`.gitlab-ci.yml` file](../ci/yaml/index.md).
through a [`.gitlab-ci.yml` file](../ci/index.md#the-gitlab-ciyml-file).
In the absence of a `.gitlab-ci.yml` file, the
[Auto DevOps CI/CD template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml)

View File

@ -6,7 +6,7 @@ info: Any user with at least the Maintainer role can merge updates to this conte
# Documenting the `.gitlab-ci.yml` keywords
The [CI/CD YAML reference](../../ci/yaml/index.md) uses a standard style to make it easier to use and update.
The [CI/CD YAML syntax reference](../../ci/yaml/index.md) uses a standard style to make it easier to use and update.
The reference information should be kept as simple as possible, and expanded details
and examples should be documented on other pages.

View File

@ -14,7 +14,7 @@ Development guides that are specific to CI/CD are listed here:
- [The CI schema guide](schema.md)
See the [CI/CD YAML reference documentation guide](cicd_reference_documentation_guide.md)
to learn how to update the [reference page](../../ci/yaml/index.md).
to learn how to update the [CI/CD YAML syntax reference page](../../ci/yaml/index.md).
## Examples of CI/CD usage

View File

@ -30,7 +30,7 @@ a step-by-step introduction on how to work with JSON schemas.
The CI/CD schema is at [`app/assets/javascripts/editor/schema/ci.json`](https://gitlab.com/gitlab-org/gitlab/-/blob/master/app/assets/javascripts/editor/schema/ci.json).
It contains all the keywords available for authoring CI/CD configuration files.
Check the [keyword reference](../../ci/yaml/index.md) for a comprehensive list of
Check the [CI/CD YAML syntax reference](../../ci/yaml/index.md) for a comprehensive list of
all available keywords.
All keywords are defined under `definitions`. We use these definitions as

View File

@ -351,10 +351,10 @@ For numbers in text, spell out zero through nine and use numbers for 10 and grea
- [Write in Markdown](#markdown).
- Insert an empty line for new paragraphs.
- Insert an empty line between different markups (for example, after every
paragraph, header, list, and so on). Example:
paragraph, heading, list, and so on). Example:
```markdown
## Header
## Heading
Paragraph.
@ -692,9 +692,9 @@ Markdown tables naturally fall out of alignment over time, but still render corr
on `docs.gitlab.com`. The technical writing team can realign cells the next time
the page is refactored.
### Table headings
### Table headers
Use sentence case for table headings. For example, `Keyword value` or `Project name`.
Use sentence case for table headers. For example, `Keyword value` or `Project name`.
### Feature tables
@ -1438,7 +1438,7 @@ NOTE:
This is something to note.
```
To display an alert box for multiple paragraphs, lists, or headers, use
To display an alert box for multiple paragraphs, lists, or headings, use
[blockquotes](#blockquotes) instead.
Alert boxes render only on the GitLab documentation site (<https://docs.gitlab.com>).

View File

@ -7,16 +7,16 @@ info: Any user with at least the Maintainer role can merge updates to this conte
# Security scanner integration
Integrating a security scanner into GitLab consists of providing end users
with a [CI job definition](../../ci/yaml/index.md)
they can add to their CI configuration files to scan their GitLab projects.
This CI job should then output its results in a GitLab-specified format. These results are then
with a [CI/CD job definition](../../ci/jobs/index.md)
they can add to their CI/CD configuration files to scan their GitLab projects.
This job should then output its results in a GitLab-specified format. These results are then
automatically presented in various places in GitLab, such as the Pipeline view, merge request
widget, and Security Dashboard.
The scanning job is usually based on a [Docker image](https://docs.docker.com/)
that contains the scanner and all its dependencies in a self-contained environment.
This page documents requirements and guidelines for writing CI jobs that implement a security
This page documents requirements and guidelines for writing CI/CD jobs that implement a security
scanner, as well as requirements and guidelines for the Docker image.
## Job definition

View File

@ -13,7 +13,7 @@ which itself includes files under
for easier maintenance.
We're striving to [dogfood](https://about.gitlab.com/handbook/engineering/development/principles/#dogfooding)
GitLab [CI/CD features and best-practices](../../ci/yaml/index.md)
GitLab [CI/CD features and best-practices](../../ci/index.md)
as much as possible.
## Predictive test jobs before a merge request is approved

View File

@ -253,7 +253,7 @@ For more information, see [Limit the environment scope of CI/CD variables](../..
## Customize `.gitlab-ci.yml`
Auto DevOps is highly customizable because the [Auto DevOps template](https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/Auto-DevOps.gitlab-ci.yml)
is an implementation of a [`.gitlab-ci.yml`](../../ci/yaml/index.md) file.
is an implementation of a [`.gitlab-ci.yml` file](../../ci/index.md#the-gitlab-ciyml-file).
The template uses only features available to any implementation of `.gitlab-ci.yml`.
To add custom behaviors to the CI/CD pipeline used by Auto DevOps:

View File

@ -174,7 +174,7 @@ When enabled, Auto DevOps attempts to run pipelines in every project. If the
pipeline fails in a particular project, it disables itself.
GitLab administrators can change this in the [Auto DevOps settings](../../administration/settings/continuous_integration.md#auto-devops).
If a [CI/CD configuration file](../../ci/yaml/index.md) is present,
If a [`.gitlab-ci.yml` file](../../ci/index.md#the-gitlab-ciyml-file) is present,
it remains unchanged and Auto DevOps does not affect it.
To disable Auto DevOps in the instance level, follow the same process

View File

@ -1,6 +1,7 @@
---
stage: Systems
group: Distribution
description: Latest version instructions.
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
---

View File

@ -71,7 +71,7 @@ To associate a cluster management project with your cluster:
### Configuring your pipeline
After designating a project as the management project for the cluster,
write a [`.gitlab-ci.yml`](../../ci/yaml/index.md) in that project. For example:
add a [`.gitlab-ci.yml` file](../../ci/index.md#the-gitlab-ciyml-file) in that project. For example:
```yaml
configure cluster:
@ -99,7 +99,7 @@ to a management project:
| Production | `production` |
The environments set in the
[`.gitlab-ci.yml`](../../ci/yaml/index.md) file deploy to the Development, Staging, and Production cluster.
[`.gitlab-ci.yml` file](../../ci/index.md#the-gitlab-ciyml-file) deploy to the Development, Staging, and Production cluster.
```yaml
stages:

View File

@ -129,7 +129,7 @@ For example, if your project has the following Kubernetes clusters:
| Test | `test` | Group |
| Development| `*` | Group |
And the following environments are set in [`.gitlab-ci.yml`](../../../ci/yaml/index.md):
And the following environments are set in the [`.gitlab-ci.yml` file](../../../ci/index.md#the-gitlab-ciyml-file):
```yaml
stages:

View File

@ -166,7 +166,7 @@ In this example, milestones have been created and CI/CD for testing and setting
- 14:00: Push branch and create a merge request that contains the
[issue closing pattern](../../project/issues/managing_issues.md#closing-issues-automatically).
**Code** stage stops and **Test** and **Review** stages start.
- GitLab CI/CD takes 5 minutes to run scripts defined in [`.gitlab-ci.yml`](../../../ci/yaml/index.md).
- GitLab CI/CD takes 5 minutes to run scripts defined in the [`.gitlab-ci.yml` file](../../../ci/index.md#the-gitlab-ciyml-file).
- 19:00: Merge the merge request. **Review** stage stops and **Staging** stage starts.
- 19:30: Deployment to the `production` environment finishes. **Staging** stops.

View File

@ -75,7 +75,7 @@ The following features be are extended from standard Markdown:
| [blockquotes](#blockquotes) | [multi-line blockquotes](#multiline-blockquote) |
| [code blocks](#code-spans-and-blocks) | [colored code and syntax highlighting](#colored-code-and-syntax-highlighting) |
| [emphasis](#emphasis) | [multiple underscores in words](#multiple-underscores-in-words-and-mid-word-emphasis) |
| [headers](#headers) | [linkable Header IDs](#header-ids-and-links) |
| [headings](#headings) | [linkable heading IDs](#heading-ids-and-links) |
| [images](#images) | [embedded videos](#videos) and [audio](#audio) |
| [line breaks](#line-breaks) | [more line break control](#newlines) |
| [links](#links) | [automatically linking URLs](#url-auto-linking) |
@ -87,18 +87,18 @@ This content should be as accessible as possible to your audience.
The following list is not exhaustive, but it provides guidance for some of the GLFM styles to pay
particular attention to:
### Headings
### Accessible headings
Use heading formatting to create a logical heading structure.
The structure of headings on a page should make sense, like a good table of contents.
Ensure that there is only one `h1` element on a page, that heading levels are not skipped, and that they are nested correctly.
### Tables
### Accessible tables
To keep tables accessible and scannable, tables should not have any empty cells.
If there is no otherwise meaningful value for a cell, consider entering **N/A** for "not applicable" or **None**.
### Images and videos
### Accessible images and videos
Describe the image or video in the `[alt text]`. Make the description accurate, succinct, and unique.
Don't use `image of` or `video of` in the description. For more information, see [WebAim Alternative Text](https://webaim.org/techniques/alttext/).
@ -1060,7 +1060,7 @@ These are used to force the Vale ReferenceLinks check to skip these examples.
[^footnote-42]: This text is another footnote.
### Headers
### Headings
```markdown
# H1
@ -1081,46 +1081,46 @@ Alt-H2
------
```
#### Header IDs and links
#### Heading IDs and links
[View this topic in GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md#header-ids-and-links).
[View this topic in GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md#heading-ids-and-links).
GitLab Flavored Markdown extends the standard Markdown standard so that all Markdown-rendered headers automatically
GitLab Flavored Markdown extends the standard Markdown standard so that all Markdown-rendered headings automatically
get IDs, which can be linked to, except in comments.
On hover, a link to those IDs becomes visible to make it easier to copy the link to
the header to use it somewhere else.
the heading to use it somewhere else.
The IDs are generated from the content of the header according to the following rules:
The IDs are generated from the content of the heading according to the following rules:
1. All text is converted to lowercase.
1. All non-word text (such as punctuation or HTML) is removed.
1. All spaces are converted to hyphens.
1. Two or more hyphens in a row are converted to one.
1. If a header with the same ID has already been generated, a unique
1. If a heading with the same ID has already been generated, a unique
incrementing number is appended, starting at 1.
Example:
```markdown
# This header has spaces in it
## This header has a :thumbsup: in it
# This header has Unicode in it: 한글
## This header has spaces in it
### This header has spaces in it
## This header has 3.5 in it (and parentheses)
# This heading has spaces in it
## This heading has a :thumbsup: in it
# This heading has Unicode in it: 한글
## This heading has spaces in it
### This heading has spaces in it
## This heading has 3.5 in it (and parentheses)
```
Would generate the following link IDs:
1. `this-header-has-spaces-in-it`
1. `this-header-has-a-in-it`
1. `this-header-has-unicode-in-it-한글`
1. `this-header-has-spaces-in-it-1`
1. `this-header-has-spaces-in-it-2`
1. `this-header-has-3-5-in-it-and-parentheses`
1. `this-heading-has-spaces-in-it`
1. `this-heading-has-a-in-it`
1. `this-heading-has-unicode-in-it-한글`
1. `this-heading-has-spaces-in-it-1`
1. `this-heading-has-spaces-in-it-2`
1. `this-heading-has-3-5-in-it-and-parentheses`
Emoji processing happens before the header IDs are generated. The
Emoji processing happens before the heading IDs are generated. The
emoji is converted to an image, which is then removed from the ID.
### Horizontal Rule
@ -1444,10 +1444,10 @@ Do not change it back to a markdown codeblock.
- This line shows a [relative link to a file one directory higher](../index.md)
- This line shows a [link that also has title text](https://www.google.com "This link takes you to Google!")
Using header ID anchors:
Using heading ID anchors:
- This line links to [a section on a different Markdown page, using a "#" and the header ID](permissions.md#project-features-permissions)
- This line links to [a different section on the same page, using a "#" and the header ID](#header-ids-and-links)
- This line links to [a section on a different Markdown page, using a "#" and the heading ID](permissions.md#project-features-permissions)
- This line links to [a different section on the same page, using a "#" and the heading ID](#heading-ids-and-links)
Using references:
@ -1467,10 +1467,10 @@ Some text to show that the reference links can follow later.
- This line shows a [relative link to a file one directory higher](../index.md)
- This line shows a [link that also has title text](https://www.google.com "This link takes you to Google!")
Using header ID anchors:
Using heading ID anchors:
- This line links to [a section on a different Markdown page, using a "#" and the header ID](permissions.md#project-members-permissions)
- This line links to [a different section on the same page, using a "#" and the header ID](#header-ids-and-links)
- This line links to [a section on a different Markdown page, using a "#" and the heading ID](permissions.md#project-members-permissions)
- This line links to [a different section on the same page, using a "#" and the heading ID](#heading-ids-and-links)
Using references:

View File

@ -46,7 +46,7 @@ You can configure your `.gitlab-ci.yml` file to build and push container images
## Use GitLab CI/CD
You can use [GitLab CI/CD](../../../ci/yaml/index.md) to build and push container images to the
You can use [GitLab CI/CD](../../../ci/index.md) to build and push container images to the
Container Registry. You can use CI/CD to test, build, and deploy your project from the container
image you created.

View File

@ -155,7 +155,7 @@ upload:
```
To trigger this upload job, add a Git tag to your commit. Ensure the tag follows the [Semantic versioning specification](https://semver.org/) that Terraform requires. The `rules:if: $CI_COMMIT_TAG` ensures that only tagged commits to your repository trigger the module upload job.
For other ways to control jobs in your CI/CD pipeline, refer to the [`.gitlab-ci.yml`](../../../ci/yaml/index.md) keyword reference.
For other ways to control jobs in your CI/CD pipeline, refer to the [CI/CD YAML syntax reference](../../../ci/yaml/index.md).
### Allow duplicate Terraform modules

View File

@ -40,8 +40,8 @@ For example, let's say the following Kubernetes clusters exist in a project:
| Development | `*` |
| Production | `production` |
And the following environments are set in
[`.gitlab-ci.yml`](../../../ci/yaml/index.md):
And the following environments are set in the
[`.gitlab-ci.yml` file](../../../ci/index.md#the-gitlab-ciyml-file):
```yaml
stages:

View File

@ -17,15 +17,13 @@ flexibility:
- Create required [rules](rules.md) about the number and type of approvers before work can merge.
- Specify a list of users who act as [code owners](../../codeowners/index.md) for specific files,
and require their approval before work can merge.
- For GitLab Premium and GitLab Ultimate, configure approvals
[for the entire instance](../../../../administration/merge_requests_approvals.md).
You can configure merge request approvals on a per-project basis, and some approvals can be configured
[on the group level](../../../group/manage.md#group-merge-request-approval-settings). Support for
group-level settings for merge request approval rules is tracked in this
[epic](https://gitlab.com/groups/gitlab-org/-/epics/4367). Administrators of
[GitLab Premium](https://about.gitlab.com/pricing/) and
[GitLab Ultimate](https://about.gitlab.com/pricing/) self-managed GitLab instances
can also configure approvals
[for the entire instance](../../../../administration/merge_requests_approvals.md).
[epic](https://gitlab.com/groups/gitlab-org/-/epics/4367).
## How approvals work
@ -48,6 +46,8 @@ You can also configure:
- Merge request approval rules and settings through the GitLab UI or with the
[Merge request approvals API](../../../../api/merge_request_approvals.md).
Approvals cannot be added after a merge request is merged.
## Approve a merge request
When an [eligible approver](rules.md#eligible-approvers) visits an open merge request,
@ -60,9 +60,8 @@ GitLab displays one of these buttons after the body of the merge request:
Eligible approvers can also use the `/approve`
[quick action](../../../project/quick_actions.md) when adding a comment to
a merge request. [In GitLab 13.10 and later](https://gitlab.com/gitlab-org/gitlab/-/issues/292936),
if a user approves a merge request and is shown in the reviewer list, a green check mark
(**{check-circle-filled}**) displays next to their name.
a merge request. Users in the reviewer list who have approved a merge request display
a green check mark (**{check-circle-filled}**) next to their name.
After a merge request receives the [number and type of approvals](rules.md) you configure, it can merge
unless it's blocked for another reason. Merge requests can be blocked by other problems,
@ -80,8 +79,6 @@ of the rule.
## Optional approvals
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/27426) in GitLab 13.2.
GitLab allows all users with Developer or greater [permissions](../../../permissions.md)
to approve merge requests. Approvals in GitLab Free are optional, and don't prevent
a merge request from merging without approval.

View File

@ -185,7 +185,7 @@ GitLab Pages daemon. GitLab runs it in the background and doesn't use a runner.
## Other options for your CI/CD file
If you want to do more advanced tasks, you can update your `.gitlab-ci.yml` file
with [any of the available settings](../../../../ci/yaml/index.md). You can validate
with [other CI/CD YAML keywords](../../../../ci/yaml/index.md). You can validate
your `.gitlab-ci.yml` file with the [CI Lint](../../../../ci/lint.md) tool that's included with GitLab.
The following topics show other examples of other options you can add to your CI/CD file.

View File

@ -151,26 +151,7 @@ module API
desc: 'DEPRECATED: This parameter has no effect since SSL verification will always be enabled'
}
],
'campfire' => [
{
required: true,
name: :token,
type: String,
desc: 'Campfire token'
},
{
required: false,
name: :subdomain,
type: String,
desc: 'Campfire subdomain'
},
{
required: false,
name: :room,
type: String,
desc: 'Campfire room'
}
],
'campfire' => ::Integrations::Campfire.api_fields,
'confluence' => ::Integrations::Confluence.api_fields,
'custom-issue-tracker' => ::Integrations::CustomIssueTracker.api_fields,
'datadog' => [

View File

@ -10,22 +10,22 @@ module Gitlab
APPLICATION_DEFAULT = 3
# Struct class representing a single Theme
Theme = Struct.new(:id, :name, :css_class, :css_filename, :primary_color)
Theme = Struct.new(:id, :name, :css_class, :primary_color)
# All available Themes
def available_themes
[
Theme.new(1, s_('NavigationTheme|Indigo'), 'ui-indigo', 'theme_indigo', '#222261'),
Theme.new(6, s_('NavigationTheme|Light Indigo'), 'ui-light-indigo', 'theme_light_indigo', '#41419f'),
Theme.new(4, s_('NavigationTheme|Blue'), 'ui-blue', 'theme_blue', '#0b2640'),
Theme.new(7, s_('NavigationTheme|Light Blue'), 'ui-light-blue', 'theme_light_blue', '#145aa1'),
Theme.new(5, s_('NavigationTheme|Green'), 'ui-green', 'theme_green', '#0e4328'),
Theme.new(8, s_('NavigationTheme|Light Green'), 'ui-light-green', 'theme_light_green', '#1b653f'),
Theme.new(9, s_('NavigationTheme|Red'), 'ui-red', 'theme_red', '#580d02'),
Theme.new(10, s_('NavigationTheme|Light Red'), 'ui-light-red', 'theme_light_red', '#a02e1c'),
Theme.new(2, s_('NavigationTheme|Gray'), 'ui-gray', 'theme_gray', '#333238'),
Theme.new(3, s_('NavigationTheme|Light Gray'), 'ui-light-gray', 'theme_light_gray', '#ececef'),
Theme.new(11, s_('NavigationTheme|Dark Mode (alpha)'), 'gl-dark', nil, '#1f1e24')
Theme.new(1, s_('NavigationTheme|Indigo'), 'ui-indigo', '#222261'),
Theme.new(6, s_('NavigationTheme|Light Indigo'), 'ui-light-indigo', '#41419f'),
Theme.new(4, s_('NavigationTheme|Blue'), 'ui-blue', '#0b2640'),
Theme.new(7, s_('NavigationTheme|Light Blue'), 'ui-light-blue', '#145aa1'),
Theme.new(5, s_('NavigationTheme|Green'), 'ui-green', '#0e4328'),
Theme.new(8, s_('NavigationTheme|Light Green'), 'ui-light-green', '#1b653f'),
Theme.new(9, s_('NavigationTheme|Red'), 'ui-red', '#580d02'),
Theme.new(10, s_('NavigationTheme|Light Red'), 'ui-light-red', '#a02e1c'),
Theme.new(2, s_('NavigationTheme|Gray'), 'ui-gray', '#333238'),
Theme.new(3, s_('NavigationTheme|Light Gray'), 'ui-light-gray', '#ececef'),
Theme.new(11, s_('NavigationTheme|Dark Mode (alpha)'), 'gl-dark', '#1f1e24')
]
end

View File

@ -2106,6 +2106,9 @@ msgstr ""
msgid "API Help"
msgstr ""
msgid "API authentication token from Campfire. To get the token, sign in to Campfire and select **My info**."
msgstr ""
msgid "API key"
msgstr ""
@ -9554,18 +9557,18 @@ msgstr ""
msgid "Campfire token"
msgstr ""
msgid "CampfireService|%{code_open}.campfirenow.com%{code_close} subdomain."
msgstr ""
msgid "CampfireService|API authentication token from Campfire."
msgstr ""
msgid "CampfireService|From the end of the room URL."
msgid "CampfireService|ID portion of the Campfire room URL."
msgstr ""
msgid "CampfireService|Send notifications about push events to Campfire chat rooms. %{docs_link}"
msgstr ""
msgid "CampfireService|The %{code_open}.campfirenow.com%{code_close} subdomain."
msgstr ""
msgid "Can be manually deployed to"
msgstr ""
@ -11998,9 +12001,6 @@ msgstr ""
msgid "Code Review Analytics displays a table of open merge requests considered to be in code review. There are currently no merge requests in review for this project and/or filters."
msgstr ""
msgid "Code Suggestions"
msgstr ""
msgid "Code Suggestions add-on status"
msgstr ""
@ -12058,18 +12058,18 @@ msgstr ""
msgid "CodeSuggestionsGAAlert| (Code Suggestions transitions to a paid feature on %{date}.)"
msgstr ""
msgid "CodeSuggestionsGAAlert|Code Suggestions is now part of Duo Pro. Free access is ending soon."
msgstr ""
msgid "CodeSuggestionsGAAlert|Contact Sales"
msgstr ""
msgid "CodeSuggestionsGAAlert|Continue accelerating your development with Code Suggestions. Starting February 15, 2024, a paid subscription will be required for access. Upgrade now to lock in the introductory price of $9 per user."
msgid "CodeSuggestionsGAAlert|Continue accelerating your development with GitLab Duo Pro. Starting %{ga_date}, Code Suggestions will be part of Duo Pro, and a paid subscription will be required for access. Upgrade before %{promo_price_end_date} to lock in the introductory price of $9 per user. After this date, the price increases to $19 per user."
msgstr ""
msgid "CodeSuggestionsGAAlert|Dismiss Code Suggestions banner"
msgstr ""
msgid "CodeSuggestionsGAAlert|GitLab Duo Code Suggestions free access is ending soon"
msgstr ""
msgid "CodeSuggestionsGAAlert|Learn more"
msgstr ""
@ -12118,6 +12118,9 @@ msgstr ""
msgid "CodeSuggestions|Introducing the Code&nbsp;Suggestions add&#8209;on"
msgstr ""
msgid "CodeSuggestions|Manage seat assignments for Code Suggestions across your instance."
msgstr ""
msgid "CodeSuggestions|Projects in this group can use Code Suggestions"
msgstr ""
@ -24539,6 +24542,9 @@ msgstr ""
msgid "ID"
msgstr ""
msgid "ID portion of the Campfire room URL."
msgstr ""
msgid "ID:"
msgstr ""
@ -31201,6 +31207,12 @@ msgstr ""
msgid "MlModelRegistry|Candidate not linked to a CI build"
msgstr ""
msgid "MlModelRegistry|Copied MLflow tracking URL to clipboard"
msgstr ""
msgid "MlModelRegistry|Copy MLflow tracking URL"
msgstr ""
msgid "MlModelRegistry|Create a model version"
msgstr ""
@ -55834,7 +55846,7 @@ msgstr ""
msgid "Workspaces|To create a workspace, add a devfile to this project. A devfile is a configuration file for your workspace."
msgstr ""
msgid "Workspaces|Unable to load current Workspaces. Please try again or contact an administrator."
msgid "Workspaces|Unable to load current workspaces. Please try again or contact an administrator."
msgstr ""
msgid "Workspaces|Unknown state"
@ -57134,6 +57146,9 @@ msgstr ""
msgid "[Supports GitLab-flavored markdown, including quick actions]"
msgstr ""
msgid "`.campfirenow.com` subdomain when you're signed in."
msgstr ""
msgid "`end_time` should not exceed one month after `start_time`"
msgstr ""

View File

@ -136,7 +136,7 @@
"deckar01-task_list": "^2.3.1",
"dexie": "^3.2.3",
"diff": "^3.4.0",
"dompurify": "^3.0.7",
"dompurify": "^3.0.8",
"dropzone": "^4.2.0",
"editorconfig": "^0.15.3",
"emoji-regex": "^10.0.0",

View File

@ -65,7 +65,8 @@ RSpec.describe Projects::Ml::ModelsIndexComponent, type: :component, feature_cat
},
'modelCount' => 5,
'createModelPath' => "/#{project.full_path}/-/ml/models/new",
'canWriteModelRegistry' => true
'canWriteModelRegistry' => true,
'mlflowTrackingUrl' => "http://localhost/api/v4/projects/#{project.id}/ml/mlflow/api/2.0/mlflow/"
})
end
end

View File

@ -8,6 +8,7 @@ import { BASE_SORT_FIELDS, MODEL_ENTITIES } from '~/ml/model_registry/constants'
import TitleArea from '~/vue_shared/components/registry/title_area.vue';
import MetadataItem from '~/vue_shared/components/registry/metadata_item.vue';
import EmptyState from '~/ml/model_registry/components/empty_state.vue';
import ActionsDropdown from '~/ml/model_registry/components/actions_dropdown.vue';
import { mockModels, startCursor, defaultPageInfo } from '../mock_data';
let wrapper;
@ -33,6 +34,7 @@ const findTitleArea = () => wrapper.findComponent(TitleArea);
const findModelCountMetadataItem = () => findTitleArea().findComponent(MetadataItem);
const findBadge = () => wrapper.findComponent(GlBadge);
const findCreateButton = () => findTitleArea().findComponent(GlButton);
const findActionsDropdown = () => wrapper.findComponent(ActionsDropdown);
describe('ml/model_registry/apps/index_ml_models', () => {
describe('empty state', () => {
@ -49,6 +51,10 @@ describe('ml/model_registry/apps/index_ml_models', () => {
it('does not show search bar', () => {
expect(findSearchBar().exists()).toBe(false);
});
it('renders the extra actions button', () => {
expect(findActionsDropdown().exists()).toBe(true);
});
});
describe('create button', () => {

View File

@ -0,0 +1,39 @@
import { mount } from '@vue/test-utils';
import { GlDisclosureDropdownItem } from '@gitlab/ui';
import ActionsDropdown from '~/ml/model_registry/components/actions_dropdown.vue';
describe('ml/model_registry/components/actions_dropdown', () => {
let wrapper;
const showToast = jest.fn();
const createWrapper = () => {
wrapper = mount(ActionsDropdown, {
mocks: {
$toast: {
show: showToast,
},
},
provide: {
mlflowTrackingUrl: 'path/to/mlflow',
},
});
};
const findCopyLinkDropdownItem = () => wrapper.findComponent(GlDisclosureDropdownItem);
it('has data-clipboard-text set to the correct url', () => {
createWrapper();
expect(findCopyLinkDropdownItem().text()).toBe('Copy MLflow tracking URL');
expect(findCopyLinkDropdownItem().attributes()['data-clipboard-text']).toBe('path/to/mlflow');
});
it('shows a success toast after copying the url to the clipboard', () => {
createWrapper();
findCopyLinkDropdownItem().find('button').trigger('click');
expect(showToast).toHaveBeenCalledWith('Copied MLflow tracking URL to clipboard');
});
});

View File

@ -47,18 +47,4 @@ RSpec.describe Gitlab::Themes, lib: true do
expect(ids).not_to be_empty
end
end
describe 'theme.css_filename' do
described_class.each do |theme|
next unless theme.css_filename
context "for #{theme.name}" do
it 'returns an existing CSS filename' do
css_file_path = Rails.root.join('app/assets/stylesheets/themes', theme.css_filename + '.scss')
expect(File.exist?(css_file_path)).to eq(true)
end
end
end
end
end

View File

@ -20,14 +20,6 @@ RSpec.describe 'profiles/preferences/show' do
it 'has an id for anchoring' do
expect(rendered).to have_css('#navigation-theme')
end
it 'has correct stylesheet tags' do
Gitlab::Themes.each do |theme|
next unless theme.css_filename
expect(rendered).to have_selector("link[href*=\"themes/#{theme.css_filename}\"]", visible: false)
end
end
end
context 'syntax highlighting theme' do

View File

@ -5700,10 +5700,10 @@ dommatrix@^1.0.3:
resolved "https://registry.yarnpkg.com/dommatrix/-/dommatrix-1.0.3.tgz#e7c18e8d6f3abdd1fef3dd4aa74c4d2e620a0525"
integrity sha512-l32Xp/TLgWb8ReqbVJAFIvXmY7go4nTxxlWiAFyhoQw9RKEOHBZNnyGvJWqDVSPmq3Y9HlM4npqF/T6VMOXhww==
dompurify@^3.0.5, dompurify@^3.0.7:
version "3.0.7"
resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.0.7.tgz#de8cab085ec28388b95ebf588244ab5f28096e1a"
integrity sha512-BViYTZoqP3ak/ULKOc101y+CtHDUvBsVgSxIF1ku0HmK6BRf+C03MC+tArMvOPtVtZp83DDh5puywKDu4sbVjQ==
dompurify@^3.0.5, dompurify@^3.0.8:
version "3.0.8"
resolved "https://registry.yarnpkg.com/dompurify/-/dompurify-3.0.8.tgz#e0021ab1b09184bc8af7e35c7dd9063f43a8a437"
integrity sha512-b7uwreMYL2eZhrSCRC4ahLTeZcPZxSmYfmcQGXGkXiZSNW1X85v+SDM5KsWcpivIiUBH47Ji7NtyUdpLeF5JZQ==
dropzone@^4.2.0:
version "4.2.0"