Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-05-19 18:44:42 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-05-19 18:44:42 +0300
commit4555e1b21c365ed8303ffb7a3325d773c9b8bf31 (patch)
tree5423a1c7516cffe36384133ade12572cf709398d /scripts
parente570267f2f6b326480d284e0164a6464ba4081bc (diff)
Add latest changes from gitlab-org/gitlab@13-12-stable-eev13.12.0-rc42
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/docs_screenshots.rb2
-rwxr-xr-xscripts/frontend/check_page_bundle_mixins_css_for_sideeffects.js2
-rw-r--r--scripts/frontend/merge_coverage_frontend.js2
-rw-r--r--scripts/frontend/stylelint/stylelint-utility-map.js2
-rw-r--r--scripts/frontend/stylelint/utility-classes-map.js457
-rwxr-xr-xscripts/gitaly-test-build8
-rwxr-xr-xscripts/gitaly-test-spawn4
-rw-r--r--scripts/gitaly_test.rb190
-rwxr-xr-xscripts/lint-doc.sh4
-rwxr-xr-xscripts/merge-simplecov2
-rw-r--r--scripts/prepare_build.sh10
-rwxr-xr-xscripts/regenerate-schema2
-rwxr-xr-xscripts/review_apps/review-apps.sh16
-rw-r--r--scripts/rspec_helpers.sh12
-rwxr-xr-xscripts/sync-reports96
-rwxr-xr-xscripts/trigger-build4
-rw-r--r--scripts/utils.sh26
-rwxr-xr-xscripts/validate_migration_schema2
-rwxr-xr-xscripts/validate_migration_timestamps24
19 files changed, 334 insertions, 531 deletions
diff --git a/scripts/docs_screenshots.rb b/scripts/docs_screenshots.rb
index 7472d9ea37b..094e7e87960 100755
--- a/scripts/docs_screenshots.rb
+++ b/scripts/docs_screenshots.rb
@@ -5,7 +5,7 @@
require 'png_quantizator'
require 'open3'
require 'parallel'
-require_relative '../tooling/lib/tooling/images.rb'
+require_relative '../tooling/lib/tooling/images'
generator = ARGV[0]
milestone = ARGV[1]
diff --git a/scripts/frontend/check_page_bundle_mixins_css_for_sideeffects.js b/scripts/frontend/check_page_bundle_mixins_css_for_sideeffects.js
index 22a4aac762b..4c439caa1da 100755
--- a/scripts/frontend/check_page_bundle_mixins_css_for_sideeffects.js
+++ b/scripts/frontend/check_page_bundle_mixins_css_for_sideeffects.js
@@ -8,8 +8,8 @@ if (process.env.RAILS_ENV !== 'production') {
}
const fs = require('fs');
-const glob = require('glob');
const path = require('path');
+const glob = require('glob');
const pjs = require('postcss');
const paths = glob.sync('public/assets/page_bundles/_mixins_and_variables_and_functions*.css', {
diff --git a/scripts/frontend/merge_coverage_frontend.js b/scripts/frontend/merge_coverage_frontend.js
index 6b3826ddac7..bd56b0d5868 100644
--- a/scripts/frontend/merge_coverage_frontend.js
+++ b/scripts/frontend/merge_coverage_frontend.js
@@ -1,8 +1,8 @@
+const { resolve } = require('path');
const { sync } = require('glob');
const { createCoverageMap } = require('istanbul-lib-coverage');
const { createContext } = require('istanbul-lib-report');
const { create } = require('istanbul-reports');
-const { resolve } = require('path');
const coverageMap = createCoverageMap();
diff --git a/scripts/frontend/stylelint/stylelint-utility-map.js b/scripts/frontend/stylelint/stylelint-utility-map.js
index 545aade9ccc..676f83cd067 100644
--- a/scripts/frontend/stylelint/stylelint-utility-map.js
+++ b/scripts/frontend/stylelint/stylelint-utility-map.js
@@ -1,8 +1,8 @@
const fs = require('fs');
-const sass = require('node-sass');
const path = require('path');
const postcss = require('postcss');
const prettier = require('prettier');
+const sass = require('sass');
const utils = require('./stylelint-utils');
diff --git a/scripts/frontend/stylelint/utility-classes-map.js b/scripts/frontend/stylelint/utility-classes-map.js
index 1929f950f6c..a174812ff93 100644
--- a/scripts/frontend/stylelint/utility-classes-map.js
+++ b/scripts/frontend/stylelint/utility-classes-map.js
@@ -1,216 +1,259 @@
module.exports = {
'99097f29a9473b56eacdb9ff0681c366': { selectors: ['.align-baseline (1:1)'] },
- d969b318bb994e104e8c965006d71cb7: { selectors: ['.align-top (4:1)'] },
- '8cd54ab97b9cc43cb9d13d2ea7c601c7': { selectors: ['.align-middle (7:1)'] },
- dd06eb6c49e979b7a9fdaa7119aa0a0b: { selectors: ['.align-bottom (10:1)'] },
- '0af1e90cbc468615e299ec9f49e97c4a': { selectors: ['.align-text-bottom (13:1)'] },
- '50af706df238cf59bdc634fc684ba0c9': { selectors: ['.align-text-top (16:1)'] },
- c968922e6e47445362129a684b5913c0: { selectors: ['.bg-primary (19:1)'] },
- '3c397f9786c24cff4779a11cf5b3d7e7': { selectors: ['.bg-secondary (27:1)'] },
- '659677469a4477267fabc1788f7cad4e': { selectors: ['.bg-success (35:1)'] },
- '56d246d5b6a708a4c6f78dbd2444106c': { selectors: ['.bg-info (43:1)'] },
- '6bec0a33df3a6380c30103db5c273455': { selectors: ['.bg-warning (51:1)'] },
- '0ce5d074c8667ce6c32360658f428d5d': { selectors: ['.bg-danger (59:1)'] },
- '0d0269c62a01e97caa9039d227a25d12': { selectors: ['.bg-light (67:1)'] },
- '3a56309ad8c5b46ebcc3b13fe1987ac1': { selectors: ['.bg-dark (75:1)'] },
- '0e252f8dd392a33343d3d5efc1e3194a': { selectors: ['.bg-white (83:1)'] },
- '3af6f52f0ed4f98e797d5f10a35ca6bc': { selectors: ['.bg-transparent (86:1)'] },
- '16da7fdce74577ceab356509db565612': { selectors: ['.border (89:1)'] },
- '929622517ca05efde3b51e5f1a57064e': { selectors: ['.border-top (92:1)'] },
- '7283090353df54f1d515a6ceddfb9693': { selectors: ['.border-right (95:1)'] },
- bd5670d71332c652b46db82949042e31: { selectors: ['.border-bottom (98:1)'] },
- fa71e003d04734a898a85cc5285e3cbb: { selectors: ['.border-left (101:1)'] },
- ed482cea071e316f29d78fd93c3f3644: { selectors: ['.border-0 (104:1)'] },
- '90cb661baf21e10be6e479cb0544b1a7': { selectors: ['.border-top-0 (107:1)'] },
- '8a32707eaa09fc998bf8cc915710b60c': { selectors: ['.border-right-0 (110:1)'] },
- a6f01957e142a000e7742b31ac6c2331: { selectors: ['.border-bottom-0 (113:1)'] },
- c740fe952cc1985ee14f7d1c7a359a29: { selectors: ['.border-left-0 (116:1)'] },
- af9dd93e9780306ffa4bb25a6384902f: { selectors: ['.border-primary (119:1)'] },
- afa290dfe58cca06be5924ceae1b019b: { selectors: ['.border-secondary (122:1)'] },
- '9b1ac460bdddf1e0164d7bf988cc2da8': { selectors: ['.border-success (125:1)'] },
- '091cbf41d6be12061382fa571ee1ce82': { selectors: ['.border-info (128:1)'] },
- '3ada321d4a387901dad6d80e1b6be3fd': { selectors: ['.border-warning (131:1)'] },
- '13b4713dd52c1e359d1b43dd658cb249': { selectors: ['.border-danger (134:1)'] },
- '0048e110875ea22b04104d55e764a367': { selectors: ['.border-light (137:1)'] },
- a900b6b567c9a911326cdd0e19f40f8e: { selectors: ['.border-dark (140:1)'] },
- '78bcd867ac9677c743c2bc33b872f27b': { selectors: ['.border-white (143:1)'] },
- e0fc10c49c7b7f4d1924336d21a4f64e: { selectors: ['.rounded (146:1)'] },
- '1b74b9d0a7d6a59281b5b5cae43c859a': { selectors: ['.rounded-top (149:1)'] },
- '20b75f55f39e662e038d51a6442c03df': { selectors: ['.rounded-right (153:1)'] },
- '83ea6db794873239c21f44af25618677': { selectors: ['.rounded-bottom (157:1)'] },
- '8464e9e8001e65dfc06397436a5eebd7': { selectors: ['.rounded-left (161:1)'] },
- '59c2f788287fa43caf5891adfc5c796e': { selectors: ['.rounded-circle (165:1)'] },
- '31a632ba94f8c41558bd6044458f1459': { selectors: ['.rounded-0 (168:1)'] },
- '16aaf53ab29d6b248b0257f2fa413914': { selectors: ['.d-none (176:1)'] },
- '4f42736ac9217039ed791b4306e60aeb': { selectors: ['.d-inline (179:1)'] },
- '067efa04b76649e8afcdceb9f5f7e870': { selectors: ['.d-inline-block (182:1)'] },
- de54f49149fb9b512aa79ad9ada838f2: { selectors: ['.d-block (185:1)'] },
- '80fc32acbc0c28ee890a160c23529d26': { selectors: ['.d-table (188:1)'] },
- '6a87b1db48298ca94cbe5dee79a6eed1': { selectors: ['.d-table-row (191:1)'] },
- b9896f0d94760bf5920f47904e9f7512: { selectors: ['.d-table-cell (194:1)'] },
- d25c51f38c4d057209b96c664de68c44: { selectors: ['.d-flex (197:1)'] },
- e72d46b636d5b8e17e771daa95793f33: { selectors: ['.d-inline-flex (200:1)'] },
- '2c433b7c14a5ae32cfa8ec7867ee8526': { selectors: ['.embed-responsive (303:1)'] },
+ d969b318bb994e104e8c965006d71cb7: { selectors: ['.align-top (5:1)'] },
+ '8cd54ab97b9cc43cb9d13d2ea7c601c7': { selectors: ['.align-middle (9:1)'] },
+ dd06eb6c49e979b7a9fdaa7119aa0a0b: { selectors: ['.align-bottom (13:1)'] },
+ '0af1e90cbc468615e299ec9f49e97c4a': { selectors: ['.align-text-bottom (17:1)'] },
+ '50af706df238cf59bdc634fc684ba0c9': { selectors: ['.align-text-top (21:1)'] },
+ c968922e6e47445362129a684b5913c0: { selectors: ['.bg-primary (25:1)'] },
+ '3c397f9786c24cff4779a11cf5b3d7e7': { selectors: ['.bg-secondary (35:1)'] },
+ '659677469a4477267fabc1788f7cad4e': { selectors: ['.bg-success (45:1)'] },
+ '56d246d5b6a708a4c6f78dbd2444106c': { selectors: ['.bg-info (55:1)'] },
+ '6bec0a33df3a6380c30103db5c273455': { selectors: ['.bg-warning (65:1)'] },
+ '0ce5d074c8667ce6c32360658f428d5d': { selectors: ['.bg-danger (75:1)'] },
+ '0d0269c62a01e97caa9039d227a25d12': { selectors: ['.bg-light (85:1)'] },
+ '3a56309ad8c5b46ebcc3b13fe1987ac1': { selectors: ['.bg-dark (95:1)'] },
+ '0e252f8dd392a33343d3d5efc1e3194a': { selectors: ['.bg-white (105:1)'] },
+ '3af6f52f0ed4f98e797d5f10a35ca6bc': { selectors: ['.bg-transparent (109:1)'] },
+ '16da7fdce74577ceab356509db565612': { selectors: ['.border (113:1)'] },
+ '929622517ca05efde3b51e5f1a57064e': { selectors: ['.border-top (117:1)'] },
+ '7283090353df54f1d515a6ceddfb9693': { selectors: ['.border-right (121:1)'] },
+ bd5670d71332c652b46db82949042e31: { selectors: ['.border-bottom (125:1)'] },
+ fa71e003d04734a898a85cc5285e3cbb: { selectors: ['.border-left (129:1)'] },
+ ed482cea071e316f29d78fd93c3f3644: { selectors: ['.border-0 (133:1)'] },
+ '90cb661baf21e10be6e479cb0544b1a7': { selectors: ['.border-top-0 (137:1)'] },
+ '8a32707eaa09fc998bf8cc915710b60c': { selectors: ['.border-right-0 (141:1)'] },
+ a6f01957e142a000e7742b31ac6c2331: { selectors: ['.border-bottom-0 (145:1)'] },
+ c740fe952cc1985ee14f7d1c7a359a29: { selectors: ['.border-left-0 (149:1)'] },
+ af9dd93e9780306ffa4bb25a6384902f: { selectors: ['.border-primary (153:1)'] },
+ afa290dfe58cca06be5924ceae1b019b: { selectors: ['.border-secondary (157:1)'] },
+ '9b1ac460bdddf1e0164d7bf988cc2da8': { selectors: ['.border-success (161:1)'] },
+ '091cbf41d6be12061382fa571ee1ce82': { selectors: ['.border-info (165:1)'] },
+ '3ada321d4a387901dad6d80e1b6be3fd': { selectors: ['.border-warning (169:1)'] },
+ '13b4713dd52c1e359d1b43dd658cb249': { selectors: ['.border-danger (173:1)'] },
+ '0048e110875ea22b04104d55e764a367': { selectors: ['.border-light (177:1)'] },
+ a900b6b567c9a911326cdd0e19f40f8e: { selectors: ['.border-dark (181:1)'] },
+ '78bcd867ac9677c743c2bc33b872f27b': { selectors: ['.border-white (185:1)'] },
+ '35ef133b860874a5879e9451c491bc1c': { selectors: ['.rounded-sm (189:1)'] },
+ e0fc10c49c7b7f4d1924336d21a4f64e: { selectors: ['.rounded (193:1)'] },
+ '1b74b9d0a7d6a59281b5b5cae43c859a': { selectors: ['.rounded-top (197:1)'] },
+ '20b75f55f39e662e038d51a6442c03df': { selectors: ['.rounded-right (202:1)'] },
+ '83ea6db794873239c21f44af25618677': { selectors: ['.rounded-bottom (207:1)'] },
+ '8464e9e8001e65dfc06397436a5eebd7': { selectors: ['.rounded-left (212:1)'] },
+ a1148f40e8c509b2bcc829e2181c7582: { selectors: ['.rounded-lg (217:1)'] },
+ '59c2f788287fa43caf5891adfc5c796e': { selectors: ['.rounded-circle (221:1)'] },
+ '7f35b0a4b74ee7174b13cb841df0bdb3': { selectors: ['.rounded-pill (225:1)'] },
+ '31a632ba94f8c41558bd6044458f1459': { selectors: ['.rounded-0 (229:1)'] },
+ '16aaf53ab29d6b248b0257f2fa413914': { selectors: ['.d-none (239:1)'] },
+ '4f42736ac9217039ed791b4306e60aeb': { selectors: ['.d-inline (243:1)'] },
+ '067efa04b76649e8afcdceb9f5f7e870': { selectors: ['.d-inline-block (247:1)'] },
+ de54f49149fb9b512aa79ad9ada838f2: { selectors: ['.d-block (251:1)'] },
+ '80fc32acbc0c28ee890a160c23529d26': { selectors: ['.d-table (255:1)'] },
+ '6a87b1db48298ca94cbe5dee79a6eed1': { selectors: ['.d-table-row (259:1)'] },
+ b9896f0d94760bf5920f47904e9f7512: { selectors: ['.d-table-cell (263:1)'] },
+ d25c51f38c4d057209b96c664de68c44: { selectors: ['.d-flex (267:1)'] },
+ e72d46b636d5b8e17e771daa95793f33: { selectors: ['.d-inline-flex (271:1)'] },
+ '2c433b7c14a5ae32cfa8ec7867ee8526': { selectors: ['.embed-responsive (460:1)'] },
'56b318b8d8eb845b769d60cefcd131bb': {
selectors: [
- '.embed-responsive .embed-responsive-item, .embed-responsive iframe, .embed-responsive embed, .embed-responsive object, .embed-responsive video (312:3)',
+ '.embed-responsive .embed-responsive-item, .embed-responsive iframe, .embed-responsive embed, .embed-responsive object, .embed-responsive video (471:1)',
],
},
- c5009af89633c4d2f71a0a9fa333630d: { selectors: ['.flex-row (337:1)'] },
- '7b06a3d956579cd64b6f5b1a57255369': { selectors: ['.flex-column (340:1)'] },
- '21744a8c4dc6ed1519903b4236b00af4': { selectors: ['.flex-row-reverse (343:1)'] },
- '18d903735f9c71070b6d8166aa1112f1': { selectors: ['.flex-column-reverse (346:1)'] },
- e2a57aa8196347d4da84f33a4f551325: { selectors: ['.flex-wrap (349:1)'] },
- b6b29f75b174b5609f9e7d5eef457b70: { selectors: ['.flex-nowrap (352:1)'] },
- '839230fc7c0abacb6418b49d8f10b27f': { selectors: ['.flex-wrap-reverse (355:1)'] },
- '924d9b261944a8e8ff684d5b519062bb': { selectors: ['.flex-fill (358:1)'] },
- '5ed396aeb08464b7df8fc37d29455319': { selectors: ['.flex-grow-0 (361:1)'] },
- '94251dc4d012339a3e37df6196fc79bb': { selectors: ['.flex-grow-1 (364:1)'] },
- '0eeed7dabca0452a46574776a4485e6e': { selectors: ['.flex-shrink-0 (367:1)'] },
- c69e60d5e51a1b74d22b172ab98ef9d5: { selectors: ['.flex-shrink-1 (370:1)'] },
- '03401c1a81eb6d4639f020f76dd60176': { selectors: ['.justify-content-start (373:1)'] },
- '39e3d2c344e78869c98ef099249e717d': { selectors: ['.justify-content-end (376:1)'] },
- '3b2d00c0bea857ab78a71b0872842980': { selectors: ['.justify-content-center (379:1)'] },
- b1c3c9edd20ed7c08b43863d38ebee40: { selectors: ['.justify-content-between (382:1)'] },
- a11b4b1d983c5fa75777f273e998f73e: { selectors: ['.justify-content-around (385:1)'] },
- '50e33f29f65bfffa6a3591fcb6045ca9': { selectors: ['.align-items-start (388:1)'] },
- e44b276e47415ec19b74cc16740ada1d: { selectors: ['.align-items-end (391:1)'] },
- '4a9d2716bca651758564059dceed1271': { selectors: ['.align-items-center (394:1)'] },
- fd970b017f7f558f30cb273bf71ede7d: { selectors: ['.align-items-baseline (397:1)'] },
- '7204b6b00b69f8af1e4a24c9b6e7f7f9': { selectors: ['.align-items-stretch (400:1)'] },
- '350fbb74eb70bd05f9438067c3990e9f': { selectors: ['.align-content-start (403:1)'] },
- '74d61397b4fcbf608f3dba39ab3b2a1b': { selectors: ['.align-content-end (406:1)'] },
- eed1ab4ee9e5b327a434512176741548: { selectors: ['.align-content-center (409:1)'] },
- '19878ab832978ef7e1746ac2fe4084b2': { selectors: ['.align-content-between (412:1)'] },
- dded333d0522692809517039f5a727c1: { selectors: ['.align-content-around (415:1)'] },
- '5cbb83ea2af7e9db8ef13f4c7d6db875': { selectors: ['.align-content-stretch (418:1)'] },
- dc3df46d3c023184d375a63a71916646: { selectors: ['.align-self-auto (421:1)'] },
- '0c6d2d8c9732c571f9cf61a4b1d2877f': { selectors: ['.align-self-start (424:1)'] },
- fe7c6071e3e17214df1bdd38850d9ff0: { selectors: ['.align-self-end (427:1)'] },
- '9611bbad74d72d50cf238088576a5089': { selectors: ['.align-self-center (430:1)'] },
- '4bc5edddf5981866946175bfedb7247f': { selectors: ['.align-self-baseline (433:1)'] },
- '4fffdd27ec60120ec9ed16fd7feef801': { selectors: ['.align-self-stretch (436:1)'] },
- '39e658501f5502b35919f02fa9591360': { selectors: ['.float-left (719:1)'] },
- b51436c537ffc4269b1533e44d7c3467: { selectors: ['.float-right (722:1)'] },
- c4597a87d2c793a6d696cfe06f6c95ce: { selectors: ['.float-none (725:1)'] },
- aaf8dc6e0768e59f3098a98a5c144d66: { selectors: ['.position-static (760:1)'] },
- '79592de2383045d15ab57d35aa1dab95': { selectors: ['.position-relative (763:1)'] },
- a7c272f53d0368730bde4c2740ffb5c3: { selectors: ['.position-absolute (766:1)'] },
- dad0bb92d53f17cf8affc10f77824b7f: { selectors: ['.position-fixed (769:1)'] },
- '6da0f6a7354a75fe6c95b08a4cabc06f': { selectors: ['.position-sticky (772:1)'] },
- '66602e21eea7b673883155c8f42b9590': { selectors: ['.fixed-top (775:1)'] },
- '33ea70eb6db7f6ab3469680f182abb19': { selectors: ['.fixed-bottom (782:1)'] },
- '405e9dd7c9919943af14658313fd31e4': { selectors: ['.sr-only (795:1)'] },
- '9220ad156a70c2586b15fe2b9b6108b2': { selectors: ['.shadow-sm (813:1)'] },
- b1b8c0ff70767ca2160811a026766982: { selectors: ['.shadow (816:1)'] },
- da0792abe99964acb6692a03c61d6dd8: { selectors: ['.shadow-lg (819:1)'] },
- bb2173057af1cf20e687469b2d9cbb3c: { selectors: ['.shadow-none (822:1)'] },
- '6d8abb6519a186483b25429ab8b9765e': { selectors: ['.w-25 (825:1)'] },
- a087c1ffdf8ead76cdd37445b414d63e: { selectors: ['.w-50 (828:1)'] },
- '28180742013a90275be5633e6ec0dd51': { selectors: ['.w-75 (831:1)'] },
- '195a03bc95a0af0ba6c8824db97a0b2f': { selectors: ['.w-100 (834:1)'] },
- e67c74b650d6236b03be9dfc10c78e32: { selectors: ['.w-auto (837:1)'] },
- c1b6262b3ee069addc1fbe46f64aac4e: { selectors: ['.h-25 (840:1)'] },
- a520396ae349bef86145e0761aa0699e: { selectors: ['.h-50 (843:1)'] },
- '7c53b57d54beb087fd7ab8b669c5fe60': { selectors: ['.h-75 (846:1)'] },
- ad74f1972cb745b7a78b03e16a387f21: { selectors: ['.h-100 (849:1)'] },
- '2cd49c3d63d260ba4f0b23c559ad05e0': { selectors: ['.h-auto (852:1)'] },
- '0b43071a67efc45ee1735fdc2491313c': { selectors: ['.mw-100 (855:1)'] },
- eac31a6f08e5c935e24b97df0fdad579: { selectors: ['.mh-100 (858:1)'] },
- cfdb4f497b16074959bfd3deb7ea9c42: { selectors: ['.m-0 (861:1)'] },
- '4d666c270ba50524312d97c4b937d153': { selectors: ['.mt-0, .my-0 (864:1)'] },
- eccf47ccd76ceffb4b139cb6c080b5ac: { selectors: ['.mr-0, .mx-0 (868:1)'] },
- '9bc513e73c0bdc6efdf170cb31de16d1': { selectors: ['.mb-0, .my-0 (872:1)'] },
- e99cfc55b03f0e67f11628b19889ad7b: { selectors: ['.ml-0, .mx-0 (876:1)'] },
- e1c39484d90d2acaa00973531f47f738: { selectors: ['.m-1 (880:1)'] },
- '63791bc02eccfdfa2c01621a801e565f': { selectors: ['.mt-1, .my-1 (883:1)'] },
- bcb27ab9d7dcfdd0d7cacad02709966c: { selectors: ['.mr-1, .mx-1 (887:1)'] },
- cb5d1c4328e25b5bc93be9a252973690: { selectors: ['.mb-1, .my-1 (891:1)'] },
- b80b1010c7dcfbb30bed9015c4f2e969: { selectors: ['.ml-1, .mx-1 (895:1)'] },
- ecab1c9cdf8a562e3c0f70307aeafa89: { selectors: ['.m-2 (899:1)'] },
- '6505fe17fbbd88b1884113a754aa82ab': { selectors: ['.mt-2, .my-2 (902:1)'] },
- '6f0c7d09d1e729f332c4671ccc2b48c0': { selectors: ['.mr-2, .mx-2 (906:1)'] },
- '70ef7b668b382b3c747b2d73e08cdbed': { selectors: ['.mb-2, .my-2 (910:1)'] },
- '2d7f277cc78ed324a8fc1f71ab281e1f': { selectors: ['.ml-2, .mx-2 (914:1)'] },
- '8ebcfe52fd4024861082ffb1735747a7': { selectors: ['.m-3 (918:1)'] },
- '9965fb516bdb72b87023a533123a8035': { selectors: ['.mt-3, .my-3 (921:1)'] },
- b1fcbbb1dc6226f6da6000830088e051: { selectors: ['.mr-3, .mx-3 (925:1)'] },
- '02204826cfbe3da98535c0d802870940': { selectors: ['.mb-3, .my-3 (929:1)'] },
- '0259859060250ae6b730218733e7a437': { selectors: ['.ml-3, .mx-3 (933:1)'] },
- '8cf300dab2a4994a105eeddda826f2e6': { selectors: ['.m-4 (937:1)'] },
- '1ba62fdddd3349f52a452050688905c7': { selectors: ['.mt-4, .my-4 (940:1)'] },
- '66a104129fa13db5a0829567fba6ee41': { selectors: ['.mr-4, .mx-4 (944:1)'] },
- eefcc4c10b79e70e8e8a5a66fb2b7aa1: { selectors: ['.mb-4, .my-4 (948:1)'] },
- eb1503656dc920d15a31116956fdffa4: { selectors: ['.ml-4, .mx-4 (952:1)'] },
- '79cbb6e5c9b73fd0be29d4fc5733a099': { selectors: ['.m-5 (956:1)'] },
- '67d8671699df706a428e7da42a7141cb': { selectors: ['.mt-5, .my-5 (959:1)'] },
- e9cb4a0a8a60ff018c87a0b7efa9de29: { selectors: ['.mr-5, .mx-5 (963:1)'] },
- '93f579214354dbd8cb60209c068f0086': { selectors: ['.mb-5, .my-5 (967:1)'] },
- '2a789d4af97d2b87fd0bf2b4626120cd': { selectors: ['.ml-5, .mx-5 (971:1)'] },
- '64a89d28e8287c1a0ac153001082644c': { selectors: ['.p-0 (975:1)'] },
- b03aa6db5ddf110bbdbefbbec43fda30: { selectors: ['.pt-0, .py-0 (978:1)'] },
- e38192ca32a98888d4c4876880f4fece: { selectors: ['.pr-0, .px-0 (982:1)'] },
- '70fe8ef50e999ddd29506f672c107069': { selectors: ['.pb-0, .py-0 (986:1)'] },
- '9355e8cd9109049726475ba356661bcf': { selectors: ['.pl-0, .px-0 (990:1)'] },
- '0d4c53468c2658c5324b9ec7a8ca6de2': { selectors: ['.p-1 (994:1)'] },
- d74e430b2a56b3a4e20065c972b7fa3f: { selectors: ['.pt-1, .py-1 (997:1)'] },
- '21e4644967aedd19888b6f4a700b629b': { selectors: ['.pr-1, .px-1 (1001:1)'] },
- e315a7b9b7a1d0df3ea7d95af5203a0b: { selectors: ['.pb-1, .py-1 (1005:1)'] },
- '14630ca122e1d9830a9ef5591c4097d0': { selectors: ['.pl-1, .px-1 (1009:1)'] },
- '5b1c65e5139e86e5f4755824f8b77d13': { selectors: ['.p-2 (1013:1)'] },
- '244af70950a1e200d3849f75ce51d707': { selectors: ['.pt-2, .py-2 (1016:1)'] },
- b583832738cad724c7c23e5c14ac9bfb: { selectors: ['.pr-2, .px-2 (1020:1)'] },
- e1e633c4f1375e8276154192d8899e39: { selectors: ['.pb-2, .py-2 (1024:1)'] },
- '676b01e25f0dbb3f7d2f2529231cda08': { selectors: ['.pl-2, .px-2 (1028:1)'] },
- '9b5165e3333b22801f2287f7983d7516': { selectors: ['.p-3 (1032:1)'] },
- '5bcaa9df87a507f6cd14659ea176bdc5': { selectors: ['.pt-3, .py-3 (1035:1)'] },
- f706637180776c5589385599705a2409: { selectors: ['.pr-3, .px-3 (1039:1)'] },
- '41157cfbcf47990b383b5b0379386ab2': { selectors: ['.pb-3, .py-3 (1043:1)'] },
- cac1e7a204bb6a1f42707b684ad46238: { selectors: ['.pl-3, .px-3 (1047:1)'] },
- '43e0671cd41a4b7590284888b607a134': { selectors: ['.p-4 (1051:1)'] },
- '116b0f95ebde1ff8907e488413a88854': { selectors: ['.pt-4, .py-4 (1054:1)'] },
- ecb06765fe691d892df000eebbb23dcc: { selectors: ['.pr-4, .px-4 (1058:1)'] },
- '1331503a48d36025c861e660bc615048': { selectors: ['.pb-4, .py-4 (1062:1)'] },
- f8665f7e547e499abd7ac63813b274f5: { selectors: ['.pl-4, .px-4 (1066:1)'] },
- '4160a315459f1b5a98255863f42136fe': { selectors: ['.p-5 (1070:1)'] },
- f55a6b2de6a434ec7b4375f06f4fad75: { selectors: ['.pt-5, .py-5 (1073:1)'] },
- '19391dc45c8d7730a86d521c28f52c3f': { selectors: ['.pr-5, .px-5 (1077:1)'] },
- '15898bcb7ff74a60006f9931422b4ad3': { selectors: ['.pb-5, .py-5 (1081:1)'] },
- '6290bdc6355aed1e9b27379003aa4828': { selectors: ['.pl-5, .px-5 (1085:1)'] },
- e57ec4fe9e8ed36e38f1c50041fc9f47: { selectors: ['.m-auto (1089:1)'] },
- f10380665932186d1effe0674a74ba12: { selectors: ['.mt-auto, .my-auto (1092:1)'] },
- '2ce71a27023eb50a47c24a99399faa28': { selectors: ['.mr-auto, .mx-auto (1096:1)'] },
- '196c77d357d314678cd3a99cfacbea96': { selectors: ['.mb-auto, .my-auto (1100:1)'] },
- ca007ce268b463a6bf42145cf5ce3685: { selectors: ['.ml-auto, .mx-auto (1104:1)'] },
- cb431b84034f2e710509c7656b3c6f16: { selectors: ['.text-monospace (1844:1)'] },
- a8fc5ca823f51d72673577064387a029: { selectors: ['.text-justify (1847:1)'] },
- '0bb94dfab7ca2c9892ebbd993b2baf0f': { selectors: ['.text-nowrap (1850:1)'] },
- aea4958ce85ddc0cbffca1015c3a7eba: { selectors: ['.text-truncate (1853:1)'] },
- '52b9443947b6b94a5c7e1b837da115e2': { selectors: ['.text-left (1858:1)'] },
- baaf5136fc6e1c54ba29b6040f166d5f: { selectors: ['.text-right (1861:1)'] },
- '282aa4319bee75af06cc2632b7124e26': { selectors: ['.text-center (1864:1)'] },
- '1cb1c8ad9b560eca25ebcefe95c1b7fa': { selectors: ['.text-lowercase (1899:1)'] },
- '45234533eac658ba2857e9c4d3bc78a5': { selectors: ['.text-uppercase (1902:1)'] },
- f9e3f64237f2e81b6aed84223a0ceb1d: { selectors: ['.text-capitalize (1905:1)'] },
- '09caca3d36aa9f3ef815e0da7e1a16b4': { selectors: ['.font-weight-light (1908:1)'] },
- '25189f4fad18eaeef19e349c6680834c': { selectors: ['.font-weight-normal (1911:1)'] },
- b2a9507678ec557603eb8ec077f0eb1f: { selectors: ['.font-weight-bold (1914:1)'] },
- '7d2da06b621a98a8599e5ec82e39eac8': { selectors: ['.font-italic (1917:1)'] },
- '0020d10e4fce033b418aace7c3143b82': { selectors: ['.text-white (1920:1)'] },
- '34ad81e372a038e6f78ae4f22bd4813d': { selectors: ['.text-primary (1923:1)'] },
+ c5009af89633c4d2f71a0a9fa333630d: { selectors: ['.flex-row (501:1)'] },
+ '7b06a3d956579cd64b6f5b1a57255369': { selectors: ['.flex-column (505:1)'] },
+ '21744a8c4dc6ed1519903b4236b00af4': { selectors: ['.flex-row-reverse (509:1)'] },
+ '18d903735f9c71070b6d8166aa1112f1': { selectors: ['.flex-column-reverse (513:1)'] },
+ e2a57aa8196347d4da84f33a4f551325: { selectors: ['.flex-wrap (517:1)'] },
+ b6b29f75b174b5609f9e7d5eef457b70: { selectors: ['.flex-nowrap (521:1)'] },
+ '839230fc7c0abacb6418b49d8f10b27f': { selectors: ['.flex-wrap-reverse (525:1)'] },
+ '924d9b261944a8e8ff684d5b519062bb': { selectors: ['.flex-fill (529:1)'] },
+ '5ed396aeb08464b7df8fc37d29455319': { selectors: ['.flex-grow-0 (533:1)'] },
+ '94251dc4d012339a3e37df6196fc79bb': { selectors: ['.flex-grow-1 (537:1)'] },
+ '0eeed7dabca0452a46574776a4485e6e': { selectors: ['.flex-shrink-0 (541:1)'] },
+ c69e60d5e51a1b74d22b172ab98ef9d5: { selectors: ['.flex-shrink-1 (545:1)'] },
+ '03401c1a81eb6d4639f020f76dd60176': { selectors: ['.justify-content-start (549:1)'] },
+ '39e3d2c344e78869c98ef099249e717d': { selectors: ['.justify-content-end (553:1)'] },
+ '3b2d00c0bea857ab78a71b0872842980': { selectors: ['.justify-content-center (557:1)'] },
+ b1c3c9edd20ed7c08b43863d38ebee40: { selectors: ['.justify-content-between (561:1)'] },
+ a11b4b1d983c5fa75777f273e998f73e: { selectors: ['.justify-content-around (565:1)'] },
+ '50e33f29f65bfffa6a3591fcb6045ca9': { selectors: ['.align-items-start (569:1)'] },
+ e44b276e47415ec19b74cc16740ada1d: { selectors: ['.align-items-end (573:1)'] },
+ '4a9d2716bca651758564059dceed1271': { selectors: ['.align-items-center (577:1)'] },
+ fd970b017f7f558f30cb273bf71ede7d: { selectors: ['.align-items-baseline (581:1)'] },
+ '7204b6b00b69f8af1e4a24c9b6e7f7f9': { selectors: ['.align-items-stretch (585:1)'] },
+ '350fbb74eb70bd05f9438067c3990e9f': { selectors: ['.align-content-start (589:1)'] },
+ '74d61397b4fcbf608f3dba39ab3b2a1b': { selectors: ['.align-content-end (593:1)'] },
+ eed1ab4ee9e5b327a434512176741548: { selectors: ['.align-content-center (597:1)'] },
+ '19878ab832978ef7e1746ac2fe4084b2': { selectors: ['.align-content-between (601:1)'] },
+ dded333d0522692809517039f5a727c1: { selectors: ['.align-content-around (605:1)'] },
+ '5cbb83ea2af7e9db8ef13f4c7d6db875': { selectors: ['.align-content-stretch (609:1)'] },
+ dc3df46d3c023184d375a63a71916646: { selectors: ['.align-self-auto (613:1)'] },
+ '0c6d2d8c9732c571f9cf61a4b1d2877f': { selectors: ['.align-self-start (617:1)'] },
+ fe7c6071e3e17214df1bdd38850d9ff0: { selectors: ['.align-self-end (621:1)'] },
+ '9611bbad74d72d50cf238088576a5089': { selectors: ['.align-self-center (625:1)'] },
+ '4bc5edddf5981866946175bfedb7247f': { selectors: ['.align-self-baseline (629:1)'] },
+ '4fffdd27ec60120ec9ed16fd7feef801': { selectors: ['.align-self-stretch (633:1)'] },
+ '39e658501f5502b35919f02fa9591360': { selectors: ['.float-left (1185:1)'] },
+ b51436c537ffc4269b1533e44d7c3467: { selectors: ['.float-right (1189:1)'] },
+ c4597a87d2c793a6d696cfe06f6c95ce: { selectors: ['.float-none (1193:1)'] },
+ '16b2e7e5b666b69b9581be6a44947d6f': { selectors: ['.user-select-all (1249:1)'] },
+ f5c4d8f25b8338031e719edc77659558: { selectors: ['.user-select-auto (1253:1)'] },
+ '71ba65d43dcc2b1c3f47ac2578983e83': { selectors: ['.user-select-none (1257:1)'] },
+ '5902adc842d83ad70b89ece99b82a7a9': { selectors: ['.overflow-auto (1261:1)'] },
+ bfb19f18b91fa46f0502e32153287cc4: { selectors: ['.overflow-hidden (1265:1)'] },
+ aaf8dc6e0768e59f3098a98a5c144d66: { selectors: ['.position-static (1269:1)'] },
+ '79592de2383045d15ab57d35aa1dab95': { selectors: ['.position-relative (1273:1)'] },
+ a7c272f53d0368730bde4c2740ffb5c3: { selectors: ['.position-absolute (1277:1)'] },
+ dad0bb92d53f17cf8affc10f77824b7f: { selectors: ['.position-fixed (1281:1)'] },
+ '6da0f6a7354a75fe6c95b08a4cabc06f': { selectors: ['.position-sticky (1285:1)'] },
+ '66602e21eea7b673883155c8f42b9590': { selectors: ['.fixed-top (1289:1)'] },
+ '33ea70eb6db7f6ab3469680f182abb19': { selectors: ['.fixed-bottom (1297:1)'] },
+ '947009e63b4547795ef7cc873f4e4ae9': { selectors: ['.sr-only (1313:1)'] },
+ '9220ad156a70c2586b15fe2b9b6108b2': { selectors: ['.shadow-sm (1334:1)'] },
+ b1b8c0ff70767ca2160811a026766982: { selectors: ['.shadow (1338:1)'] },
+ da0792abe99964acb6692a03c61d6dd8: { selectors: ['.shadow-lg (1342:1)'] },
+ bb2173057af1cf20e687469b2d9cbb3c: { selectors: ['.shadow-none (1346:1)'] },
+ '6d8abb6519a186483b25429ab8b9765e': { selectors: ['.w-25 (1350:1)'] },
+ a087c1ffdf8ead76cdd37445b414d63e: { selectors: ['.w-50 (1354:1)'] },
+ '28180742013a90275be5633e6ec0dd51': { selectors: ['.w-75 (1358:1)'] },
+ '195a03bc95a0af0ba6c8824db97a0b2f': { selectors: ['.w-100 (1362:1)'] },
+ e67c74b650d6236b03be9dfc10c78e32: { selectors: ['.w-auto (1366:1)'] },
+ c1b6262b3ee069addc1fbe46f64aac4e: { selectors: ['.h-25 (1370:1)'] },
+ a520396ae349bef86145e0761aa0699e: { selectors: ['.h-50 (1374:1)'] },
+ '7c53b57d54beb087fd7ab8b669c5fe60': { selectors: ['.h-75 (1378:1)'] },
+ ad74f1972cb745b7a78b03e16a387f21: { selectors: ['.h-100 (1382:1)'] },
+ '2cd49c3d63d260ba4f0b23c559ad05e0': { selectors: ['.h-auto (1386:1)'] },
+ '0b43071a67efc45ee1735fdc2491313c': { selectors: ['.mw-100 (1390:1)'] },
+ eac31a6f08e5c935e24b97df0fdad579: { selectors: ['.mh-100 (1394:1)'] },
+ bd5f5d687d100d127abeb044fc78a3fd: { selectors: ['.min-vw-100 (1398:1)'] },
+ '8dec7662784b943d3ca0615df59d7970': { selectors: ['.min-vh-100 (1402:1)'] },
+ eacc17f16197f6c0291ced3e7cfc067e: { selectors: ['.vw-100 (1406:1)'] },
+ '1a2ec1c9ad7db8d4156ca76a81416c49': { selectors: ['.vh-100 (1410:1)'] },
+ cfdb4f497b16074959bfd3deb7ea9c42: { selectors: ['.m-0 (1414:1)'] },
+ '4d666c270ba50524312d97c4b937d153': { selectors: ['.mt-0, .my-0 (1418:1)'] },
+ eccf47ccd76ceffb4b139cb6c080b5ac: { selectors: ['.mr-0, .mx-0 (1423:1)'] },
+ '9bc513e73c0bdc6efdf170cb31de16d1': { selectors: ['.mb-0, .my-0 (1428:1)'] },
+ e99cfc55b03f0e67f11628b19889ad7b: { selectors: ['.ml-0, .mx-0 (1433:1)'] },
+ e1c39484d90d2acaa00973531f47f738: { selectors: ['.m-1 (1438:1)'] },
+ '63791bc02eccfdfa2c01621a801e565f': { selectors: ['.mt-1, .my-1 (1442:1)'] },
+ bcb27ab9d7dcfdd0d7cacad02709966c: { selectors: ['.mr-1, .mx-1 (1447:1)'] },
+ cb5d1c4328e25b5bc93be9a252973690: { selectors: ['.mb-1, .my-1 (1452:1)'] },
+ b80b1010c7dcfbb30bed9015c4f2e969: { selectors: ['.ml-1, .mx-1 (1457:1)'] },
+ ecab1c9cdf8a562e3c0f70307aeafa89: { selectors: ['.m-2 (1462:1)'] },
+ '6505fe17fbbd88b1884113a754aa82ab': { selectors: ['.mt-2, .my-2 (1466:1)'] },
+ '6f0c7d09d1e729f332c4671ccc2b48c0': { selectors: ['.mr-2, .mx-2 (1471:1)'] },
+ '70ef7b668b382b3c747b2d73e08cdbed': { selectors: ['.mb-2, .my-2 (1476:1)'] },
+ '2d7f277cc78ed324a8fc1f71ab281e1f': { selectors: ['.ml-2, .mx-2 (1481:1)'] },
+ '8ebcfe52fd4024861082ffb1735747a7': { selectors: ['.m-3 (1486:1)'] },
+ '9965fb516bdb72b87023a533123a8035': { selectors: ['.mt-3, .my-3 (1490:1)'] },
+ b1fcbbb1dc6226f6da6000830088e051: { selectors: ['.mr-3, .mx-3 (1495:1)'] },
+ '02204826cfbe3da98535c0d802870940': { selectors: ['.mb-3, .my-3 (1500:1)'] },
+ '0259859060250ae6b730218733e7a437': { selectors: ['.ml-3, .mx-3 (1505:1)'] },
+ '8cf300dab2a4994a105eeddda826f2e6': { selectors: ['.m-4 (1510:1)'] },
+ '1ba62fdddd3349f52a452050688905c7': { selectors: ['.mt-4, .my-4 (1514:1)'] },
+ '66a104129fa13db5a0829567fba6ee41': { selectors: ['.mr-4, .mx-4 (1519:1)'] },
+ eefcc4c10b79e70e8e8a5a66fb2b7aa1: { selectors: ['.mb-4, .my-4 (1524:1)'] },
+ eb1503656dc920d15a31116956fdffa4: { selectors: ['.ml-4, .mx-4 (1529:1)'] },
+ '79cbb6e5c9b73fd0be29d4fc5733a099': { selectors: ['.m-5 (1534:1)'] },
+ '67d8671699df706a428e7da42a7141cb': { selectors: ['.mt-5, .my-5 (1538:1)'] },
+ e9cb4a0a8a60ff018c87a0b7efa9de29: { selectors: ['.mr-5, .mx-5 (1543:1)'] },
+ '93f579214354dbd8cb60209c068f0086': { selectors: ['.mb-5, .my-5 (1548:1)'] },
+ '2a789d4af97d2b87fd0bf2b4626120cd': { selectors: ['.ml-5, .mx-5 (1553:1)'] },
+ '64a89d28e8287c1a0ac153001082644c': { selectors: ['.p-0 (1558:1)'] },
+ b03aa6db5ddf110bbdbefbbec43fda30: { selectors: ['.pt-0, .py-0 (1562:1)'] },
+ e38192ca32a98888d4c4876880f4fece: { selectors: ['.pr-0, .px-0 (1567:1)'] },
+ '70fe8ef50e999ddd29506f672c107069': { selectors: ['.pb-0, .py-0 (1572:1)'] },
+ '9355e8cd9109049726475ba356661bcf': { selectors: ['.pl-0, .px-0 (1577:1)'] },
+ '0d4c53468c2658c5324b9ec7a8ca6de2': { selectors: ['.p-1 (1582:1)'] },
+ d74e430b2a56b3a4e20065c972b7fa3f: { selectors: ['.pt-1, .py-1 (1586:1)'] },
+ '21e4644967aedd19888b6f4a700b629b': { selectors: ['.pr-1, .px-1 (1591:1)'] },
+ e315a7b9b7a1d0df3ea7d95af5203a0b: { selectors: ['.pb-1, .py-1 (1596:1)'] },
+ '14630ca122e1d9830a9ef5591c4097d0': { selectors: ['.pl-1, .px-1 (1601:1)'] },
+ '5b1c65e5139e86e5f4755824f8b77d13': { selectors: ['.p-2 (1606:1)'] },
+ '244af70950a1e200d3849f75ce51d707': { selectors: ['.pt-2, .py-2 (1610:1)'] },
+ b583832738cad724c7c23e5c14ac9bfb: { selectors: ['.pr-2, .px-2 (1615:1)'] },
+ e1e633c4f1375e8276154192d8899e39: { selectors: ['.pb-2, .py-2 (1620:1)'] },
+ '676b01e25f0dbb3f7d2f2529231cda08': { selectors: ['.pl-2, .px-2 (1625:1)'] },
+ '9b5165e3333b22801f2287f7983d7516': { selectors: ['.p-3 (1630:1)'] },
+ '5bcaa9df87a507f6cd14659ea176bdc5': { selectors: ['.pt-3, .py-3 (1634:1)'] },
+ f706637180776c5589385599705a2409: { selectors: ['.pr-3, .px-3 (1639:1)'] },
+ '41157cfbcf47990b383b5b0379386ab2': { selectors: ['.pb-3, .py-3 (1644:1)'] },
+ cac1e7a204bb6a1f42707b684ad46238: { selectors: ['.pl-3, .px-3 (1649:1)'] },
+ '43e0671cd41a4b7590284888b607a134': { selectors: ['.p-4 (1654:1)'] },
+ '116b0f95ebde1ff8907e488413a88854': { selectors: ['.pt-4, .py-4 (1658:1)'] },
+ ecb06765fe691d892df000eebbb23dcc: { selectors: ['.pr-4, .px-4 (1663:1)'] },
+ '1331503a48d36025c861e660bc615048': { selectors: ['.pb-4, .py-4 (1668:1)'] },
+ f8665f7e547e499abd7ac63813b274f5: { selectors: ['.pl-4, .px-4 (1673:1)'] },
+ '4160a315459f1b5a98255863f42136fe': { selectors: ['.p-5 (1678:1)'] },
+ f55a6b2de6a434ec7b4375f06f4fad75: { selectors: ['.pt-5, .py-5 (1682:1)'] },
+ '19391dc45c8d7730a86d521c28f52c3f': { selectors: ['.pr-5, .px-5 (1687:1)'] },
+ '15898bcb7ff74a60006f9931422b4ad3': { selectors: ['.pb-5, .py-5 (1692:1)'] },
+ '6290bdc6355aed1e9b27379003aa4828': { selectors: ['.pl-5, .px-5 (1697:1)'] },
+ '04a144abd49b1402e3588fb4ec237ec0': { selectors: ['.m-n1 (1702:1)'] },
+ b81793fb475f7cc3a0698aa92ae41777: { selectors: ['.mt-n1, .my-n1 (1706:1)'] },
+ '3c39187fca578a65e7aa2d704208cde8': { selectors: ['.mr-n1, .mx-n1 (1711:1)'] },
+ c6c24440dd9edef71c7bc7da951dccd5: { selectors: ['.mb-n1, .my-n1 (1716:1)'] },
+ '8b528f327ea3e562fc61d13c9f3901d8': { selectors: ['.ml-n1, .mx-n1 (1721:1)'] },
+ '4a1926d211f81e5c96d4c9c4f2097774': { selectors: ['.m-n2 (1726:1)'] },
+ f78f1986440a943aeb5553cb11b2f23c: { selectors: ['.mt-n2, .my-n2 (1730:1)'] },
+ '941a9ea73cc97224a3f55ef65ab727c9': { selectors: ['.mr-n2, .mx-n2 (1735:1)'] },
+ '074441007089a0c89cda9bfcb31c763a': { selectors: ['.mb-n2, .my-n2 (1740:1)'] },
+ '7f9e45f6286b38eec32d471b7c1b28b6': { selectors: ['.ml-n2, .mx-n2 (1745:1)'] },
+ c322ab87c4e181d835e6c17a1ca179ad: { selectors: ['.m-n3 (1750:1)'] },
+ dee7caca54972db68f956a7cfd5d372b: { selectors: ['.mt-n3, .my-n3 (1754:1)'] },
+ '60c8b6aa0702bbc3eed911f7483876ce': { selectors: ['.mr-n3, .mx-n3 (1759:1)'] },
+ '595290cc6428614c03bac4631fe3fc12': { selectors: ['.mb-n3, .my-n3 (1764:1)'] },
+ '7b968bc3150d9768117e099261cf23df': { selectors: ['.ml-n3, .mx-n3 (1769:1)'] },
+ '90ca4942944fbc4dd543a821244daa31': { selectors: ['.m-n4 (1774:1)'] },
+ '1716842c880f907fc62889f928273e0c': { selectors: ['.mt-n4, .my-n4 (1778:1)'] },
+ '087ab1596162227935a974af5e856174': { selectors: ['.mr-n4, .mx-n4 (1783:1)'] },
+ f53133714696eaf034f3efe057ac82fe: { selectors: ['.mb-n4, .my-n4 (1788:1)'] },
+ ce56811b70ca493d65e3f63acfa2d9df: { selectors: ['.ml-n4, .mx-n4 (1793:1)'] },
+ '7f52135983abe2eccfbb72e5d16a6a20': { selectors: ['.m-n5 (1798:1)'] },
+ de8fc351c8c23bd867cf10a14642899a: { selectors: ['.mt-n5, .my-n5 (1802:1)'] },
+ b134cecaa2883916d516ae6a2b1a3891: { selectors: ['.mr-n5, .mx-n5 (1807:1)'] },
+ '124ccc6a210fadb889b2742eb0f9b540': { selectors: ['.mb-n5, .my-n5 (1812:1)'] },
+ c3948b63b7b0c864f4f78faf640fd9a0: { selectors: ['.ml-n5, .mx-n5 (1817:1)'] },
+ e57ec4fe9e8ed36e38f1c50041fc9f47: { selectors: ['.m-auto (1822:1)'] },
+ f10380665932186d1effe0674a74ba12: { selectors: ['.mt-auto, .my-auto (1826:1)'] },
+ '2ce71a27023eb50a47c24a99399faa28': { selectors: ['.mr-auto, .mx-auto (1831:1)'] },
+ '196c77d357d314678cd3a99cfacbea96': { selectors: ['.mb-auto, .my-auto (1836:1)'] },
+ ca007ce268b463a6bf42145cf5ce3685: { selectors: ['.ml-auto, .mx-auto (1841:1)'] },
+ '695821b1faf108a559486730b246876a': { selectors: ['.text-monospace (3590:1)'] },
+ a8fc5ca823f51d72673577064387a029: { selectors: ['.text-justify (3594:1)'] },
+ '04e83ef005e9c653fb368008f8ae8a33': { selectors: ['.text-wrap (3598:1)'] },
+ '0bb94dfab7ca2c9892ebbd993b2baf0f': { selectors: ['.text-nowrap (3602:1)'] },
+ aea4958ce85ddc0cbffca1015c3a7eba: { selectors: ['.text-truncate (3606:1)'] },
+ '52b9443947b6b94a5c7e1b837da115e2': { selectors: ['.text-left (3612:1)'] },
+ baaf5136fc6e1c54ba29b6040f166d5f: { selectors: ['.text-right (3616:1)'] },
+ '282aa4319bee75af06cc2632b7124e26': { selectors: ['.text-center (3620:1)'] },
+ '1cb1c8ad9b560eca25ebcefe95c1b7fa': { selectors: ['.text-lowercase (3676:1)'] },
+ '45234533eac658ba2857e9c4d3bc78a5': { selectors: ['.text-uppercase (3680:1)'] },
+ f9e3f64237f2e81b6aed84223a0ceb1d: { selectors: ['.text-capitalize (3684:1)'] },
+ '09caca3d36aa9f3ef815e0da7e1a16b4': { selectors: ['.font-weight-light (3688:1)'] },
+ '23544682bb214a76e383e032d4056be4': { selectors: ['.font-weight-lighter (3692:1)'] },
+ '25189f4fad18eaeef19e349c6680834c': { selectors: ['.font-weight-normal (3696:1)'] },
+ b2a9507678ec557603eb8ec077f0eb1f: { selectors: ['.font-weight-bold (3700:1)'] },
+ '9d05a94a577558235edce4c8fd9ab639': { selectors: ['.font-weight-bolder (3704:1)'] },
+ '7d2da06b621a98a8599e5ec82e39eac8': { selectors: ['.font-italic (3708:1)'] },
+ '0020d10e4fce033b418aace7c3143b82': { selectors: ['.text-white (3712:1)'] },
+ '34ad81e372a038e6f78ae4f22bd4813d': { selectors: ['.text-primary (3716:1)'] },
'9fde9a179d24755438ace2a874dda817': {
- selectors: ['.text-secondary (1929:1)', '.text-muted (1974:1)'],
+ selectors: ['.text-secondary (3724:1)', '.text-muted (3784:1)'],
},
- '9ffcb1532b3fb397c0e818850683da29': { selectors: ['.text-success (1935:1)'] },
- f28fd089809bcd15d5684b158a0af98d: { selectors: ['.text-info (1941:1)'] },
- '6cac1cb5ee5149e91e45d15d0bdae310': { selectors: ['.text-warning (1947:1)'] },
- '2faab1e0abf22b20fdf05b9b01fff29b': { selectors: ['.text-danger (1953:1)'] },
- '46b52fea531aaaf29b63c40be2356849': { selectors: ['.text-light (1959:1)'] },
- '78f31d1ab6529decf28e0366a8ee81aa': { selectors: ['.text-dark (1965:1)'] },
- '45330b41b77e8880ad7680c51e0f61c4': { selectors: ['.text-body (1971:1)'] },
- '60d93588f62b5e85eb4f11dfd3461897': { selectors: ['.text-black-50 (1977:1)'] },
- '7dea35658553032ff7b7cc0287613b7c': { selectors: ['.text-white-50 (1980:1)'] },
- '61bf92980cac3d51d0cf1ba24c948fa1': { selectors: ['.text-hide (1983:1)'] },
- '7dcad258820769677bc60871fafe9b93': { selectors: ['.visible (1990:1)'] },
- '0f8833af4e2f4a6fc785bd7edc1e75b3': { selectors: ['.invisible (1993:1)'] },
+ '9ffcb1532b3fb397c0e818850683da29': { selectors: ['.text-success (3732:1)'] },
+ f28fd089809bcd15d5684b158a0af98d: { selectors: ['.text-info (3740:1)'] },
+ '6cac1cb5ee5149e91e45d15d0bdae310': { selectors: ['.text-warning (3748:1)'] },
+ '2faab1e0abf22b20fdf05b9b01fff29b': { selectors: ['.text-danger (3756:1)'] },
+ '46b52fea531aaaf29b63c40be2356849': { selectors: ['.text-light (3764:1)'] },
+ '78f31d1ab6529decf28e0366a8ee81aa': { selectors: ['.text-dark (3772:1)'] },
+ '45330b41b77e8880ad7680c51e0f61c4': { selectors: ['.text-body (3780:1)'] },
+ '60d93588f62b5e85eb4f11dfd3461897': { selectors: ['.text-black-50 (3788:1)'] },
+ '7dea35658553032ff7b7cc0287613b7c': { selectors: ['.text-white-50 (3792:1)'] },
+ '61bf92980cac3d51d0cf1ba24c948fa1': { selectors: ['.text-hide (3796:1)'] },
+ '187bfde85cb4d8bdaa41735f54f5c4f8': { selectors: ['.text-decoration-none (3804:1)'] },
+ fd57878967b8dce947091cdc114efd83: { selectors: ['.text-break (3808:1)'] },
+ '43b8d67240c3b09505d94522a62a977c': { selectors: ['.text-reset (3813:1)'] },
+ '7dcad258820769677bc60871fafe9b93': { selectors: ['.visible (3817:1)'] },
+ '0f8833af4e2f4a6fc785bd7edc1e75b3': { selectors: ['.invisible (3821:1)'] },
};
diff --git a/scripts/gitaly-test-build b/scripts/gitaly-test-build
index 849c08df527..4890e6912cd 100755
--- a/scripts/gitaly-test-build
+++ b/scripts/gitaly-test-build
@@ -3,14 +3,14 @@
require 'fileutils'
-require_relative 'gitaly_test'
+require_relative '../spec/support/helpers/gitaly_setup'
# This script assumes tmp/tests/gitaly already contains the correct
# Gitaly version. We just have to compile it and run its 'bundle
# install'. We have this separate script for that to avoid bundle
# poisoning in CI. This script should only be run in CI.
class GitalyTestBuild
- include GitalyTest
+ include GitalySetup
def run
set_bundler_config
@@ -31,8 +31,8 @@ class GitalyTestBuild
# Make the 'gitaly' executable look newer than 'GITALY_SERVER_VERSION'.
# Without this a gitaly executable created in the setup-test-env job
# will look stale compared to GITALY_SERVER_VERSION.
- FileUtils.touch(File.join(tmp_tests_gitaly_dir, 'gitaly'), mtime: Time.now + (1 << 24))
- FileUtils.touch(File.join(tmp_tests_gitaly_dir, 'praefect'), mtime: Time.now + (1 << 24))
+ FileUtils.touch(File.join(tmp_tests_gitaly_bin_dir, 'gitaly'), mtime: Time.now + (1 << 24))
+ FileUtils.touch(File.join(tmp_tests_gitaly_bin_dir, 'praefect'), mtime: Time.now + (1 << 24))
end
end
diff --git a/scripts/gitaly-test-spawn b/scripts/gitaly-test-spawn
index 7cb9ea803f8..e7e25a217b2 100755
--- a/scripts/gitaly-test-spawn
+++ b/scripts/gitaly-test-spawn
@@ -3,10 +3,10 @@
# This script is used both in CI and in local development 'rspec' runs.
-require_relative 'gitaly_test'
+require_relative '../spec/support/helpers/gitaly_setup'
class GitalyTestSpawn
- include GitalyTest
+ include GitalySetup
def run
set_bundler_config
diff --git a/scripts/gitaly_test.rb b/scripts/gitaly_test.rb
deleted file mode 100644
index b7ea9cd628e..00000000000
--- a/scripts/gitaly_test.rb
+++ /dev/null
@@ -1,190 +0,0 @@
-# frozen_string_literal: true
-
-# This file contains environment settings for gitaly when it's running
-# as part of the gitlab-ce/ee test suite.
-#
-# Please be careful when modifying this file. Your changes must work
-# both for local development rspec runs, and in CI.
-
-require 'securerandom'
-require 'socket'
-require 'logger'
-
-module GitalyTest
- LOGGER = begin
- default_name = ENV['CI'] ? 'DEBUG' : 'WARN'
- level_name = ENV['GITLAB_TESTING_LOG_LEVEL']&.upcase
- level = Logger.const_get(level_name || default_name, true) # rubocop: disable Gitlab/ConstGetInheritFalse
- Logger.new(STDOUT, level: level, formatter: ->(_, _, _, msg) { msg })
- end
-
- def tmp_tests_gitaly_dir
- File.expand_path('../tmp/tests/gitaly', __dir__)
- end
-
- def tmp_tests_gitlab_shell_dir
- File.expand_path('../tmp/tests/gitlab-shell', __dir__)
- end
-
- def rails_gitlab_shell_secret
- File.expand_path('../.gitlab_shell_secret', __dir__)
- end
-
- def gemfile
- File.join(tmp_tests_gitaly_dir, 'ruby', 'Gemfile')
- end
-
- def gemfile_dir
- File.dirname(gemfile)
- end
-
- def gitlab_shell_secret_file
- File.join(tmp_tests_gitlab_shell_dir, '.gitlab_shell_secret')
- end
-
- def env
- {
- 'HOME' => File.expand_path('tmp/tests'),
- 'GEM_PATH' => Gem.path.join(':'),
- 'BUNDLE_APP_CONFIG' => File.join(gemfile_dir, '.bundle'),
- 'BUNDLE_INSTALL_FLAGS' => nil,
- 'BUNDLE_GEMFILE' => gemfile,
- 'RUBYOPT' => nil,
-
- # Git hooks can't run during tests as the internal API is not running.
- 'GITALY_TESTING_NO_GIT_HOOKS' => "1"
- }
- end
-
- # rubocop:disable GitlabSecurity/SystemCommandInjection
- def set_bundler_config
- system('bundle config set --local jobs 4', chdir: gemfile_dir)
- system('bundle config set --local retry 3', chdir: gemfile_dir)
-
- if ENV['CI']
- bundle_path = File.expand_path('../vendor/gitaly-ruby', __dir__)
- system('bundle', 'config', 'set', '--local', 'path', bundle_path, chdir: gemfile_dir)
- end
- end
- # rubocop:enable GitlabSecurity/SystemCommandInjection
-
- def config_path(service)
- case service
- when :gitaly
- File.join(tmp_tests_gitaly_dir, 'config.toml')
- when :gitaly2
- File.join(tmp_tests_gitaly_dir, 'gitaly2.config.toml')
- when :praefect
- File.join(tmp_tests_gitaly_dir, 'praefect.config.toml')
- end
- end
-
- def service_binary(service)
- case service
- when :gitaly, :gitaly2
- 'gitaly'
- when :praefect
- 'praefect'
- end
- end
-
- def install_gitaly_gems
- system(env, "make #{tmp_tests_gitaly_dir}/.ruby-bundle", chdir: tmp_tests_gitaly_dir) # rubocop:disable GitlabSecurity/SystemCommandInjection
- end
-
- def build_gitaly
- system(env, 'make', chdir: tmp_tests_gitaly_dir) # rubocop:disable GitlabSecurity/SystemCommandInjection
- end
-
- def start_gitaly
- start(:gitaly)
- end
-
- def start_gitaly2
- start(:gitaly2)
- end
-
- def start_praefect
- start(:praefect)
- end
-
- def start(service)
- args = ["#{tmp_tests_gitaly_dir}/#{service_binary(service)}"]
- args.push("-config") if service == :praefect
- args.push(config_path(service))
- pid = spawn(env, *args, [:out, :err] => "log/#{service}-test.log")
-
- begin
- try_connect!(service)
- rescue
- Process.kill('TERM', pid)
- raise
- end
-
- pid
- end
-
- # Taken from Gitlab::Shell.generate_and_link_secret_token
- def ensure_gitlab_shell_secret!
- secret_file = rails_gitlab_shell_secret
- shell_link = gitlab_shell_secret_file
-
- unless File.size?(secret_file)
- File.write(secret_file, SecureRandom.hex(16))
- end
-
- unless File.exist?(shell_link)
- FileUtils.ln_s(secret_file, shell_link)
- end
- end
-
- def check_gitaly_config!
- LOGGER.debug "Checking gitaly-ruby Gemfile...\n"
-
- unless File.exist?(gemfile)
- message = "#{gemfile} does not exist."
- message += "\n\nThis might have happened if the CI artifacts for this build were destroyed." if ENV['CI']
- abort message
- end
-
- LOGGER.debug "Checking gitaly-ruby bundle...\n"
- out = ENV['CI'] ? STDOUT : '/dev/null'
- abort 'bundle check failed' unless system(env, 'bundle', 'check', out: out, chdir: File.dirname(gemfile))
- end
-
- def read_socket_path(service)
- # This code needs to work in an environment where we cannot use bundler,
- # so we cannot easily use the toml-rb gem. This ad-hoc parser should be
- # good enough.
- config_text = IO.read(config_path(service))
-
- config_text.lines.each do |line|
- match_data = line.match(/^\s*socket_path\s*=\s*"([^"]*)"$/)
-
- return match_data[1] if match_data
- end
-
- raise "failed to find socket_path in #{config_path(service)}"
- end
-
- def try_connect!(service)
- LOGGER.debug "Trying to connect to #{service}: "
- timeout = 20
- delay = 0.1
- socket = read_socket_path(service)
-
- Integer(timeout / delay).times do
- UNIXSocket.new(socket)
- LOGGER.debug " OK\n"
-
- return
- rescue Errno::ENOENT, Errno::ECONNREFUSED
- LOGGER.debug '.'
- sleep delay
- end
-
- LOGGER.warn " FAILED to connect to #{service}\n"
-
- raise "could not connect to #{socket}"
- end
-end
diff --git a/scripts/lint-doc.sh b/scripts/lint-doc.sh
index 4d0c1ba99d2..7156488bfc8 100755
--- a/scripts/lint-doc.sh
+++ b/scripts/lint-doc.sh
@@ -114,7 +114,7 @@ function run_locally_or_in_docker() {
$cmd $args
elif hash docker 2>/dev/null
then
- docker run -t -v ${PWD}:/gitlab -w /gitlab --rm registry.gitlab.com/gitlab-org/gitlab-docs/lint-markdown:alpine-3.12-vale-2.6.1-markdownlint-0.24.0 ${cmd} ${args}
+ docker run -t -v ${PWD}:/gitlab -w /gitlab --rm registry.gitlab.com/gitlab-org/gitlab-docs/lint-markdown:alpine-3.13-vale-2.10.2-markdownlint-0.26.0 ${cmd} ${args}
else
echo
echo " ✖ ERROR: '${cmd}' not found. Install '${cmd}' or Docker to proceed." >&2
@@ -137,7 +137,7 @@ if [ -z "${MD_DOC_PATH}" ]
then
echo "Merged results pipeline detected, but no markdown files found. Skipping."
else
- run_locally_or_in_docker 'markdownlint' "--config .markdownlint.json ${MD_DOC_PATH}"
+ run_locally_or_in_docker 'markdownlint' "--config .markdownlint.yml ${MD_DOC_PATH}"
fi
echo '=> Linting prose...'
diff --git a/scripts/merge-simplecov b/scripts/merge-simplecov
index 38dd2dfe2e9..b74a416a6e0 100755
--- a/scripts/merge-simplecov
+++ b/scripts/merge-simplecov
@@ -15,7 +15,7 @@ module SimpleCov
def resultset_hashes
resultset_files.map do |path|
JSON.parse(File.read(path))
- rescue
+ rescue StandardError
{}
end
end
diff --git a/scripts/prepare_build.sh b/scripts/prepare_build.sh
index cd41aa0ff14..5753a0af4f8 100644
--- a/scripts/prepare_build.sh
+++ b/scripts/prepare_build.sh
@@ -2,17 +2,9 @@
export SETUP_DB=${SETUP_DB:-true}
export USE_BUNDLE_INSTALL=${USE_BUNDLE_INSTALL:-true}
-export BUNDLE_INSTALL_FLAGS=${BUNDLE_INSTALL_FLAGS:-"--without=production development --jobs=$(nproc) --path=vendor --retry=3 --quiet"}
if [ "$USE_BUNDLE_INSTALL" != "false" ]; then
- bundle --version
- bundle config set clean 'true'
- run_timed_command "bundle install ${BUNDLE_INSTALL_FLAGS}"
- run_timed_command "bundle check"
- # When we test multiple versions of PG in the same pipeline, we have a single `setup-test-env`
- # job but the `pg` gem needs to be rebuilt since it includes extensions (https://guides.rubygems.org/gems-with-extensions).
- # Uncomment the following line if multiple versions of PG are tested in the same pipeline.
- run_timed_command "bundle pristine pg"
+ bundle_install_script
fi
cp config/gitlab.yml.example config/gitlab.yml
diff --git a/scripts/regenerate-schema b/scripts/regenerate-schema
index 65c73a8116a..485bb2d5505 100755
--- a/scripts/regenerate-schema
+++ b/scripts/regenerate-schema
@@ -194,7 +194,7 @@ class SchemaRegenerator
# Get source ref from CI environment variable, or read the +TARGET+
# environment+ variable, or default to +HEAD+.
def target_branch
- ENV['CI_MERGE_REQUEST_TARGET_BRANCH_NAME'] || ENV['TARGET'] || 'master'
+ ENV['CI_MERGE_REQUEST_TARGET_BRANCH_NAME'] || ENV['TARGET'] || ENV['CI_DEFAULT_BRANCH'] || 'master'
end
##
diff --git a/scripts/review_apps/review-apps.sh b/scripts/review_apps/review-apps.sh
index 88be78c7615..5b52797d285 100755
--- a/scripts/review_apps/review-apps.sh
+++ b/scripts/review_apps/review-apps.sh
@@ -261,15 +261,14 @@ function create_application_secret() {
echoinfo "The 'shared-gitlab-initial-root-password' secret already exists in the ${namespace} namespace."
fi
- if [ -z "${REVIEW_APPS_EE_LICENSE}" ]; then echo "License not found" && return; fi
+ if [ -z "${REVIEW_APPS_EE_LICENSE_FILE}" ]; then echo "License not found" && return; fi
gitlab_license_shared_secret=$(kubectl get secret --namespace ${namespace} --no-headers -o=custom-columns=NAME:.metadata.name shared-gitlab-license | tail -n 1)
if [[ "${gitlab_license_shared_secret}" == "" ]]; then
echoinfo "Creating the 'shared-gitlab-license' secret in the ${namespace} namespace..." true
- echo "${REVIEW_APPS_EE_LICENSE}" > /tmp/license.gitlab
kubectl create secret generic --namespace "${namespace}" \
"shared-gitlab-license" \
- --from-file=license=/tmp/license.gitlab \
+ --from-file=license="${REVIEW_APPS_EE_LICENSE_FILE}" \
--dry-run -o json | kubectl apply -f -
else
echoinfo "The 'shared-gitlab-license' secret already exists in the ${namespace} namespace."
@@ -281,13 +280,12 @@ function download_chart() {
curl --location -o gitlab.tar.bz2 "https://gitlab.com/gitlab-org/charts/gitlab/-/archive/${GITLAB_HELM_CHART_REF}/gitlab-${GITLAB_HELM_CHART_REF}.tar.bz2"
tar -xjf gitlab.tar.bz2
- cd "gitlab-${GITLAB_HELM_CHART_REF}"
echoinfo "Adding the gitlab repo to Helm..."
helm repo add gitlab https://charts.gitlab.io
echoinfo "Building the gitlab chart's dependencies..."
- helm dependency build .
+ helm dependency build "gitlab-${GITLAB_HELM_CHART_REF}"
}
function base_config_changed() {
@@ -310,7 +308,7 @@ function parse_gitaly_image_tag() {
function deploy() {
local namespace="${KUBE_NAMESPACE}"
local release="${CI_ENVIRONMENT_SLUG}"
- local base_config_file_ref="master"
+ local base_config_file_ref="${CI_DEFAULT_BRANCH}"
if [[ "$(base_config_changed)" == "true" ]]; then base_config_file_ref="${CI_COMMIT_SHA}"; fi
local base_config_file="https://gitlab.com/gitlab-org/gitlab/raw/${base_config_file_ref}/scripts/review_apps/base-config.yaml"
@@ -333,7 +331,7 @@ HELM_CMD=$(cat << EOF
--namespace="${namespace}" \
--install \
--wait \
- --timeout 15m \
+ --timeout "${HELM_INSTALL_TIMEOUT:-20m}" \
--set ci.branch="${CI_COMMIT_REF_NAME}" \
--set ci.commit.sha="${CI_COMMIT_SHORT_SHA}" \
--set ci.job.url="${CI_JOB_URL}" \
@@ -360,7 +358,7 @@ HELM_CMD=$(cat << EOF
EOF
)
-if [ -n "${REVIEW_APPS_EE_LICENSE}" ]; then
+if [ -n "${REVIEW_APPS_EE_LICENSE_FILE}" ]; then
HELM_CMD=$(cat << EOF
${HELM_CMD} \
--set global.gitlab.license.secret="shared-gitlab-license"
@@ -372,7 +370,7 @@ HELM_CMD=$(cat << EOF
${HELM_CMD} \
--version="${CI_PIPELINE_ID}-${CI_JOB_ID}" \
-f "${base_config_file}" \
- "${release}" .
+ "${release}" "gitlab-${GITLAB_HELM_CHART_REF}"
EOF
)
diff --git a/scripts/rspec_helpers.sh b/scripts/rspec_helpers.sh
index e23231e429b..b1a618270b0 100644
--- a/scripts/rspec_helpers.sh
+++ b/scripts/rspec_helpers.sh
@@ -3,11 +3,14 @@
function retrieve_tests_metadata() {
mkdir -p knapsack/ rspec_flaky/ rspec_profiling/
+ # ${CI_DEFAULT_BRANCH} might not be master in other forks but we want to
+ # always target the canonical project here, so the branch must be hardcoded
local project_path="gitlab-org/gitlab"
+ local artifact_branch="master"
local test_metadata_job_id
# Ruby
- test_metadata_job_id=$(scripts/api/get_job_id.rb --project "${project_path}" -q "status=success" -q "ref=master" -q "username=gitlab-bot" -Q "scope=success" --job-name "update-tests-metadata")
+ test_metadata_job_id=$(scripts/api/get_job_id.rb --project "${project_path}" -q "status=success" -q "ref=${artifact_branch}" -q "username=gitlab-bot" -Q "scope=success" --job-name "update-tests-metadata")
if [[ ! -f "${KNAPSACK_RSPEC_SUITE_REPORT_PATH}" ]]; then
scripts/api/download_job_artifact.rb --project "${project_path}" --job-id "${test_metadata_job_id}" --artifact-path "${KNAPSACK_RSPEC_SUITE_REPORT_PATH}" || echo "{}" > "${KNAPSACK_RSPEC_SUITE_REPORT_PATH}"
@@ -39,10 +42,13 @@ function update_tests_metadata() {
function retrieve_tests_mapping() {
mkdir -p crystalball/
+ # ${CI_DEFAULT_BRANCH} might not be master in other forks but we want to
+ # always target the canonical project here, so the branch must be hardcoded
local project_path="gitlab-org/gitlab"
+ local artifact_branch="master"
local test_metadata_with_mapping_job_id
- test_metadata_with_mapping_job_id=$(scripts/api/get_job_id.rb --project "${project_path}" -q "status=success" -q "ref=master" -q "username=gitlab-bot" -Q "scope=success" --job-name "update-tests-metadata" --artifact-path "${RSPEC_PACKED_TESTS_MAPPING_PATH}.gz")
+ test_metadata_with_mapping_job_id=$(scripts/api/get_job_id.rb --project "${project_path}" -q "status=success" -q "ref=${artifact_branch}" -q "username=gitlab-bot" -Q "scope=success" --job-name "update-tests-metadata" --artifact-path "${RSPEC_PACKED_TESTS_MAPPING_PATH}.gz")
if [[ ! -f "${RSPEC_PACKED_TESTS_MAPPING_PATH}" ]]; then
(scripts/api/download_job_artifact.rb --project "${project_path}" --job-id "${test_metadata_with_mapping_job_id}" --artifact-path "${RSPEC_PACKED_TESTS_MAPPING_PATH}.gz" && gzip -d "${RSPEC_PACKED_TESTS_MAPPING_PATH}.gz") || echo "{}" > "${RSPEC_PACKED_TESTS_MAPPING_PATH}"
@@ -89,7 +95,7 @@ function rspec_paralellized_job() {
read -ra job_name <<< "${CI_JOB_NAME}"
local test_tool="${job_name[0]}"
local test_level="${job_name[1]}"
- local report_name=$(echo "${CI_JOB_NAME}" | sed -E 's|[/ ]|_|g') # e.g. 'rspec unit pg11 1/24' would become 'rspec_unit_pg11_1_24'
+ local report_name=$(echo "${CI_JOB_NAME}" | sed -E 's|[/ ]|_|g') # e.g. 'rspec unit pg12 1/24' would become 'rspec_unit_pg12_1_24'
local rspec_opts="${1}"
local spec_folder_prefix=""
diff --git a/scripts/sync-reports b/scripts/sync-reports
deleted file mode 100755
index 73afd276e6c..00000000000
--- a/scripts/sync-reports
+++ /dev/null
@@ -1,96 +0,0 @@
-#!/usr/bin/env ruby
-# frozen_string_literal: true
-
-require 'rubygems'
-require 'fog/aws'
-
-class SyncReports
- ACTIONS = %w[get put].freeze
-
- attr_reader :options
-
- def initialize(options)
- @options = options
-
- perform_sync!
- end
-
- private
-
- def perform_sync!
- case options[:action]
- when 'get'
- get_reports!
- when 'put'
- put_reports!
- end
- end
-
- def get_reports!
- options[:report_paths].each { |report_path| get_report!(report_path) }
- end
-
- def put_reports!
- options[:report_paths].each { |report_path| put_report!(report_path) }
- end
-
- def get_report!(report_path)
- file = bucket.files.get(report_path)
-
- if file.respond_to?(:body)
- File.write(report_path, file.body)
- puts "#{report_path} was retrieved from S3."
- else
- puts "#{report_path} does not seem to exist on S3."
- end
- end
-
- def put_report!(report_path)
- bucket.files.create(
- key: report_path,
- body: File.open(report_path),
- public: true
- )
- puts "#{report_path} was uploaded to S3."
- end
-
- def bucket
- @bucket ||= storage.directories.get(options[:bucket])
- end
-
- def storage
- @storage ||=
- Fog::Storage.new(
- provider: 'AWS',
- aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],
- aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']
- )
- end
-end
-
-def usage!(error: 'action')
- print "\n[ERROR]: "
- case error
- when 'action'
- puts "Please specify an action as first argument: #{SyncReports::ACTIONS.join(', ')}\n\n"
- when 'bucket'
- puts "Please specify a bucket as second argument!\n\n"
- when 'files'
- puts "Please specify one or more file paths as third argument!\n\n"
- end
- puts "Usage: #{__FILE__} [get|put] bucket report_path ...\n\n"
- puts "Note: the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY environment "\
- "variables need to be set\n\n"
- exit 1
-end
-
-if $0 == __FILE__
- action = ARGV.shift
- usage!(error: 'action') unless SyncReports::ACTIONS.include?(action)
-
- bucket = ARGV.shift
- usage!(error: 'bucket') unless bucket
- usage!(error: 'files') unless ARGV.any?
-
- SyncReports.new(action: action, bucket: bucket, report_paths: ARGV)
-end
diff --git a/scripts/trigger-build b/scripts/trigger-build
index 3a9301bda3b..0d8a46bdd2d 100755
--- a/scripts/trigger-build
+++ b/scripts/trigger-build
@@ -136,7 +136,7 @@ module Trigger
def extra_variables
# Use CI_MERGE_REQUEST_SOURCE_BRANCH_SHA for omnibus checkouts due to pipeline for merged results
- # and fallback to CI_COMMIT_SHA (merged result commit) for the non-MR pipelines.
+ # and fallback to CI_COMMIT_SHA for the non-MR pipelines.
# See https://docs.gitlab.com/ee/development/testing_guide/end_to_end/index.html#with-pipeline-for-merged-results.
# We also set IMAGE_TAG so the GitLab Docker image is tagged with that SHA.
source_sha = Trigger.non_empty_variable_value('CI_MERGE_REQUEST_SOURCE_BRANCH_SHA') || ENV['CI_COMMIT_SHA']
@@ -172,7 +172,7 @@ module Trigger
end
def trigger_token
- ENV['BUILD_TRIGGER_TOKEN']
+ ENV['CI_JOB_TOKEN']
end
def extra_variables
diff --git a/scripts/utils.sh b/scripts/utils.sh
index 2e9839e4df8..d4436e1171d 100644
--- a/scripts/utils.sh
+++ b/scripts/utils.sh
@@ -13,6 +13,32 @@ function retry() {
return 1
}
+function bundle_install_script() {
+ local extra_install_args="${1}"
+
+ if [[ "${extra_install_args}" =~ "--without" ]]; then
+ echoerr "The '--without' flag shouldn't be passed as it would replace the default \${BUNDLE_WITHOUT} (currently set to '${BUNDLE_WITHOUT}')."
+ echoerr "Set the 'BUNDLE_WITHOUT' variable instead, e.g. '- export BUNDLE_WITHOUT=\"\${BUNDLE_WITHOUT}:any:other:group:not:to:install\"'."
+ exit 1;
+ fi;
+
+ bundle --version
+ bundle config set path 'vendor'
+ bundle config set clean 'true'
+
+ echo $BUNDLE_WITHOUT
+ bundle config
+
+ run_timed_command "bundle install ${BUNDLE_INSTALL_FLAGS} ${extra_install_args} && bundle check"
+
+ if [[ $(bundle info pg) ]]; then
+ # When we test multiple versions of PG in the same pipeline, we have a single `setup-test-env`
+ # job but the `pg` gem needs to be rebuilt since it includes extensions (https://guides.rubygems.org/gems-with-extensions).
+ # Uncomment the following line if multiple versions of PG are tested in the same pipeline.
+ run_timed_command "bundle pristine pg"
+ fi
+}
+
function setup_db_user_only() {
source scripts/create_postgres_user.sh
}
diff --git a/scripts/validate_migration_schema b/scripts/validate_migration_schema
index 0b909f7ac77..f9b2f0677b7 100755
--- a/scripts/validate_migration_schema
+++ b/scripts/validate_migration_schema
@@ -72,7 +72,7 @@ class MigrationSchemaValidator
end
def target_branch
- ENV['CI_MERGE_REQUEST_TARGET_BRANCH_NAME'] || ENV['TARGET'] || 'master'
+ ENV['CI_MERGE_REQUEST_TARGET_BRANCH_NAME'] || ENV['TARGET'] || ENV['CI_DEFAULT_BRANCH'] || 'master'
end
def source_ref
diff --git a/scripts/validate_migration_timestamps b/scripts/validate_migration_timestamps
new file mode 100755
index 00000000000..d3722e7a4af
--- /dev/null
+++ b/scripts/validate_migration_timestamps
@@ -0,0 +1,24 @@
+#!/usr/bin/env ruby
+
+# frozen_string_literal: true
+
+require 'time'
+
+MIGRATION_DIRS = %w[db/migrate db/post_migrate].freeze
+VERSION_DIGITS = 14
+MIGRATION_TIMESTAMP_REGEX = /\A(?<version>\d{#{VERSION_DIGITS}})_/.freeze
+
+maximum_timestamp = Time.now.utc.strftime('%Y%m%d%H%M%S').to_i
+
+MIGRATION_DIRS.each do |migration_dir|
+ Dir[File.join(migration_dir, '*.rb')].each do |filename|
+ file_basename = File.basename(filename)
+ version_match = MIGRATION_TIMESTAMP_REGEX.match(file_basename)
+
+ raise "#{filename} has an invalid migration version" if version_match.nil?
+
+ migration_timestamp = version_match['version'].to_i
+
+ raise "#{filename} has a future timestamp" if migration_timestamp > maximum_timestamp
+ end
+end