From 44d49505c7012821270bd5710370bbec9eff414a Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Thu, 28 Nov 2024 18:30:41 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .../lint/redundant_cop_disable_directive.yml | 8 +- app/assets/javascripts/ci/constants.js | 7 + .../ci/pipeline_details/constants.js | 4 - .../components/header/pipeline_status.vue | 25 +- .../queries/get_pipeline_status.query.graphql | 21 ++ .../pipeline_mini_graph/job_action_button.vue | 2 + .../ci/pipeline_mini_graph/job_item.vue | 2 + .../legacy_pipeline_mini_graph.vue | 2 +- .../pipeline_mini_graph.vue | 50 +++- .../ci/pipeline_mini_graph/pipeline_stage.vue | 22 +- .../pipeline_mini_graph/pipeline_stages.vue | 3 +- .../{utils.js => utils/data_utils.js} | 0 .../javascripts/ci/utils/polling_utils.js | 7 + .../pages/projects/blob/show/index.js | 9 +- .../javascripts/pages/projects/show/index.js | 2 +- .../components/header_area/blob_controls.vue | 4 +- .../components/header_area/breadcrumbs.vue | 31 ++- app/assets/javascripts/repository/index.js | 2 +- .../javascripts/repository/init_header_app.js | 34 ++- .../mr_widget_pipeline_container.vue | 9 +- .../vue_shared/components/page_heading.vue | 26 +- app/assets/stylesheets/color_modes/_dark.scss | 1 - app/assets/stylesheets/framework/forms.scss | 5 - .../stylesheets/framework/page_header.scss | 7 + .../stylesheets/framework/variables.scss | 1 - .../layouts/page_heading_component.haml | 15 +- app/helpers/blob_helper.rb | 15 + app/helpers/page_layout_helper.rb | 2 +- app/models/application_setting.rb | 4 +- app/models/merge_request.rb | 2 +- .../update_source_users_service.rb | 33 ++- .../packages/npm/deprecate_package_service.rb | 104 ++++--- app/views/projects/blob/_blob.html.haml | 6 +- .../source_users_attributes_worker.rb | 9 +- danger/internal_users/Dangerfile | 3 - danger/plugins/internal_users.rb | 9 - doc/api/graphql/reference/index.md | 24 +- doc/development/pipelines/index.md | 5 + .../secret_detection/exclusions.md | 33 ++- scripts/frontend/quarantined_vue3_specs.txt | 2 - .../layouts/page_heading_component_spec.rb | 2 +- spec/factories/projects.rb | 2 +- .../components/header/pipeline_status_spec.js | 6 +- .../job_action_button_spec.js | 1 + .../ci/pipeline_mini_graph/job_item_spec.js | 45 ++- .../pipeline_mini_graph_spec.js | 142 ++++++---- .../pipeline_stage_spec.js | 12 + .../pipeline_stages_spec.js | 48 ++++ .../data_utils_spec.js} | 7 +- .../ci/runner/components/runner_tags_spec.js | 2 +- spec/frontend/ci/utils/polling_utils_spec.js | 22 ++ .../header_area/breadcrumbs_spec.js | 27 +- .../mr_widget_pipeline_container_spec.js | 11 - .../components/page_heading_spec.js | 2 +- spec/helpers/blob_helper_spec.rb | 31 +++ .../update_source_users_service_spec.rb | 50 ++-- spec/tooling/danger/internal_users_spec.rb | 256 ------------------ .../source_users_attributes_worker_spec.rb | 11 +- tooling/danger/internal_users.rb | 110 -------- 59 files changed, 628 insertions(+), 709 deletions(-) create mode 100644 app/assets/javascripts/ci/pipeline_editor/graphql/queries/get_pipeline_status.query.graphql rename app/assets/javascripts/ci/pipeline_mini_graph/{utils.js => utils/data_utils.js} (100%) create mode 100644 app/assets/javascripts/ci/utils/polling_utils.js delete mode 100644 danger/internal_users/Dangerfile delete mode 100644 danger/plugins/internal_users.rb create mode 100644 spec/frontend/ci/pipeline_mini_graph/pipeline_stages_spec.js rename spec/frontend/ci/pipeline_mini_graph/{utils_spec.js => utils/data_utils_spec.js} (93%) create mode 100644 spec/frontend/ci/utils/polling_utils_spec.js delete mode 100644 spec/tooling/danger/internal_users_spec.rb delete mode 100644 tooling/danger/internal_users.rb diff --git a/.rubocop_todo/lint/redundant_cop_disable_directive.yml b/.rubocop_todo/lint/redundant_cop_disable_directive.yml index bbee0e01aca..3e6d09a35b3 100644 --- a/.rubocop_todo/lint/redundant_cop_disable_directive.yml +++ b/.rubocop_todo/lint/redundant_cop_disable_directive.yml @@ -1,10 +1,4 @@ --- # Cop supports --autocorrect. Lint/RedundantCopDisableDirective: - # Offense count: 3 - # Temporarily disabled due to too many offenses - Enabled: false - Exclude: - - 'ee/app/controllers/admin/gitlab_duo/configuration_controller.rb' - - 'ee/app/presenters/ee/onboarding/status_presenter.rb' - - 'ee/spec/helpers/admin/application_settings_helper_spec.rb' + Details: grace period diff --git a/app/assets/javascripts/ci/constants.js b/app/assets/javascripts/ci/constants.js index 787ea2384cc..e5fc8421d2f 100644 --- a/app/assets/javascripts/ci/constants.js +++ b/app/assets/javascripts/ci/constants.js @@ -40,3 +40,10 @@ export const TRACKING_CATEGORIES = { tests: 'pipeline_tests_tab', listbox: 'pipeline_id_iid_listbox', }; + +// For pipeline polling +export const PIPELINE_POLL_INTERVAL_DEFAULT = 1000 * 8; +export const PIPELINE_POLL_INTERVAL_BACKOFF = 1.2; +export const FOUR_MINUTES_IN_MS = 1000 * 60 * 4; + +export const NETWORK_STATUS_READY = 7; diff --git a/app/assets/javascripts/ci/pipeline_details/constants.js b/app/assets/javascripts/ci/pipeline_details/constants.js index 3f69fe88919..254cfab86da 100644 --- a/app/assets/javascripts/ci/pipeline_details/constants.js +++ b/app/assets/javascripts/ci/pipeline_details/constants.js @@ -66,7 +66,3 @@ export const DEFAULT_FIELDS = [ columnClass: 'gl-w-1/5', }, ]; - -// Pipeline Mini Graph - -export const PIPELINE_MINI_GRAPH_POLL_INTERVAL = 5000; diff --git a/app/assets/javascripts/ci/pipeline_editor/components/header/pipeline_status.vue b/app/assets/javascripts/ci/pipeline_editor/components/header/pipeline_status.vue index e94428cd332..0ba299c04bf 100644 --- a/app/assets/javascripts/ci/pipeline_editor/components/header/pipeline_status.vue +++ b/app/assets/javascripts/ci/pipeline_editor/components/header/pipeline_status.vue @@ -4,6 +4,7 @@ import { getIdFromGraphQLId } from '~/graphql_shared/utils'; import { truncateSha } from '~/lib/utils/text_utility'; import { s__ } from '~/locale'; import getPipelineQuery from '~/ci/pipeline_editor/graphql/queries/pipeline.query.graphql'; +import getPipelineStatusQuery from '~/ci/pipeline_editor/graphql/queries/get_pipeline_status.query.graphql'; import getPipelineEtag from '~/ci/pipeline_editor/graphql/queries/client/pipeline_etag.query.graphql'; import { getQueryHeaders, toggleQueryPollingByVisibility } from '~/ci/pipeline_details/graph/utils'; import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin'; @@ -59,31 +60,17 @@ export default { context() { return getQueryHeaders(this.pipelineEtag); }, - query: getPipelineQuery, + query() { + return this.isUsingPipelineMiniGraphQueries ? getPipelineStatusQuery : getPipelineQuery; + }, variables() { return { fullPath: this.projectFullPath, sha: this.commitSha, }; }, - update(data) { - const { - id, - iid, - commit = {}, - detailedStatus = {}, - stages, - status, - } = data.project?.pipeline || {}; - - return { - id, - iid, - commit, - detailedStatus, - stages, - status, - }; + update({ project }) { + return project?.pipeline || {}; }, result(res) { if (res.data?.project?.pipeline) { diff --git a/app/assets/javascripts/ci/pipeline_editor/graphql/queries/get_pipeline_status.query.graphql b/app/assets/javascripts/ci/pipeline_editor/graphql/queries/get_pipeline_status.query.graphql new file mode 100644 index 00000000000..0c1885093a2 --- /dev/null +++ b/app/assets/javascripts/ci/pipeline_editor/graphql/queries/get_pipeline_status.query.graphql @@ -0,0 +1,21 @@ +query getPipelineStatus($fullPath: ID!, $sha: String!) { + project(fullPath: $fullPath) { + id + pipeline(sha: $sha) { + id + iid + commit { + id + title + webPath + } + detailedStatus { + id + detailsPath + icon + group + text + } + } + } +} diff --git a/app/assets/javascripts/ci/pipeline_mini_graph/job_action_button.vue b/app/assets/javascripts/ci/pipeline_mini_graph/job_action_button.vue index b995fa5b3b2..9667615c50f 100644 --- a/app/assets/javascripts/ci/pipeline_mini_graph/job_action_button.vue +++ b/app/assets/javascripts/ci/pipeline_mini_graph/job_action_button.vue @@ -66,6 +66,7 @@ export default { required: true, }, }, + emits: ['jobActionExecuted'], data() { return { isLoading: false, @@ -107,6 +108,7 @@ export default { reportToSentry(this.$options.name, error); } finally { this.isLoading = false; + this.$emit('jobActionExecuted'); } }, }, diff --git a/app/assets/javascripts/ci/pipeline_mini_graph/job_item.vue b/app/assets/javascripts/ci/pipeline_mini_graph/job_item.vue index 802128e0997..fc99c3febba 100644 --- a/app/assets/javascripts/ci/pipeline_mini_graph/job_item.vue +++ b/app/assets/javascripts/ci/pipeline_mini_graph/job_item.vue @@ -23,6 +23,7 @@ export default { required: true, }, }, + emits: ['jobActionExecuted'], computed: { hasJobAction() { return Boolean(this.status?.action?.id); @@ -64,6 +65,7 @@ export default { :job-id="job.id" :job-action="status.action" :job-name="job.name" + @jobActionExecuted="$emit('jobActionExecuted')" /> diff --git a/app/assets/javascripts/ci/pipeline_mini_graph/legacy_pipeline_mini_graph/legacy_pipeline_mini_graph.vue b/app/assets/javascripts/ci/pipeline_mini_graph/legacy_pipeline_mini_graph/legacy_pipeline_mini_graph.vue index ee667b65167..260a1b697cb 100644 --- a/app/assets/javascripts/ci/pipeline_mini_graph/legacy_pipeline_mini_graph/legacy_pipeline_mini_graph.vue +++ b/app/assets/javascripts/ci/pipeline_mini_graph/legacy_pipeline_mini_graph/legacy_pipeline_mini_graph.vue @@ -1,7 +1,7 @@ @@ -133,6 +160,7 @@ export default { diff --git a/app/assets/javascripts/ci/pipeline_mini_graph/pipeline_stages.vue b/app/assets/javascripts/ci/pipeline_mini_graph/pipeline_stages.vue index 9b5b5c864e0..fdb11854133 100644 --- a/app/assets/javascripts/ci/pipeline_mini_graph/pipeline_stages.vue +++ b/app/assets/javascripts/ci/pipeline_mini_graph/pipeline_stages.vue @@ -19,7 +19,7 @@ export default { required: true, }, }, - emits: ['miniGraphStageClick'], + emits: ['jobActionExecuted', 'miniGraphStageClick'], };