Add latest changes from gitlab-org/gitlab@master
This commit is contained in:
parent
7619a0da6b
commit
cb9d96285c
|
|
@ -11,7 +11,7 @@ If there is no relevant deprecation issue, hit pause and:
|
|||
|
||||
Deprecation announcements can and should be created and merged into Docs at any time, to optimize user awareness and planning. We encourage confirmed deprecations to be merged as soon as the required reviews are complete, even if weeks ahead of the target milestone's release post. For the announcement to be included in a specific release post and that release's documentation packages, this MR must be reviewed/merged per the due dates below:
|
||||
|
||||
**By the 10th**: Assign this MR to these team members as Reviewer and for Approval (optional unless noted as required):
|
||||
**10 days (Monday) before the Release Date**: Assign this MR to these team members as Reviewer and for Approval (optional unless noted as required):
|
||||
|
||||
- Product Marketing: `@PMM`
|
||||
- Product Designer(s): `@ProductDesigners`
|
||||
|
|
@ -19,9 +19,9 @@ Deprecation announcements can and should be created and merged into Docs at any
|
|||
- Engineering Manager: `@EM` - Required
|
||||
- Technical writer: `@TW` - Required
|
||||
|
||||
**By 11:59 AM PDT 15th**: EM/PM assigns this MR to the TW reviewer for final review and merge: `@EM/PM`
|
||||
**By 11:59 AM PDT 8 days (Wednesday) before the Release Date**: EM/PM assigns this MR to the TW reviewer for final review and merge: `@EM/PM`
|
||||
|
||||
**By 11:59 PM PDT 17th**: TW Reviewer updates Docs by merging this MR to `master`: `@TW`
|
||||
**By 11:59 PM PDT 6 days (Friday) before the Release Date**: TW Reviewer updates Docs by merging this MR to `master`: `@TW`
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
2
Gemfile
2
Gemfile
|
|
@ -638,3 +638,5 @@ gem 'net-protocol', '~> 0.1.3' # rubocop:todo Gemfile/MissingFeatureCategory
|
|||
gem 'net-http', '= 0.1.1' # rubocop:todo Gemfile/MissingFeatureCategory
|
||||
|
||||
gem 'duo_api', '~> 1.3' # rubocop:todo Gemfile/MissingFeatureCategory
|
||||
|
||||
gem 'gitlab-sdk', feature_category: :application_instrumentation
|
||||
|
|
|
|||
|
|
@ -218,6 +218,7 @@
|
|||
{"name":"gitlab-mail_room","version":"0.0.23","platform":"ruby","checksum":"23564fa4dab24ec5011d4c64a801fc0228301d5b0f046a26a1d8e96e36c19997"},
|
||||
{"name":"gitlab-markup","version":"1.9.0","platform":"ruby","checksum":"7eda045a08ec2d110084252fa13a8c9eac8bdac0e302035ca7db4b82bcbd7ed4"},
|
||||
{"name":"gitlab-net-dns","version":"0.9.2","platform":"ruby","checksum":"f726d978479d43810819f12a45c0906d775a07e34df111bbe693fffbbef3059d"},
|
||||
{"name":"gitlab-sdk","version":"0.2.3","platform":"ruby","checksum":"e891278a20860ab1f861312813dce5f2e73081bcc10def2ae4ee138b10a2d0d6"},
|
||||
{"name":"gitlab-styles","version":"11.0.0","platform":"ruby","checksum":"0dd8ec066ce9955ac51d3616c6bfded30f75bb526f39ff392ece6f43d5b9406b"},
|
||||
{"name":"gitlab_chronic_duration","version":"0.12.0","platform":"ruby","checksum":"0d766944d415b5c831f176871ee8625783fc0c5bfbef2d79a3a616f207ffc16d"},
|
||||
{"name":"gitlab_omniauth-ldap","version":"2.2.0","platform":"ruby","checksum":"bb4d20acb3b123ed654a8f6a47d3fac673ece7ed0b6992edb92dca14bad2838c"},
|
||||
|
|
|
|||
|
|
@ -703,6 +703,10 @@ GEM
|
|||
oauth2 (>= 1.4.4, < 3)
|
||||
gitlab-markup (1.9.0)
|
||||
gitlab-net-dns (0.9.2)
|
||||
gitlab-sdk (0.2.3)
|
||||
activesupport (>= 5.2.0)
|
||||
rake (~> 13.0)
|
||||
snowplow-tracker (~> 0.8.0)
|
||||
gitlab-styles (11.0.0)
|
||||
rubocop (~> 1.57.1)
|
||||
rubocop-graphql (~> 0.18)
|
||||
|
|
@ -1880,6 +1884,7 @@ DEPENDENCIES
|
|||
gitlab-rspec!
|
||||
gitlab-safe_request_store!
|
||||
gitlab-schema-validation!
|
||||
gitlab-sdk
|
||||
gitlab-secret_detection!
|
||||
gitlab-sidekiq-fetcher!
|
||||
gitlab-styles (~> 11.0.0)
|
||||
|
|
|
|||
|
|
@ -582,7 +582,7 @@ See https://gitlab.com/gitlab-org/gitlab/issues/36857 for more details.
|
|||
|
||||
// used in the Markdown rendering of labels
|
||||
.scoped-label-tooltip-title {
|
||||
color: var(--indigo-300, $indigo-300);
|
||||
color: var(--theme-indigo-300, $theme-indigo-300);
|
||||
}
|
||||
|
||||
.gl-label-scoped {
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
|
||||
|
||||
.feature-highlight-illustration {
|
||||
background-color: $indigo-50;
|
||||
background-color: $theme-indigo-50;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom: 1px solid darken($gray-normal, 8%);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
@import '@gitlab/ui/dist/tokens/scss/tokens';
|
||||
|
||||
/*
|
||||
* Layout
|
||||
*/
|
||||
|
|
@ -91,79 +93,6 @@ $darken-border-dashed-factor: 25% !default;
|
|||
$purple: #6d49cb !default;
|
||||
$purple-light: #ede8fb !default;
|
||||
|
||||
$green-50: #ecf4ee !default;
|
||||
$green-100: #c3e6cd !default;
|
||||
$green-200: #91d4a8 !default;
|
||||
$green-300: #52b87a !default;
|
||||
$green-400: #2da160 !default;
|
||||
$green-500: #108548 !default;
|
||||
$green-600: #217645 !default;
|
||||
$green-700: #24663b !default;
|
||||
$green-800: #0d532a !default;
|
||||
$green-900: #0a4020 !default;
|
||||
$green-950: #072b15 !default;
|
||||
|
||||
$blue-50: #e9f3fc !default;
|
||||
$blue-100: #cbe2f9 !default;
|
||||
$blue-200: #9dc7f1 !default;
|
||||
$blue-300: #63a6e9 !default;
|
||||
$blue-400: #428fdc !default;
|
||||
$blue-500: #1f75cb !default;
|
||||
$blue-600: #1068bf !default;
|
||||
$blue-700: #0b5cad !default;
|
||||
$blue-800: #064787 !default;
|
||||
$blue-900: #033464 !default;
|
||||
$blue-950: #002850 !default;
|
||||
|
||||
$orange-50: #fdf1dd !default;
|
||||
$orange-100: #f5d9a8 !default;
|
||||
$orange-200: #e9be74 !default;
|
||||
$orange-300: #d99530 !default;
|
||||
$orange-400: #c17d10 !default;
|
||||
$orange-500: #ab6100 !default;
|
||||
$orange-600: #9e5400 !default;
|
||||
$orange-700: #8f4700 !default;
|
||||
$orange-800: #703800 !default;
|
||||
$orange-900: #5c2900 !default;
|
||||
$orange-950: #421f00 !default;
|
||||
|
||||
$red-50: #fcf1ef !default;
|
||||
$red-100: #fdd4cd !default;
|
||||
$red-200: #fcb5aa !default;
|
||||
$red-300: #f57f6c !default;
|
||||
$red-400: #ec5941 !default;
|
||||
$red-500: #dd2b0e !default;
|
||||
$red-600: #c91c00 !default;
|
||||
$red-700: #ae1800 !default;
|
||||
$red-800: #8d1300 !default;
|
||||
$red-900: #660e00 !default;
|
||||
$red-950: #4d0a00 !default;
|
||||
|
||||
$purple-50: #f4f0ff !default;
|
||||
$purple-100: #e1d8f9 !default;
|
||||
$purple-200: #cbbbf2 !default;
|
||||
$purple-300: #ac93e6 !default;
|
||||
$purple-400: #9475db !default;
|
||||
$purple-500: #7b58cf !default;
|
||||
$purple-600: #694cc0 !default;
|
||||
$purple-700: #5943b6 !default;
|
||||
$purple-800: #453894 !default;
|
||||
$purple-900: #2f2a6b !default;
|
||||
$purple-950: #232150 !default;
|
||||
|
||||
$gray-10: #fbfafd !default;
|
||||
$gray-50: #ececef !default;
|
||||
$gray-100: #dcdcde !default;
|
||||
$gray-200: #bfbfc3 !default;
|
||||
$gray-300: #a4a3a8 !default;
|
||||
$gray-400: #89888d !default;
|
||||
$gray-500: #737278 !default;
|
||||
$gray-600: #626168 !default;
|
||||
$gray-700: #535158 !default;
|
||||
$gray-800: #434248 !default;
|
||||
$gray-900: #333238 !default;
|
||||
$gray-950: #1f1e24 !default;
|
||||
|
||||
$gray-lightest: lighten($gray-10, 1) !default;
|
||||
$gray-light: $gray-10 !default;
|
||||
$gray-lighter: lighten($gray-50, 4) !default;
|
||||
|
|
@ -179,196 +108,14 @@ $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;
|
||||
|
||||
$white: #fff !default;
|
||||
$white-normal: $gray-50 !default;
|
||||
$white-dark: darken($gray-50, 2) !default;
|
||||
|
||||
$black: #000 !default;
|
||||
$black-transparent: $t-gray-a-24 !default;
|
||||
$almost-black: $gray-950 !default;
|
||||
|
||||
$greens: (
|
||||
'50': $green-50,
|
||||
'100': $green-100,
|
||||
'200': $green-200,
|
||||
'300': $green-300,
|
||||
'400': $green-400,
|
||||
'500': $green-500,
|
||||
'600': $green-600,
|
||||
'700': $green-700,
|
||||
'800': $green-800,
|
||||
'900': $green-900,
|
||||
'950': $green-950
|
||||
);
|
||||
|
||||
$blues: (
|
||||
'50': $blue-50,
|
||||
'100': $blue-100,
|
||||
'200': $blue-200,
|
||||
'300': $blue-300,
|
||||
'400': $blue-400,
|
||||
'500': $blue-500,
|
||||
'600': $blue-600,
|
||||
'700': $blue-700,
|
||||
'800': $blue-800,
|
||||
'900': $blue-900,
|
||||
'950': $blue-950
|
||||
);
|
||||
|
||||
$oranges: (
|
||||
'50': $orange-50,
|
||||
'100': $orange-100,
|
||||
'200': $orange-200,
|
||||
'300': $orange-300,
|
||||
'400': $orange-400,
|
||||
'500': $orange-500,
|
||||
'600': $orange-600,
|
||||
'700': $orange-700,
|
||||
'800': $orange-800,
|
||||
'900': $orange-900,
|
||||
'950': $orange-950
|
||||
);
|
||||
|
||||
$reds: (
|
||||
'50': $red-50,
|
||||
'100': $red-100,
|
||||
'200': $red-200,
|
||||
'300': $red-300,
|
||||
'400': $red-400,
|
||||
'500': $red-500,
|
||||
'600': $red-600,
|
||||
'700': $red-700,
|
||||
'800': $red-800,
|
||||
'900': $red-900,
|
||||
'950': $red-950
|
||||
);
|
||||
|
||||
$purples: (
|
||||
'50': $purple-50,
|
||||
'100': $purple-100,
|
||||
'200': $purple-200,
|
||||
'300': $purple-300,
|
||||
'400': $purple-400,
|
||||
'500': $purple-500,
|
||||
'600': $purple-600,
|
||||
'700': $purple-700,
|
||||
'800': $purple-800,
|
||||
'900': $purple-900,
|
||||
'950': $purple-950
|
||||
);
|
||||
|
||||
$grays: (
|
||||
'10': $gray-10,
|
||||
'50': $gray-50,
|
||||
'100': $gray-100,
|
||||
'200': $gray-200,
|
||||
'300': $gray-300,
|
||||
'400': $gray-400,
|
||||
'500': $gray-500,
|
||||
'600': $gray-600,
|
||||
'700': $gray-700,
|
||||
'800': $gray-800,
|
||||
'900': $gray-900,
|
||||
'950': $gray-950
|
||||
);
|
||||
|
||||
$color-ranges: (
|
||||
'primary': $blues,
|
||||
'secondary': $grays,
|
||||
'success': $greens,
|
||||
'warning': $oranges,
|
||||
'danger': $reds
|
||||
);
|
||||
|
||||
// GitLab themes
|
||||
|
||||
$indigo-50: #f1f1ff;
|
||||
$indigo-100: #dbdbf8;
|
||||
$indigo-200: #c7c7f2;
|
||||
$indigo-300: #a2a2e6;
|
||||
$indigo-400: #8181d7;
|
||||
$indigo-500: #6666c4;
|
||||
$indigo-600: #5252b5;
|
||||
$indigo-700: #41419f;
|
||||
$indigo-800: #303083;
|
||||
$indigo-900: #222261;
|
||||
$indigo-950: #14143d;
|
||||
// To do this variant right for darkmode, we need to create a variable for it.
|
||||
$indigo-900-alpha-008: rgba($indigo-900, 0.08);
|
||||
|
||||
$theme-blue-50: #cdd8e3;
|
||||
$theme-blue-100: #b9cadc;
|
||||
$theme-blue-200: #a6bdd5;
|
||||
$theme-blue-300: #81a5c9;
|
||||
$theme-blue-400: #628eb9;
|
||||
$theme-blue-500: #4977a5;
|
||||
$theme-blue-600: #346596;
|
||||
$theme-blue-700: #235180;
|
||||
$theme-blue-800: #153c63;
|
||||
$theme-blue-900: #0b2640;
|
||||
$theme-blue-950: #04101c;
|
||||
|
||||
$theme-light-blue-50: #dde6ee;
|
||||
$theme-light-blue-100: #c1d4e6;
|
||||
$theme-light-blue-200: #a0bedc;
|
||||
$theme-light-blue-300: #74a3d3;
|
||||
$theme-light-blue-400: #4f8bc7;
|
||||
$theme-light-blue-500: #3476b9;
|
||||
$theme-light-blue-600: #2268ae;
|
||||
$theme-light-blue-700: #145aa1;
|
||||
$theme-light-blue-800: #0e4d8d;
|
||||
$theme-light-blue-900: #0c4277;
|
||||
$theme-light-blue-950: #0a3764;
|
||||
|
||||
$theme-green-50: #dde9de;
|
||||
$theme-green-100: #b1d6b5;
|
||||
$theme-green-200: #8cc497;
|
||||
$theme-green-300: #69af7d;
|
||||
$theme-green-400: #499767;
|
||||
$theme-green-500: #308258;
|
||||
$theme-green-600: #25744c;
|
||||
$theme-green-700: #1b653f;
|
||||
$theme-green-800: #155635;
|
||||
$theme-green-900: #0e4328;
|
||||
$theme-green-950: #052e19;
|
||||
|
||||
$theme-red-50: #f4e9e7;
|
||||
$theme-red-100: #ecd3d0;
|
||||
$theme-red-200: #e3bab5;
|
||||
$theme-red-300: #d59086;
|
||||
$theme-red-400: #c66e60;
|
||||
$theme-red-500: #ad4a3b;
|
||||
$theme-red-600: #a13322;
|
||||
$theme-red-700: #8f2110;
|
||||
$theme-red-800: #761405;
|
||||
$theme-red-900: #580d02;
|
||||
$theme-red-950: #380700;
|
||||
|
||||
$theme-light-red-50: #faf2f1;
|
||||
$theme-light-red-100: #f6d9d5;
|
||||
$theme-light-red-200: #ebada2;
|
||||
$theme-light-red-300: #e07f6f;
|
||||
$theme-light-red-400: #d36250;
|
||||
$theme-light-red-500: #c24b38;
|
||||
$theme-light-red-600: #b53a26;
|
||||
$theme-light-red-700: #a02e1c;
|
||||
$theme-light-red-800: #8b2212;
|
||||
$theme-light-red-900: #751709;
|
||||
$theme-light-red-950: #5c1105;
|
||||
|
||||
// Data visualization color palette
|
||||
|
||||
$data-viz-blue-50: #e9ebff !default;
|
||||
$data-viz-blue-100: #d2dcff !default;
|
||||
$data-viz-blue-200: #b7c6ff !default;
|
||||
$data-viz-blue-300: #97acff !default;
|
||||
$data-viz-blue-400: #7992f5 !default;
|
||||
$data-viz-blue-500: #617ae2 !default;
|
||||
$data-viz-blue-600: #4e65cd !default;
|
||||
$data-viz-blue-700: #3f51ae !default;
|
||||
$data-viz-blue-800: #374291 !default;
|
||||
$data-viz-blue-900: #303470 !default;
|
||||
$data-viz-blue-950: #2a2b59 !default;
|
||||
$indigo-900-alpha-008: rgba($theme-indigo-900, 0.08);
|
||||
|
||||
$border-white-light: darken($white, $darken-border-factor) !default;
|
||||
$border-white-normal: darken($white-normal, $darken-border-factor) !default;
|
||||
|
|
@ -834,7 +581,7 @@ $linked-project-column-margin: 60px;
|
|||
Performance Bar
|
||||
*/
|
||||
$perf-bar-production: $gray-950;
|
||||
$perf-bar-staging: $indigo-950;
|
||||
$perf-bar-staging: $theme-indigo-950;
|
||||
$perf-bar-development: $red-900;
|
||||
$perf-bar-bucket-bg: $black;
|
||||
$perf-bar-bucket-box-shadow-from: rgba($white, 0.2);
|
||||
|
|
|
|||
|
|
@ -13,11 +13,11 @@
|
|||
margin-bottom: $gl-padding-8;
|
||||
|
||||
&.ui-indigo {
|
||||
background-color: $indigo-900;
|
||||
background-color: $theme-indigo-900;
|
||||
}
|
||||
|
||||
&.ui-light-indigo {
|
||||
background-color: $indigo-700;
|
||||
background-color: $theme-indigo-700;
|
||||
}
|
||||
|
||||
&.ui-blue {
|
||||
|
|
|
|||
|
|
@ -1,15 +1,4 @@
|
|||
$gray-10: #1f1e24;
|
||||
$gray-50: #333238;
|
||||
$gray-100: #434248;
|
||||
$gray-200: #535158;
|
||||
$gray-300: #626168;
|
||||
$gray-400: #737278;
|
||||
$gray-500: #89888d;
|
||||
$gray-600: #a4a3a8;
|
||||
$gray-700: #bfbfc3;
|
||||
$gray-800: #dcdcde;
|
||||
$gray-900: #ececef;
|
||||
$gray-950: #fbfafd;
|
||||
@import '@gitlab/ui/dist/tokens/scss/tokens.dark';
|
||||
|
||||
$gray-lightest: lighten($gray-10, 1);
|
||||
$gray-light: lighten($gray-10, 2);
|
||||
|
|
@ -25,100 +14,14 @@ $gray-darkest: $gray-700;
|
|||
$t-gray-a-16: rgba($gray-10, 0.16);
|
||||
$t-gray-a-24: rgba($gray-10, 0.24);
|
||||
|
||||
$black: #fff;
|
||||
$black-normal: $gray-900;
|
||||
$white: $gray-50;
|
||||
$white-normal: $gray-50;
|
||||
$white-dark: $gray-100;
|
||||
|
||||
$green-50: #0a4020;
|
||||
$green-100: #0d532a;
|
||||
$green-200: #24663b;
|
||||
$green-300: #217645;
|
||||
$green-400: #108548;
|
||||
$green-500: #2da160;
|
||||
$green-600: #52b87a;
|
||||
$green-700: #91d4a8;
|
||||
$green-800: #c3e6cd;
|
||||
$green-900: #ecf4ee;
|
||||
$green-950: #f1fdf6;
|
||||
|
||||
$blue-50: #033464;
|
||||
$blue-100: #064787;
|
||||
$blue-200: #0b5cad;
|
||||
$blue-300: #1068bf;
|
||||
$blue-400: #1f75cb;
|
||||
$blue-500: #428fdc;
|
||||
$blue-600: #63a6e9;
|
||||
$blue-700: #9dc7f1;
|
||||
$blue-800: #cbe2f9;
|
||||
$blue-900: #e9f3fc;
|
||||
$blue-950: #f2f9ff;
|
||||
|
||||
$orange-50: #5c2900;
|
||||
$orange-100: #703800;
|
||||
$orange-200: #8f4700;
|
||||
$orange-300: #9e5400;
|
||||
$orange-400: #ab6100;
|
||||
$orange-500: #c17d10;
|
||||
$orange-600: #d99530;
|
||||
$orange-700: #e9be74;
|
||||
$orange-800: #f5d9a8;
|
||||
$orange-900: #fdf1dd;
|
||||
$orange-950: #fff4e1;
|
||||
|
||||
$red-50: #660e00;
|
||||
$red-100: #8d1300;
|
||||
$red-200: #ae1800;
|
||||
$red-300: #c91c00;
|
||||
$red-400: #dd2b0e;
|
||||
$red-500: #ec5941;
|
||||
$red-600: #f57f6c;
|
||||
$red-700: #fcb5aa;
|
||||
$red-800: #fdd4cd;
|
||||
$red-900: #fcf1ef;
|
||||
$red-950: #fff4f3;
|
||||
|
||||
$indigo-50: #1a1a40;
|
||||
$indigo-100: #292961;
|
||||
$indigo-200: #393982;
|
||||
$indigo-300: #4b4ba3;
|
||||
$indigo-400: #5b5bbd;
|
||||
$indigo-500: #6666c4;
|
||||
$indigo-600: #7c7ccc;
|
||||
$indigo-700: #a6a6de;
|
||||
$indigo-800: #d1d1f0;
|
||||
$indigo-900: #ebebfa;
|
||||
$indigo-950: #f7f7ff;
|
||||
|
||||
$purple-50: #232150;
|
||||
$purple-100: #2f2a6b;
|
||||
$purple-200: #453894;
|
||||
$purple-300: #5943b6;
|
||||
$purple-400: #694cc0;
|
||||
$purple-500: #7b58cf;
|
||||
$purple-600: #9475db;
|
||||
$purple-700: #ac93e6;
|
||||
$purple-800: #cbbbf2;
|
||||
$purple-900: #e1d8f9;
|
||||
$purple-950: #f4f0ff;
|
||||
|
||||
$theme-indigo-50: #1a1a40;
|
||||
|
||||
$border-color: #4f4f4f;
|
||||
|
||||
$data-viz-blue-50: #2a2b59;
|
||||
$data-viz-blue-100: #303470;
|
||||
$data-viz-blue-200: #374291;
|
||||
$data-viz-blue-300: #3f51ae;
|
||||
$data-viz-blue-400: #4e65cd;
|
||||
$data-viz-blue-500: #617ae2;
|
||||
$data-viz-blue-600: #7992f5;
|
||||
$data-viz-blue-700: #97acff;
|
||||
$data-viz-blue-800: #b7c6ff;
|
||||
$data-viz-blue-900: #d2dcff;
|
||||
$data-viz-blue-950: #e9ebff;
|
||||
|
||||
$border-white-normal: $border-color;
|
||||
|
||||
$gl-text-color-secondary: $gray-700;
|
||||
|
|
|
|||
|
|
@ -1,93 +1,10 @@
|
|||
@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;
|
||||
--gray-10: #{$gray-10};
|
||||
--gray-50: #{$gray-50};
|
||||
--gray-100: #{$gray-100};
|
||||
--gray-200: #{$gray-200};
|
||||
--gray-300: #{$gray-300};
|
||||
--gray-400: #{$gray-400};
|
||||
--gray-500: #{$gray-500};
|
||||
--gray-600: #{$gray-600};
|
||||
--gray-700: #{$gray-700};
|
||||
--gray-800: #{$gray-800};
|
||||
--gray-900: #{$gray-900};
|
||||
--gray-950: #{$gray-950};
|
||||
|
||||
--green-50: #{$green-50};
|
||||
--green-100: #{$green-100};
|
||||
--green-200: #{$green-200};
|
||||
--green-300: #{$green-300};
|
||||
--green-400: #{$green-400};
|
||||
--green-500: #{$green-500};
|
||||
--green-600: #{$green-600};
|
||||
--green-700: #{$green-700};
|
||||
--green-800: #{$green-800};
|
||||
--green-900: #{$green-900};
|
||||
--green-950: #{$green-950};
|
||||
|
||||
--blue-50: #{$blue-50};
|
||||
--blue-100: #{$blue-100};
|
||||
--blue-200: #{$blue-200};
|
||||
--blue-300: #{$blue-300};
|
||||
--blue-400: #{$blue-400};
|
||||
--blue-500: #{$blue-500};
|
||||
--blue-600: #{$blue-600};
|
||||
--blue-700: #{$blue-700};
|
||||
--blue-800: #{$blue-800};
|
||||
--blue-900: #{$blue-900};
|
||||
--blue-950: #{$blue-950};
|
||||
|
||||
--orange-50: #{$orange-50};
|
||||
--orange-100: #{$orange-100};
|
||||
--orange-200: #{$orange-200};
|
||||
--orange-300: #{$orange-300};
|
||||
--orange-400: #{$orange-400};
|
||||
--orange-500: #{$orange-500};
|
||||
--orange-600: #{$orange-600};
|
||||
--orange-700: #{$orange-700};
|
||||
--orange-800: #{$orange-800};
|
||||
--orange-900: #{$orange-900};
|
||||
--orange-950: #{$orange-950};
|
||||
|
||||
--red-50: #{$red-50};
|
||||
--red-100: #{$red-100};
|
||||
--red-200: #{$red-200};
|
||||
--red-300: #{$red-300};
|
||||
--red-400: #{$red-400};
|
||||
--red-500: #{$red-500};
|
||||
--red-600: #{$red-600};
|
||||
--red-700: #{$red-700};
|
||||
--red-800: #{$red-800};
|
||||
--red-900: #{$red-900};
|
||||
--red-950: #{$red-950};
|
||||
|
||||
--indigo-50: #{$indigo-50};
|
||||
--indigo-100: #{$indigo-100};
|
||||
--indigo-200: #{$indigo-200};
|
||||
--indigo-300: #{$indigo-300};
|
||||
--indigo-400: #{$indigo-400};
|
||||
--indigo-500: #{$indigo-500};
|
||||
--indigo-600: #{$indigo-600};
|
||||
--indigo-700: #{$indigo-700};
|
||||
--indigo-800: #{$indigo-800};
|
||||
--indigo-900: #{$indigo-900};
|
||||
--indigo-950: #{$indigo-950};
|
||||
|
||||
--purple-50: #{$purple-50};
|
||||
--purple-100: #{$purple-100};
|
||||
--purple-200: #{$purple-200};
|
||||
--purple-300: #{$purple-300};
|
||||
--purple-400: #{$purple-400};
|
||||
--purple-500: #{$purple-500};
|
||||
--purple-600: #{$purple-600};
|
||||
--purple-700: #{$purple-700};
|
||||
--purple-800: #{$purple-800};
|
||||
--purple-900: #{$purple-900};
|
||||
--purple-950: #{$purple-950};
|
||||
|
||||
--dark-icon-color-purple-1: #524a68;
|
||||
--dark-icon-color-purple-2: #715bae;
|
||||
|
|
@ -98,8 +15,6 @@
|
|||
--gl-text-color: #{$gray-900};
|
||||
--border-color: #{$border-color};
|
||||
|
||||
--white: #{$white};
|
||||
--black: #{$black};
|
||||
--gray-light: #{$gray-50};
|
||||
|
||||
--svg-status-bg: #{$white};
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@
|
|||
:root {
|
||||
&.ui-indigo {
|
||||
@include gitlab-theme(
|
||||
$indigo-200,
|
||||
$indigo-500,
|
||||
$indigo-700,
|
||||
$indigo-900,
|
||||
$theme-indigo-200,
|
||||
$theme-indigo-500,
|
||||
$theme-indigo-700,
|
||||
$theme-indigo-900,
|
||||
$white
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@
|
|||
:root {
|
||||
&.ui-light-indigo {
|
||||
@include gitlab-theme(
|
||||
$indigo-200,
|
||||
$indigo-500,
|
||||
$indigo-500,
|
||||
$indigo-700,
|
||||
$theme-indigo-200,
|
||||
$theme-indigo-500,
|
||||
$theme-indigo-500,
|
||||
$theme-indigo-700,
|
||||
$white
|
||||
);
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,8 @@
|
|||
---
|
||||
name: internal_events_for_product_analytics
|
||||
introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/136154
|
||||
rollout_issue_url:
|
||||
milestone: '16.7'
|
||||
type: development
|
||||
group: group::analytics instrumentation
|
||||
default_enabled: false
|
||||
|
|
@ -8,6 +8,7 @@ module Gitlab
|
|||
|
||||
class << self
|
||||
include Gitlab::Tracking::Helpers
|
||||
include Gitlab::Utils::StrongMemoize
|
||||
|
||||
def track_event(event_name, send_snowplow_event: true, **kwargs)
|
||||
raise UnknownEventError, "Unknown event: #{event_name}" unless EventDefinitions.known_event?(event_name)
|
||||
|
|
@ -23,6 +24,10 @@ module Gitlab
|
|||
increase_weekly_total_counter(event_name)
|
||||
update_unique_counter(event_name, kwargs)
|
||||
trigger_snowplow_event(event_name, kwargs) if send_snowplow_event
|
||||
|
||||
if Feature.enabled?(:internal_events_for_product_analytics)
|
||||
send_application_instrumentation_event(event_name, kwargs)
|
||||
end
|
||||
rescue StandardError => e
|
||||
Gitlab::ErrorTracking.track_and_raise_for_dev_exception(e, event_name: event_name, kwargs: kwargs)
|
||||
nil
|
||||
|
|
@ -93,6 +98,25 @@ module Gitlab
|
|||
Gitlab::ErrorTracking
|
||||
.track_and_raise_for_dev_exception(error, snowplow_category: category, snowplow_action: event_name)
|
||||
end
|
||||
|
||||
def send_application_instrumentation_event(event_name, kwargs)
|
||||
return if gitlab_sdk_client.nil?
|
||||
|
||||
user = kwargs[:user]
|
||||
|
||||
gitlab_sdk_client.identify(user&.id)
|
||||
gitlab_sdk_client.track(event_name)
|
||||
end
|
||||
|
||||
def gitlab_sdk_client
|
||||
app_id = ENV['GITLAB_ANALYTICS_ID']
|
||||
host = ENV['GITLAB_ANALYTICS_URL']
|
||||
|
||||
return unless app_id.present? && host.present?
|
||||
|
||||
GitlabSDK::Client.new(app_id: app_id, host: host)
|
||||
end
|
||||
strong_memoize_attr :gitlab_sdk_client
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ module QA
|
|||
end
|
||||
|
||||
context(
|
||||
'when using HTTP endpoint integration',
|
||||
'when using HTTP endpoint integration', :reliable,
|
||||
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/388469'
|
||||
) do
|
||||
before do
|
||||
|
|
@ -34,7 +34,7 @@ module QA
|
|||
end
|
||||
|
||||
context(
|
||||
'when using Prometheus integration',
|
||||
'when using Prometheus integration', :reliable,
|
||||
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/390123'
|
||||
) do
|
||||
before do
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ module QA
|
|||
end
|
||||
|
||||
context(
|
||||
'when using Prometheus integration',
|
||||
'when using Prometheus integration', :reliable,
|
||||
testcase: 'https://gitlab.com/gitlab-org/gitlab/-/quality/test_cases/393590'
|
||||
) do
|
||||
include_context 'sends and resolves test alerts'
|
||||
|
|
|
|||
|
|
@ -267,4 +267,64 @@ RSpec.describe Gitlab::InternalEvents, :snowplow, feature_category: :product_ana
|
|||
expect(Gitlab::UsageDataCounters::HLLRedisCounter).not_to have_received(:track_event)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'Product Analytics tracking' do
|
||||
let(:app_id) { 'foobar' }
|
||||
let(:url) { 'http://localhost:4000' }
|
||||
|
||||
before do
|
||||
described_class.clear_memoization(:gitlab_sdk_client)
|
||||
|
||||
stub_env('GITLAB_ANALYTICS_ID', app_id)
|
||||
stub_env('GITLAB_ANALYTICS_URL', url)
|
||||
end
|
||||
|
||||
subject(:track_event) { described_class.track_event(event_name, user: user) }
|
||||
|
||||
shared_examples 'does not send a Product Analytics event' do
|
||||
it 'does not call the Product Analytics Ruby SDK' do
|
||||
expect(GitlabSDK::Client).not_to receive(:new)
|
||||
|
||||
track_event
|
||||
end
|
||||
end
|
||||
|
||||
context 'when internal_events_for_product_analytics FF is enabled' do
|
||||
before do
|
||||
stub_feature_flags(internal_events_for_product_analytics: true)
|
||||
end
|
||||
|
||||
it 'calls Product Analytics Ruby SDK', :aggregate_failures do
|
||||
expect_next_instance_of(GitlabSDK::Client) do |sdk_client|
|
||||
expect(sdk_client).to receive(:identify).with(user.id)
|
||||
expect(sdk_client).to receive(:track).with(event_name)
|
||||
end
|
||||
|
||||
track_event
|
||||
end
|
||||
|
||||
context 'when GITLAB_ANALYTICS_ID is nil' do
|
||||
let(:app_id) { nil }
|
||||
|
||||
it_behaves_like 'does not send a Product Analytics event'
|
||||
end
|
||||
|
||||
context 'when GITLAB_ANALYTICS_URL is nil' do
|
||||
let(:url) { nil }
|
||||
|
||||
it_behaves_like 'does not send a Product Analytics event'
|
||||
end
|
||||
end
|
||||
|
||||
context 'when internal_events_for_product_analytics FF is disabled' do
|
||||
let(:app_id) { 'foobar' }
|
||||
let(:url) { 'http://localhost:4000' }
|
||||
|
||||
before do
|
||||
stub_feature_flags(internal_events_for_product_analytics: false)
|
||||
end
|
||||
|
||||
it_behaves_like 'does not send a Product Analytics event'
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -19,9 +19,9 @@ RSpec.describe Gitlab::UsageDataCounters::EditorUniqueCounter, :clean_gitlab_red
|
|||
|
||||
specify do
|
||||
aggregate_failures do
|
||||
expect(track_action(author: user, project: project)).to be_truthy
|
||||
expect(track_action(author: user2, project: project)).to be_truthy
|
||||
expect(track_action(author: user3, project: project)).to be_truthy
|
||||
track_action(author: user, project: project)
|
||||
track_action(author: user2, project: project)
|
||||
track_action(author: user3, project: project)
|
||||
|
||||
expect(count_unique(date_from: time.beginning_of_week, date_to: 1.week.from_now)).to eq(3)
|
||||
end
|
||||
|
|
@ -30,7 +30,9 @@ RSpec.describe Gitlab::UsageDataCounters::EditorUniqueCounter, :clean_gitlab_red
|
|||
it_behaves_like 'internal event tracking'
|
||||
|
||||
it 'does not track edit actions if author is not present' do
|
||||
expect(track_action(author: nil, project: project)).to be_nil
|
||||
track_action(author: nil, project: project)
|
||||
|
||||
expect(count_unique(date_from: time.beginning_of_week, date_to: 1.week.from_now)).to eq(0)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue