diff --git a/.eslintrc.yml b/.eslintrc.yml index f98f7acc0ad..494db5a9d92 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -71,8 +71,6 @@ rules: - sibling - index pathGroups: - - pattern: '@sentry/browser' - group: external - pattern: ~/** group: internal - pattern: emojis/** diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml index ef2056f164c..e2bdf744551 100644 --- a/.gitlab/ci/rails.gitlab-ci.yml +++ b/.gitlab/ci/rails.gitlab-ci.yml @@ -764,13 +764,24 @@ rspec system pg14-as-if-foss clusterwide-db: - .clusterwide-db - .rails:rules:clusterwide-db -rspec-ee unit gitlab_duo_chat pg14: +rspec-ee unit gitlab-duo-chat pg14: + variables: + REAL_AI_REQUEST: "true" + VERTEX_AI_EMBEDDINGS: "true" + extends: + - .rspec-ee-base-pg14 + - .rails:rules:ee-gitlab-duo-chat-vertex-ai + script: + - !reference [.base-script, script] + - rspec_paralellized_job "--fail-fast=${RSPEC_FAIL_FAST_THRESHOLD} --tag real_ai_request" + +rspec-ee unit gitlab-duo-chat-open-ai pg14: variables: REAL_AI_REQUEST: "true" OPENAI_EMBEDDINGS: "true" extends: - .rspec-ee-base-pg14 - - .rails:rules:ee-gitlab-duo-chat + - .rails:rules:ee-gitlab-duo-chat-open-ai script: - !reference [.base-script, script] - rspec_paralellized_job "--fail-fast=${RSPEC_FAIL_FAST_THRESHOLD} --tag real_ai_request" diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index 97def7091c4..ea82be8995a 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -371,6 +371,7 @@ # AI patterns: .ai-patterns: &ai-patterns - "{,ee/,jh/}lib/gitlab/llm/**/*" + - "{,ee/,jh/}{,spec/}lib/gitlab/llm/**/*" # DB patterns + .ci-patterns .db-patterns: &db-patterns @@ -2109,20 +2110,36 @@ - <<: *if-default-refs changes: *code-backstage-patterns -.rails:rules:ee-gitlab-duo-chat: +.rails:rules:ee-gitlab-duo-chat-base: rules: - !reference [".strict-ee-only-rules", rules] - if: '$REAL_AI_REQUEST == null' when: never - if: '$ANTHROPIC_API_KEY == null' when: never - - if: '$OPENAI_EMBEDDINGS == null' - when: never - <<: *if-merge-request changes: *ai-patterns when: manual allow_failure: true +.rails:rules:ee-gitlab-duo-chat-vertex-ai: + rules: + - !reference [".rails:rules:ee-gitlab-duo-chat-base", rules] + - if: '$VERTEX_AI_PROJECT == null' + when: never + - if: '$VERTEX_AI_CREDENTIALS == null' + when: never + - if: '$VERTEX_AI_EMBEDDINGS == null' + when: never + +.rails:rules:ee-gitlab-duo-chat-open-ai: + rules: + - !reference [".rails:rules:ee-gitlab-duo-chat-base", rules] + - if: '$OPENAI_API_KEY == null' + when: never + - if: '$OPENAI_EMBEDDINGS == null' + when: never + .rails:rules:as-if-foss-migration: rules: - !reference [".strict-ee-only-rules", rules] diff --git a/.projections.json.example b/.projections.json.example index 973a7c56d8c..bc0c8790fd7 100644 --- a/.projections.json.example +++ b/.projections.json.example @@ -136,6 +136,14 @@ "alternate": "rubocop/cop/{}.rb", "type": "test" }, + "tooling/*.rb": { + "alternate": "spec/tooling/{}_spec.rb", + "type": "source" + }, + "spec/tooling/*_spec.rb": { + "alternate": "tooling/{}.rb", + "type": "test" + }, "ee/lib/api/*.rb": { "alternate": "ee/spec/requests/api/{}_spec.rb", "type": "source" diff --git a/.rubocop_todo/rspec/feature_category.yml b/.rubocop_todo/rspec/feature_category.yml index ab8a5d628b5..c6a3ac89ab5 100644 --- a/.rubocop_todo/rspec/feature_category.yml +++ b/.rubocop_todo/rspec/feature_category.yml @@ -3634,7 +3634,6 @@ RSpec/FeatureCategory: - 'spec/lib/gitlab/github_import/importer/single_endpoint_issue_events_importer_spec.rb' - 'spec/lib/gitlab/github_import/importer/single_endpoint_issue_notes_importer_spec.rb' - 'spec/lib/gitlab/github_import/importer/single_endpoint_merge_request_notes_importer_spec.rb' - - 'spec/lib/gitlab/github_import/issuable_finder_spec.rb' - 'spec/lib/gitlab/github_import/label_finder_spec.rb' - 'spec/lib/gitlab/github_import/logger_spec.rb' - 'spec/lib/gitlab/github_import/markdown_text_spec.rb' diff --git a/app/assets/javascripts/add_context_commits_modal/store/actions.js b/app/assets/javascripts/add_context_commits_modal/store/actions.js index f085b0d0e5e..890db374160 100644 --- a/app/assets/javascripts/add_context_commits_modal/store/actions.js +++ b/app/assets/javascripts/add_context_commits_modal/store/actions.js @@ -1,5 +1,5 @@ import _ from 'lodash'; -import * as Sentry from '@sentry/browser'; +import * as Sentry from '~/sentry/sentry_browser_wrapper'; import Api from '~/api'; import { createAlert } from '~/alert'; import axios from '~/lib/utils/axios_utils'; diff --git a/app/assets/javascripts/admin/background_migrations/index.js b/app/assets/javascripts/admin/background_migrations/index.js index 4ddd8f17c9a..890df17080d 100644 --- a/app/assets/javascripts/admin/background_migrations/index.js +++ b/app/assets/javascripts/admin/background_migrations/index.js @@ -1,5 +1,5 @@ import Vue from 'vue'; -import * as Sentry from '@sentry/browser'; +import * as Sentry from '~/sentry/sentry_browser_wrapper'; import Translate from '~/vue_shared/translate'; import BackgroundMigrationsDatabaseListbox from './components/database_listbox.vue'; diff --git a/app/assets/javascripts/alert.js b/app/assets/javascripts/alert.js index 4d724b17723..fd20d216385 100644 --- a/app/assets/javascripts/alert.js +++ b/app/assets/javascripts/alert.js @@ -1,7 +1,7 @@ -import * as Sentry from '@sentry/browser'; import Vue from 'vue'; import isEmpty from 'lodash/isEmpty'; import { GlAlert, GlLink, GlSprintf } from '@gitlab/ui'; +import * as Sentry from '~/sentry/sentry_browser_wrapper'; import { __ } from '~/locale'; export const VARIANT_SUCCESS = 'success'; diff --git a/app/assets/javascripts/alerts_settings/components/alerts_settings_form.vue b/app/assets/javascripts/alerts_settings/components/alerts_settings_form.vue index fb872243e5e..29156a624fd 100644 --- a/app/assets/javascripts/alerts_settings/components/alerts_settings_form.vue +++ b/app/assets/javascripts/alerts_settings/components/alerts_settings_form.vue @@ -13,8 +13,8 @@ import { GlTabs, GlTab, } from '@gitlab/ui'; -import * as Sentry from '@sentry/browser'; import { isEqual, isEmpty, omit } from 'lodash'; +import * as Sentry from '~/sentry/sentry_browser_wrapper'; import ClipboardButton from '~/vue_shared/components/clipboard_button.vue'; import { PROMO_URL, DOCS_URL_IN_EE_DIR } from 'jh_else_ce/lib/utils/url_utility'; import { diff --git a/app/assets/javascripts/analytics/usage_trends/components/usage_trends_count_chart.vue b/app/assets/javascripts/analytics/usage_trends/components/usage_trends_count_chart.vue index 8d7761694d1..247c147609b 100644 --- a/app/assets/javascripts/analytics/usage_trends/components/usage_trends_count_chart.vue +++ b/app/assets/javascripts/analytics/usage_trends/components/usage_trends_count_chart.vue @@ -1,8 +1,8 @@ + + diff --git a/app/assets/javascripts/observability/client.js b/app/assets/javascripts/observability/client.js index 2e976cd6230..840dc080399 100644 --- a/app/assets/javascripts/observability/client.js +++ b/app/assets/javascripts/observability/client.js @@ -1,4 +1,4 @@ -import * as Sentry from '@sentry/browser'; +import * as Sentry from '~/sentry/sentry_browser_wrapper'; import axios from '~/lib/utils/axios_utils'; function reportErrorAndThrow(e) { diff --git a/app/assets/javascripts/packages_and_registries/package_registry/components/details/additional_metadata.vue b/app/assets/javascripts/packages_and_registries/package_registry/components/details/additional_metadata.vue index a3bbd569f41..51afd8ba269 100644 --- a/app/assets/javascripts/packages_and_registries/package_registry/components/details/additional_metadata.vue +++ b/app/assets/javascripts/packages_and_registries/package_registry/components/details/additional_metadata.vue @@ -1,6 +1,6 @@