diff --git a/.gitlab/ci/preflight.gitlab-ci.yml b/.gitlab/ci/preflight.gitlab-ci.yml index 426d36b24f4..cd1a9c753cb 100644 --- a/.gitlab/ci/preflight.gitlab-ci.yml +++ b/.gitlab/ci/preflight.gitlab-ci.yml @@ -53,6 +53,18 @@ rails-production-server-boot-puma-cng: - retry_times_sleep 10 5 "curl http://127.0.0.1:8080" - kill $(jobs -p) +ruby_syntax: + extends: + - .preflight-job-base + before_script: + - source scripts/utils.sh + image: ${GITLAB_DEPENDENCY_PROXY_ADDRESS}ruby:${RUBY_VERSION} + parallel: + matrix: + - RUBY_VERSION: ["3.0", "3.1", "3.2"] + script: + - run_timed_command "fail_on_warnings scripts/lint/check_ruby_syntax.rb" + no-ee-check: extends: - .preflight-job-base diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index 646021841b4..65b75c3e237 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -2939,6 +2939,11 @@ - <<: *if-default-refs changes: *code-patterns +.preflight:rules:ruby_syntax: + rules: + - <<: *if-default-refs + changes: *backend-patterns + .preflight:rules:no-ee-check: rules: - <<: *if-not-foss diff --git a/.rubocop_todo/rspec/feature_category.yml b/.rubocop_todo/rspec/feature_category.yml index e007c00bf47..3cc9f073136 100644 --- a/.rubocop_todo/rspec/feature_category.yml +++ b/.rubocop_todo/rspec/feature_category.yml @@ -4370,7 +4370,6 @@ RSpec/FeatureCategory: - 'spec/models/concerns/signature_type_spec.rb' - 'spec/models/concerns/sortable_spec.rb' - 'spec/models/concerns/spammable_spec.rb' - - 'spec/models/concerns/stepable_spec.rb' - 'spec/models/concerns/strip_attribute_spec.rb' - 'spec/models/concerns/subquery_spec.rb' - 'spec/models/concerns/subscribable_spec.rb' diff --git a/.rubocop_todo/rspec/named_subject.yml b/.rubocop_todo/rspec/named_subject.yml index 1bc9fc8bfb3..d788b1722a0 100644 --- a/.rubocop_todo/rspec/named_subject.yml +++ b/.rubocop_todo/rspec/named_subject.yml @@ -2654,7 +2654,6 @@ RSpec/NamedSubject: - 'spec/models/concerns/resolvable_note_spec.rb' - 'spec/models/concerns/runners_token_prefixable_spec.rb' - 'spec/models/concerns/spammable_spec.rb' - - 'spec/models/concerns/stepable_spec.rb' - 'spec/models/concerns/subquery_spec.rb' - 'spec/models/concerns/token_authenticatable_spec.rb' - 'spec/models/concerns/token_authenticatable_strategies/encrypted_spec.rb' diff --git a/app/assets/javascripts/ml/model_registry/components/model_version_list.vue b/app/assets/javascripts/ml/model_registry/components/model_version_list.vue index ea5258a299e..7e14d5e9e54 100644 --- a/app/assets/javascripts/ml/model_registry/components/model_version_list.vue +++ b/app/assets/javascripts/ml/model_registry/components/model_version_list.vue @@ -2,8 +2,16 @@ import * as Sentry from '~/sentry/sentry_browser_wrapper'; import { makeLoadVersionsErrorMessage } from '~/ml/model_registry/translations'; import { convertToGraphQLId } from '~/graphql_shared/utils'; +import { s__ } from '~/locale'; import getModelVersionsQuery from '../graphql/queries/get_model_versions.query.graphql'; -import { GRAPHQL_PAGE_SIZE, MODEL_ENTITIES } from '../constants'; +import { + GRAPHQL_PAGE_SIZE, + LIST_KEY_CREATED_AT, + LIST_KEY_VERSION, + MODEL_ENTITIES, + SORT_KEY_CREATED_AT, + SORT_KEY_ORDER, +} from '../constants'; import SearchableList from './searchable_list.vue'; import EmptyState from './empty_state.vue'; import ModelVersionRow from './model_version_row.vue'; @@ -24,6 +32,8 @@ export default { return { modelVersions: {}, errorMessage: undefined, + skipQueries: true, + queryVariables: {}, }; }, apollo: { @@ -38,6 +48,9 @@ export default { error(error) { this.handleError(error); }, + skip() { + return this.skipQueries; + }, }, }, computed: { @@ -50,31 +63,25 @@ export default { pageInfo() { return this.modelVersions?.pageInfo ?? {}; }, - queryVariables() { - return { - id: this.gid, - first: GRAPHQL_PAGE_SIZE, - }; - }, versions() { return this.modelVersions?.nodes ?? []; }, }, methods: { - fetchPage(pageInfo) { - const variables = { - ...this.queryVariables, - ...pageInfo, + fetchPage(variables) { + this.queryVariables = { + id: this.gid, + first: GRAPHQL_PAGE_SIZE, + ...variables, + version: variables.name, + orderBy: variables.orderBy?.toUpperCase() || SORT_KEY_CREATED_AT, + sort: variables.sort?.toUpperCase() || SORT_KEY_ORDER, }; - this.$apollo.queries.modelVersions - .fetchMore({ - variables, - updateQuery: (previousResult, { fetchMoreResult }) => { - return fetchMoreResult; - }, - }) - .catch(this.handleError); + this.errorMessage = null; + this.skipQueries = false; + + this.$apollo.queries.modelVersions.fetchMore({}); }, handleError(error) { this.errorMessage = makeLoadVersionsErrorMessage(error.message); @@ -82,13 +89,26 @@ export default { }, }, modelVersionEntity: MODEL_ENTITIES.modelVersion, + sortableFields: [ + { + orderBy: LIST_KEY_VERSION, + label: s__('MlExperimentTracking|Version'), + }, + { + orderBy: LIST_KEY_CREATED_AT, + label: s__('MlExperimentTracking|Created at'), + }, + ], };