diff --git a/.gitlab/ci/qa-common/main.gitlab-ci.yml b/.gitlab/ci/qa-common/main.gitlab-ci.yml index 5d9438cc5e6..27a807005b1 100644 --- a/.gitlab/ci/qa-common/main.gitlab-ci.yml +++ b/.gitlab/ci/qa-common/main.gitlab-ci.yml @@ -14,7 +14,7 @@ include: gitlab_auth_token_variable_name: "PROJECT_TOKEN_FOR_CI_SCRIPTS_API_USAGE" allure_job_name: "${QA_RUN_TYPE}" - project: gitlab-org/quality/pipeline-common - ref: 7.12.1 + ref: 7.13.3 file: - /ci/base.gitlab-ci.yml - /ci/knapsack-report.yml diff --git a/.rubocop_todo/layout/line_length.yml b/.rubocop_todo/layout/line_length.yml index 19712d9d551..e0e2ac0dc32 100644 --- a/.rubocop_todo/layout/line_length.yml +++ b/.rubocop_todo/layout/line_length.yml @@ -230,7 +230,6 @@ Layout/LineLength: - 'app/helpers/merge_requests_helper.rb' - 'app/helpers/mirror_helper.rb' - 'app/helpers/nav/new_dropdown_helper.rb' - - 'app/helpers/nav/top_nav_helper.rb' - 'app/helpers/nav_helper.rb' - 'app/helpers/notify_helper.rb' - 'app/helpers/operations_helper.rb' diff --git a/.rubocop_todo/metrics/abc_size.yml b/.rubocop_todo/metrics/abc_size.yml index babf39d6630..85097a9e69e 100644 --- a/.rubocop_todo/metrics/abc_size.yml +++ b/.rubocop_todo/metrics/abc_size.yml @@ -2,7 +2,6 @@ Metrics/AbcSize: Exclude: - 'app/helpers/issuables_helper.rb' - - 'app/helpers/nav/top_nav_helper.rb' - 'app/models/instance_configuration.rb' - 'app/services/projects/create_service.rb' - 'lib/gitlab/analytics/cycle_analytics/request_params.rb' diff --git a/.rubocop_todo/metrics/cyclomatic_complexity.yml b/.rubocop_todo/metrics/cyclomatic_complexity.yml index 2519705f21a..e52e93e55f6 100644 --- a/.rubocop_todo/metrics/cyclomatic_complexity.yml +++ b/.rubocop_todo/metrics/cyclomatic_complexity.yml @@ -4,7 +4,6 @@ Metrics/CyclomaticComplexity: - 'app/controllers/admin/application_settings_controller.rb' - 'app/finders/deployments_finder.rb' - 'app/helpers/button_helper.rb' - - 'app/helpers/nav/top_nav_helper.rb' - 'app/models/concerns/issuable.rb' - 'app/services/projects/create_service.rb' - 'ee/app/controllers/ee/groups_controller.rb' diff --git a/.rubocop_todo/metrics/perceived_complexity.yml b/.rubocop_todo/metrics/perceived_complexity.yml index 6e541bee880..3f09e7f9270 100644 --- a/.rubocop_todo/metrics/perceived_complexity.yml +++ b/.rubocop_todo/metrics/perceived_complexity.yml @@ -4,7 +4,6 @@ Metrics/PerceivedComplexity: - 'app/controllers/admin/application_settings_controller.rb' - 'app/finders/deployments_finder.rb' - 'app/helpers/button_helper.rb' - - 'app/helpers/nav/top_nav_helper.rb' - 'app/services/projects/create_service.rb' - 'ee/app/controllers/ee/groups_controller.rb' - 'lib/banzai/filter/references/abstract_reference_filter.rb' diff --git a/.rubocop_todo/rspec/context_wording.yml b/.rubocop_todo/rspec/context_wording.yml index ba1bdb3f194..d3ebe8427fd 100644 --- a/.rubocop_todo/rspec/context_wording.yml +++ b/.rubocop_todo/rspec/context_wording.yml @@ -1418,7 +1418,6 @@ RSpec/ContextWording: - 'spec/helpers/listbox_helper_spec.rb' - 'spec/helpers/markup_helper_spec.rb' - 'spec/helpers/members_helper_spec.rb' - - 'spec/helpers/nav/top_nav_helper_spec.rb' - 'spec/helpers/nav_helper_spec.rb' - 'spec/helpers/notes_helper_spec.rb' - 'spec/helpers/operations_helper_spec.rb' diff --git a/.rubocop_todo/rspec/factory_bot/avoid_create.yml b/.rubocop_todo/rspec/factory_bot/avoid_create.yml index 88d2255f681..ca85767e0f1 100644 --- a/.rubocop_todo/rspec/factory_bot/avoid_create.yml +++ b/.rubocop_todo/rspec/factory_bot/avoid_create.yml @@ -291,7 +291,6 @@ RSpec/FactoryBot/AvoidCreate: - 'spec/helpers/members_helper_spec.rb' - 'spec/helpers/merge_requests_helper_spec.rb' - 'spec/helpers/namespaces_helper_spec.rb' - - 'spec/helpers/nav/top_nav_helper_spec.rb' - 'spec/helpers/nav_helper_spec.rb' - 'spec/helpers/notes_helper_spec.rb' - 'spec/helpers/notifications_helper_spec.rb' diff --git a/.rubocop_todo/rspec/feature_category.yml b/.rubocop_todo/rspec/feature_category.yml index 12377071205..37d27964038 100644 --- a/.rubocop_todo/rspec/feature_category.yml +++ b/.rubocop_todo/rspec/feature_category.yml @@ -2434,7 +2434,6 @@ RSpec/FeatureCategory: - 'spec/helpers/markup_helper_spec.rb' - 'spec/helpers/members_helper_spec.rb' - 'spec/helpers/milestones_helper_spec.rb' - - 'spec/helpers/nav/top_nav_helper_spec.rb' - 'spec/helpers/notifications_helper_spec.rb' - 'spec/helpers/notify_helper_spec.rb' - 'spec/helpers/numbers_helper_spec.rb' @@ -3799,7 +3798,6 @@ RSpec/FeatureCategory: - 'spec/lib/gitlab/multi_collection_paginator_spec.rb' - 'spec/lib/gitlab/multi_destination_logger_spec.rb' - 'spec/lib/gitlab/namespaced_session_store_spec.rb' - - 'spec/lib/gitlab/nav/top_nav_menu_header_spec.rb' - 'spec/lib/gitlab/no_cache_headers_spec.rb' - 'spec/lib/gitlab/noteable_metadata_spec.rb' - 'spec/lib/gitlab/object_hierarchy_spec.rb' diff --git a/.rubocop_todo/rspec/named_subject.yml b/.rubocop_todo/rspec/named_subject.yml index 93404a43df2..dd4928d9c8a 100644 --- a/.rubocop_todo/rspec/named_subject.yml +++ b/.rubocop_todo/rspec/named_subject.yml @@ -1617,7 +1617,6 @@ RSpec/NamedSubject: - 'spec/helpers/markup_helper_spec.rb' - 'spec/helpers/merge_requests_helper_spec.rb' - 'spec/helpers/namespaces_helper_spec.rb' - - 'spec/helpers/nav/top_nav_helper_spec.rb' - 'spec/helpers/nav_helper_spec.rb' - 'spec/helpers/operations_helper_spec.rb' - 'spec/helpers/page_layout_helper_spec.rb' diff --git a/.rubocop_todo/rspec/return_from_stub.yml b/.rubocop_todo/rspec/return_from_stub.yml index ed5b6fa5486..034d4fe4b09 100644 --- a/.rubocop_todo/rspec/return_from_stub.yml +++ b/.rubocop_todo/rspec/return_from_stub.yml @@ -99,7 +99,6 @@ RSpec/ReturnFromStub: - 'spec/helpers/explore_helper_spec.rb' - 'spec/helpers/groups_helper_spec.rb' - 'spec/helpers/issues_helper_spec.rb' - - 'spec/helpers/nav/top_nav_helper_spec.rb' - 'spec/helpers/nav_helper_spec.rb' - 'spec/helpers/operations_helper_spec.rb' - 'spec/helpers/projects_helper_spec.rb' diff --git a/.rubocop_todo/style/arguments_forwarding.yml b/.rubocop_todo/style/arguments_forwarding.yml index f51e582b5a0..f578b75e5f0 100644 --- a/.rubocop_todo/style/arguments_forwarding.yml +++ b/.rubocop_todo/style/arguments_forwarding.yml @@ -110,7 +110,6 @@ Style/ArgumentsForwarding: - 'lib/gitlab/legacy_github_import/client.rb' - 'lib/gitlab/memory/watchdog/configuration.rb' - 'lib/gitlab/metrics/prometheus.rb' - - 'lib/gitlab/nav/top_nav_view_model_builder.rb' - 'lib/gitlab/quick_actions/dsl.rb' - 'lib/gitlab/rack_attack.rb' - 'lib/gitlab/redis/multi_store.rb' diff --git a/.rubocop_todo/style/guard_clause.yml b/.rubocop_todo/style/guard_clause.yml index 04dc90edb95..05f3afd6232 100644 --- a/.rubocop_todo/style/guard_clause.yml +++ b/.rubocop_todo/style/guard_clause.yml @@ -61,7 +61,6 @@ Style/GuardClause: - 'app/helpers/admin/user_actions_helper.rb' - 'app/helpers/events_helper.rb' - 'app/helpers/issues_helper.rb' - - 'app/helpers/nav/top_nav_helper.rb' - 'app/helpers/notes_helper.rb' - 'app/helpers/preferences_helper.rb' - 'app/helpers/profiles_helper.rb' @@ -275,7 +274,6 @@ Style/GuardClause: - 'ee/app/helpers/ee/application_helper.rb' - 'ee/app/helpers/ee/auth_helper.rb' - 'ee/app/helpers/ee/nav/new_dropdown_helper.rb' - - 'ee/app/helpers/ee/nav/top_nav_helper.rb' - 'ee/app/helpers/ee/projects/pipeline_helper.rb' - 'ee/app/helpers/ee/projects_helper.rb' - 'ee/app/models/allowed_email_domain.rb' diff --git a/.rubocop_todo/style/if_unless_modifier.yml b/.rubocop_todo/style/if_unless_modifier.yml index 6c52c2d9f8e..5c4f93e0d55 100644 --- a/.rubocop_todo/style/if_unless_modifier.yml +++ b/.rubocop_todo/style/if_unless_modifier.yml @@ -88,7 +88,6 @@ Style/IfUnlessModifier: - 'app/helpers/lazy_image_tag_helper.rb' - 'app/helpers/markup_helper.rb' - 'app/helpers/merge_requests_helper.rb' - - 'app/helpers/nav/top_nav_helper.rb' - 'app/helpers/nav_helper.rb' - 'app/helpers/page_layout_helper.rb' - 'app/helpers/preferences_helper.rb' diff --git a/.rubocop_todo/style/inline_disable_annotation.yml b/.rubocop_todo/style/inline_disable_annotation.yml index a353755aa7b..55a3320cedd 100644 --- a/.rubocop_todo/style/inline_disable_annotation.yml +++ b/.rubocop_todo/style/inline_disable_annotation.yml @@ -351,7 +351,6 @@ Style/InlineDisableAnnotation: - 'app/helpers/issuables_helper.rb' - 'app/helpers/lazy_image_tag_helper.rb' - 'app/helpers/namespaces_helper.rb' - - 'app/helpers/nav/top_nav_helper.rb' - 'app/helpers/page_layout_helper.rb' - 'app/helpers/routing/projects_helper.rb' - 'app/helpers/routing/pseudonymization_helper.rb' diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 29ada2ea395..9807f6e9cbf 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -c0b07ba36fc8fc40830f061cb55a5c951a166e1c +61813ee439cc7a3e0858b4955f4511315eaab650 diff --git a/app/assets/javascripts/ci/catalog/components/pages/ci_resources_page.vue b/app/assets/javascripts/ci/catalog/components/pages/ci_resources_page.vue index f2e98d50c43..e1c86f38d7e 100644 --- a/app/assets/javascripts/ci/catalog/components/pages/ci_resources_page.vue +++ b/app/assets/javascripts/ci/catalog/components/pages/ci_resources_page.vue @@ -8,6 +8,8 @@ import CatalogListSkeletonLoader from '../list/catalog_list_skeleton_loader.vue' import CatalogHeader from '../list/catalog_header.vue'; import EmptyState from '../list/empty_state.vue'; import getCatalogResources from '../../graphql/queries/get_ci_catalog_resources.query.graphql'; +import getCurrentPage from '../../graphql/queries/client/get_current_page.query.graphql'; +import updateCurrentPageMutation from '../../graphql/mutations/client/update_current_page.mutation.graphql'; export default { components: { @@ -46,6 +48,12 @@ export default { createAlert({ message: e.message || this.$options.i18n.fetchError, variant: 'danger' }); }, }, + currentPage: { + query: getCurrentPage, + update(data) { + return data?.page?.current || 1; + }, + }, }, computed: { hasResources() { @@ -72,7 +80,7 @@ export default { }, }); - this.currentPage -= 1; + this.decrementPage(); } catch (e) { // Ensure that the current query is properly stoped if an error occurs. this.$apollo.queries.catalogResources.stop(); @@ -87,7 +95,7 @@ export default { }, }); - this.currentPage += 1; + this.incrementPage(); } catch (e) { // Ensure that the current query is properly stoped if an error occurs. this.$apollo.queries.catalogResources.stop(); @@ -95,6 +103,20 @@ export default { createAlert({ message: e?.message || this.$options.i18n.fetchError, variant: 'danger' }); } }, + updatePageCount(pageNumber) { + this.$apollo.mutate({ + mutation: updateCurrentPageMutation, + variables: { + pageNumber, + }, + }); + }, + decrementPage() { + this.updatePageCount(this.currentPage - 1); + }, + incrementPage() { + this.updatePageCount(this.currentPage + 1); + }, onUpdateSearchTerm(searchTerm) { this.searchTerm = !searchTerm.length ? null : searchTerm; this.resetPageCount(); @@ -109,7 +131,7 @@ export default { }); }, resetPageCount() { - this.currentPage = 1; + this.updatePageCount(1); }, }, i18n: { diff --git a/app/assets/javascripts/ci/catalog/graphql/mutations/client/update_current_page.mutation.graphql b/app/assets/javascripts/ci/catalog/graphql/mutations/client/update_current_page.mutation.graphql new file mode 100644 index 00000000000..7ffd8f6ea61 --- /dev/null +++ b/app/assets/javascripts/ci/catalog/graphql/mutations/client/update_current_page.mutation.graphql @@ -0,0 +1,7 @@ +mutation updateCurrentPage($pageNumber: Int!) { + updateCurrentPage(pageNumber: $pageNumber) @client { + page { + current + } + } +} diff --git a/app/assets/javascripts/ci/catalog/graphql/queries/client/get_current_page.query.graphql b/app/assets/javascripts/ci/catalog/graphql/queries/client/get_current_page.query.graphql new file mode 100644 index 00000000000..b49895a64aa --- /dev/null +++ b/app/assets/javascripts/ci/catalog/graphql/queries/client/get_current_page.query.graphql @@ -0,0 +1,5 @@ +query getCurrentPage { + page @client { + current + } +} diff --git a/app/assets/javascripts/ci/catalog/graphql/settings.js b/app/assets/javascripts/ci/catalog/graphql/settings.js index 5e71fee818e..c3c6dcca261 100644 --- a/app/assets/javascripts/ci/catalog/graphql/settings.js +++ b/app/assets/javascripts/ci/catalog/graphql/settings.js @@ -1,33 +1,45 @@ import { componentsMockData } from '../constants'; +import getCurrentPage from './queries/client/get_current_page.query.graphql'; export const ciCatalogResourcesItemsCount = 20; export const CI_CATALOG_RESOURCE_TYPE = 'Ci::Catalog::Resource'; export const cacheConfig = { - cacheConfig: { - typePolicies: { - Query: { - fields: { - ciCatalogResource(_, { args, toReference }) { - return toReference({ - __typename: 'CiCatalogResource', - // Webpath is the fullpath with a leading slash - webPath: `/${args.fullPath}`, - }); - }, - ciCatalogResources: { - keyArgs: false, - }, + typePolicies: { + Query: { + fields: { + ciCatalogResource(_, { args, toReference }) { + return toReference({ + __typename: 'CiCatalogResource', + // Webpath is the fullpath with a leading slash + webPath: `/${args.fullPath}`, + }); + }, + ciCatalogResources: { + keyArgs: false, }, }, - CiCatalogResource: { - keyFields: ['webPath'], - }, + }, + CiCatalogResource: { + keyFields: ['webPath'], }, }, }; export const resolvers = { + Mutation: { + updateCurrentPage: (_, { pageNumber }, { cache }) => { + cache.writeQuery({ + query: getCurrentPage, + data: { + page: { + __typename: 'CatalogPage', + current: pageNumber, + }, + }, + }); + }, + }, CiCatalogResource: { components() { return componentsMockData; diff --git a/app/assets/javascripts/ci/catalog/graphql/typedefs.graphql b/app/assets/javascripts/ci/catalog/graphql/typedefs.graphql new file mode 100644 index 00000000000..8604fae0655 --- /dev/null +++ b/app/assets/javascripts/ci/catalog/graphql/typedefs.graphql @@ -0,0 +1,11 @@ +type CatalogPage { + current: Int +} + +extend type Query { + page: CatalogPage +} + +extend type Mutation { + updateCurrentPage(pageNumber: Int!): CatalogPage +} diff --git a/app/assets/javascripts/ci/catalog/index.js b/app/assets/javascripts/ci/catalog/index.js index 5815245506c..34866bfb821 100644 --- a/app/assets/javascripts/ci/catalog/index.js +++ b/app/assets/javascripts/ci/catalog/index.js @@ -2,6 +2,7 @@ import Vue from 'vue'; import VueApollo from 'vue-apollo'; import createDefaultClient from '~/lib/graphql'; import { cacheConfig, resolvers } from '~/ci/catalog/graphql/settings'; +import typeDefs from '~/ci/catalog/graphql/typedefs.graphql'; import GlobalCatalog from './global_catalog.vue'; import CiResourcesPage from './components/pages/ci_resources_page.vue'; @@ -19,7 +20,7 @@ export const initCatalog = (selector = '#js-ci-cd-catalog') => { Vue.use(VueApollo); const apolloProvider = new VueApollo({ - defaultClient: createDefaultClient(resolvers, cacheConfig), + defaultClient: createDefaultClient(resolvers, { cacheConfig, typeDefs }), }); return new Vue({ diff --git a/app/assets/javascripts/ci/job_details/components/log/line.vue b/app/assets/javascripts/ci/job_details/components/log/line.vue index 416f75372f9..6ff2bb766c7 100644 --- a/app/assets/javascripts/ci/job_details/components/log/line.vue +++ b/app/assets/javascripts/ci/job_details/components/log/line.vue @@ -68,7 +68,7 @@ export default { { class: [ 'js-log-line', - 'log-line', + 'job-log-line', { 'gl-bg-gray-700': isHighlighted || applyHashHighlight }, ], }, diff --git a/app/assets/javascripts/ci/job_details/components/log/line_header.vue b/app/assets/javascripts/ci/job_details/components/log/line_header.vue index 4e009afe8c9..4716f1e5162 100644 --- a/app/assets/javascripts/ci/job_details/components/log/line_header.vue +++ b/app/assets/javascripts/ci/job_details/components/log/line_header.vue @@ -68,7 +68,7 @@ export default {