diff --git a/.gitlab/ci/qa-common/variables.gitlab-ci.yml b/.gitlab/ci/qa-common/variables.gitlab-ci.yml index beca8e636df..317f3e5635e 100644 --- a/.gitlab/ci/qa-common/variables.gitlab-ci.yml +++ b/.gitlab/ci/qa-common/variables.gitlab-ci.yml @@ -18,7 +18,7 @@ variables: # Helm chart ref used by test-on-cng pipeline GITLAB_HELM_CHART_REF: "be52d36697ab1513512670a5f1456e294d15dbcd" # Specific ref for cng-mirror project to trigger builds for - GITLAB_CNG_MIRROR_REF: "41602cd52fec706fecb9df273016b2ea6236ee8a" + GITLAB_CNG_MIRROR_REF: "4893053f6121ca32c87d7d28a7f76479cce58a72" # Makes sure some of the common scripts from pipeline-common use bundler to execute commands RUN_WITH_BUNDLE: "true" # Makes sure reporting script defined in .gitlab-qa-report from pipeline-common is executed from correct folder diff --git a/.rubocop.yml b/.rubocop.yml index a6ac3c2f019..1cb36cf5e90 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -643,6 +643,9 @@ Cop/ActiveModelErrorsDirectManipulation: Gitlab/AvoidFeatureGet: Enabled: true +Gitlab/FeatureFlagKeyDynamic: + Enabled: true + RSpec/WebMockEnable: Enabled: true Include: diff --git a/.rubocop_todo/gitlab/feature_flag_key_dynamic.yml b/.rubocop_todo/gitlab/feature_flag_key_dynamic.yml new file mode 100644 index 00000000000..e56cffff60c --- /dev/null +++ b/.rubocop_todo/gitlab/feature_flag_key_dynamic.yml @@ -0,0 +1,32 @@ +--- +# Cop supports --autocorrect. +Gitlab/FeatureFlagKeyDynamic: + Details: grace period + Exclude: + - 'app/graphql/resolvers/app_config/gitlab_instance_feature_flags_resolver.rb' + - 'app/graphql/resolvers/feature_flag_resolver.rb' + - 'app/services/concerns/measurable.rb' + - 'app/services/service_desk_settings/update_service.rb' + - 'app/workers/concerns/worker_attributes.rb' + - 'app/workers/loose_foreign_keys/cleanup_worker.rb' + - 'ee/app/controllers/remote_development/workspaces_feature_flag_controller.rb' + - 'ee/app/graphql/resolvers/ai/user_available_features_resolver.rb' + - 'ee/app/graphql/resolvers/ai/user_code_suggestions_contexts_resolver.rb' + - 'ee/app/models/concerns/geo/verifiable_replicator.rb' + - 'ee/app/services/search/zoekt/info_service.rb' + - 'ee/lib/gitlab/ai_gateway.rb' + - 'ee/lib/gitlab/geo/replicator.rb' + - 'ee/lib/gitlab/llm/chain/concerns/use_ai_gateway_agent_prompt.rb' + - 'ee/lib/gitlab/llm/completions_factory.rb' + - 'ee/lib/tasks/gitlab/nav/variant_generator.rb' + - 'ee/spec/graphql/resolvers/ai/user_available_features_resolver_spec.rb' + - 'ee/spec/models/gitlab_subscriptions/features_spec.rb' + - 'lib/feature/gitaly.rb' + - 'lib/gitlab/gon_helper.rb' + - 'lib/gitlab/redis/multi_store.rb' + - 'lib/gitlab/sidekiq_middleware/skip_jobs.rb' + - 'lib/gitlab/sidekiq_sharding/router.rb' + - 'lib/web_ide/extension_marketplace.rb' + - 'spec/lib/feature_spec.rb' + - 'spec/requests/api/features_spec.rb' + - 'spec/support_specs/helpers/stub_feature_flags_spec.rb' diff --git a/app/assets/javascripts/pages/projects/show/index.js b/app/assets/javascripts/pages/projects/show/index.js index 16956a51b0e..594356fa661 100644 --- a/app/assets/javascripts/pages/projects/show/index.js +++ b/app/assets/javascripts/pages/projects/show/index.js @@ -13,7 +13,8 @@ import initSourceCodeDropdowns from '~/vue_shared/components/download_dropdown/i import EmptyProject from '~/pages/projects/show/empty_project'; import initHeaderApp from '~/repository/init_header_app'; import initWebIdeLink from '~/pages/projects/shared/web_ide_link'; -import CompactCodeDropdown from '~/repository/components/code_dropdown/compact_code_dropdown.vue'; +import CompactCodeDropdown from 'ee_else_ce/repository/components/code_dropdown/compact_code_dropdown.vue'; +import apolloProvider from '~/repository/graphql'; import { initHomePanel } from '../home_panel'; // Project show page loads different overview content based on user preferences @@ -70,7 +71,8 @@ const initCodeDropdown = () => { if (!codeDropdownEl) return false; - const { sshUrl, httpUrl, kerberosUrl } = codeDropdownEl.dataset; + const { sshUrl, httpUrl, kerberosUrl, newWorkspacePath, projectId, projectPath } = + codeDropdownEl.dataset; const CodeDropdownComponent = gon.features.directoryCodeDropdownUpdates && gon.features.blobRepositoryVueHeaderApp @@ -79,12 +81,16 @@ const initCodeDropdown = () => { return new Vue({ el: codeDropdownEl, + apolloProvider, render(createElement) { return createElement(CodeDropdownComponent, { props: { sshUrl, httpUrl, kerberosUrl, + projectId, + projectPath, + newWorkspacePath, }, }); }, diff --git a/app/assets/javascripts/repository/components/code_dropdown/compact_code_dropdown.vue b/app/assets/javascripts/repository/components/code_dropdown/compact_code_dropdown.vue index 70ceb15a27e..8c65b89a535 100644 --- a/app/assets/javascripts/repository/components/code_dropdown/compact_code_dropdown.vue +++ b/app/assets/javascripts/repository/components/code_dropdown/compact_code_dropdown.vue @@ -9,6 +9,7 @@ import CodeDropdownIdeItem from './code_dropdown_ide_item.vue'; import { VSCODE_BASE_URL, JETBRAINS_BASE_URL } from './constants'; export default { + name: 'CECompactCodeDropdown', components: { GlDisclosureDropdown, GlDisclosureDropdownGroup, @@ -241,6 +242,7 @@ export default { @close-dropdown="closeDropdown" /> +