Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
6d08f67e10
commit
101d32c3b8
|
|
@ -414,7 +414,6 @@ Gitlab/StrongMemoizeAttr:
|
|||
- 'ee/lib/gitlab/auth/smartcard/certificate.rb'
|
||||
- 'ee/lib/gitlab/ci/minutes/cached_quota.rb'
|
||||
- 'ee/lib/gitlab/ci/minutes/gitlab_contribution_cost_factor.rb'
|
||||
- 'ee/lib/gitlab/ci/minutes/runners_availability.rb'
|
||||
- 'ee/lib/gitlab/ci/parsers/security/container_scanning.rb'
|
||||
- 'ee/lib/gitlab/ci/project_config/compliance.rb'
|
||||
- 'ee/lib/gitlab/ci/reports/license_scanning/reports_comparer.rb'
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ export default {
|
|||
:is="component"
|
||||
:aria-label="ariaLabel"
|
||||
:href="href"
|
||||
class="counter gl-display-block gl-flex-grow-1 gl-text-center gl-py-3 gl-rounded-base gl-border-none gl-inset-border-1-gray-a-08 gl-line-height-1 gl-font-sm gl-hover-text-decoration-none gl-focus--focus"
|
||||
class="user-bar-button gl-display-block gl-flex-grow-1 gl-text-center gl-py-3 gl-rounded-base gl-border-none gl-line-height-1 gl-font-sm gl-hover-text-decoration-none"
|
||||
>
|
||||
<gl-icon aria-hidden="true" :name="icon" />
|
||||
<span v-if="count" aria-hidden="true" class="gl-ml-1">{{ formattedCount }}</span>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<script>
|
||||
import { kebabCase } from 'lodash';
|
||||
import { GlCollapse, GlIcon } from '@gitlab/ui';
|
||||
import { NAV_ITEM_LINK_ACTIVE_CLASS } from '../constants';
|
||||
import NavItem from './nav_item.vue';
|
||||
import FlyoutMenu from './flyout_menu.vue';
|
||||
|
||||
|
|
@ -61,9 +62,7 @@ export default {
|
|||
return this.isExpanded ? 'chevron-up' : 'chevron-down';
|
||||
},
|
||||
computedLinkClasses() {
|
||||
return {
|
||||
'gl-bg-t-gray-a-08': this.isActive,
|
||||
};
|
||||
return this.isActive ? NAV_ITEM_LINK_ACTIVE_CLASS : null;
|
||||
},
|
||||
isActive() {
|
||||
return !this.isExpanded && this.item.is_active;
|
||||
|
|
@ -109,7 +108,7 @@ export default {
|
|||
<hr v-if="separated" aria-hidden="true" class="gl-mx-4 gl-my-2" />
|
||||
<button
|
||||
:id="`menu-section-button-${itemId}`"
|
||||
class="gl-rounded-base gl-relative gl-display-flex gl-align-items-center gl-min-h-7 gl-gap-3 gl-mb-2 gl-py-2 gl-px-3 gl-text-black-normal! gl-hover-bg-t-gray-a-08 gl-focus-bg-t-gray-a-08 gl-text-decoration-none! gl-appearance-none gl-border-0 gl-bg-transparent gl-text-left gl-w-full gl-focus--focus"
|
||||
class="super-sidebar-nav-item gl-rounded-base gl-relative gl-display-flex gl-align-items-center gl-min-h-7 gl-gap-3 gl-mb-2 gl-py-2 gl-px-3 gl-text-black-normal! gl-text-decoration-none! gl-appearance-none gl-border-0 gl-bg-transparent gl-text-left gl-w-full gl-focus--focus"
|
||||
:class="computedLinkClasses"
|
||||
data-testid="menu-section-button"
|
||||
:data-qa-section-name="item.title"
|
||||
|
|
@ -126,7 +125,11 @@ export default {
|
|||
></span>
|
||||
<span class="gl-flex-shrink-0 gl-w-6 gl-display-flex">
|
||||
<slot name="icon">
|
||||
<gl-icon v-if="item.icon" :name="item.icon" class="gl-m-auto item-icon" />
|
||||
<gl-icon
|
||||
v-if="item.icon"
|
||||
:name="item.icon"
|
||||
class="super-sidebar-nav-item-icon gl-m-auto"
|
||||
/>
|
||||
</slot>
|
||||
</span>
|
||||
|
||||
|
|
|
|||
|
|
@ -223,7 +223,7 @@ export default {
|
|||
:is="navItemLinkComponent"
|
||||
#default="{ isActive }"
|
||||
v-bind="linkProps"
|
||||
class="gl-relative gl-display-flex gl-align-items-center gl-min-h-7 gl-gap-3 gl-mb-1 gl-py-2 gl-text-black-normal! gl-hover-bg-t-gray-a-08 gl-focus-bg-t-gray-a-08 gl-text-decoration-none! gl-focus--focus show-on-focus-or-hover--control hide-on-focus-or-hover--control"
|
||||
class="super-sidebar-nav-item gl-relative gl-display-flex gl-align-items-center gl-min-h-7 gl-gap-3 gl-mb-1 gl-py-2 gl-text-black-normal! gl-text-decoration-none! gl-focus--focus show-on-focus-or-hover--control hide-on-focus-or-hover--control"
|
||||
:class="computedLinkClasses"
|
||||
data-testid="nav-item-link"
|
||||
>
|
||||
|
|
@ -236,7 +236,11 @@ export default {
|
|||
></div>
|
||||
<div v-if="!isFlyout" class="gl-flex-shrink-0 gl-w-6 gl-display-flex">
|
||||
<slot name="icon">
|
||||
<gl-icon v-if="item.icon" :name="item.icon" class="gl-m-auto item-icon" />
|
||||
<gl-icon
|
||||
v-if="item.icon"
|
||||
:name="item.icon"
|
||||
class="super-sidebar-nav-item-icon gl-m-auto"
|
||||
/>
|
||||
<gl-icon
|
||||
v-else-if="isInPinnedSection"
|
||||
name="grip"
|
||||
|
|
@ -264,7 +268,6 @@ export default {
|
|||
v-if="hasPill"
|
||||
size="sm"
|
||||
variant="neutral"
|
||||
class="gl-bg-t-gray-a-08!"
|
||||
:class="{
|
||||
'hide-on-focus-or-hover--target transition-opacity-on-hover--target': isPinnable,
|
||||
}"
|
||||
|
|
|
|||
|
|
@ -204,7 +204,7 @@ export default {
|
|||
<user-bar ref="userBar" :has-collapse-button="!showOverlay" :sidebar-data="sidebarData" />
|
||||
<div v-if="showTrialStatusWidget" class="gl-px-2 gl-py-2">
|
||||
<trial-status-widget
|
||||
class="gl-rounded-base gl-relative gl-display-flex gl-align-items-center gl-mb-1 gl-px-3 gl-line-height-normal gl-text-black-normal! gl-hover-bg-t-gray-a-08 gl-focus-bg-t-gray-a-08 gl-text-decoration-none! gl-py-3"
|
||||
class="super-sidebar-nav-item gl-rounded-base gl-relative gl-display-flex gl-align-items-center gl-mb-1 gl-px-3 gl-line-height-normal gl-text-black-normal! gl-text-decoration-none! gl-py-3"
|
||||
/>
|
||||
<trial-status-popover />
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -200,7 +200,7 @@ export default {
|
|||
id="super-sidebar-search"
|
||||
v-gl-tooltip.bottom.html="searchTooltip"
|
||||
v-gl-modal="$options.SEARCH_MODAL_ID"
|
||||
class="counter gl-display-block gl-py-3 gl-bg-gray-10 gl-rounded-base gl-text-gray-900 gl-border-none gl-inset-border-1-gray-a-08 gl-line-height-1 gl-focus--focus gl-w-full"
|
||||
class="user-bar-button gl-display-block gl-py-3 gl-bg-gray-10 gl-rounded-base gl-text-gray-900 gl-border-none gl-line-height-1 gl-w-full"
|
||||
data-testid="super-sidebar-search-button"
|
||||
>
|
||||
<gl-icon name="search" />
|
||||
|
|
|
|||
|
|
@ -248,7 +248,7 @@ export default {
|
|||
@shown="onShow"
|
||||
>
|
||||
<template #toggle>
|
||||
<gl-button category="tertiary" class="user-bar-item btn-with-notification">
|
||||
<gl-button category="tertiary" class="user-bar-dropdown-toggle btn-with-notification">
|
||||
<span class="gl-sr-only">{{ toggleText }}</span>
|
||||
<gl-avatar
|
||||
:size="24"
|
||||
|
|
|
|||
|
|
@ -54,7 +54,7 @@ export const SIDEBAR_COOKIE_EXPIRATION = 365 * 10;
|
|||
|
||||
export const DROPDOWN_Y_OFFSET = 4;
|
||||
|
||||
export const NAV_ITEM_LINK_ACTIVE_CLASS = 'gl-bg-t-gray-a-08';
|
||||
export const NAV_ITEM_LINK_ACTIVE_CLASS = 'super-sidebar-nav-item-current';
|
||||
|
||||
export const IMPERSONATING_OFFSET = 34;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,12 +1,3 @@
|
|||
@mixin active-toggle($background-color: var(--super-sidebar-user-bar-button-hover-bg)) {
|
||||
background-color: $background-color !important;
|
||||
mix-blend-mode: multiply;
|
||||
|
||||
.gl-dark & {
|
||||
mix-blend-mode: screen;
|
||||
}
|
||||
}
|
||||
|
||||
$super-sidebar-transition-duration: $gl-transition-duration-medium;
|
||||
$super-sidebar-transition-hint-duration: $super-sidebar-transition-duration / 4;
|
||||
|
||||
|
|
@ -29,17 +20,44 @@ $super-sidebar-transition-hint-duration: $super-sidebar-transition-duration / 4;
|
|||
}
|
||||
|
||||
.super-sidebar {
|
||||
--super-sidebar-bg: var(--gray-10, #{$gray-10});
|
||||
--super-sidebar-primary: var(--blue-500, #{$blue-500});
|
||||
--super-sidebar-notification-dot: var(--blue-500, #{$blue-500});
|
||||
--super-sidebar-bg: #{$gray-10};
|
||||
--super-sidebar-border-color: #{$t-gray-a-08};
|
||||
--super-sidebar-primary: #{$blue-500};
|
||||
--super-sidebar-notification-dot: #{$blue-500};
|
||||
--super-sidebar-user-bar-bg: #{$t-gray-a-04};
|
||||
--super-sidebar-user-bar-button-bg: var(--gray-10, #{$gray-10});
|
||||
--super-sidebar-user-bar-button-hover-bg: var(--gray-50, #{$gray-50});
|
||||
--super-sidebar-user-bar-button-color: var(--gray-900, #{$gray-900});
|
||||
--super-sidebar-user-bar-button-hover-color: var(--gray-900, #{$gray-900});
|
||||
// Separate values provided to use `---gray-600` in dark mode
|
||||
--super-sidebar-user-bar-button-icon-color: var(--gray-600, #{$gray-500});
|
||||
--super-sidebar-user-bar-button-icon-hover-color: var(--gray-700, #{$gray-700});
|
||||
|
||||
--super-sidebar-user-bar-button-bg: #{$gray-10};
|
||||
--super-sidebar-user-bar-button-color: #{$gray-900};
|
||||
--super-sidebar-user-bar-button-border-color: #{$t-gray-a-08};
|
||||
--super-sidebar-user-bar-button-hover-bg: #{$t-gray-a-08};
|
||||
--super-sidebar-user-bar-button-hover-color: #{$gray-900};
|
||||
--super-sidebar-user-bar-button-active-bg: #{$t-gray-a-16};
|
||||
|
||||
--super-sidebar-user-bar-button-icon-color: #{$gray-500};
|
||||
--super-sidebar-user-bar-button-icon-hover-color: #{$gray-700};
|
||||
--super-sidebar-user-bar-button-icon-mix-blend-mode: normal;
|
||||
|
||||
--super-sidebar-nav-item-hover-bg: #{$t-gray-a-08};
|
||||
--super-sidebar-nav-item-active-bg: #{$t-gray-a-16};
|
||||
--super-sidebar-nav-item-current-bg: #{$t-gray-a-08};
|
||||
--super-sidebar-nav-item-icon-color: #{$gray-500};
|
||||
|
||||
.gl-dark & {
|
||||
--super-sidebar-border-color: #{$t-white-a-08};
|
||||
--super-sidebar-user-bar-bg: #{$t-white-a-04};
|
||||
|
||||
--super-sidebar-user-bar-button-bg: #{$gray-10};
|
||||
--super-sidebar-user-bar-button-border-color: #{$t-white-a-08};
|
||||
--super-sidebar-user-bar-button-hover-bg: #{$t-white-a-16};
|
||||
--super-sidebar-user-bar-button-active-bg: #{$t-white-a-24};
|
||||
|
||||
--super-sidebar-user-bar-button-icon-color: #{$gray-600};
|
||||
|
||||
--super-sidebar-nav-item-hover-bg: #{$t-white-a-08};
|
||||
--super-sidebar-nav-item-active-bg: #{$t-white-a-16};
|
||||
--super-sidebar-nav-item-current-bg: #{$t-white-a-08};
|
||||
--super-sidebar-nav-item-icon-color: #{$gray-600};
|
||||
}
|
||||
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
|
|
@ -48,7 +66,7 @@ $super-sidebar-transition-hint-duration: $super-sidebar-transition-duration / 4;
|
|||
bottom: $calc-application-footer-height;
|
||||
left: 0;
|
||||
background-color: var(--super-sidebar-bg);
|
||||
border-right: 1px solid $t-gray-a-08;
|
||||
border-right: 1px solid var(--super-sidebar-border-color);
|
||||
transform: translate3d(0, 0, 0);
|
||||
width: $super-sidebar-width;
|
||||
z-index: $super-sidebar-z-index;
|
||||
|
|
@ -69,85 +87,84 @@ $super-sidebar-transition-hint-duration: $super-sidebar-transition-duration / 4;
|
|||
.user-bar {
|
||||
background-color: var(--super-sidebar-user-bar-bg);
|
||||
|
||||
.user-bar-item {
|
||||
@include gl-rounded-base;
|
||||
.user-bar-dropdown-toggle {
|
||||
@include gl-p-2;
|
||||
@include gl-bg-transparent;
|
||||
@include gl-border-none;
|
||||
|
||||
&[aria-expanded='true'] {
|
||||
background-color: var(--super-sidebar-user-bar-button-hover-bg);
|
||||
}
|
||||
}
|
||||
|
||||
.brand-logo,
|
||||
.btn-default-tertiary,
|
||||
.user-bar-button {
|
||||
color: var(--super-sidebar-user-bar-button-color);
|
||||
|
||||
.gl-icon {
|
||||
color: var(--super-sidebar-user-bar-button-icon-color) !important;
|
||||
mix-blend-mode: var(--super-sidebar-user-bar-button-icon-mix-blend-mode);
|
||||
}
|
||||
|
||||
&:active,
|
||||
&:hover,
|
||||
&:focus {
|
||||
background-color: var(--super-sidebar-user-bar-button-hover-bg);
|
||||
color: var(--super-sidebar-user-bar-button-hover-color);
|
||||
|
||||
.gl-icon {
|
||||
color: var(--super-sidebar-user-bar-button-icon-hover-color);
|
||||
}
|
||||
}
|
||||
|
||||
&:active {
|
||||
background-color: var(--super-sidebar-user-bar-button-active-bg) !important;
|
||||
}
|
||||
|
||||
&:focus,
|
||||
&:active {
|
||||
@include gl-focus;
|
||||
}
|
||||
}
|
||||
|
||||
.user-bar-item {
|
||||
&:hover,
|
||||
&:focus,
|
||||
&:active {
|
||||
@include active-toggle;
|
||||
}
|
||||
.btn-default-tertiary {
|
||||
mix-blend-mode: normal;
|
||||
}
|
||||
|
||||
.brand-logo {
|
||||
&:hover,
|
||||
&:focus {
|
||||
.user-bar-button {
|
||||
background-color: var(--super-sidebar-user-bar-button-bg);
|
||||
box-shadow: inset 0 0 0 $gl-border-size-1 var(--super-sidebar-user-bar-button-border-color);
|
||||
|
||||
&[aria-expanded='true'] {
|
||||
background-color: var(--super-sidebar-user-bar-button-hover-bg);
|
||||
mix-blend-mode: multiply;
|
||||
|
||||
.gl-dark & {
|
||||
mix-blend-mode: screen;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.btn-default-tertiary,
|
||||
.counter {
|
||||
color: var(--super-sidebar-user-bar-button-color);
|
||||
|
||||
.gl-icon {
|
||||
color: var(--super-sidebar-user-bar-button-icon-color) !important;
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:focus {
|
||||
background-color: var(--super-sidebar-user-bar-button-hover-bg) !important;
|
||||
color: var(--super-sidebar-user-bar-button-hover-color);
|
||||
}
|
||||
}
|
||||
|
||||
.counter {
|
||||
background-color: var(--super-sidebar-user-bar-button-bg);
|
||||
|
||||
&:hover,
|
||||
&:focus,
|
||||
&[aria-expanded='true'] {
|
||||
background-color: var(--super-sidebar-user-bar-button-hover-bg);
|
||||
border-color: transparent;
|
||||
mix-blend-mode: multiply;
|
||||
|
||||
.gl-icon {
|
||||
color: var(--super-sidebar-user-bar-button-icon-hover-color);
|
||||
}
|
||||
|
||||
.gl-dark & {
|
||||
mix-blend-mode: screen;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&[aria-expanded='true'] {
|
||||
box-shadow: none;
|
||||
}
|
||||
.gl-new-dropdown-toggle[aria-expanded='true'] {
|
||||
background-color: var(--super-sidebar-user-bar-button-hover-bg);
|
||||
color: var(--super-sidebar-user-bar-button-hover-color);
|
||||
}
|
||||
}
|
||||
|
||||
.item-icon {
|
||||
color: $gray-500;
|
||||
|
||||
.gl-dark & {
|
||||
color: $gray-600;
|
||||
.super-sidebar-nav-item {
|
||||
&:hover,
|
||||
&:focus {
|
||||
background-color: var(--super-sidebar-nav-item-hover-bg);
|
||||
}
|
||||
|
||||
&.super-sidebar-nav-item-current {
|
||||
background-color: var(--super-sidebar-nav-item-current-bg);
|
||||
}
|
||||
|
||||
&:active,
|
||||
&:focus:active {
|
||||
background-color: var(--super-sidebar-nav-item-active-bg);
|
||||
}
|
||||
}
|
||||
|
||||
.super-sidebar-nav-item-icon {
|
||||
color: var(--super-sidebar-nav-item-icon-color);
|
||||
}
|
||||
|
||||
.active-indicator {
|
||||
|
|
@ -173,22 +190,8 @@ $super-sidebar-transition-hint-duration: $super-sidebar-transition-duration / 4;
|
|||
}
|
||||
}
|
||||
|
||||
.gl-new-dropdown-toggle[aria-expanded='true'] {
|
||||
@include active-toggle;
|
||||
}
|
||||
|
||||
.gl-new-dropdown-custom-toggle {
|
||||
.btn-with-notification {
|
||||
mix-blend-mode: unset; // Our tertiary buttons otherwise use another mix-blend mode, making border-color semi-transparent.
|
||||
}
|
||||
|
||||
[aria-expanded='true'] {
|
||||
@include active-toggle;
|
||||
}
|
||||
}
|
||||
|
||||
.super-sidebar-help-center-toggle[aria-expanded='true'] {
|
||||
@include active-toggle($gray-50);
|
||||
background-color: $gray-50 !important;
|
||||
}
|
||||
|
||||
#trial-status-sidebar-widget:hover {
|
||||
|
|
@ -365,7 +368,7 @@ $super-sidebar-transition-hint-duration: $super-sidebar-transition-duration / 4;
|
|||
&:hover,
|
||||
&:focus-within {
|
||||
.show-on-focus-or-hover--control {
|
||||
@include gl-bg-t-gray-a-08;
|
||||
background-color: var(--super-sidebar-nav-item-hover-bg);
|
||||
}
|
||||
|
||||
.show-on-focus-or-hover--target {
|
||||
|
|
|
|||
|
|
@ -101,12 +101,20 @@ $gray-dark: darken($gray-light, $darken-dark-factor) !default;
|
|||
$gray-darker: $gray-50 !default;
|
||||
$gray-darkest: $gray-200 !default;
|
||||
|
||||
$t-gray-a-02: rgba($gray-950, 0.02) !default;
|
||||
$t-gray-a-04: rgba($gray-950, 0.04) !default;
|
||||
$t-gray-a-06: rgba($gray-950, 0.06) !default;
|
||||
$t-gray-a-08: rgba($gray-950, 0.08) !default;
|
||||
$t-gray-a-16: rgba($gray-950, 0.16) !default;
|
||||
$t-gray-a-24: rgba($gray-950, 0.24) !default;
|
||||
$t-white-a-02: rgba(255, 255, 255, 0.02) !default;
|
||||
$t-white-a-04: rgba(255, 255, 255, 0.04) !default;
|
||||
$t-white-a-06: rgba(255, 255, 255, 0.06) !default;
|
||||
$t-white-a-08: rgba(255, 255, 255, 0.08) !default;
|
||||
$t-white-a-16: rgba(255, 255, 255, 0.16) !default;
|
||||
$t-white-a-24: rgba(255, 255, 255, 0.24) !default;
|
||||
$t-white-a-36: rgba(255, 255, 255, 0.36) !default;
|
||||
|
||||
$t-gray-a-02: rgba(31, 30, 36, 0.02) !default;
|
||||
$t-gray-a-04: rgba(31, 30, 36, 0.04) !default;
|
||||
$t-gray-a-06: rgba(31, 30, 36, 0.06) !default;
|
||||
$t-gray-a-08: rgba(31, 30, 36, 0.08) !default;
|
||||
$t-gray-a-16: rgba(31, 30, 36, 0.16) !default;
|
||||
$t-gray-a-24: rgba(31, 30, 36, 0.24) !default;
|
||||
|
||||
$white-dark: darken($gray-50, 2) !default;
|
||||
|
||||
|
|
|
|||
|
|
@ -8,11 +8,9 @@ $gray-dark: darken($gray-100, 2);
|
|||
$gray-darker: darken($gray-200, 2);
|
||||
$gray-darkest: $gray-700;
|
||||
|
||||
// Some of the other $t-gray-a variables are used
|
||||
// for borders and some other places, so we cannot override
|
||||
// them. These are used only for box shadows so we can
|
||||
$t-gray-a-16: rgba($gray-10, 0.16);
|
||||
$t-gray-a-24: rgba($gray-10, 0.24);
|
||||
// Used for border and background in a couple instances where inverting between modes is desirable
|
||||
// once migrated to suitable color values this can be removed
|
||||
$t-gray-a-08: rgba($gray-950, 0.08);
|
||||
|
||||
$black-normal: $gray-900;
|
||||
$white-dark: $gray-100;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
.page-with-super-sidebar {
|
||||
@include gitlab-theme-super-sidebar(
|
||||
$theme-blue-50,
|
||||
$theme-blue-200,
|
||||
$theme-blue-100,
|
||||
$theme-blue-900,
|
||||
$theme-blue-900,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
.page-with-super-sidebar {
|
||||
@include gitlab-theme-super-sidebar(
|
||||
$theme-green-50,
|
||||
$theme-green-200,
|
||||
$theme-green-100,
|
||||
$theme-green-900,
|
||||
$theme-green-900,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -11,22 +11,19 @@
|
|||
.super-sidebar {
|
||||
--super-sidebar-bg: #{mix(white, $theme-color-lightest, 50%)};
|
||||
--super-sidebar-user-bar-bg: #{$theme-color};
|
||||
--super-sidebar-user-bar-button-bg: rgba(255, 255, 255, 0.16);
|
||||
--super-sidebar-user-bar-button-hover-bg: rgba(255, 255, 255, 0.24);
|
||||
--super-sidebar-user-bar-button-color: #{$theme-color-lightest};
|
||||
--super-sidebar-user-bar-button-hover-color: #{$white};
|
||||
--super-sidebar-user-bar-button-icon-color: #{$theme-color-light};
|
||||
--super-sidebar-user-bar-button-icon-hover-color: #{$theme-color-light};
|
||||
--super-sidebar-primary: #{$theme-color};
|
||||
--super-sidebar-notification-dot: #{$theme-color-darkest};
|
||||
|
||||
.user-bar {
|
||||
.brand-logo,
|
||||
.btn-default-tertiary,
|
||||
.counter {
|
||||
mix-blend-mode: normal;
|
||||
}
|
||||
}
|
||||
--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;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
.page-with-super-sidebar {
|
||||
@include gitlab-theme-super-sidebar(
|
||||
$theme-indigo-50,
|
||||
$theme-indigo-200,
|
||||
$theme-indigo-100,
|
||||
$theme-indigo-900,
|
||||
$theme-indigo-900,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
.page-with-super-sidebar {
|
||||
@include gitlab-theme-super-sidebar(
|
||||
$theme-light-blue-50,
|
||||
$theme-light-blue-200,
|
||||
$theme-light-blue-100,
|
||||
$theme-light-blue-700,
|
||||
$theme-light-blue-900,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
.page-with-super-sidebar {
|
||||
@include gitlab-theme-super-sidebar(
|
||||
$theme-green-50,
|
||||
$theme-green-200,
|
||||
$theme-green-100,
|
||||
$theme-green-700,
|
||||
$theme-green-900,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
.page-with-super-sidebar {
|
||||
@include gitlab-theme-super-sidebar(
|
||||
$theme-indigo-50,
|
||||
$theme-indigo-200,
|
||||
$theme-indigo-100,
|
||||
$theme-indigo-700,
|
||||
$theme-indigo-900,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
.page-with-super-sidebar {
|
||||
@include gitlab-theme-super-sidebar(
|
||||
$theme-light-red-50,
|
||||
$theme-light-red-200,
|
||||
$theme-light-red-100,
|
||||
$theme-light-red-700,
|
||||
$theme-light-red-900,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
.page-with-super-sidebar {
|
||||
@include gitlab-theme-super-sidebar(
|
||||
$theme-red-50,
|
||||
$theme-red-200,
|
||||
$theme-red-100,
|
||||
$theme-red-900,
|
||||
$theme-red-900,
|
||||
);
|
||||
|
|
|
|||
|
|
@ -178,7 +178,7 @@ module Types
|
|||
field :twitter,
|
||||
type: ::GraphQL::Types::String,
|
||||
null: true,
|
||||
description: 'Twitter username of the user.'
|
||||
description: 'X (formerly Twitter) username of the user.'
|
||||
|
||||
field :discord,
|
||||
type: ::GraphQL::Types::String,
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@
|
|||
= f.text_field :linkedin, class: 'form-control gl-form-input gl-form-input-lg'
|
||||
|
||||
.form-group.gl-form-group{ role: 'group' }
|
||||
= f.label :twitter, _('Twitter'), class: 'gl-display-block col-form-label'
|
||||
= f.label :twitter, _('X (formerly Twitter)'), class: 'gl-display-block col-form-label'
|
||||
= f.text_field :twitter, class: 'form-control gl-form-input gl-form-input-lg'
|
||||
|
||||
.form-group.gl-form-group{ role: 'group' }
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
%strong= link_to user.linkedin, "https://www.linkedin.com/in/#{user.linkedin}"
|
||||
- unless user.twitter.blank?
|
||||
%li
|
||||
%span.light= _('Twitter:')
|
||||
%span.light= _('X (formerly Twitter):')
|
||||
%strong= link_to user.twitter, "https://twitter.com/#{user.twitter}"
|
||||
- unless user.website_url.blank?
|
||||
%li
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
%div
|
||||
= link_to _('Blog'), 'https://about.gitlab.com/blog/', style: "color:#3777b0;text-decoration:none;"
|
||||
·
|
||||
= link_to _('Twitter'), 'https://twitter.com/gitlab', style: "color:#3777b0;text-decoration:none;"
|
||||
= link_to _('X (formerly Twitter)'), 'https://twitter.com/gitlab', style: "color:#3777b0;text-decoration:none;"
|
||||
·
|
||||
= link_to _('Facebook'), 'https://www.facebook.com/gitlab/', style: "color:#3777b0;text-decoration:none;"
|
||||
·
|
||||
|
|
|
|||
|
|
@ -103,7 +103,7 @@
|
|||
%small.form-text.text-gl-muted
|
||||
= s_("Profiles|Your LinkedIn profile name from linkedin.com/in/profilename")
|
||||
.form-group.gl-form-group
|
||||
= f.label :twitter
|
||||
= f.label :twitter, _('X (formerly Twitter)')
|
||||
= f.text_field :twitter, class: 'gl-form-input form-control gl-md-form-input-lg', placeholder: s_("Profiles|@username")
|
||||
.form-group.gl-form-group
|
||||
- external_accounts_help_url = help_page_path('user/profile/index', anchor: 'add-external-accounts-to-your-user-profile-page')
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@
|
|||
= sprite_icon('linkedin', css_class: 'linkedin-icon')
|
||||
- if @user.twitter.present?
|
||||
= render 'middle_dot_divider', breakpoint: 'sm' do
|
||||
= link_to twitter_url(@user), class: 'gl-hover-text-decoration-none', title: "Twitter", target: '_blank', rel: 'noopener noreferrer nofollow' do
|
||||
= link_to twitter_url(@user), class: 'gl-hover-text-decoration-none', title: _("X (formerly Twitter)"), target: '_blank', rel: 'noopener noreferrer nofollow' do
|
||||
= sprite_icon('twitter', css_class: 'twitter-icon')
|
||||
- if @user.discord.present?
|
||||
= render 'middle_dot_divider', breakpoint: 'sm' do
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ class FinalizeBackfillCodeSuggestionsNamespaceSettings < Gitlab::Database::Migra
|
|||
|
||||
disable_ddl_transaction!
|
||||
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main_cell
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
|
||||
def up
|
||||
ensure_batched_background_migration_is_finished(
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ class FinalizeBackfillDesignManagementRepositories < Gitlab::Database::Migration
|
|||
|
||||
disable_ddl_transaction!
|
||||
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main_cell
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
|
||||
def up
|
||||
ensure_batched_background_migration_is_finished(
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ class FinalizeBackfillProjectStatisticsStorageSizeWithoutPipelineArtifactsSi < G
|
|||
|
||||
disable_ddl_transaction!
|
||||
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main_cell
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
|
||||
def up
|
||||
ensure_batched_background_migration_is_finished(
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ class FinalizeDeleteOrphanedTransferredProjectApprovalRules < Gitlab::Database::
|
|||
|
||||
disable_ddl_transaction!
|
||||
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main_cell
|
||||
restrict_gitlab_migration gitlab_schema: :gitlab_main
|
||||
|
||||
def up
|
||||
ensure_batched_background_migration_is_finished(
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ X-Gitlab-Event-Streaming-Token: <DESTINATION_TOKEN>
|
|||
X-Gitlab-Audit-Event-Type: repository_git_operation
|
||||
```
|
||||
|
||||
### Example payloads for SSH events
|
||||
### Example payloads for Git over SSH events
|
||||
|
||||
Fetch:
|
||||
|
||||
|
|
@ -106,7 +106,7 @@ Push:
|
|||
}
|
||||
```
|
||||
|
||||
### Example payloads for SSH events with Deploy Key
|
||||
### Example payloads for Git over SSH events with Deploy Key
|
||||
|
||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/363876) in GitLab 15.3.
|
||||
|
||||
|
|
@ -142,7 +142,7 @@ Fetch:
|
|||
}
|
||||
```
|
||||
|
||||
### Example payloads for HTTP and HTTPS events
|
||||
### Example payloads for Git over HTTP and HTTPS events
|
||||
|
||||
Fetch:
|
||||
|
||||
|
|
@ -208,7 +208,7 @@ Push:
|
|||
}
|
||||
```
|
||||
|
||||
### Example payloads for HTTP and HTTPS events with Deploy Token
|
||||
### Example payloads for Git over HTTP and HTTPS events with Deploy Token
|
||||
|
||||
Fetch:
|
||||
|
||||
|
|
|
|||
|
|
@ -14052,7 +14052,7 @@ A user with add-on data.
|
|||
| <a id="addonusersavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. (see [Connections](#connections)) |
|
||||
| <a id="addonuserstate"></a>`state` | [`UserState!`](#userstate) | State of the user. |
|
||||
| <a id="addonuserstatus"></a>`status` | [`UserStatus`](#userstatus) | User status. |
|
||||
| <a id="addonusertwitter"></a>`twitter` | [`String`](#string) | Twitter username of the user. |
|
||||
| <a id="addonusertwitter"></a>`twitter` | [`String`](#string) | X (formerly Twitter) username of the user. |
|
||||
| <a id="addonuseruserachievements"></a>`userAchievements` **{warning-solid}** | [`UserAchievementConnection`](#userachievementconnection) | **Introduced** in 15.10. This feature is an Experiment. It can be changed or removed at any time. Achievements for the user. Only returns for namespaces where the `achievements` feature flag is enabled. |
|
||||
| <a id="addonuseruserpermissions"></a>`userPermissions` | [`UserPermissions!`](#userpermissions) | Permissions for the current user on the resource. |
|
||||
| <a id="addonuserusername"></a>`username` | [`String!`](#string) | Username of the user. Unique within this instance of GitLab. |
|
||||
|
|
@ -14740,7 +14740,7 @@ Core representation of a GitLab user.
|
|||
| <a id="autocompletedusersavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. (see [Connections](#connections)) |
|
||||
| <a id="autocompleteduserstate"></a>`state` | [`UserState!`](#userstate) | State of the user. |
|
||||
| <a id="autocompleteduserstatus"></a>`status` | [`UserStatus`](#userstatus) | User status. |
|
||||
| <a id="autocompletedusertwitter"></a>`twitter` | [`String`](#string) | Twitter username of the user. |
|
||||
| <a id="autocompletedusertwitter"></a>`twitter` | [`String`](#string) | X (formerly Twitter) username of the user. |
|
||||
| <a id="autocompleteduseruserachievements"></a>`userAchievements` **{warning-solid}** | [`UserAchievementConnection`](#userachievementconnection) | **Introduced** in 15.10. This feature is an Experiment. It can be changed or removed at any time. Achievements for the user. Only returns for namespaces where the `achievements` feature flag is enabled. |
|
||||
| <a id="autocompleteduseruserpermissions"></a>`userPermissions` | [`UserPermissions!`](#userpermissions) | Permissions for the current user on the resource. |
|
||||
| <a id="autocompleteduserusername"></a>`username` | [`String!`](#string) | Username of the user. Unique within this instance of GitLab. |
|
||||
|
|
@ -16766,7 +16766,7 @@ The currently authenticated GitLab user.
|
|||
| <a id="currentusersavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. (see [Connections](#connections)) |
|
||||
| <a id="currentuserstate"></a>`state` | [`UserState!`](#userstate) | State of the user. |
|
||||
| <a id="currentuserstatus"></a>`status` | [`UserStatus`](#userstatus) | User status. |
|
||||
| <a id="currentusertwitter"></a>`twitter` | [`String`](#string) | Twitter username of the user. |
|
||||
| <a id="currentusertwitter"></a>`twitter` | [`String`](#string) | X (formerly Twitter) username of the user. |
|
||||
| <a id="currentuseruserachievements"></a>`userAchievements` **{warning-solid}** | [`UserAchievementConnection`](#userachievementconnection) | **Introduced** in 15.10. This feature is an Experiment. It can be changed or removed at any time. Achievements for the user. Only returns for namespaces where the `achievements` feature flag is enabled. |
|
||||
| <a id="currentuseruserpermissions"></a>`userPermissions` | [`UserPermissions!`](#userpermissions) | Permissions for the current user on the resource. |
|
||||
| <a id="currentuserusername"></a>`username` | [`String!`](#string) | Username of the user. Unique within this instance of GitLab. |
|
||||
|
|
@ -21625,7 +21625,7 @@ A user assigned to a merge request.
|
|||
| <a id="mergerequestassigneesavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. (see [Connections](#connections)) |
|
||||
| <a id="mergerequestassigneestate"></a>`state` | [`UserState!`](#userstate) | State of the user. |
|
||||
| <a id="mergerequestassigneestatus"></a>`status` | [`UserStatus`](#userstatus) | User status. |
|
||||
| <a id="mergerequestassigneetwitter"></a>`twitter` | [`String`](#string) | Twitter username of the user. |
|
||||
| <a id="mergerequestassigneetwitter"></a>`twitter` | [`String`](#string) | X (formerly Twitter) username of the user. |
|
||||
| <a id="mergerequestassigneeuserachievements"></a>`userAchievements` **{warning-solid}** | [`UserAchievementConnection`](#userachievementconnection) | **Introduced** in 15.10. This feature is an Experiment. It can be changed or removed at any time. Achievements for the user. Only returns for namespaces where the `achievements` feature flag is enabled. |
|
||||
| <a id="mergerequestassigneeuserpermissions"></a>`userPermissions` | [`UserPermissions!`](#userpermissions) | Permissions for the current user on the resource. |
|
||||
| <a id="mergerequestassigneeusername"></a>`username` | [`String!`](#string) | Username of the user. Unique within this instance of GitLab. |
|
||||
|
|
@ -21913,7 +21913,7 @@ The author of the merge request.
|
|||
| <a id="mergerequestauthorsavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. (see [Connections](#connections)) |
|
||||
| <a id="mergerequestauthorstate"></a>`state` | [`UserState!`](#userstate) | State of the user. |
|
||||
| <a id="mergerequestauthorstatus"></a>`status` | [`UserStatus`](#userstatus) | User status. |
|
||||
| <a id="mergerequestauthortwitter"></a>`twitter` | [`String`](#string) | Twitter username of the user. |
|
||||
| <a id="mergerequestauthortwitter"></a>`twitter` | [`String`](#string) | X (formerly Twitter) username of the user. |
|
||||
| <a id="mergerequestauthoruserachievements"></a>`userAchievements` **{warning-solid}** | [`UserAchievementConnection`](#userachievementconnection) | **Introduced** in 15.10. This feature is an Experiment. It can be changed or removed at any time. Achievements for the user. Only returns for namespaces where the `achievements` feature flag is enabled. |
|
||||
| <a id="mergerequestauthoruserpermissions"></a>`userPermissions` | [`UserPermissions!`](#userpermissions) | Permissions for the current user on the resource. |
|
||||
| <a id="mergerequestauthorusername"></a>`username` | [`String!`](#string) | Username of the user. Unique within this instance of GitLab. |
|
||||
|
|
@ -22264,7 +22264,7 @@ A user participating in a merge request.
|
|||
| <a id="mergerequestparticipantsavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. (see [Connections](#connections)) |
|
||||
| <a id="mergerequestparticipantstate"></a>`state` | [`UserState!`](#userstate) | State of the user. |
|
||||
| <a id="mergerequestparticipantstatus"></a>`status` | [`UserStatus`](#userstatus) | User status. |
|
||||
| <a id="mergerequestparticipanttwitter"></a>`twitter` | [`String`](#string) | Twitter username of the user. |
|
||||
| <a id="mergerequestparticipanttwitter"></a>`twitter` | [`String`](#string) | X (formerly Twitter) username of the user. |
|
||||
| <a id="mergerequestparticipantuserachievements"></a>`userAchievements` **{warning-solid}** | [`UserAchievementConnection`](#userachievementconnection) | **Introduced** in 15.10. This feature is an Experiment. It can be changed or removed at any time. Achievements for the user. Only returns for namespaces where the `achievements` feature flag is enabled. |
|
||||
| <a id="mergerequestparticipantuserpermissions"></a>`userPermissions` | [`UserPermissions!`](#userpermissions) | Permissions for the current user on the resource. |
|
||||
| <a id="mergerequestparticipantusername"></a>`username` | [`String!`](#string) | Username of the user. Unique within this instance of GitLab. |
|
||||
|
|
@ -22588,7 +22588,7 @@ A user assigned to a merge request as a reviewer.
|
|||
| <a id="mergerequestreviewersavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. (see [Connections](#connections)) |
|
||||
| <a id="mergerequestreviewerstate"></a>`state` | [`UserState!`](#userstate) | State of the user. |
|
||||
| <a id="mergerequestreviewerstatus"></a>`status` | [`UserStatus`](#userstatus) | User status. |
|
||||
| <a id="mergerequestreviewertwitter"></a>`twitter` | [`String`](#string) | Twitter username of the user. |
|
||||
| <a id="mergerequestreviewertwitter"></a>`twitter` | [`String`](#string) | X (formerly Twitter) username of the user. |
|
||||
| <a id="mergerequestrevieweruserachievements"></a>`userAchievements` **{warning-solid}** | [`UserAchievementConnection`](#userachievementconnection) | **Introduced** in 15.10. This feature is an Experiment. It can be changed or removed at any time. Achievements for the user. Only returns for namespaces where the `achievements` feature flag is enabled. |
|
||||
| <a id="mergerequestrevieweruserpermissions"></a>`userPermissions` | [`UserPermissions!`](#userpermissions) | Permissions for the current user on the resource. |
|
||||
| <a id="mergerequestreviewerusername"></a>`username` | [`String!`](#string) | Username of the user. Unique within this instance of GitLab. |
|
||||
|
|
@ -27643,7 +27643,7 @@ Core representation of a GitLab user.
|
|||
| <a id="usercoresavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. (see [Connections](#connections)) |
|
||||
| <a id="usercorestate"></a>`state` | [`UserState!`](#userstate) | State of the user. |
|
||||
| <a id="usercorestatus"></a>`status` | [`UserStatus`](#userstatus) | User status. |
|
||||
| <a id="usercoretwitter"></a>`twitter` | [`String`](#string) | Twitter username of the user. |
|
||||
| <a id="usercoretwitter"></a>`twitter` | [`String`](#string) | X (formerly Twitter) username of the user. |
|
||||
| <a id="usercoreuserachievements"></a>`userAchievements` **{warning-solid}** | [`UserAchievementConnection`](#userachievementconnection) | **Introduced** in 15.10. This feature is an Experiment. It can be changed or removed at any time. Achievements for the user. Only returns for namespaces where the `achievements` feature flag is enabled. |
|
||||
| <a id="usercoreuserpermissions"></a>`userPermissions` | [`UserPermissions!`](#userpermissions) | Permissions for the current user on the resource. |
|
||||
| <a id="usercoreusername"></a>`username` | [`String!`](#string) | Username of the user. Unique within this instance of GitLab. |
|
||||
|
|
@ -33355,7 +33355,7 @@ Implementations:
|
|||
| <a id="usersavedreplies"></a>`savedReplies` | [`SavedReplyConnection`](#savedreplyconnection) | Saved replies authored by the user. (see [Connections](#connections)) |
|
||||
| <a id="userstate"></a>`state` | [`UserState!`](#userstate) | State of the user. |
|
||||
| <a id="userstatus"></a>`status` | [`UserStatus`](#userstatus) | User status. |
|
||||
| <a id="usertwitter"></a>`twitter` | [`String`](#string) | Twitter username of the user. |
|
||||
| <a id="usertwitter"></a>`twitter` | [`String`](#string) | X (formerly Twitter) username of the user. |
|
||||
| <a id="useruserachievements"></a>`userAchievements` **{warning-solid}** | [`UserAchievementConnection`](#userachievementconnection) | **Introduced** in 15.10. This feature is an Experiment. It can be changed or removed at any time. Achievements for the user. Only returns for namespaces where the `achievements` feature flag is enabled. |
|
||||
| <a id="useruserpermissions"></a>`userPermissions` | [`UserPermissions!`](#userpermissions) | Permissions for the current user on the resource. |
|
||||
| <a id="userusername"></a>`username` | [`String!`](#string) | Username of the user. Unique within this instance of GitLab. |
|
||||
|
|
|
|||
|
|
@ -574,7 +574,7 @@ Parameters:
|
|||
| `skip_confirmation` | No | Skip confirmation - true or false (default) |
|
||||
| `skype` | No | Skype ID |
|
||||
| `theme_id` | No | GitLab theme for the user (for more information, see the [user preference documentation](../user/profile/preferences.md#change-the-color-theme) for more information) |
|
||||
| `twitter` | No | Twitter account |
|
||||
| `twitter` | No | X (formerly Twitter) account |
|
||||
| `discord` | No | Discord account |
|
||||
| `username` | Yes | Username |
|
||||
| `view_diffs_file_by_file` | No | Flag indicating the user sees only one file diff per page |
|
||||
|
|
@ -625,7 +625,7 @@ Parameters:
|
|||
| `skip_reconfirmation` | No | Skip reconfirmation - true or false (default) |
|
||||
| `skype` | No | Skype ID |
|
||||
| `theme_id` | No | GitLab theme for the user (for more information, see the [user preference documentation](../user/profile/preferences.md#change-the-color-theme) for more information) |
|
||||
| `twitter` | No | Twitter account |
|
||||
| `twitter` | No | X (formerly Twitter) account |
|
||||
| `discord` | No | Discord account |
|
||||
| `username` | No | Username |
|
||||
| `view_diffs_file_by_file` | No | Flag indicating the user sees only one file diff per page |
|
||||
|
|
|
|||
|
|
@ -981,7 +981,8 @@ Guidance for each individual UI element is in [the word list](word_list.md).
|
|||
### How to write navigation task steps
|
||||
|
||||
To be consistent, use these examples to write navigation steps in a task topic.
|
||||
Although alternative steps might exist, use these steps instead.
|
||||
Although alternative steps might exist, including items pinned by default,
|
||||
use these steps instead.
|
||||
|
||||
To open project settings:
|
||||
|
||||
|
|
|
|||
|
|
@ -2,78 +2,51 @@
|
|||
stage: Create
|
||||
group: Source Code
|
||||
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://handbook.gitlab.com/handbook/product/ux/technical-writing/#assignments
|
||||
description: 'This article describes how to install Git on macOS, Ubuntu Linux and Windows.'
|
||||
---
|
||||
|
||||
# Installing Git **(FREE ALL)**
|
||||
|
||||
To begin contributing to GitLab projects, you must install the appropriate Git client
|
||||
on your computer. Information about [installing Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)
|
||||
is also available at the official Git website.
|
||||
To begin contributing to GitLab projects, you must download and install the Git client on your computer.
|
||||
|
||||
## Supported operating systems
|
||||
This page provides information on installing Git on the following operating systems:
|
||||
|
||||
Git is available for the following operating systems:
|
||||
- macOS
|
||||
- Ubuntu Linux
|
||||
- Microsoft Windows
|
||||
|
||||
- [macOS](#macos)
|
||||
- [Ubuntu Linux](#ubuntu-linux)
|
||||
- [Microsoft Windows](#windows)
|
||||
For information on downloading and installing Git on other operating systems, see the
|
||||
[official Git website](https://git-scm.com/downloads).
|
||||
|
||||
### macOS
|
||||
## Install and update Git on macOS
|
||||
|
||||
A version of Git is supplied by macOS. You can use this version, or install the latest
|
||||
version of Git on macOS by downloading it from the project website. We recommend
|
||||
installing Git with [Homebrew](https://brew.sh/index.html). With Homebrew, you can
|
||||
access an extensive selection of libraries and applications, with their dependencies
|
||||
managed for you.
|
||||
Though a version of Git is supplied by macOS, you should install the latest version of Git. A common way to
|
||||
install Git is with [Homebrew](https://brew.sh/index.html).
|
||||
|
||||
Prerequisites:
|
||||
To install the latest version of Git on macOS with Homebrew:
|
||||
|
||||
- 15 GB of available disk space for Homebrew and Xcode.
|
||||
- Extra disk space for any additional development libraries.
|
||||
|
||||
To install Git on macOS:
|
||||
|
||||
1. Open a terminal and install Xcode Command Line Tools:
|
||||
|
||||
```shell
|
||||
xcode-select --install
|
||||
```
|
||||
|
||||
Alternatively, you can install the entire [Xcode](https://developer.apple.com/xcode/)
|
||||
package through the macOS App Store.
|
||||
|
||||
1. Select **Install** to download and install Xcode Command Line Tools.
|
||||
1. Install Homebrew according to the [official Homebrew installation instructions](https://brew.sh/index.html).
|
||||
1. Install Git by running `brew install git` from your terminal.
|
||||
1. In a terminal, verify that Git works on your computer:
|
||||
1. If you've never installed Homebrew before, follow the
|
||||
[Homebrew installation instructions](https://brew.sh/index.html).
|
||||
1. In a terminal, install Git by running `brew install git`.
|
||||
1. Verify that Git works on your computer:
|
||||
|
||||
```shell
|
||||
git --version
|
||||
```
|
||||
|
||||
#### macOS update
|
||||
|
||||
Periodically you may need to update the version of Git installed by
|
||||
[Homebrew](/ee/topics/git/how_to_install_git/index.md#macos). To do so,
|
||||
open a terminal and run these commands:
|
||||
Keep Git up to date by periodically running the following command:
|
||||
|
||||
```shell
|
||||
brew update
|
||||
brew upgrade git
|
||||
brew update && brew upgrade git
|
||||
```
|
||||
|
||||
To verify you are on the updated version, run `git --version` to display
|
||||
your current version of Git.
|
||||
## Install and update Git on Ubuntu Linux
|
||||
|
||||
### Ubuntu Linux
|
||||
Though a version of Git is supplied by Ubuntu, you should install the latest version of Git. The latest version is
|
||||
available using a Personal Package Archive (PPA).
|
||||
|
||||
On Ubuntu and other Linux operating systems, use the built-in package manager
|
||||
to install Git:
|
||||
To install the latest version of Git on Ubuntu Linux with a PPA:
|
||||
|
||||
1. Open a terminal and run these commands to install the latest Git
|
||||
from the officially
|
||||
maintained package archives:
|
||||
1. In a terminal, configure the required PPA, update the list of Ubuntu packages, and install `git`:
|
||||
|
||||
```shell
|
||||
sudo apt-add-repository ppa:git-core/ppa
|
||||
|
|
@ -81,32 +54,23 @@ from the officially
|
|||
sudo apt-get install git
|
||||
```
|
||||
|
||||
1. To verify that Git works on your computer, run:
|
||||
1. Verify that Git works on your computer:
|
||||
|
||||
```shell
|
||||
git --version
|
||||
```
|
||||
|
||||
#### Ubuntu Linux Update
|
||||
Keep Git up to date by periodically running the following command:
|
||||
|
||||
Periodically it may be necessary to update Git installed. To do so, run the same [commands](/ee/topics/git/how_to_install_git/index.md#ubuntu-linux).
|
||||
```shell
|
||||
sudo apt-get update && sudo apt-get install git
|
||||
```
|
||||
|
||||
### Windows
|
||||
## Install Git on Microsoft Windows
|
||||
|
||||
Go to the [Git website](https://git-scm.com/), and then download and install Git for Windows.
|
||||
For information on downloading and installing Git on Microsoft Windows, see the
|
||||
[official Git documentation](https://git-scm.com/download/win).
|
||||
|
||||
## After you install Git
|
||||
|
||||
After you successfully install Git on your computer, read about [adding an SSH key to GitLab](../../../user/ssh.md).
|
||||
|
||||
<!-- ## Troubleshooting
|
||||
|
||||
Include any troubleshooting steps that you can foresee. If you know beforehand what issues
|
||||
one might have when setting this up, or when something is changed, or on upgrading, it's
|
||||
important to describe those, too. Think of things that may go wrong and include them here.
|
||||
This is important to minimize requests for support, and to avoid doc comments with
|
||||
questions that you know someone might ask.
|
||||
|
||||
Each scenario can be a third-level heading, for example `### Getting error message X`.
|
||||
If you have none to add when creating a doc, leave this section in place
|
||||
but commented out to help encourage others to add to it in the future. -->
|
||||
|
|
|
|||
|
|
@ -134,7 +134,7 @@ to match your username.
|
|||
> - Mastodon user account [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/132892) in GitLab 16.6 [with a flag](../feature_flags.md) named `mastodon_social_ui`. Disabled by default.
|
||||
> - Mastodon user account [generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/428163) in GitLab 16.7. Feature flag `mastodon_social_ui` removed.
|
||||
|
||||
You can add links to certain other external accounts you might have, like Skype and Twitter.
|
||||
You can add links to certain other external accounts you might have, like Skype and X (formerly Twitter).
|
||||
They can help other users connect with you on other platforms.
|
||||
|
||||
To add links to other accounts:
|
||||
|
|
@ -146,7 +146,7 @@ To add links to other accounts:
|
|||
- LinkedIn profile name.
|
||||
- Mastodon username.
|
||||
- Skype username.
|
||||
- Twitter @username.
|
||||
- X (formerly Twitter) @username.
|
||||
|
||||
Your user ID or username must be 500 characters or less.
|
||||
1. Select **Update profile settings**.
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ As with all sensitive information, you should ensure only those who need access
|
|||
For human interactions, use credentials tied to users such as Personal Access Tokens.
|
||||
|
||||
To help detect a potential secret leak, you can use the
|
||||
[Audit Event](../../../administration/audit_event_streaming/examples.md#example-payloads-for-ssh-events-with-deploy-key) feature.
|
||||
[Audit Event](../../../administration/audit_event_streaming/examples.md#example-payloads-for-git-over-ssh-events-with-deploy-key) feature.
|
||||
|
||||
## View deploy keys
|
||||
|
||||
|
|
|
|||
|
|
@ -1,20 +1,20 @@
|
|||
---
|
||||
stage: Create
|
||||
group: Incubation
|
||||
info: Machine Learning Experiment Tracking is a GitLab Incubation Engineering program. No technical writer assigned to this group.
|
||||
stage: ModelOps
|
||||
group: MLOps
|
||||
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
|
||||
---
|
||||
|
||||
# MLflow client compatibility **(FREE ALL)**
|
||||
# MLflow client compatibility **(FREE ALL EXPERIMENT)**
|
||||
|
||||
> [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/8560) in GitLab 15.11 as an [Experiment](../../../../policy/experiment-beta-support.md#experiment) release [with a flag](../../../../administration/feature_flags.md) named `ml_experiment_tracking`. Disabled by default.
|
||||
|
||||
NOTE:
|
||||
Model experiment tracking is an [experimental feature](../../../../policy/experiment-beta-support.md).
|
||||
Refer to <https://gitlab.com/gitlab-org/gitlab/-/issues/381660> for feedback and feature requests.
|
||||
Model registry and model experiment tracking are [Experiments](../../../../policy/experiment-beta-support.md).
|
||||
Provide feedback [for model experiment tracking](https://gitlab.com/gitlab-org/gitlab/-/issues/381660). Provide feedback for [model registry](https://gitlab.com/gitlab-org/gitlab/-/epics/9423).
|
||||
|
||||
[MLflow](https://mlflow.org/) is a popular open source tool for Machine Learning Experiment Tracking.
|
||||
GitLab [Model experiment tracking](index.md) is compatible with MLflow Client,
|
||||
[logging experiments](index.md). The setup requires minimal changes to existing code.
|
||||
GitLab [Model experiment tracking](index.md) and GitLab
|
||||
[Model registry](../model_registry/index.md) are compatible with the MLflow client. The setup requires minimal changes to existing code.
|
||||
|
||||
GitLab plays the role of a MLflow server. Running `mlflow server` is not necessary.
|
||||
|
||||
|
|
@ -37,18 +37,18 @@ To use MLflow client compatibility from a local environment:
|
|||
export MLFLOW_TRACKING_TOKEN="<your_access_token>"
|
||||
```
|
||||
|
||||
1. If your training code contains the call to `mlflow.set_tracking_uri()`, remove it.
|
||||
1. If the training code contains the call to `mlflow.set_tracking_uri()`, remove it.
|
||||
|
||||
When running the training code, MLflow creates experiments, runs, log parameters, metrics, metadata
|
||||
and artifacts on GitLab.
|
||||
## Model experiments
|
||||
|
||||
When running the training code, MLflow client can be used to create experiments, runs,
|
||||
models, model versions, log parameters, metrics, metadata and artifacts on GitLab.
|
||||
|
||||
After experiments are logged, they are listed under `/<your project>/-/ml/experiments`.
|
||||
Runs are registered as:
|
||||
|
||||
- Model Candidates, which can be explored by selecting an experiment.
|
||||
- Tags, which are registered as metadata.
|
||||
Runs are registered as candidates, which can be explored by selecting an experiment, model, or model version.
|
||||
|
||||
## Associating a candidate to a CI/CD job
|
||||
### Associating a candidate to a CI/CD job
|
||||
|
||||
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/119454) in GitLab 16.1.
|
||||
|
||||
|
|
@ -71,10 +71,179 @@ candidate metadata. To associate a candidate to a CI/CD job:
|
|||
# End of snippet to be included
|
||||
```
|
||||
|
||||
## Model registry
|
||||
|
||||
You can also manage models and model versions by using the MLflow
|
||||
client. Models are registered under `/<your project>/-/ml/models`.
|
||||
|
||||
### Models
|
||||
|
||||
#### Creating a model
|
||||
|
||||
```python
|
||||
client = MlflowClient()
|
||||
model_name = '<your_model_name>'
|
||||
description = 'Model description'
|
||||
model = client.create_registered_model(model_name, description=description)
|
||||
```
|
||||
|
||||
**Notes**
|
||||
|
||||
- `create_registered_model` argument `tags` is ignored.
|
||||
- `name` must be unique within the project.
|
||||
- `name` cannot be the name of an existing experiment.
|
||||
|
||||
#### Fetching a model
|
||||
|
||||
```python
|
||||
client = MlflowClient()
|
||||
model_name = '<your_model_name>'
|
||||
model = client.get_registered_model(model_name)
|
||||
```
|
||||
|
||||
#### Updating a model
|
||||
|
||||
```python
|
||||
client = MlflowClient()
|
||||
model_name = '<your_model_name>'
|
||||
description = 'New description'
|
||||
client.update_registered_model(model_name, description=description)
|
||||
```
|
||||
|
||||
#### Deleting a model
|
||||
|
||||
```python
|
||||
client = MlflowClient()
|
||||
model_name = '<your_model_name>'
|
||||
client.delete_registered_model(model_name)
|
||||
```
|
||||
|
||||
### Logging candidates to a model
|
||||
|
||||
Every model has an associated experiment with the same name. To log a candidate/run to the model,
|
||||
use the experiment with the name of the model:
|
||||
|
||||
```python
|
||||
client = MlflowClient()
|
||||
model_name = '<your_model_name>'
|
||||
exp = client.get_experiment_by_name(model_name)
|
||||
run = client.create_run(exp.experiment_id)
|
||||
```
|
||||
|
||||
### Model version
|
||||
|
||||
#### Creating a model version
|
||||
|
||||
```python
|
||||
client = MlflowClient()
|
||||
model_name = '<your_model_name>'
|
||||
description = 'Model version description'
|
||||
model_version = client.create_model_version(model_name, source="", description=description)
|
||||
```
|
||||
|
||||
**Notes**
|
||||
|
||||
- Argument `run_id` is ignored. Every model version behaves as a Candidate/Run. Creating a mode version from a run is not yet supported.
|
||||
- Argument `source` is ignored. GitLab will create a package location for the model version files.
|
||||
- Argument `tags` is ignored.
|
||||
- Argument `run_link` is ignored.
|
||||
- Argument `await_creation_for` is ignored.
|
||||
|
||||
#### Updating a model
|
||||
|
||||
```python
|
||||
client = MlflowClient()
|
||||
model_name = '<your_model_name>'
|
||||
version = '<your_version>'
|
||||
description = 'New description'
|
||||
client.update_model_version(model_name, version, description=description)
|
||||
```
|
||||
|
||||
#### Fetching a model version
|
||||
|
||||
```python
|
||||
client = MlflowClient()
|
||||
model_name = '<your_model_name>'
|
||||
version = '<your_version>'
|
||||
client.get_model_version(model_name, version)
|
||||
```
|
||||
|
||||
#### Getting latest versions of a model
|
||||
|
||||
```python
|
||||
client = MlflowClient()
|
||||
model_name = '<your_model_name>'
|
||||
client.get_latest_versions(model_name)
|
||||
```
|
||||
|
||||
**Notes**
|
||||
|
||||
- Argument `stages` is ignored.
|
||||
- Versions are ordered by last created.
|
||||
|
||||
#### Logging metrics and parameters to a model version
|
||||
|
||||
Every model version is also a candidate/run, allowing users to log parameters
|
||||
and metrics. The run ID can either be found at the Model version page in GitLab,
|
||||
or by using the MLflow client:
|
||||
|
||||
```python
|
||||
client = MlflowClient()
|
||||
model_name = '<your_model_name>'
|
||||
version = '<your_version>'
|
||||
model_version = client.get_model_version(model_name, version)
|
||||
run_id = model_version.run_id
|
||||
|
||||
# Your training code
|
||||
|
||||
client.log_metric(run_id, '<metric_name>', '<metric_value>')
|
||||
client.log_param(run_id, '<param_name>', '<param_value>')
|
||||
client.log_batch(run_id, metric_list, param_list, tag_list)
|
||||
```
|
||||
|
||||
#### Logging artifacts to a model version
|
||||
|
||||
GitLab creates a package that can be used by the MLflow client to upload files.
|
||||
|
||||
```python
|
||||
client = MlflowClient()
|
||||
model_name = '<your_model_name>'
|
||||
version = '<your_version>'
|
||||
model_version = client.get_model_version(model_name, version)
|
||||
run_id = model_version.run_id
|
||||
|
||||
# Your training code
|
||||
|
||||
client.log_artifact(run_id, '<local/path/to/file.txt>', artifact_path="")
|
||||
client.log_figure(run_id, figure, artifact_file="my_plot.png")
|
||||
client.log_dict(run_id, my_dict, artifact_file="my_dict.json")
|
||||
client.log_image(run_id, image, artifact_file="image.png")
|
||||
```
|
||||
|
||||
Artifacts will then be available under `https/<your project>/-/ml/models/<model_id>/versions/<version_id>`.
|
||||
|
||||
#### Linking a model version to a CI/CD job
|
||||
|
||||
Similar to candidates, it is also possible to link a model version to a CI/CD job:
|
||||
|
||||
```python
|
||||
client = MlflowClient()
|
||||
model_name = '<your_model_name>'
|
||||
version = '<your_version>'
|
||||
model_version = client.get_model_version(model_name, version)
|
||||
run_id = model_version.run_id
|
||||
|
||||
# Your training code
|
||||
|
||||
if os.getenv('GITLAB_CI'):
|
||||
client.set_tag(model_version.run_id, 'gitlab.CI_JOB_ID', os.getenv('CI_JOB_ID'))
|
||||
```
|
||||
|
||||
## Supported MLflow client methods and caveats
|
||||
|
||||
GitLab supports these methods from the MLflow client. Other methods might be supported but were not
|
||||
tested. More information can be found in the [MLflow Documentation](https://www.mlflow.org/docs/1.28.0/python_api/mlflow.html).
|
||||
tested. More information can be found in the [MLflow Documentation](https://www.mlflow.org/docs/1.28.0/python_api/mlflow.html). The MlflowClient counterparts
|
||||
of the methods below are also supported with the same caveats.
|
||||
|
||||
| Method | Supported | Version Added | Comments |
|
||||
|--------------------------|------------------|----------------|-------------------------------------------------------------------------------------|
|
||||
|
|
@ -102,9 +271,23 @@ tested. More information can be found in the [MLflow Documentation](https://www.
|
|||
| `update_run` | Yes | 15.11 | |
|
||||
| `log_model` | Partial | 15.11 | (15.11) Saves the artifacts, but not the model data. `artifact_path` must be empty. |
|
||||
|
||||
Other MLflowClient methods:
|
||||
|
||||
| Method | Supported | Version added | Comments |
|
||||
|---------------------------|------------------|---------------|--------------------------------------------------|
|
||||
| `create_registered_model` | Yes with caveats | 16.8 | [See notes](#creating-a-model) |
|
||||
| `get_registered_model` | Yes | 16.8 | |
|
||||
| `delete_registered_model` | Yes | 16.8 | |
|
||||
| `update_registered_model` | Yes | 16.8 | |
|
||||
| `create_model_version` | Yes with caveats | 16.8 | [See notes](#creating-a-model-version) |
|
||||
| `get_model_version` | Yes | 16.8 | |
|
||||
| `get_latest_versions` | Yes with caveats | 16.8 | [See notes](#getting-latest-versions-of-a-model) |
|
||||
| `update_model_version` | Yes | 16.8 | |
|
||||
| `create_registered_model` | Yes | 16.8 | |
|
||||
| `create_registered_model` | Yes | 16.8 | |
|
||||
|
||||
## Limitations
|
||||
|
||||
- The API GitLab supports is the one defined at MLflow version 1.28.0.
|
||||
- API endpoints not listed above are not supported.
|
||||
- The API GitLab supports is the one defined at MLflow version 2.7.1.
|
||||
- MLflow client methods not listed above are not supported.
|
||||
- During creation of experiments and runs, ExperimentTags are stored, even though they are not displayed.
|
||||
- MLflow Model Registry is not supported.
|
||||
|
|
|
|||
|
|
@ -0,0 +1,79 @@
|
|||
---
|
||||
stage: ModelOps
|
||||
group: MLOps
|
||||
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
|
||||
---
|
||||
|
||||
# Model registry **(FREE ALL EXPERIMENT)**
|
||||
|
||||
> [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/9423) in GitLab 16.8 as an [Experiment](../../../../policy/experiment-beta-support.md#experiment) release [with a flag](../../../../administration/feature_flags.md) named `ml_experiment_tracking`. Disabled by default. To enable the feature, an administrator can [enable the feature flag](../../../../administration/feature_flags.md) named `model_registry`.
|
||||
|
||||
NOTE:
|
||||
Model registry is an [Experiment](../../../../policy/experiment-beta-support.md). [Provide feedback](https://gitlab.com/groups/gitlab-org/-/epics/9423).
|
||||
|
||||
Model registry allows data scientists and developers to manage their machine learning
|
||||
models, along with all metadata associated with their creation: parameters, performance
|
||||
metrics, artifacts, logs and more. For the full list of currently supported features,
|
||||
see [epic 9423](https://gitlab.com/groups/gitlab-org/-/epics/9423).
|
||||
|
||||
## Access the model registry
|
||||
|
||||
To set the model registry [visibility level](../../../public_access.md) to public, private or disabled:
|
||||
|
||||
1. On the left sidebar, select **Search or go to** and find your group.
|
||||
1. Select **Settings > General**.
|
||||
1. Expand **Visibility, project features, permissions**.
|
||||
1. Under **Model registry**, ensure the toggle is on and select who you want to have access.
|
||||
Users must have
|
||||
at least the [Reporter role](../../../permissions.md#roles) to modify or delete models and model versions.
|
||||
|
||||
## Exploring models, model versions and model candidates
|
||||
|
||||
Model registry can be accessed on `https/<your-project>-/ml/models`.
|
||||
|
||||
## Creating machine learning models and model versions
|
||||
|
||||
Models and model versions can be created using the [MLflow](https://www.mlflow.org/docs/latest/tracking.html) client compatibility.
|
||||
See [MLflow client compatibility](../experiment_tracking/mlflow_client.md#model-registry) on how to
|
||||
create and manage models and model versions.
|
||||
|
||||
## Upload files, log metrics, log parameters to a model version
|
||||
|
||||
Files can either be uploaded to a model version using:
|
||||
|
||||
- The package registry, where a model version is associated to a package of name `<model_name>/<model_version>`.
|
||||
- The MLflow client compatibility. [View details](../experiment_tracking/mlflow_client.md#logging-artifacts-to-a-model-version).
|
||||
|
||||
Users can log metrics and a parameters of a model version through the MLflow client compatibility, [see details](../experiment_tracking/mlflow_client.md#logging-metrics-and-parameters-to-a-model-version)
|
||||
|
||||
## Link a model version to a CI/CD job
|
||||
|
||||
When creating a model version through a GitLab CI/CD job, you can link the model
|
||||
version to the job, giving easy access to the job's logs, merge request, and pipeline.
|
||||
This can be done through the MLflow client compatibility. [View details](../experiment_tracking/mlflow_client.md#linking-a-model-version-to-a-cicd-job).
|
||||
|
||||
## Model versions and semantic versioning
|
||||
|
||||
The version of a model version in GitLab must follow [Semantic Version specification](https://semver.org/).
|
||||
Using semantic versioning facilitates model deployment, by communicating which
|
||||
if a new version can be deployed without changes to the application:
|
||||
|
||||
- A change in the major component signifies a breaking change in the model, and that the application
|
||||
that consumes the model must be updated to properly use this new version.
|
||||
A new algorithm or the addition of a mandatory feature column are examples of breaking
|
||||
changes that would require a bump at the major component.
|
||||
|
||||
- A change in the minor component signifies a non-breaking change, and that the
|
||||
consumer can safely use the new version without breaking, although it might
|
||||
need to be updated to use its new functionality. For example, adding a non-mandatory
|
||||
feature column to the model is a minor bump, because when that feature is not passed,
|
||||
it will still work.
|
||||
|
||||
- A change in the patch component means that a new version is out that does not
|
||||
require any action by the application. For example, a daily retrain of the
|
||||
model does not change the feature set or how the application consumes the
|
||||
model version. Auto updating to a new patch is a safe update.
|
||||
|
||||
## Related topics
|
||||
|
||||
- Development details, feedback, and feature requests in [epic 9423](https://gitlab.com/groups/gitlab-org/-/epics/9423).
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
variables:
|
||||
DAST_AUTO_DEPLOY_IMAGE_VERSION: 'v2.63.0'
|
||||
DAST_AUTO_DEPLOY_IMAGE_VERSION: 'v2.70.0'
|
||||
|
||||
.dast-auto-deploy:
|
||||
image: "${CI_TEMPLATE_REGISTRY_HOST}/gitlab-org/cluster-integration/auto-deploy-image:${DAST_AUTO_DEPLOY_IMAGE_VERSION}"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
variables:
|
||||
AUTO_DEPLOY_IMAGE_VERSION: 'v2.63.0'
|
||||
AUTO_DEPLOY_IMAGE_VERSION: 'v2.70.0'
|
||||
|
||||
.auto-deploy:
|
||||
image: "${CI_TEMPLATE_REGISTRY_HOST}/gitlab-org/cluster-integration/auto-deploy-image:${AUTO_DEPLOY_IMAGE_VERSION}"
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
variables:
|
||||
AUTO_DEPLOY_IMAGE_VERSION: 'v2.63.0'
|
||||
AUTO_DEPLOY_IMAGE_VERSION: 'v2.70.0'
|
||||
|
||||
.auto-deploy:
|
||||
image: "${CI_TEMPLATE_REGISTRY_HOST}/gitlab-org/cluster-integration/auto-deploy-image:${AUTO_DEPLOY_IMAGE_VERSION}"
|
||||
|
|
|
|||
|
|
@ -51386,12 +51386,6 @@ msgstr ""
|
|||
msgid "Turn on"
|
||||
msgstr ""
|
||||
|
||||
msgid "Twitter"
|
||||
msgstr ""
|
||||
|
||||
msgid "Twitter:"
|
||||
msgstr ""
|
||||
|
||||
msgid "Two-Factor Authentication"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -55415,6 +55409,12 @@ msgstr ""
|
|||
msgid "Wrong extern UID provided. Make sure Auth0 is configured correctly."
|
||||
msgstr ""
|
||||
|
||||
msgid "X (formerly Twitter)"
|
||||
msgstr ""
|
||||
|
||||
msgid "X (formerly Twitter):"
|
||||
msgstr ""
|
||||
|
||||
msgid "Xcode"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
|||
|
|
@ -62,7 +62,7 @@
|
|||
"@gitlab/svgs": "3.72.0",
|
||||
"@gitlab/ui": "^71.6.1",
|
||||
"@gitlab/visual-review-tools": "1.7.3",
|
||||
"@gitlab/web-ide": "^0.0.1-dev-20231129035648",
|
||||
"@gitlab/web-ide": "^0.0.1-dev-20231211152737",
|
||||
"@mattiasbuelens/web-streams-adapter": "^0.1.0",
|
||||
"@rails/actioncable": "7.0.8",
|
||||
"@rails/ujs": "7.0.8",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,22 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module QA
|
||||
module Page
|
||||
module Project
|
||||
class Pages < Page::Base
|
||||
view 'app/views/projects/pages/_access.html.haml' do
|
||||
element 'access-page-container'
|
||||
end
|
||||
|
||||
def go_to_access_page
|
||||
within_element('access-page-container') do
|
||||
find('a').click
|
||||
page.driver.browser.switch_to.window(page.driver.browser.window_handles.last)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
QA::Page::Project::Pages.prepend_mod_with("Page::Project::Pages", namespace: QA)
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
module QA
|
||||
module Page
|
||||
module Project
|
||||
module Settings
|
||||
class Pages < Page::Base
|
||||
include QA::Page::Settings::Common
|
||||
|
||||
view 'app/views/projects/pages/_access.html.haml' do
|
||||
element 'access-page-container'
|
||||
end
|
||||
|
||||
def go_to_access_page
|
||||
within_element('access-page-container') do
|
||||
find('a').click
|
||||
page.driver.browser.switch_to.window(page.driver.browser.window_handles.last)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
QA::Page::Project::Settings::Pages.prepend_mod_with("Page::Project::Settings::Pages", namespace: QA)
|
||||
|
|
@ -19,10 +19,6 @@ module QA
|
|||
open_settings_submenu('Merge requests')
|
||||
end
|
||||
|
||||
def go_to_pages_settings
|
||||
open_settings_submenu('Pages')
|
||||
end
|
||||
|
||||
def go_to_monitor_settings
|
||||
open_settings_submenu('Monitor')
|
||||
end
|
||||
|
|
|
|||
|
|
@ -14,6 +14,10 @@ module QA
|
|||
open_deploy_submenu('Container Registry')
|
||||
end
|
||||
|
||||
def go_to_pages_settings
|
||||
open_deploy_submenu('Pages')
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def open_deploy_submenu(sub_menu)
|
||||
|
|
|
|||
|
|
@ -7,9 +7,8 @@ module QA
|
|||
except: { job: 'review-qa-*' },
|
||||
quarantine: {
|
||||
issue: 'https://gitlab.com/gitlab-org/gitlab/-/issues/383215',
|
||||
type: :flaky
|
||||
},
|
||||
feature_flag: { name: 'show_pages_in_deployments_menu' } do
|
||||
type: :broken
|
||||
} do
|
||||
# TODO: Convert back to :smoke once proved to be stable. Related issue: https://gitlab.com/gitlab-org/gitlab/-/issues/300906
|
||||
describe 'Pages', product_group: :knowledge do
|
||||
let!(:project) { create(:project, name: 'gitlab-pages-projects', template_name: :plainhtml) }
|
||||
|
|
@ -40,7 +39,7 @@ module QA
|
|||
end
|
||||
|
||||
Page::Project::Menu.perform(&:go_to_pages_settings)
|
||||
Page::Project::Settings::Pages.perform(&:go_to_access_page)
|
||||
Page::Project::Pages.perform(&:go_to_access_page)
|
||||
|
||||
Support::Waiter.wait_until(
|
||||
sleep_interval: 2,
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ describe('NavItemLink component', () => {
|
|||
|
||||
expect(wrapper.attributes()).toEqual({
|
||||
href: '/foo',
|
||||
class: 'gl-bg-t-gray-a-08',
|
||||
class: 'super-sidebar-nav-item-current',
|
||||
'aria-current': 'page',
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -45,7 +45,9 @@ describe('NavItemRouterLink component', () => {
|
|||
routerLinkSlotProps: { isActive: true },
|
||||
});
|
||||
|
||||
expect(wrapper.findComponent(RouterLinkStub).props('activeClass')).toBe('gl-bg-t-gray-a-08');
|
||||
expect(wrapper.findComponent(RouterLinkStub).props('activeClass')).toBe(
|
||||
'super-sidebar-nav-item-current',
|
||||
);
|
||||
expect(wrapper.attributes()).toEqual({
|
||||
href: '/foo',
|
||||
'aria-current': 'page',
|
||||
|
|
|
|||
|
|
@ -1292,10 +1292,10 @@
|
|||
resolved "https://registry.yarnpkg.com/@gitlab/visual-review-tools/-/visual-review-tools-1.7.3.tgz#9ea641146436da388ffbad25d7f2abe0df52c235"
|
||||
integrity sha512-NMV++7Ew1FSBDN1xiZaauU9tfeSfgDHcOLpn+8bGpP+O5orUPm2Eu66R5eC5gkjBPaXosNAxNWtriee+aFk4+g==
|
||||
|
||||
"@gitlab/web-ide@^0.0.1-dev-20231129035648":
|
||||
version "0.0.1-dev-20231129035648"
|
||||
resolved "https://registry.yarnpkg.com/@gitlab/web-ide/-/web-ide-0.0.1-dev-20231129035648.tgz#8e9ad9be4d27d912eb255c6a03fab4a210f2d2fa"
|
||||
integrity sha512-66fqT2G+Q7wuiZwXDbTaEYeuXGJSOkg9ZfQS6ARJ5GYhFoJ8U63TjX/+/jcPHBH99h0eN4xrP/YzidglP59BtQ==
|
||||
"@gitlab/web-ide@^0.0.1-dev-20231211152737":
|
||||
version "0.0.1-dev-20231211152737"
|
||||
resolved "https://registry.yarnpkg.com/@gitlab/web-ide/-/web-ide-0.0.1-dev-20231211152737.tgz#849c6f9256b5a5bd340a3b140d4192c6f5aafc35"
|
||||
integrity sha512-1bIUvO3Lhdc8hftmfKPjGKMqoI6NBv20noZxpgLtXx+aOF8NsF+bJcBMl12HifDI4w8UAjTmHPMzj+RZfEJLJw==
|
||||
|
||||
"@graphql-eslint/eslint-plugin@3.20.1":
|
||||
version "3.20.1"
|
||||
|
|
|
|||
Loading…
Reference in New Issue