diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2024-01-08 21:13:21 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2024-01-08 21:13:21 +0300 |
commit | fdeb53bebfb91f7cc7182c783310ee7d7bac8550 (patch) | |
tree | 4104a89a3591b4c39402ebab565d5752e732d2ae | |
parent | 025c440ddc394806bccf19c56043e369ed7e84f5 (diff) |
Add latest changes from gitlab-org/gitlab@master
81 files changed, 491 insertions, 381 deletions
@@ -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 diff --git a/Gemfile.checksum b/Gemfile.checksum index 9048638cb6c..b6ba3e816c4 100644 --- a/Gemfile.checksum +++ b/Gemfile.checksum @@ -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"}, diff --git a/Gemfile.lock b/Gemfile.lock index 5386d595d52..3e4455ee08f 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -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) diff --git a/app/assets/javascripts/ml/model_registry/apps/index_ml_models.vue b/app/assets/javascripts/ml/model_registry/apps/index_ml_models.vue index 3956a1f86e8..59b68fc0063 100644 --- a/app/assets/javascripts/ml/model_registry/apps/index_ml_models.vue +++ b/app/assets/javascripts/ml/model_registry/apps/index_ml_models.vue @@ -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"> diff --git a/app/assets/javascripts/ml/model_registry/components/actions_dropdown.vue b/app/assets/javascripts/ml/model_registry/components/actions_dropdown.vue new file mode 100644 index 00000000000..5b4f9e27437 --- /dev/null +++ b/app/assets/javascripts/ml/model_registry/components/actions_dropdown.vue @@ -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> diff --git a/app/assets/stylesheets/framework/super_sidebar.scss b/app/assets/stylesheets/framework/super_sidebar.scss index 5fcc24a1827..5a9a739fb13 100644 --- a/app/assets/stylesheets/framework/super_sidebar.scss +++ b/app/assets/stylesheets/framework/super_sidebar.scss @@ -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; } diff --git a/app/assets/stylesheets/themes/dark_mode_overrides.scss b/app/assets/stylesheets/themes/dark_mode_overrides.scss index 3ab3e195b06..59c2391d2e9 100644 --- a/app/assets/stylesheets/themes/dark_mode_overrides.scss +++ b/app/assets/stylesheets/themes/dark_mode_overrides.scss @@ -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; diff --git a/app/assets/stylesheets/themes/theme_blue.scss b/app/assets/stylesheets/themes/theme_blue.scss deleted file mode 100644 index 1a373fbfeda..00000000000 --- a/app/assets/stylesheets/themes/theme_blue.scss +++ /dev/null @@ -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, - ); - } - } -} diff --git a/app/assets/stylesheets/themes/theme_gray.scss b/app/assets/stylesheets/themes/theme_gray.scss deleted file mode 100644 index 9a24142f286..00000000000 --- a/app/assets/stylesheets/themes/theme_gray.scss +++ /dev/null @@ -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, - ); - } - } -} diff --git a/app/assets/stylesheets/themes/theme_green.scss b/app/assets/stylesheets/themes/theme_green.scss deleted file mode 100644 index a766fdddc78..00000000000 --- a/app/assets/stylesheets/themes/theme_green.scss +++ /dev/null @@ -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, - ); - } - } -} diff --git a/app/assets/stylesheets/themes/theme_helper.scss b/app/assets/stylesheets/themes/theme_helper.scss deleted file mode 100644 index c94a32891f6..00000000000 --- a/app/assets/stylesheets/themes/theme_helper.scss +++ /dev/null @@ -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); - } - } -} diff --git a/app/assets/stylesheets/themes/theme_indigo.scss b/app/assets/stylesheets/themes/theme_indigo.scss deleted file mode 100644 index d0a8d597b59..00000000000 --- a/app/assets/stylesheets/themes/theme_indigo.scss +++ /dev/null @@ -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, - ); - } - } -} diff --git a/app/assets/stylesheets/themes/theme_light_blue.scss b/app/assets/stylesheets/themes/theme_light_blue.scss deleted file mode 100644 index e712b6ae859..00000000000 --- a/app/assets/stylesheets/themes/theme_light_blue.scss +++ /dev/null @@ -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, - ); - } - } -} diff --git a/app/assets/stylesheets/themes/theme_light_gray.scss b/app/assets/stylesheets/themes/theme_light_gray.scss deleted file mode 100644 index 5cb9bee37b0..00000000000 --- a/app/assets/stylesheets/themes/theme_light_gray.scss +++ /dev/null @@ -1,2 +0,0 @@ -// "Light gray" is the default unthemed state of the sidebar. -// Nothing to do here. diff --git a/app/assets/stylesheets/themes/theme_light_green.scss b/app/assets/stylesheets/themes/theme_light_green.scss deleted file mode 100644 index 44e19b02e36..00000000000 --- a/app/assets/stylesheets/themes/theme_light_green.scss +++ /dev/null @@ -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, - ); - } - } -} diff --git a/app/assets/stylesheets/themes/theme_light_indigo.scss b/app/assets/stylesheets/themes/theme_light_indigo.scss deleted file mode 100644 index ab299ca9d84..00000000000 --- a/app/assets/stylesheets/themes/theme_light_indigo.scss +++ /dev/null @@ -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, - ); - } - } -} diff --git a/app/assets/stylesheets/themes/theme_light_red.scss b/app/assets/stylesheets/themes/theme_light_red.scss deleted file mode 100644 index 499cdace772..00000000000 --- a/app/assets/stylesheets/themes/theme_light_red.scss +++ /dev/null @@ -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, - ); - } - } -} diff --git a/app/assets/stylesheets/themes/theme_red.scss b/app/assets/stylesheets/themes/theme_red.scss deleted file mode 100644 index 9a17f98aa80..00000000000 --- a/app/assets/stylesheets/themes/theme_red.scss +++ /dev/null @@ -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, - ); - } - } -} diff --git a/app/components/projects/ml/models_index_component.rb b/app/components/projects/ml/models_index_component.rb index b9b3aac574a..ef5c8a34bf5 100644 --- a/app/components/projects/ml/models_index_component.rb +++ b/app/components/projects/ml/models_index_component.rb @@ -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 diff --git a/app/helpers/preferences_helper.rb b/app/helpers/preferences_helper.rb index 204e3b149b9..da8ef2277f1 100644 --- a/app/helpers/preferences_helper.rb +++ b/app/helpers/preferences_helper.rb @@ -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 diff --git a/app/models/integrations/campfire.rb b/app/models/integrations/campfire.rb index 18268ed18f4..783311ca18d 100644 --- a/app/models/integrations/campfire.rb +++ b/app/models/integrations/campfire.rb @@ -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' diff --git a/app/views/layouts/_head.html.haml b/app/views/layouts/_head.html.haml index 5f038ac467d..79fa5bfeac0 100644 --- a/app/views/layouts/_head.html.haml +++ b/app/views/layouts/_head.html.haml @@ -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' diff --git a/app/views/profiles/preferences/show.html.haml b/app/views/profiles/preferences/show.html.haml index 96375412f94..5435297d6c6 100644 --- a/app/views/profiles/preferences/show.html.haml +++ b/app/views/profiles/preferences/show.html.haml @@ -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 diff --git a/db/click_house/migrate/main/20240104092900_add_root_namespace_id_to_ci_finished_builds.rb b/db/click_house/migrate/main/20240104092900_add_root_namespace_id_to_ci_finished_builds.rb new file mode 100644 index 00000000000..ac711e0e2aa --- /dev/null +++ b/db/click_house/migrate/main/20240104092900_add_root_namespace_id_to_ci_finished_builds.rb @@ -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 diff --git a/db/docs/batched_background_migrations/backfill_partition_id_ci_pipeline_chat_data.yml b/db/docs/batched_background_migrations/backfill_partition_id_ci_pipeline_chat_data.yml index 9cf851d9104..5864ef96ca3 100644 --- a/db/docs/batched_background_migrations/backfill_partition_id_ci_pipeline_chat_data.yml +++ b/db/docs/batched_background_migrations/backfill_partition_id_ci_pipeline_chat_data.yml @@ -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 diff --git a/db/post_migrate/20240104101601_finalize_backfill_partition_id_ci_pipeline_chat_data.rb b/db/post_migrate/20240104101601_finalize_backfill_partition_id_ci_pipeline_chat_data.rb new file mode 100644 index 00000000000..45da0e9c12a --- /dev/null +++ b/db/post_migrate/20240104101601_finalize_backfill_partition_id_ci_pipeline_chat_data.rb @@ -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 diff --git a/db/schema_migrations/20240104101601 b/db/schema_migrations/20240104101601 new file mode 100644 index 00000000000..06c9bee807e --- /dev/null +++ b/db/schema_migrations/20240104101601 @@ -0,0 +1 @@ +729cc1d2d73610b8e1a8efec30635dded7c85ece9afdc40e24ed60ddd82c4068
\ No newline at end of file diff --git a/doc/administration/get_started.md b/doc/administration/get_started.md index f5a50c6e9a3..41783d55377 100644 --- a/doc/administration/get_started.md +++ b/doc/administration/get_started.md @@ -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)** diff --git a/doc/administration/sidekiq/sidekiq_memory_killer.md b/doc/administration/sidekiq/sidekiq_memory_killer.md index 6dcc97f2f7a..ff823bb6c56 100644 --- a/doc/administration/sidekiq/sidekiq_memory_killer.md +++ b/doc/administration/sidekiq/sidekiq_memory_killer.md @@ -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`, diff --git a/doc/api/graphql/index.md b/doc/api/graphql/index.md index 37bd9fc38ed..e50e511bbac 100644 --- a/doc/api/graphql/index.md +++ b/doc/api/graphql/index.md @@ -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 --- diff --git a/doc/api/integrations.md b/doc/api/integrations.md index bc6e93199f2..df68a9c77d2 100644 --- a/doc/api/integrations.md +++ b/doc/api/integrations.md @@ -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 diff --git a/doc/api/oauth2.md b/doc/api/oauth2.md index 2f8e030374f..71d387f7dd5 100644 --- a/doc/api/oauth2.md +++ b/doc/api/oauth2.md @@ -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 --- diff --git a/doc/api/rest/index.md b/doc/api/rest/index.md index 76db6273399..1b943f37e3f 100644 --- a/doc/api/rest/index.md +++ b/doc/api/rest/index.md @@ -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 --- diff --git a/doc/api/templates/gitlab_ci_ymls.md b/doc/api/templates/gitlab_ci_ymls.md index 96b2247600d..25667a2e7f7 100644 --- a/doc/api/templates/gitlab_ci_ymls.md +++ b/doc/api/templates/gitlab_ci_ymls.md @@ -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 diff --git a/doc/ci/debugging.md b/doc/ci/debugging.md index 8a60b5f649e..84715cda2f5 100644 --- a/doc/ci/debugging.md +++ b/doc/ci/debugging.md @@ -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 diff --git a/doc/ci/environments/index.md b/doc/ci/environments/index.md index bc79ff0ad7a..c9148e04bf3 100644 --- a/doc/ci/environments/index.md +++ b/doc/ci/environments/index.md @@ -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: diff --git a/doc/ci/examples/end_to_end_testing_webdriverio/index.md b/doc/ci/examples/end_to_end_testing_webdriverio/index.md index 556af355b1a..8872602a027 100644 --- a/doc/ci/examples/end_to_end_testing_webdriverio/index.md +++ b/doc/ci/examples/end_to_end_testing_webdriverio/index.md @@ -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) diff --git a/doc/ci/index.md b/doc/ci/index.md index 0dcae04c47c..69a5394dfb5 100644 --- a/doc/ci/index.md +++ b/doc/ci/index.md @@ -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. diff --git a/doc/ci/jobs/index.md b/doc/ci/jobs/index.md index f4836f93234..3cba8787821 100644 --- a/doc/ci/jobs/index.md +++ b/doc/ci/jobs/index.md @@ -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`. diff --git a/doc/ci/migration/bamboo.md b/doc/ci/migration/bamboo.md index ea9dd666176..b2594e7571e 100644 --- a/doc/ci/migration/bamboo.md +++ b/doc/ci/migration/bamboo.md @@ -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. diff --git a/doc/ci/migration/github_actions.md b/doc/ci/migration/github_actions.md index ec55f129c1e..6afb6cebbff 100644 --- a/doc/ci/migration/github_actions.md +++ b/doc/ci/migration/github_actions.md @@ -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. diff --git a/doc/ci/migration/jenkins.md b/doc/ci/migration/jenkins.md index f430b1ac7b9..961799b9564 100644 --- a/doc/ci/migration/jenkins.md +++ b/doc/ci/migration/jenkins.md @@ -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. diff --git a/doc/ci/pipelines/index.md b/doc/ci/pipelines/index.md index 957e0e0de27..0a4f4c3762b 100644 --- a/doc/ci/pipelines/index.md +++ b/doc/ci/pipelines/index.md @@ -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: diff --git a/doc/ci/pipelines/merge_request_pipelines.md b/doc/ci/pipelines/merge_request_pipelines.md index 0de55d2a488..25358ecd602 100644 --- a/doc/ci/pipelines/merge_request_pipelines.md +++ b/doc/ci/pipelines/merge_request_pipelines.md @@ -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. diff --git a/doc/ci/pipelines/merged_results_pipelines.md b/doc/ci/pipelines/merged_results_pipelines.md index 213a07f49c4..691de7c3f3c 100644 --- a/doc/ci/pipelines/merged_results_pipelines.md +++ b/doc/ci/pipelines/merged_results_pipelines.md @@ -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). diff --git a/doc/ci/pipelines/schedules.md b/doc/ci/pipelines/schedules.md index f83868952f5..9ea635792f3 100644 --- a/doc/ci/pipelines/schedules.md +++ b/doc/ci/pipelines/schedules.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. diff --git a/doc/ci/quick_start/index.md b/doc/ci/quick_start/index.md index 3da4e5ad023..0dc07a36ef5 100644 --- a/doc/ci/quick_start/index.md +++ b/doc/ci/quick_start/index.md @@ -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: diff --git a/doc/ci/quick_start/tutorial.md b/doc/ci/quick_start/tutorial.md index 413eb0f16ee..bb766436379 100644 --- a/doc/ci/quick_start/tutorial.md +++ b/doc/ci/quick_start/tutorial.md @@ -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. diff --git a/doc/ci/testing/test_coverage_visualization.md b/doc/ci/testing/test_coverage_visualization.md index ff55f37e1ff..ecd5c794344 100644 --- a/doc/ci/testing/test_coverage_visualization.md +++ b/doc/ci/testing/test_coverage_visualization.md @@ -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) diff --git a/doc/ci/variables/index.md b/doc/ci/variables/index.md index f42ffc0020d..8e8f9367c08 100644 --- a/doc/ci/variables/index.md +++ b/doc/ci/variables/index.md @@ -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 diff --git a/doc/ci/variables/predefined_variables.md b/doc/ci/variables/predefined_variables.md index 7c62e133958..470982c7d26 100644 --- a/doc/ci/variables/predefined_variables.md +++ b/doc/ci/variables/predefined_variables.md @@ -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. | diff --git a/doc/ci/variables/where_variables_can_be_used.md b/doc/ci/variables/where_variables_can_be_used.md index bddb0947fac..3db59423c62 100644 --- a/doc/ci/variables/where_variables_can_be_used.md +++ b/doc/ci/variables/where_variables_can_be_used.md @@ -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 diff --git a/doc/development/auto_devops.md b/doc/development/auto_devops.md index d5a011e7e55..94dbcea514b 100644 --- a/doc/development/auto_devops.md +++ b/doc/development/auto_devops.md @@ -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) diff --git a/doc/development/cicd/cicd_reference_documentation_guide.md b/doc/development/cicd/cicd_reference_documentation_guide.md index ccd952f586c..3832ba182b6 100644 --- a/doc/development/cicd/cicd_reference_documentation_guide.md +++ b/doc/development/cicd/cicd_reference_documentation_guide.md @@ -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. diff --git a/doc/development/cicd/index.md b/doc/development/cicd/index.md index 693ef6817ee..a8dfdeb30a3 100644 --- a/doc/development/cicd/index.md +++ b/doc/development/cicd/index.md @@ -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 diff --git a/doc/development/cicd/schema.md b/doc/development/cicd/schema.md index e9a0b93b5f3..c24b7d21286 100644 --- a/doc/development/cicd/schema.md +++ b/doc/development/cicd/schema.md @@ -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 diff --git a/doc/development/documentation/styleguide/index.md b/doc/development/documentation/styleguide/index.md index c7783157575..af6a536b2e2 100644 --- a/doc/development/documentation/styleguide/index.md +++ b/doc/development/documentation/styleguide/index.md @@ -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>). diff --git a/doc/development/integrations/secure.md b/doc/development/integrations/secure.md index 34866a6c2d0..66244c2d053 100644 --- a/doc/development/integrations/secure.md +++ b/doc/development/integrations/secure.md @@ -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 diff --git a/doc/development/pipelines/index.md b/doc/development/pipelines/index.md index 5ed15213e3e..91f4ae702ac 100644 --- a/doc/development/pipelines/index.md +++ b/doc/development/pipelines/index.md @@ -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 diff --git a/doc/topics/autodevops/customize.md b/doc/topics/autodevops/customize.md index dc7bc225e39..05535d233e0 100644 --- a/doc/topics/autodevops/customize.md +++ b/doc/topics/autodevops/customize.md @@ -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: diff --git a/doc/topics/autodevops/index.md b/doc/topics/autodevops/index.md index 0413ec32283..58203997698 100644 --- a/doc/topics/autodevops/index.md +++ b/doc/topics/autodevops/index.md @@ -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 diff --git a/doc/update/index.md b/doc/update/index.md index 2043d26a7db..2ad2ee58e9a 100644 --- a/doc/update/index.md +++ b/doc/update/index.md @@ -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 --- diff --git a/doc/user/clusters/management_project.md b/doc/user/clusters/management_project.md index 391541d98af..2c748712fe5 100644 --- a/doc/user/clusters/management_project.md +++ b/doc/user/clusters/management_project.md @@ -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: diff --git a/doc/user/group/clusters/index.md b/doc/user/group/clusters/index.md index ded99f7c936..bbd53c09352 100644 --- a/doc/user/group/clusters/index.md +++ b/doc/user/group/clusters/index.md @@ -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: diff --git a/doc/user/group/value_stream_analytics/index.md b/doc/user/group/value_stream_analytics/index.md index af391de7bcb..7e077c7065c 100644 --- a/doc/user/group/value_stream_analytics/index.md +++ b/doc/user/group/value_stream_analytics/index.md @@ -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. diff --git a/doc/user/markdown.md b/doc/user/markdown.md index aafae095fc3..3ec8ba74c75 100644 --- a/doc/user/markdown.md +++ b/doc/user/markdown.md @@ -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: diff --git a/doc/user/packages/container_registry/build_and_push_images.md b/doc/user/packages/container_registry/build_and_push_images.md index 680aab42544..7187f5ef1e9 100644 --- a/doc/user/packages/container_registry/build_and_push_images.md +++ b/doc/user/packages/container_registry/build_and_push_images.md @@ -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. diff --git a/doc/user/packages/terraform_module_registry/index.md b/doc/user/packages/terraform_module_registry/index.md index fdc832570c0..b4a0597bf60 100644 --- a/doc/user/packages/terraform_module_registry/index.md +++ b/doc/user/packages/terraform_module_registry/index.md @@ -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 diff --git a/doc/user/project/clusters/multiple_kubernetes_clusters.md b/doc/user/project/clusters/multiple_kubernetes_clusters.md index 4fb6ecb1336..9e96438393e 100644 --- a/doc/user/project/clusters/multiple_kubernetes_clusters.md +++ b/doc/user/project/clusters/multiple_kubernetes_clusters.md @@ -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: diff --git a/doc/user/project/merge_requests/approvals/index.md b/doc/user/project/merge_requests/approvals/index.md index 1210ecc4637..bf4e2e8334e 100644 --- a/doc/user/project/merge_requests/approvals/index.md +++ b/doc/user/project/merge_requests/approvals/index.md @@ -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. diff --git a/doc/user/project/pages/getting_started/pages_from_scratch.md b/doc/user/project/pages/getting_started/pages_from_scratch.md index 0695cc20ccd..73583eefdda 100644 --- a/doc/user/project/pages/getting_started/pages_from_scratch.md +++ b/doc/user/project/pages/getting_started/pages_from_scratch.md @@ -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. diff --git a/lib/api/helpers/integrations_helpers.rb b/lib/api/helpers/integrations_helpers.rb index c5bbe0f7c1e..c151227a9ec 100644 --- a/lib/api/helpers/integrations_helpers.rb +++ b/lib/api/helpers/integrations_helpers.rb @@ -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' => [ diff --git a/lib/gitlab/themes.rb b/lib/gitlab/themes.rb index 102104644f7..a26b4d5bbcb 100644 --- a/lib/gitlab/themes.rb +++ b/lib/gitlab/themes.rb @@ -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 diff --git a/locale/gitlab.pot b/locale/gitlab.pot index 6d586672764..5a6bcaa237a 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -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,16 +9557,16 @@ msgstr "" msgid "Campfire token" msgstr "" -msgid "CampfireService|API authentication token from Campfire." +msgid "CampfireService|%{code_open}.campfirenow.com%{code_close} subdomain." msgstr "" -msgid "CampfireService|From the end of the room URL." +msgid "CampfireService|API authentication token from Campfire." msgstr "" -msgid "CampfireService|Send notifications about push events to Campfire chat rooms. %{docs_link}" +msgid "CampfireService|ID portion of the Campfire room URL." msgstr "" -msgid "CampfireService|The %{code_open}.campfirenow.com%{code_close} subdomain." +msgid "CampfireService|Send notifications about push events to Campfire chat rooms. %{docs_link}" msgstr "" msgid "Can be manually deployed to" @@ -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,16 +12058,16 @@ msgstr "" msgid "CodeSuggestionsGAAlert| (Code Suggestions transitions to a paid feature on %{date}.)" msgstr "" -msgid "CodeSuggestionsGAAlert|Contact Sales" +msgid "CodeSuggestionsGAAlert|Code Suggestions is now part of Duo Pro. Free access is ending soon." 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|Contact Sales" msgstr "" -msgid "CodeSuggestionsGAAlert|Dismiss Code Suggestions banner" +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|GitLab Duo Code Suggestions free access is ending soon" +msgid "CodeSuggestionsGAAlert|Dismiss Code Suggestions banner" msgstr "" msgid "CodeSuggestionsGAAlert|Learn more" @@ -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 "" diff --git a/package.json b/package.json index 73ee21b001c..cf7f6a3fd03 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/spec/components/projects/ml/models_index_component_spec.rb b/spec/components/projects/ml/models_index_component_spec.rb index eec5b85fd78..1dab4c3c74a 100644 --- a/spec/components/projects/ml/models_index_component_spec.rb +++ b/spec/components/projects/ml/models_index_component_spec.rb @@ -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 diff --git a/spec/frontend/ml/model_registry/apps/index_ml_models_spec.js b/spec/frontend/ml/model_registry/apps/index_ml_models_spec.js index 7e02d816134..07d8b4b8b3d 100644 --- a/spec/frontend/ml/model_registry/apps/index_ml_models_spec.js +++ b/spec/frontend/ml/model_registry/apps/index_ml_models_spec.js @@ -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', () => { diff --git a/spec/frontend/ml/model_registry/components/actions_dropdown_spec.js b/spec/frontend/ml/model_registry/components/actions_dropdown_spec.js new file mode 100644 index 00000000000..6285d7360c7 --- /dev/null +++ b/spec/frontend/ml/model_registry/components/actions_dropdown_spec.js @@ -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'); + }); +}); diff --git a/spec/lib/gitlab/themes_spec.rb b/spec/lib/gitlab/themes_spec.rb index a41f7d927fe..a5d42945101 100644 --- a/spec/lib/gitlab/themes_spec.rb +++ b/spec/lib/gitlab/themes_spec.rb @@ -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 diff --git a/spec/views/profiles/preferences/show.html.haml_spec.rb b/spec/views/profiles/preferences/show.html.haml_spec.rb index c20b4424129..c68c48a0828 100644 --- a/spec/views/profiles/preferences/show.html.haml_spec.rb +++ b/spec/views/profiles/preferences/show.html.haml_spec.rb @@ -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 diff --git a/yarn.lock b/yarn.lock index 257e0631a9b..d912ac03258 100644 --- a/yarn.lock +++ b/yarn.lock @@ -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" |