diff --git a/.gitlab/ci/frontend.gitlab-ci.yml b/.gitlab/ci/frontend.gitlab-ci.yml index 790ee3fe5a0..eba4bf077ba 100644 --- a/.gitlab/ci/frontend.gitlab-ci.yml +++ b/.gitlab/ci/frontend.gitlab-ci.yml @@ -130,11 +130,13 @@ update-storybook-yarn-cache: - tmp/tests/frontend/ - knapsack/ -rspec frontend_fixture: +# In gitlab-foss, generates FOSS fixtures. In gitlab, generates FOSS & EE fixtures. +# That way, we don't need to have two separate jobs. +rspec-all frontend_fixture: extends: - .frontend-fixtures-base - .frontend:rules:default-frontend-jobs - parallel: 2 + parallel: 5 rspec frontend_fixture as-if-foss: extends: @@ -142,12 +144,6 @@ rspec frontend_fixture as-if-foss: - .frontend:rules:default-frontend-jobs-as-if-foss - .as-if-foss -rspec-ee frontend_fixture: - extends: - - .frontend-fixtures-base - - .frontend:rules:default-frontend-jobs-ee - parallel: 3 - graphql-schema-dump: variables: SETUP_DB: "false" @@ -198,9 +194,7 @@ jest: - .frontend:rules:jest needs: - job: "detect-tests" - - job: "rspec frontend_fixture" - - job: "rspec-ee frontend_fixture" - optional: true + - job: "rspec-all frontend_fixture" artifacts: name: coverage-frontend expire_in: 31d @@ -227,9 +221,7 @@ jest-integration: script: - run_timed_command "yarn jest:integration --ci" needs: - - job: "rspec frontend_fixture" - - job: "rspec-ee frontend_fixture" - optional: true + - job: "rspec-all frontend_fixture" - job: "graphql-schema-dump" jest-as-if-foss: @@ -343,9 +335,7 @@ startup-css-check: - .frontend:rules:default-frontend-jobs needs: - job: "compile-test-assets" - - job: "rspec frontend_fixture" - - job: "rspec-ee frontend_fixture" - optional: true + - job: "rspec-all frontend_fixture" startup-css-check as-if-foss: extends: @@ -369,9 +359,7 @@ compile-storybook: - .compile-storybook-base - .frontend:rules:default-frontend-jobs needs: - - job: "rspec frontend_fixture" - - job: "rspec-ee frontend_fixture" - optional: true + - job: "rspec-all frontend_fixture" - job: "graphql-schema-dump" artifacts: name: storybook diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index 25e685e15a1..9d017ad0bd0 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -354,6 +354,10 @@ - "danger/**/*" - "tooling/danger/**/*" +.core-backend-patterns: &core-backend-patterns + - "{,jh/}Gemfile{,.lock}" + - "{,ee/,jh/}config/**/*.rb" + .core-frontend-patterns: &core-frontend-patterns - "{package.json,yarn.lock}" - "babel.config.js" @@ -495,13 +499,6 @@ - <<: *if-default-refs changes: *code-backstage-patterns -.frontend:rules:default-frontend-jobs-ee: - rules: - - <<: *if-not-ee - when: never - - <<: *if-default-refs - changes: *code-backstage-patterns - .frontend:rules:default-frontend-jobs-as-if-foss: rules: - <<: *if-not-ee @@ -657,6 +654,8 @@ .rails:rules:ee-and-foss-migration: rules: - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-merge-request @@ -675,6 +674,9 @@ when: never - <<: *if-merge-request-labels-run-all-rspec when: never + - <<: *if-merge-request + changes: *core-backend-patterns + when: never - <<: *if-merge-request changes: *ci-patterns when: never @@ -699,6 +701,8 @@ .rails:rules:ee-and-foss-unit: rules: - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -715,6 +719,9 @@ when: never - <<: *if-merge-request-labels-run-all-rspec when: never + - <<: *if-merge-request + changes: *core-backend-patterns + when: never - <<: *if-merge-request changes: *ci-patterns when: never @@ -724,6 +731,8 @@ .rails:rules:ee-and-foss-integration: rules: - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -740,6 +749,9 @@ when: never - <<: *if-merge-request-labels-run-all-rspec when: never + - <<: *if-merge-request + changes: *core-backend-patterns + when: never - <<: *if-merge-request changes: *ci-patterns when: never @@ -749,6 +761,8 @@ .rails:rules:ee-and-foss-system: rules: - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -765,6 +779,9 @@ when: never - <<: *if-merge-request-labels-run-all-rspec when: never + - <<: *if-merge-request + changes: *core-backend-patterns + when: never - <<: *if-merge-request changes: *ci-patterns when: never @@ -774,6 +791,8 @@ .rails:rules:ee-and-foss-fast_spec_helper: rules: - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -790,6 +809,9 @@ when: never - <<: *if-merge-request-labels-run-all-rspec when: never + - <<: *if-merge-request + changes: *core-backend-patterns + when: never - <<: *if-merge-request changes: *ci-patterns when: never @@ -806,6 +828,8 @@ - <<: *if-not-ee when: never - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-merge-request @@ -826,6 +850,9 @@ when: never - <<: *if-merge-request-labels-run-all-rspec when: never + - <<: *if-merge-request + changes: *core-backend-patterns + when: never - <<: *if-merge-request changes: *ci-patterns when: never @@ -838,6 +865,8 @@ - <<: *if-not-ee when: never - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -856,6 +885,9 @@ when: never - <<: *if-merge-request-labels-run-all-rspec when: never + - <<: *if-merge-request + changes: *core-backend-patterns + when: never - <<: *if-merge-request changes: *ci-patterns when: never @@ -867,6 +899,8 @@ - <<: *if-not-ee when: never - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -885,6 +919,9 @@ when: never - <<: *if-merge-request-labels-run-all-rspec when: never + - <<: *if-merge-request + changes: *core-backend-patterns + when: never - <<: *if-merge-request changes: *ci-patterns when: never @@ -896,6 +933,8 @@ - <<: *if-not-ee when: never - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -914,6 +953,9 @@ when: never - <<: *if-merge-request-labels-run-all-rspec when: never + - <<: *if-merge-request + changes: *core-backend-patterns + when: never - <<: *if-merge-request changes: *ci-patterns when: never @@ -925,6 +967,8 @@ - <<: *if-not-ee when: never - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-security-merge-request @@ -944,6 +988,9 @@ when: never - <<: *if-automated-merge-request when: never + - <<: *if-merge-request + changes: *core-backend-patterns + when: never - <<: *if-merge-request changes: *ci-patterns when: never @@ -959,6 +1006,8 @@ - <<: *if-not-ee when: never - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -978,6 +1027,9 @@ when: never - <<: *if-automated-merge-request when: never + - <<: *if-merge-request + changes: *core-backend-patterns + when: never - <<: *if-merge-request changes: *ci-patterns when: never @@ -991,6 +1043,8 @@ - <<: *if-not-ee when: never - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -1010,6 +1064,9 @@ when: never - <<: *if-automated-merge-request when: never + - <<: *if-merge-request + changes: *core-backend-patterns + when: never - <<: *if-merge-request changes: *ci-patterns when: never @@ -1023,6 +1080,8 @@ - <<: *if-not-ee when: never - <<: *if-merge-request-labels-run-all-rspec + - <<: *if-merge-request + changes: *core-backend-patterns - <<: *if-merge-request changes: *ci-patterns - <<: *if-automated-merge-request @@ -1042,6 +1101,9 @@ when: never - <<: *if-automated-merge-request when: never + - <<: *if-merge-request + changes: *core-backend-patterns + when: never - <<: *if-merge-request changes: *ci-patterns when: never diff --git a/.gitlab/ci/test-metadata.gitlab-ci.yml b/.gitlab/ci/test-metadata.gitlab-ci.yml index ac719977975..2d96fb6d4b0 100644 --- a/.gitlab/ci/test-metadata.gitlab-ci.yml +++ b/.gitlab/ci/test-metadata.gitlab-ci.yml @@ -29,8 +29,7 @@ update-tests-metadata: - retrieve-tests-metadata - setup-test-env - rspec migration pg12 - - rspec frontend_fixture - - rspec-ee frontend_fixture + - rspec-all frontend_fixture - rspec unit pg12 - rspec integration pg12 - rspec system pg12 diff --git a/app/assets/javascripts/environments/components/environment_delete.vue b/app/assets/javascripts/environments/components/environment_delete.vue index 4b7917b4572..8609503e486 100644 --- a/app/assets/javascripts/environments/components/environment_delete.vue +++ b/app/assets/javascripts/environments/components/environment_delete.vue @@ -4,17 +4,15 @@ * Used in the environments table. */ -import { GlTooltipDirective, GlButton, GlModalDirective } from '@gitlab/ui'; -import { BV_HIDE_TOOLTIP } from '~/lib/utils/constants'; +import { GlDropdownItem, GlModalDirective } from '@gitlab/ui'; import { s__ } from '~/locale'; import eventHub from '../event_hub'; export default { components: { - GlButton, + GlDropdownItem, }, directives: { - GlTooltip: GlTooltipDirective, GlModalDirective, }, props: { @@ -28,10 +26,8 @@ export default { isLoading: false, }; }, - computed: { - title() { - return s__('Environments|Delete environment'); - }, + i18n: { + title: s__('Environments|Delete environment'), }, mounted() { eventHub.$on('deleteEnvironment', this.onDeleteEnvironment); @@ -41,7 +37,6 @@ export default { }, methods: { onClick() { - this.$root.$emit(BV_HIDE_TOOLTIP, this.$options.deleteEnvironmentTooltipId); eventHub.$emit('requestDeleteEnvironment', this.environment); }, onDeleteEnvironment(environment) { @@ -50,20 +45,15 @@ export default { } }, }, - deleteEnvironmentTooltipId: 'delete-environment-button-tooltip', }; diff --git a/app/assets/javascripts/environments/components/environment_external_url.vue b/app/assets/javascripts/environments/components/environment_external_url.vue index 793f7bf0681..b8def676e7d 100644 --- a/app/assets/javascripts/environments/components/environment_external_url.vue +++ b/app/assets/javascripts/environments/components/environment_external_url.vue @@ -18,22 +18,23 @@ export default { required: true, }, }, - computed: { - title() { - return s__('Environments|Open live environment'); - }, + i18n: { + title: s__('Environments|Open live environment'), + open: s__('Environments|Open'), }, }; diff --git a/app/assets/javascripts/environments/components/environment_item.vue b/app/assets/javascripts/environments/components/environment_item.vue index d12863ee742..db01d455b2b 100644 --- a/app/assets/javascripts/environments/components/environment_item.vue +++ b/app/assets/javascripts/environments/components/environment_item.vue @@ -1,5 +1,5 @@ diff --git a/app/assets/javascripts/environments/components/environment_pin.vue b/app/assets/javascripts/environments/components/environment_pin.vue index 52ac7725bde..0b753d53ee3 100644 --- a/app/assets/javascripts/environments/components/environment_pin.vue +++ b/app/assets/javascripts/environments/components/environment_pin.vue @@ -3,17 +3,13 @@ * Renders a prevent auto-stop button. * Used in environments table. */ -import { GlButton, GlTooltipDirective, GlIcon } from '@gitlab/ui'; +import { GlDropdownItem } from '@gitlab/ui'; import { __ } from '~/locale'; import eventHub from '../event_hub'; export default { components: { - GlIcon, - GlButton, - }, - directives: { - GlTooltip: GlTooltipDirective, + GlDropdownItem, }, props: { autoStopUrl: { @@ -26,11 +22,11 @@ export default { eventHub.$emit('cancelAutoStop', this.autoStopUrl); }, }, - title: __('Prevent environment from auto-stopping'), + title: __('Prevent auto-stopping'), }; diff --git a/app/assets/javascripts/environments/components/environment_rollback.vue b/app/assets/javascripts/environments/components/environment_rollback.vue index c0b4e96cea2..00497b3c683 100644 --- a/app/assets/javascripts/environments/components/environment_rollback.vue +++ b/app/assets/javascripts/environments/components/environment_rollback.vue @@ -5,16 +5,15 @@ * * Makes a post request when the button is clicked. */ -import { GlTooltipDirective, GlModalDirective, GlButton } from '@gitlab/ui'; +import { GlModalDirective, GlDropdownItem } from '@gitlab/ui'; import { s__ } from '~/locale'; import eventHub from '../event_hub'; export default { components: { - GlButton, + GlDropdownItem, }, directives: { - GlTooltip: GlTooltipDirective, GlModal: GlModalDirective, }, props: { @@ -65,14 +64,7 @@ export default { }; diff --git a/app/assets/javascripts/environments/components/environment_stop.vue b/app/assets/javascripts/environments/components/environment_stop.vue index dceaf3cacf1..0d4a1e76eb8 100644 --- a/app/assets/javascripts/environments/components/environment_stop.vue +++ b/app/assets/javascripts/environments/components/environment_stop.vue @@ -23,16 +23,15 @@ export default { required: true, }, }, + i18n: { + title: s__('Environments|Stop environment'), + stop: s__('Environments|Stop'), + }, data() { return { isLoading: false, }; }, - computed: { - title() { - return s__('Environments|Stop environment'); - }, - }, mounted() { eventHub.$on('stopEnvironment', this.onStopEnvironment); }, @@ -58,11 +57,13 @@ export default { v-gl-tooltip="{ id: $options.stopEnvironmentTooltipId }" v-gl-modal-directive="'stop-environment-modal'" :loading="isLoading" - :title="title" - :aria-label="title" + :title="$options.i18n.title" + :aria-label="$options.i18n.title" icon="stop" - category="primary" + category="secondary" variant="danger" @click="onClick" - /> + > + {{ $options.i18n.stop }} + diff --git a/app/assets/javascripts/environments/components/environment_terminal_button.vue b/app/assets/javascripts/environments/components/environment_terminal_button.vue index 4750b8ef01b..0df07f0457f 100644 --- a/app/assets/javascripts/environments/components/environment_terminal_button.vue +++ b/app/assets/javascripts/environments/components/environment_terminal_button.vue @@ -3,15 +3,12 @@ * Renders a terminal button to open a web terminal. * Used in environments table. */ -import { GlTooltipDirective, GlIcon } from '@gitlab/ui'; +import { GlDropdownItem } from '@gitlab/ui'; import { __ } from '~/locale'; export default { components: { - GlIcon, - }, - directives: { - GlTooltip: GlTooltipDirective, + GlDropdownItem, }, props: { terminalPath: { @@ -25,22 +22,11 @@ export default { default: false, }, }, - computed: { - title() { - return __('Terminal'); - }, - }, + title: __('Terminal'), }; diff --git a/app/assets/javascripts/packages_and_registries/package_registry/components/list/app.vue b/app/assets/javascripts/packages_and_registries/package_registry/components/list/app.vue index 1d0d92d89d5..08481ac5655 100644 --- a/app/assets/javascripts/packages_and_registries/package_registry/components/list/app.vue +++ b/app/assets/javascripts/packages_and_registries/package_registry/components/list/app.vue @@ -10,10 +10,14 @@ import { historyReplaceState } from '~/lib/utils/common_utils'; import { s__ } from '~/locale'; import { DELETE_PACKAGE_SUCCESS_MESSAGE } from '~/packages/list/constants'; import { SHOW_DELETE_SUCCESS_ALERT } from '~/packages/shared/constants'; -import { FILTERED_SEARCH_TERM } from '~/packages_and_registries/shared/constants'; -import { getQueryParams, extractFilterAndSorting } from '~/packages_and_registries/shared/utils'; +import getPackagesQuery from '~/packages_and_registries/package_registry/graphql/queries/get_packages.query.graphql'; +import { + PROJECT_RESOURCE_TYPE, + GROUP_RESOURCE_TYPE, + LIST_QUERY_DEBOUNCE_TIME, +} from '~/packages_and_registries/package_registry/constants'; import PackageTitle from './package_title.vue'; -// import PackageSearch from './package_search.vue'; +import PackageSearch from './package_search.vue'; // import PackageList from './packages_list.vue'; export default { @@ -23,28 +27,53 @@ export default { // GlSprintf, // PackageList, PackageTitle, - // PackageSearch, + PackageSearch, }, - inject: ['packageHelpUrl', 'emptyListIllustration', 'emptyListHelpUrl'], + inject: [ + 'packageHelpUrl', + 'emptyListIllustration', + 'emptyListHelpUrl', + 'isGroupPage', + 'fullPath', + ], data() { return { - filter: [], - sorting: { - sort: 'desc', - orderBy: 'created_at', - }, - selectedType: '', - pagination: {}, + packages: {}, + sort: '', + filters: {}, }; }, - computed: { - packagesCount() { - return 0; + apollo: { + packages: { + query: getPackagesQuery, + variables() { + return this.queryVariables; + }, + update(data) { + return data[this.graphqlResource].packages; + }, + debounce: LIST_QUERY_DEBOUNCE_TIME, }, - emptySearch() { - return ( - this.filter.filter((f) => f.type !== FILTERED_SEARCH_TERM || f.value?.data).length === 0 - ); + }, + computed: { + queryVariables() { + return { + isGroupPage: this.isGroupPage, + fullPath: this.fullPath, + sort: this.isGroupPage ? undefined : this.sort, + groupSort: this.isGroupPage ? this.sort : undefined, + packageName: this.filters?.packageName, + packageType: this.filters?.packageType, + }; + }, + graphqlResource() { + return this.isGroupPage ? GROUP_RESOURCE_TYPE : PROJECT_RESOURCE_TYPE; + }, + packagesCount() { + return this.packages?.count; + }, + hasFilters() { + return this.filters.packageName && this.filters.packageType; }, emptyStateTitle() { return this.emptySearch @@ -53,19 +82,9 @@ export default { }, }, mounted() { - const queryParams = getQueryParams(window.document.location.search); - const { sorting, filters } = extractFilterAndSorting(queryParams); - this.sorting = { ...sorting }; - this.filter = [...filters]; this.checkDeleteAlert(); }, methods: { - onPageChanged(page) { - return this.requestPackagesList({ page }); - }, - onPackageDeleteRequest(item) { - return this.requestDeletePackage(item); - }, checkDeleteAlert() { const urlParams = new URLSearchParams(window.location.search); const showAlert = urlParams.get(SHOW_DELETE_SUCCESS_ALERT); @@ -76,6 +95,10 @@ export default { historyReplaceState(cleanUrl); } }, + handleSearchUpdate({ sort, filters }) { + this.sort = sort; + this.filters = { ...filters }; + }, }, i18n: { widenFilters: s__('PackageRegistry|To widen your search, change or remove the filters above.'), @@ -91,13 +114,13 @@ export default {