Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
025c440ddc
commit
fdeb53bebf
4
Gemfile
4
Gemfile
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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"},
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
// "Light gray" is the default unthemed state of the sidebar.
|
||||
// Nothing to do here.
|
||||
|
|
@ -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,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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,
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
@ -0,0 +1 @@
|
|||
729cc1d2d73610b8e1a8efec30635dded7c85ece9afdc40e24ed60ddd82c4068
|
||||
|
|
@ -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)**
|
||||
|
|
|
|||
|
|
@ -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`,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ jobs. Select to expand them.
|
|||
|
||||

|
||||
|
||||
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`.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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).
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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. |
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>).
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
---
|
||||
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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' => [
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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 Suggestions add‑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 ""
|
||||
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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', () => {
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
});
|
||||
});
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
Loading…
Reference in New Issue