From 6238e8c035e0cc0974eacb276fe4f19ced138076 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Fri, 13 Dec 2024 12:32:18 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .gitlab/ci/test-on-cng/main.gitlab-ci.yml | 2 +- .../Security developer workflow.md | 3 +- .rubocop_todo/gitlab/bounded_contexts.yml | 1 + .rubocop_todo/layout/line_length.yml | 1 - GITLAB_KAS_VERSION | 2 +- .../details/ci_resource_components.vue | 7 +- .../ci/ci_lint/components/ci_lint.vue | 8 +- .../components/sidebar/artifacts_block.vue | 9 +- .../components/sidebar/sidebar_detail_row.vue | 7 +- .../components/validate/ci_validate.vue | 13 +- .../graphql_shared/issuable_client.js | 9 + .../empty_state_without_any_issues.vue | 23 +- .../components/app.vue | 195 ++++--- .../merge_request_dashboard/index.js | 6 +- .../components/merge_requests_list_app.vue | 59 +- .../javascripts/merge_requests/list/index.js | 9 +- .../get_merge_requests.query.graphql | 4 +- .../get_merge_requests_counts.query.graphql | 2 +- .../index/components/ml_experiments_index.vue | 32 +- .../index/components/mlflow_usage_modal.vue | 73 +++ .../routes/experiments/index/constants.js | 6 +- .../routes/experiments/index/translations.js | 6 +- .../projects/merge_requests/index/index.js | 5 +- .../projects/ml/experiments/index/index.js | 3 +- .../components/interval_pattern_input.vue | 8 +- .../components/work_item_detail.vue | 5 + ...item_create_branch_merge_request_modal.vue | 60 ++- ...eate_branch_merge_request_split_button.vue | 16 + .../work_item_development.vue | 8 + .../work_items/graphql/cache_utils.js | 2 + .../graphql/work_item.fragment.graphql | 3 + .../work_item_hierarchy.fragment.graphql | 1 + app/assets/javascripts/work_items/index.js | 8 + app/channels/graphql_channel.rb | 2 + app/controllers/groups/children_controller.rb | 2 +- app/finders/ci/auth_job_finder.rb | 1 - app/finders/group_descendants_finder.rb | 20 +- app/finders/merge_requests_finder.rb | 10 + .../concerns/resolves_merge_requests.rb | 27 + .../resolvers/merge_requests_resolver.rb | 14 +- app/helpers/merge_requests_helper.rb | 243 ++++++--- app/helpers/projects/ml/mlflow_helper.rb | 15 + .../projects/ml/model_registry_helper.rb | 8 - app/helpers/sidebars_helper.rb | 6 +- app/helpers/work_items_helper.rb | 5 +- app/models/merge_request.rb | 5 + app/models/user.rb | 4 + app/services/service_response.rb | 8 + app/views/dashboard/merge_requests.html.haml | 2 +- .../projects/ml/experiments/index.html.haml | 1 + .../types/q_onbarding_updated.yml | 10 + .../hard_limit_daily_phone_verifications.yml | 8 - ...dentity_in_ci.yml => filter_blob_path.yml} | 10 +- .../ops/telesign_intelligence.yml | 8 - .../wip/merge_request_dashboard_new_lists.yml | 9 + config/initializers/1_settings.rb | 9 + .../geo/replication/datatypes.md | 10 +- ...ported_models_and_hardware_requirements.md | 7 +- doc/api/graphql/reference/index.md | 32 ++ doc/development/code_review.md | 23 + doc/user/compliance/audit_event_types.md | 1 + doc/user/discussions/index.md | 20 +- doc/user/permissions.md | 5 +- lib/api/conan/v1/instance_packages.rb | 2 +- lib/api/conan/v1/project_packages.rb | 2 +- .../packages/conan/shared_endpoints.rb | 55 ++ .../concerns/packages/conan/v1_endpoints.rb | 503 +++++++++++++++++ lib/api/concerns/packages/conan_endpoints.rb | 506 ------------------ lib/assets/images/bot_avatars/q_avatar.png | Bin 0 -> 16990 bytes lib/gitlab/application_context.rb | 11 + lib/gitlab/auth.rb | 2 + lib/gitlab/auth/identity.rb | 10 +- lib/gitlab/import/source_user_mapper.rb | 2 +- .../admin/menus/admin_overview_menu.rb | 2 + locale/gitlab.pot | 35 +- .../groups/children_controller_spec.rb | 67 +++ spec/finders/ci/auth_job_finder_spec.rb | 14 - spec/finders/group_descendants_finder_spec.rb | 28 + spec/finders/merge_requests_finder_spec.rb | 38 ++ .../components/validate/ci_validate_spec.js | 12 +- .../components/app_spec.js | 70 ++- .../merge_requests_list_app_spec.js | 24 +- .../frontend/merge_requests/list/mock_data.js | 4 +- .../components/ml_experiments_index_spec.js | 13 +- .../components/mlflow_usage_modal_spec.js | 41 ++ ..._create_branch_merge_request_modal_spec.js | 72 +++ ..._branch_merge_request_split_button_spec.js | 9 + spec/frontend/work_items/mock_data.js | 25 + .../resolvers/merge_requests_resolver_spec.rb | 71 +++ spec/helpers/boards_helper_spec.rb | 2 + .../helpers/projects/ml/mlflow_helper_spec.rb | 16 + spec/lib/gitlab/auth/identity_spec.rb | 46 ++ .../lib/gitlab/ci/pipeline/seed/build_spec.rb | 22 - .../review_request_importer_spec.rb | 2 +- .../gitlab/import/source_user_mapper_spec.rb | 16 +- .../issue_formatter_spec.rb | 10 +- .../pull_request_formatter_spec.rb | 2 + .../user_formatter_spec.rb | 2 +- spec/models/merge_request_spec.rb | 9 + spec/models/user_spec.rb | 27 + .../composite_identity_spec.rb | 25 +- spec/services/service_response_spec.rb | 30 ++ .../api/conan_packages_shared_examples.rb | 15 + 103 files changed, 2039 insertions(+), 924 deletions(-) rename app/assets/javascripts/merge_requests/list/queries/{ => project}/get_merge_requests.query.graphql (95%) rename app/assets/javascripts/merge_requests/list/queries/{ => project}/get_merge_requests_counts.query.graphql (98%) create mode 100644 app/assets/javascripts/ml/experiment_tracking/routes/experiments/index/components/mlflow_usage_modal.vue create mode 100644 app/helpers/projects/ml/mlflow_helper.rb create mode 100644 config/audit_events/types/q_onbarding_updated.yml delete mode 100644 config/feature_flags/development/hard_limit_daily_phone_verifications.yml rename config/feature_flags/gitlab_com_derisk/{composite_identity_in_ci.yml => filter_blob_path.yml} (73%) delete mode 100644 config/feature_flags/ops/telesign_intelligence.yml create mode 100644 config/feature_flags/wip/merge_request_dashboard_new_lists.yml create mode 100644 lib/api/concerns/packages/conan/shared_endpoints.rb create mode 100644 lib/api/concerns/packages/conan/v1_endpoints.rb delete mode 100644 lib/api/concerns/packages/conan_endpoints.rb create mode 100644 lib/assets/images/bot_avatars/q_avatar.png create mode 100644 spec/frontend/ml/experiment_tracking/routes/experiments/index/components/mlflow_usage_modal_spec.js create mode 100644 spec/helpers/projects/ml/mlflow_helper_spec.rb diff --git a/.gitlab/ci/test-on-cng/main.gitlab-ci.yml b/.gitlab/ci/test-on-cng/main.gitlab-ci.yml index 0859cd5051a..c3fed7916ac 100644 --- a/.gitlab/ci/test-on-cng/main.gitlab-ci.yml +++ b/.gitlab/ci/test-on-cng/main.gitlab-ci.yml @@ -78,7 +78,7 @@ workflow: QA_ALLOW_LOCAL_REQUESTS: "true" QA_SUITE_STATUS_ENV_FILE: $CI_PROJECT_DIR/suite_status.env QA_RUN_IN_PARALLEL: "true" - QA_PARALLEL_PROCESSES: 4 + QA_PARALLEL_PROCESSES: 5 GITLAB_QA_ADMIN_ACCESS_TOKEN: $QA_ADMIN_ACCESS_TOKEN before_script: - echo "SUITE_RAN=true" > "$QA_SUITE_STATUS_ENV_FILE" diff --git a/.gitlab/issue_templates/Security developer workflow.md b/.gitlab/issue_templates/Security developer workflow.md index e497bbbb241..b60a7852e98 100644 --- a/.gitlab/issue_templates/Security developer workflow.md +++ b/.gitlab/issue_templates/Security developer workflow.md @@ -34,7 +34,8 @@ After your merge request has been approved according to our [approval guidelines - You can use the script `bin/secpick` instead of the following steps, to help you cherry-picking. See the [secpick documentation] - [ ] Create each MR targeting the stable branch `X-Y-stable`, using the [Security merge request template]. - Every merge request will have its own set of to-dos, so make sure to complete those. -- [ ] On the "Related merge requests" section, ensure that `4` merge requests are associated: The one targeting `master` and the `3` backports. +- [ ] On the `Related merge requests` section, ensure that **ONLY** `4` merge requests are associated: **ONLY** one targeting `master` and the `3` backports. + - [ ] If there are more associated MRs, re-create another security issue and ensure there are only 4 merge requests associated with that one. - [ ] If this issue requires less than `4` merge requests, add the ~"reduced backports" label. ## Assigning to a release diff --git a/.rubocop_todo/gitlab/bounded_contexts.yml b/.rubocop_todo/gitlab/bounded_contexts.yml index 0741962bf45..47544ee5ef0 100644 --- a/.rubocop_todo/gitlab/bounded_contexts.yml +++ b/.rubocop_todo/gitlab/bounded_contexts.yml @@ -3603,6 +3603,7 @@ Gitlab/BoundedContexts: - 'ee/lib/ee/event_filter.rb' - 'ee/lib/ee/feature.rb' - 'ee/lib/ee/feature/definition.rb' + - 'ee/lib/ee/sidebars/admin/menus/admin_overview_menu.rb' - 'ee/lib/ee/sidebars/admin/menus/admin_settings_menu.rb' - 'ee/lib/ee/sidebars/admin/menus/monitoring_menu.rb' - 'ee/lib/ee/sidebars/admin/panel.rb' diff --git a/.rubocop_todo/layout/line_length.yml b/.rubocop_todo/layout/line_length.yml index 7088afe74b1..005f70f2d1a 100644 --- a/.rubocop_todo/layout/line_length.yml +++ b/.rubocop_todo/layout/line_length.yml @@ -1959,7 +1959,6 @@ Layout/LineLength: - 'lib/api/commit_statuses.rb' - 'lib/api/commits.rb' - 'lib/api/composer_packages.rb' - - 'lib/api/concerns/packages/conan_endpoints.rb' - 'lib/api/concerns/packages/debian_distribution_endpoints.rb' - 'lib/api/concerns/packages/debian_package_endpoints.rb' - 'lib/api/debian_group_packages.rb' diff --git a/GITLAB_KAS_VERSION b/GITLAB_KAS_VERSION index 3237e12671d..bc471ddb436 100644 --- a/GITLAB_KAS_VERSION +++ b/GITLAB_KAS_VERSION @@ -1 +1 @@ -6250b300df6b3559e377ac6d218bba674ee045bf +ed8e69891a82913e19430e094c192833ea5cb066 diff --git a/app/assets/javascripts/ci/catalog/components/details/ci_resource_components.vue b/app/assets/javascripts/ci/catalog/components/details/ci_resource_components.vue index e73aef521d2..90d5aa1c29e 100644 --- a/app/assets/javascripts/ci/catalog/components/details/ci_resource_components.vue +++ b/app/assets/javascripts/ci/catalog/components/details/ci_resource_components.vue @@ -1,18 +1,19 @@ @@ -69,12 +87,18 @@ export default { + > + + + + diff --git a/app/assets/javascripts/ml/experiment_tracking/routes/experiments/index/components/mlflow_usage_modal.vue b/app/assets/javascripts/ml/experiment_tracking/routes/experiments/index/components/mlflow_usage_modal.vue new file mode 100644 index 00000000000..512d7f38b15 --- /dev/null +++ b/app/assets/javascripts/ml/experiment_tracking/routes/experiments/index/components/mlflow_usage_modal.vue @@ -0,0 +1,73 @@ + + + diff --git a/app/assets/javascripts/ml/experiment_tracking/routes/experiments/index/constants.js b/app/assets/javascripts/ml/experiment_tracking/routes/experiments/index/constants.js index c94e7648d1d..2a8c39ebdf3 100644 --- a/app/assets/javascripts/ml/experiment_tracking/routes/experiments/index/constants.js +++ b/app/assets/javascripts/ml/experiment_tracking/routes/experiments/index/constants.js @@ -2,9 +2,9 @@ import { s__ } from '~/locale'; import { helpPagePath } from '~/helpers/help_page_helper'; export const CREATE_EXPERIMENT_HELP_PATH = helpPagePath( - 'user/project/ml/experiment_tracking/index', + 'user/project/ml/experiment_tracking/mlflow_client', { - anchor: 'track-new-experiments-and-candidates', + anchor: 'model-experiments', }, ); @@ -15,3 +15,5 @@ export const EXPERIMENTS_TABLE_FIELDS = Object.freeze([ label: s__('MlExperimentTracking|Logged candidates for experiment'), }, ]); + +export const MLFLOW_USAGE_MODAL_ID = 'experiment-tracking-mlflow-experiment-usage-model'; diff --git a/app/assets/javascripts/ml/experiment_tracking/routes/experiments/index/translations.js b/app/assets/javascripts/ml/experiment_tracking/routes/experiments/index/translations.js index f556197633b..78800c53ca5 100644 --- a/app/assets/javascripts/ml/experiment_tracking/routes/experiments/index/translations.js +++ b/app/assets/javascripts/ml/experiment_tracking/routes/experiments/index/translations.js @@ -4,10 +4,14 @@ export const TITLE_LABEL = s__('MlExperimentTracking|Model experiments'); export const CREATE_NEW_LABEL = s__('MlExperimentTracking|Create a new experiment'); +export const CREATE_USING_MLFLOW_LABEL = s__( + 'MlExperimentTracking|Create an experiment using MLflow', +); + export const EMPTY_STATE_TITLE_LABEL = s__( 'MlExperimentTracking|Get started with model experiments!', ); export const EMPTY_STATE_DESCRIPTION_LABEL = s__( - 'MlExperimentTracking|Experiments keep track of comparable model candidates, and determine which parameters provides the best performance. Create experiments using the MLflow client', + 'MlExperimentTracking|Experiments keep track of comparable model candidates, and determine which parameters provides the best performance.', ); diff --git a/app/assets/javascripts/pages/projects/merge_requests/index/index.js b/app/assets/javascripts/pages/projects/merge_requests/index/index.js index a367c0b5498..3eb9958b7d3 100644 --- a/app/assets/javascripts/pages/projects/merge_requests/index/index.js +++ b/app/assets/javascripts/pages/projects/merge_requests/index/index.js @@ -1,4 +1,7 @@ import addExtraTokensForMergeRequests from 'ee_else_ce/filtered_search/add_extra_tokens_for_merge_requests'; +import getMergeRequestsQuery from 'ee_else_ce/merge_requests/list/queries/project/get_merge_requests.query.graphql'; +import getMergeRequestsCountsQuery from 'ee_else_ce/merge_requests/list/queries/project/get_merge_requests_counts.query.graphql'; + import { addShortcutsExtension } from '~/behaviors/shortcuts'; import ShortcutsNavigation from '~/behaviors/shortcuts/shortcuts_navigation'; import IssuableFilteredSearchTokenKeys from '~/filtered_search/issuable_filtered_search_token_keys'; @@ -23,4 +26,4 @@ addShortcutsExtension(ShortcutsNavigation); initIssuableByEmail(); initCsvImportExportButtons(); mountMoreActionsDropdown(); -mountMergeRequestListsApp(); +mountMergeRequestListsApp({ getMergeRequestsQuery, getMergeRequestsCountsQuery }); diff --git a/app/assets/javascripts/pages/projects/ml/experiments/index/index.js b/app/assets/javascripts/pages/projects/ml/experiments/index/index.js index b054022b6d6..f38cf12b3ea 100644 --- a/app/assets/javascripts/pages/projects/ml/experiments/index/index.js +++ b/app/assets/javascripts/pages/projects/ml/experiments/index/index.js @@ -8,11 +8,12 @@ const initIndexMlExperiments = () => { return undefined; } - const { experiments, pageInfo, emptyStateSvgPath } = element.dataset; + const { experiments, pageInfo, emptyStateSvgPath, mlflowTrackingUrl } = element.dataset; const props = { experiments: JSON.parse(experiments), pageInfo: convertObjectPropsToCamelCase(JSON.parse(pageInfo)), emptyStateSvgPath, + mlflowTrackingUrl, }; return new Vue({ diff --git a/app/assets/javascripts/pages/projects/pipeline_schedules/shared/components/interval_pattern_input.vue b/app/assets/javascripts/pages/projects/pipeline_schedules/shared/components/interval_pattern_input.vue index 1e8fb7d81e7..41ca1745ddb 100644 --- a/app/assets/javascripts/pages/projects/pipeline_schedules/shared/components/interval_pattern_input.vue +++ b/app/assets/javascripts/pages/projects/pipeline_schedules/shared/components/interval_pattern_input.vue @@ -1,8 +1,9 @@