diff --git a/.gitlab/ci/release-environments/main.gitlab-ci.yml b/.gitlab/ci/release-environments/main.gitlab-ci.yml index 8ff0f160565..0b75e10898f 100644 --- a/.gitlab/ci/release-environments/main.gitlab-ci.yml +++ b/.gitlab/ci/release-environments/main.gitlab-ci.yml @@ -57,7 +57,7 @@ release-environments-qa: - .qa-base timeout: 3h variables: - QA_SCENARIO: "Test::Instance::Smoke" + QA_SCENARIO: "Test::Instance::Any" RELEASE: "${CI_REGISTRY}/${CI_PROJECT_PATH}/gitlab-ee-qa:${CI_COMMIT_SHA}" GITLAB_QA_OPTS: --address "https://gitlab.${ENVIRONMENT}.release.gke.gitlab.net" GITLAB_INITIAL_ROOT_PASSWORD: "${RELEASE_ENVIRONMENTS_ROOT_PASSWORD}" diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index d847ce8c2e2..ac6695a39d3 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -f68eed8a9d41bfe20840e87c8a9f6cd58db30de3 +cb8bec7d843749b73a0fc06f44e6aec25b378d92 diff --git a/Gemfile b/Gemfile index 1d7c35ab3ed..bd5209e4ca6 100644 --- a/Gemfile +++ b/Gemfile @@ -376,7 +376,7 @@ gem 'thrift', '>= 0.16.0' # rubocop:todo Gemfile/MissingFeatureCategory # I18n gem 'rails-i18n', '~> 7.0', feature_category: :internationalization -gem 'gettext_i18n_rails', '~> 1.11.0', feature_category: :internationalization +gem 'gettext_i18n_rails', '~> 1.12.0', feature_category: :internationalization gem 'gettext', '~> 3.4', '>= 3.4.9', require: false, group: [:development, :test], @@ -419,6 +419,8 @@ group :development do gem 'ruby-lsp-rails', "~> 0.3.0", feature_category: :tooling gem 'ruby-lsp-rspec', "~> 0.1.10", require: false, feature_category: :tooling + + gem 'gdk-toogle', '~> 0.9', require: 'toogle', feature_category: :tooling end group :development, :test do @@ -500,7 +502,7 @@ end group :test do gem 'fuubar', '~> 2.2.0' # rubocop:todo Gemfile/MissingFeatureCategory gem 'rspec-retry', '~> 0.6.2', feature_category: :tooling - gem 'rspec_profiling', '~> 0.0.8', feature_category: :tooling + gem 'rspec_profiling', '~> 0.0.9', feature_category: :tooling gem 'rspec-benchmark', '~> 0.6.0', feature_category: :tooling gem 'rspec-parameterized', '~> 1.0', require: false, feature_category: :tooling gem 'os', '~> 1.1', '>= 1.1.4', feature_category: :tooling diff --git a/Gemfile.checksum b/Gemfile.checksum index f3317e56afd..a13753d37a3 100644 --- a/Gemfile.checksum +++ b/Gemfile.checksum @@ -201,10 +201,11 @@ {"name":"fuubar","version":"2.2.0","platform":"ruby","checksum":"9b0263c4074f39c68b37f1e4e69a7d3cfc7523c41bea43601235daa723179b4a"}, {"name":"fuzzyurl","version":"0.9.0","platform":"ruby","checksum":"542efa80f2bcaadbdc402c2f0b572f2e335a1d53e375aecad68bbb3d86860c0f"}, {"name":"gapic-common","version":"0.20.0","platform":"ruby","checksum":"af304704b440f7a2a1e8ce6ecce109a67b79fa173f36f11b513b8a35ce509366"}, +{"name":"gdk-toogle","version":"0.9.3","platform":"ruby","checksum":"897f5d3d5d2b2d4a4438c5fb8227f2888d3ad0180353c0d62d0dece2cd22eebf"}, {"name":"gemoji","version":"3.0.1","platform":"ruby","checksum":"80553f2f4932a7a95fb1b3c7c63f7dd937e7c8c610164bbdea28fd06eba5f36d"}, {"name":"get_process_mem","version":"0.2.7","platform":"ruby","checksum":"4afd3c3641dd6a817c09806c7d6d509d8a9984512ac38dea8b917426bbf77eba"}, {"name":"gettext","version":"3.4.9","platform":"ruby","checksum":"292864fe6a15c224cee4125a4a72fab426fdbb280e4cff3cfe44935f549b009a"}, -{"name":"gettext_i18n_rails","version":"1.11.0","platform":"ruby","checksum":"e19c7e4a256c500f7f38396dca44a282b9838ae278f57c362993a54964b22bbe"}, +{"name":"gettext_i18n_rails","version":"1.12.0","platform":"ruby","checksum":"6ac4817731a9e2ce47e1e83381ac34f9142263bc2911aaaafb2526d2f1afc1be"}, {"name":"git","version":"1.18.0","platform":"ruby","checksum":"c9b80462e4565cd3d7a9ba8440c41d2c52244b17b0dad0bfddb46de70630c465"}, {"name":"gitaly","version":"16.10.0.pre.rc1","platform":"ruby","checksum":"483162f2c271fc78e985ad6b25bd06f69a91a4fabc2ff6f25909db7f69458cdb"}, {"name":"gitlab","version":"4.19.0","platform":"ruby","checksum":"3f645e3e195dbc24f0834fbf83e8ccfb2056d8e9712b01a640aad418a6949679"}, @@ -560,7 +561,7 @@ {"name":"rspec-retry","version":"0.6.2","platform":"ruby","checksum":"6101ba23a38809811ae3484acde4ab481c54d846ac66d5037ccb40131a60d858"}, {"name":"rspec-support","version":"3.12.0","platform":"ruby","checksum":"dd4d44b247ff679b95b5607ac5641d197a5f9b1d33f916123cb98fc5f917c58b"}, {"name":"rspec_junit_formatter","version":"0.6.0","platform":"ruby","checksum":"40dde674e6ae4e6cc0ff560da25497677e34fefd2338cc467a8972f602b62b15"}, -{"name":"rspec_profiling","version":"0.0.8","platform":"ruby","checksum":"b31ee456811b8914806a9d46b07959877fc319a0515b1c207987d70a1c499445"}, +{"name":"rspec_profiling","version":"0.0.9","platform":"ruby","checksum":"6199be2daeaa14bac3d10d704dbb0a8df052cf046332c505603263aea24f7590"}, {"name":"rubocop","version":"1.57.2","platform":"ruby","checksum":"8f679dfe42d7821dc61dafb17d14b1294343157a197b9f8a23720ca17fb9161b"}, {"name":"rubocop-ast","version":"1.29.0","platform":"ruby","checksum":"d1da2ab279a074baefc81758ac430c5768a8da8c7438dd4e5819ce5984d00ba1"}, {"name":"rubocop-capybara","version":"2.19.0","platform":"ruby","checksum":"fa329e0f185be313fa5dabd6056f83a718db7f4a259aa97fc287a40254899ccb"}, diff --git a/Gemfile.lock b/Gemfile.lock index ec8778ac997..4db14ca4fec 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -669,6 +669,9 @@ GEM googleapis-common-protos-types (>= 1.3.1, < 2.a) googleauth (~> 1.0) grpc (~> 1.36) + gdk-toogle (0.9.3) + haml + rails (>= 7.0.4.2) gemoji (3.0.1) get_process_mem (0.2.7) ffi (~> 1.0) @@ -678,7 +681,7 @@ GEM prime racc text (>= 1.3.0) - gettext_i18n_rails (1.11.0) + gettext_i18n_rails (1.12.0) fast_gettext (>= 0.9.0) git (1.18.0) addressable (~> 2.8) @@ -1471,7 +1474,7 @@ GEM rspec-support (3.12.0) rspec_junit_formatter (0.6.0) rspec-core (>= 2, < 4, != 2.12.0) - rspec_profiling (0.0.8) + rspec_profiling (0.0.9) activerecord get_process_mem rails @@ -1899,8 +1902,9 @@ DEPENDENCIES fog-local (~> 0.8) fugit (~> 1.8.1) fuubar (~> 2.2.0) + gdk-toogle (~> 0.9) gettext (~> 3.4, >= 3.4.9) - gettext_i18n_rails (~> 1.11.0) + gettext_i18n_rails (~> 1.12.0) gitaly (~> 16.10.0.pre.rc1) gitlab-backup-cli! gitlab-chronic (~> 0.10.5) @@ -2076,7 +2080,7 @@ DEPENDENCIES rspec-rails (~> 6.1.1) rspec-retry (~> 0.6.2) rspec_junit_formatter - rspec_profiling (~> 0.0.8) + rspec_profiling (~> 0.0.9) rubocop ruby-fogbugz (~> 0.3.0) ruby-lsp (~> 0.14.4) diff --git a/app/assets/javascripts/analytics/cycle_analytics/components/filter_bar.vue b/app/assets/javascripts/analytics/cycle_analytics/components/filter_bar.vue index a69909a68dd..a613b6e007c 100644 --- a/app/assets/javascripts/analytics/cycle_analytics/components/filter_bar.vue +++ b/app/assets/javascripts/analytics/cycle_analytics/components/filter_bar.vue @@ -51,7 +51,7 @@ export default { tokens() { return [ { - icon: 'clock', + icon: 'milestone', title: TOKEN_TITLE_MILESTONE, type: TOKEN_TYPE_MILESTONE, token: MilestoneToken, diff --git a/app/assets/javascripts/batch_comments/index.js b/app/assets/javascripts/batch_comments/index.js index fe3e27a253c..a4ae6672d9a 100644 --- a/app/assets/javascripts/batch_comments/index.js +++ b/app/assets/javascripts/batch_comments/index.js @@ -22,7 +22,7 @@ export const initReviewBar = () => { ReviewBar: () => import('./components/review_bar.vue'), }, provide: { - newCommentTemplatePath: el.dataset.newCommentTemplatePath, + newCommentTemplatePaths: JSON.parse(el.dataset.newCommentTemplatePaths), canSummarize: parseBoolean(el.dataset.canSummarize), }, computed: { diff --git a/app/assets/javascripts/boards/components/issue_board_filtered_search.vue b/app/assets/javascripts/boards/components/issue_board_filtered_search.vue index 2e2d04996ee..9f215d848f6 100644 --- a/app/assets/javascripts/boards/components/issue_board_filtered_search.vue +++ b/app/assets/javascripts/boards/components/issue_board_filtered_search.vue @@ -145,7 +145,7 @@ export default { { type: TOKEN_TYPE_MILESTONE, title: TOKEN_TITLE_MILESTONE, - icon: 'clock', + icon: 'milestone', symbol: '%', token: MilestoneToken, unique: true, diff --git a/app/assets/javascripts/ci/catalog/components/details/ci_resource_header.vue b/app/assets/javascripts/ci/catalog/components/details/ci_resource_header.vue index f16d097a1b1..072b863c52b 100644 --- a/app/assets/javascripts/ci/catalog/components/details/ci_resource_header.vue +++ b/app/assets/javascripts/ci/catalog/components/details/ci_resource_header.vue @@ -1,20 +1,40 @@ diff --git a/app/assets/javascripts/ci/catalog/graphql/fragments/catalog_resource.fragment.graphql b/app/assets/javascripts/ci/catalog/graphql/fragments/catalog_resource.fragment.graphql index db706006688..ded14b18664 100644 --- a/app/assets/javascripts/ci/catalog/graphql/fragments/catalog_resource.fragment.graphql +++ b/app/assets/javascripts/ci/catalog/graphql/fragments/catalog_resource.fragment.graphql @@ -21,6 +21,7 @@ fragment CatalogResourceFields on CiCatalogResource { author { id name + state webUrl } } diff --git a/app/assets/javascripts/ci/catalog/index.js b/app/assets/javascripts/ci/catalog/index.js index 34866bfb821..0678f7f2126 100644 --- a/app/assets/javascripts/ci/catalog/index.js +++ b/app/assets/javascripts/ci/catalog/index.js @@ -15,7 +15,7 @@ export const initCatalog = (selector = '#js-ci-cd-catalog') => { } const { dataset } = el; - const { ciCatalogPath } = dataset; + const { ciCatalogPath, reportAbusePath } = dataset; Vue.use(VueApollo); @@ -30,6 +30,7 @@ export const initCatalog = (selector = '#js-ci-cd-catalog') => { apolloProvider, provide: { ciCatalogPath, + reportAbusePath, }, render(h) { return h(GlobalCatalog); diff --git a/app/assets/javascripts/content_editor/components/formatting_toolbar.vue b/app/assets/javascripts/content_editor/components/formatting_toolbar.vue index c1eae345f72..5eea12de477 100644 --- a/app/assets/javascripts/content_editor/components/formatting_toolbar.vue +++ b/app/assets/javascripts/content_editor/components/formatting_toolbar.vue @@ -21,7 +21,7 @@ export default { HeaderDivider, }, inject: { - newCommentTemplatePath: { default: null }, + newCommentTemplatePaths: { default: () => [] }, tiptapEditor: { default: null }, contentEditor: { default: null }, }, @@ -199,11 +199,11 @@ export default { :label="__('Add a quick action')" @execute="trackToolbarControlExecution" /> - + diff --git a/app/assets/javascripts/design_management/index.js b/app/assets/javascripts/design_management/index.js index 12bb4b830f8..e4d3f1a3341 100644 --- a/app/assets/javascripts/design_management/index.js +++ b/app/assets/javascripts/design_management/index.js @@ -14,7 +14,7 @@ export default () => { issuePath, registerPath, signInPath, - newCommentTemplatePath, + newCommentTemplatePaths, } = el.dataset; const router = createRouter(issuePath); @@ -39,7 +39,7 @@ export default () => { issueIid, registerPath, signInPath, - newCommentTemplatePath, + newCommentTemplatePaths: JSON.parse(newCommentTemplatePaths), }, mounted() { performanceMarkAndMeasure({ diff --git a/app/assets/javascripts/diffs/index.js b/app/assets/javascripts/diffs/index.js index 9acfda93303..eed57d2edd5 100644 --- a/app/assets/javascripts/diffs/index.js +++ b/app/assets/javascripts/diffs/index.js @@ -17,6 +17,7 @@ export default function initDiffsApp(store = notesStore) { const { dataset } = el; Vue.use(VueApollo); + const { newCommentTemplatePaths } = dataset; const vm = new Vue({ el, @@ -27,7 +28,7 @@ export default function initDiffsApp(store = notesStore) { store, apolloProvider, provide: { - newCommentTemplatePath: dataset.newCommentTemplatePath, + newCommentTemplatePaths: newCommentTemplatePaths ? JSON.parse(newCommentTemplatePaths) : [], }, data() { return { diff --git a/app/assets/javascripts/filtered_search/issuable_filtered_search_token_keys.js b/app/assets/javascripts/filtered_search/issuable_filtered_search_token_keys.js index 5a785de2e66..7665b53013b 100644 --- a/app/assets/javascripts/filtered_search/issuable_filtered_search_token_keys.js +++ b/app/assets/javascripts/filtered_search/issuable_filtered_search_token_keys.js @@ -43,7 +43,7 @@ export const createTokenKeys = ({ disableReleaseFilter = false } = {}) => { type: 'string', param: 'title', symbol: '%', - icon: 'clock', + icon: 'milestone', tag: '%milestone', }, { diff --git a/app/assets/javascripts/issuable/components/issuable_by_email.vue b/app/assets/javascripts/issuable/components/issuable_by_email.vue index 71ec5544c34..647339d3dc2 100644 --- a/app/assets/javascripts/issuable/components/issuable_by_email.vue +++ b/app/assets/javascripts/issuable/components/issuable_by_email.vue @@ -52,6 +52,23 @@ export default { default: '', }, }, + props: { + buttonClass: { + type: String, + required: false, + default: null, + }, + variant: { + type: String, + required: false, + default: 'link', + }, + text: { + type: String, + required: false, + default: __('Email a new %{name} to this project'), + }, + }, data() { return { email: this.initialEmail, @@ -90,8 +107,8 @@ export default {