From 27f6da0ab2b8f1945a78709c7b5d540a6cc400fd Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Fri, 29 Oct 2021 12:14:45 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .gitlab/ci/rails.gitlab-ci.yml | 2 +- .gitlab/ci/rules.gitlab-ci.yml | 83 +++-- GITALY_SERVER_VERSION | 2 +- .../components/metric_popover.vue | 61 ++++ .../components/value_stream_metrics.vue | 23 +- .../components/details/app.vue | 86 ++--- .../components/functional/delete_package.vue | 60 ++++ .../package_registry/components/list/app.vue | 64 ++-- .../components/list/packages_list.vue | 15 +- .../package_registry/constants.js | 3 - app/controllers/projects/jobs_controller.rb | 8 +- app/models/ci/job_artifact.rb | 19 ++ app/models/concerns/file_store_mounter.rb | 8 +- app/serializers/analytics_summary_entity.rb | 1 + .../ci/job_artifacts/create_service.rb | 37 ++- app/services/ci/unlock_artifacts_service.rb | 98 +++++- app/services/projects/participants_service.rb | 10 +- app/views/clusters/clusters/new.html.haml | 38 +-- app/workers/all_queues.yml | 9 + ...ipeline_success_unlock_artifacts_worker.rb | 5 +- .../ci/ref_delete_unlock_artifacts_worker.rb | 5 +- app/workers/email_receiver_worker.rb | 4 +- app/workers/issue_rebalancing_worker.rb | 1 + ...eschedule_stuck_issue_rebalances_worker.rb | 36 +++ .../ci_store_trace_outside_transaction.yml | 8 + ...l => ci_update_unlocked_job_artifacts.yml} | 10 +- .../development/mr_changes_fluid_layout.yml | 2 +- config/initializers/1_settings.rb | 3 + .../application_slis/rails_request_apdex.md | 36 ++- .../project/integrations/webhook_events.md | 2 +- lib/api/namespaces.rb | 2 +- lib/gitlab/ci/trace.rb | 17 +- lib/gitlab/cycle_analytics/stage_summary.rb | 3 +- lib/gitlab/cycle_analytics/summary/base.rb | 4 + .../summary/deployment_frequency.rb | 9 +- lib/gitlab/email/receiver.rb | 8 +- lib/gitlab/issues/rebalancing/state.rb | 61 +++- .../deduplicates_when_scheduling.rb | 7 +- locale/gitlab.pot | 9 + .../projects/jobs_controller_spec.rb | 83 +++-- spec/factories/ci/builds.rb | 6 + spec/factories/ci/job_artifacts.rb | 11 + spec/factories/ci/pipelines.rb | 8 + .../projects/jobs/user_browses_job_spec.rb | 26 +- .../analytics/cycle_analytics/summary.json | 3 + .../cycle_analytics/metric_popover_spec.js | 102 ++++++ .../value_stream_metrics_spec.js | 35 ++- .../components/details/app_spec.js | 53 +--- .../functional/delete_package_spec.js | 160 ++++++++++ .../components/list/app_spec.js | 46 ++- .../components/list/packages_list_spec.js | 13 +- spec/lib/gitlab/ci/trace/archive_spec.rb | 181 ++++++----- spec/lib/gitlab/ci/trace_spec.rb | 10 - .../gitlab/issues/rebalancing/state_spec.rb | 29 +- spec/models/ci/job_artifact_spec.rb | 62 ++++ spec/requests/api/ci/jobs_spec.rb | 66 +++- spec/requests/api/namespaces_spec.rb | 22 ++ .../analytics_summary_serializer_spec.rb | 2 +- .../ci/job_artifacts/create_service_spec.rb | 2 + .../ci/unlock_artifacts_service_spec.rb | 294 +++++++++++++----- .../projects/participants_service_spec.rb | 8 - spec/support/matchers/access_matchers.rb | 2 +- .../lib/gitlab/ci/ci_trace_shared_examples.rb | 51 ++- .../strategy_shared_examples.rb | 2 +- ...ref_delete_unlock_artifacts_worker_spec.rb | 34 +- spec/workers/email_receiver_worker_spec.rb | 9 + spec/workers/issue_rebalancing_worker_spec.rb | 16 +- ...dule_stuck_issue_rebalances_worker_spec.rb | 26 ++ 68 files changed, 1727 insertions(+), 494 deletions(-) create mode 100644 app/assets/javascripts/cycle_analytics/components/metric_popover.vue create mode 100644 app/assets/javascripts/packages_and_registries/package_registry/components/functional/delete_package.vue create mode 100644 app/workers/issues/reschedule_stuck_issue_rebalances_worker.rb create mode 100644 config/feature_flags/development/ci_store_trace_outside_transaction.yml rename config/feature_flags/development/{linear_participants_service_ancestor_scopes.yml => ci_update_unlocked_job_artifacts.yml} (60%) create mode 100644 spec/frontend/cycle_analytics/metric_popover_spec.js create mode 100644 spec/frontend/packages_and_registries/package_registry/components/functional/delete_package_spec.js create mode 100644 spec/workers/issues/reschedule_stuck_issue_rebalances_worker_spec.rb diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml index 45ffaa85f18..d5f56139444 100644 --- a/.gitlab/ci/rails.gitlab-ci.yml +++ b/.gitlab/ci/rails.gitlab-ci.yml @@ -182,7 +182,7 @@ setup-test-env: extends: - .rails-job-base - .setup-test-env-cache - - .rails:rules:code-backstage-qa + - .rails:rules:setup-test-env stage: prepare variables: SETUP_DB: "false" diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index bb81ff0fe9a..a2b8aca811b 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -211,6 +211,7 @@ .startup-css-patterns: &startup-css-patterns - "{,ee/,jh/}app/assets/stylesheets/startup/**/*" +# Backend patterns + .ci-patterns .backend-patterns: &backend-patterns - "{,jh/}Gemfile{,.lock}" - "Rakefile" @@ -224,6 +225,7 @@ - ".gitlab/ci/**/*" - "*_VERSION" +# DB patterns + .ci-patterns .db-patterns: &db-patterns - "{,ee/,jh/}{,spec/}{db,migrations}/**/*" - "{,ee/,jh/}{,spec/}lib/{,ee/,jh/}gitlab/database/**/*" @@ -252,6 +254,11 @@ - "{,ee/,jh/}spec/**/*" - "{,spec/}tooling/**/*" +.qa-patterns: &qa-patterns + - ".dockerignore" + - "qa/**/*" + +# Code patterns + .ci-patterns + .workhorse-patterns .code-patterns: &code-patterns - "{package.json,yarn.lock}" - ".browserslistrc" @@ -260,9 +267,6 @@ - ".csscomb.json" - "Dockerfile.assets" - "vendor/assets/**/*" - # CI changes - - ".gitlab-ci.yml" - - ".gitlab/ci/**/*" - ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}" - ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo}.yml" - "*_VERSION" @@ -273,11 +277,11 @@ - "{,ee/,jh/}{app,bin,config,db,generator_templates,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*" - "doc/api/graphql/reference/*" # Files in this folder are auto-generated - "data/whats_new/*.yml" + # CI changes + - ".gitlab-ci.yml" + - ".gitlab/ci/**/*" -.qa-patterns: &qa-patterns - - ".dockerignore" - - "qa/**/*" - +# .code-patterns + .backstage-patterns .code-backstage-patterns: &code-backstage-patterns - "{package.json,yarn.lock}" - ".browserslistrc" @@ -286,9 +290,6 @@ - ".csscomb.json" - "Dockerfile.assets" - "vendor/assets/**/*" - # CI changes - - ".gitlab-ci.yml" - - ".gitlab/ci/**/*" - ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}" - ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo}.yml" - "*_VERSION" @@ -299,6 +300,9 @@ - "{,ee/,jh/}{app,bin,config,db,generator_templates,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*" - "doc/api/graphql/reference/*" # Files in this folder are auto-generated - "data/whats_new/*.yml" + # CI changes + - ".gitlab-ci.yml" + - ".gitlab/ci/**/*" # Backstage changes - "Dangerfile" - "danger/**/*" @@ -307,6 +311,7 @@ - "{,ee/,jh/}spec/**/*" - "{,spec/}tooling/**/*" +# .code-patterns + .qa-patterns .code-qa-patterns: &code-qa-patterns - "{package.json,yarn.lock}" - ".browserslistrc" @@ -315,9 +320,6 @@ - ".csscomb.json" - "Dockerfile.assets" - "vendor/assets/**/*" - # CI changes - - ".gitlab-ci.yml" - - ".gitlab/ci/**/*" - ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}" - ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo}.yml" - "*_VERSION" @@ -328,10 +330,14 @@ - "{,ee/,jh/}{app,bin,config,db,generator_templates,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*" - "doc/api/graphql/reference/*" # Files in this folder are auto-generated - "data/whats_new/*.yml" + # CI changes + - ".gitlab-ci.yml" + - ".gitlab/ci/**/*" # QA changes - ".dockerignore" - "qa/**/*" +# .code-patterns + .backstage-patterns + .qa-patterns .code-backstage-qa-patterns: &code-backstage-qa-patterns - "{package.json,yarn.lock}" - ".browserslistrc" @@ -340,9 +346,6 @@ - ".csscomb.json" - "Dockerfile.assets" - "vendor/assets/**/*" - # CI changes - - ".gitlab-ci.yml" - - ".gitlab/ci/**/*" - ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}" - ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo}.yml" - "*_VERSION" @@ -353,6 +356,9 @@ - "{,ee/,jh/}{app,bin,config,db,generator_templates,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*" - "doc/api/graphql/reference/*" # Files in this folder are auto-generated - "data/whats_new/*.yml" + # CI changes + - ".gitlab-ci.yml" + - ".gitlab/ci/**/*" # Backstage changes - "Dangerfile" - "danger/**/*" @@ -364,8 +370,44 @@ - ".dockerignore" - "qa/**/*" -.code-backstage-danger-patterns: &code-backstage-danger-patterns +# .code-backstage-qa-patterns + .workhorse-patterns +.setup-test-env-patterns: &setup-test-env-patterns + - "{package.json,yarn.lock}" + - ".browserslistrc" + - "babel.config.js" + - "jest.config.{base,integration,unit}.js" + - ".csscomb.json" + - "Dockerfile.assets" + - "vendor/assets/**/*" + - ".{eslintignore,gitattributes,nvmrc,prettierrc,stylelintrc,yamllint}" + - ".{codeclimate,eslintrc,gitlab-ci,haml-lint,haml-lint_todo,rubocop,rubocop_todo,rubocop_manual_todo}.yml" + - "*_VERSION" + - "{,jh/}Gemfile{,.lock}" + - "Rakefile" + - "tests.yml" + - "config.ru" + - "{,ee/,jh/}{app,bin,config,db,generator_templates,haml_lint,lib,locale,public,scripts,symbol,vendor}/**/*" + - "doc/api/graphql/reference/*" # Files in this folder are auto-generated + - "data/whats_new/*.yml" + # CI changes + - ".gitlab-ci.yml" + - ".gitlab/ci/**/*" # Backstage changes + - "Dangerfile" + - "danger/**/*" + - "{,ee/,jh/}fixtures/**/*" + - "{,ee/,jh/}rubocop/**/*" + - "{,ee/,jh/}spec/**/*" + - "{,spec/}tooling/**/*" + # QA changes + - ".dockerignore" + - "qa/**/*" + # Workhorse changes + - "GITLAB_WORKHORSE_VERSION" + - "workhorse/**/*" + - ".gitlab/ci/workhorse.gitlab-ci.yml" + +.danger-patterns: &danger-patterns - "Dangerfile" - "danger/**/*" - "tooling/danger/**/*" @@ -713,6 +755,11 @@ ############### # Rails rules # ############### +.rails:rules:setup-test-env: + rules: + - changes: *setup-test-env-patterns + - <<: *if-merge-request-labels-run-all-rspec + .rails:rules:decomposed-databases: rules: - <<: *if-merge-request-labels-run-decomposed @@ -1632,7 +1679,7 @@ .review:rules:danger-local: rules: - if: '$CI_MERGE_REQUEST_IID' - changes: *code-backstage-danger-patterns + changes: *danger-patterns ############### # Setup rules # diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index 21d8b6bc278..9a383554ed5 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -6857897d8b352850ed2c3f5c9396c782a930d052 +79a0dfb018671957bbc1a02e21684c8cc2858160 diff --git a/app/assets/javascripts/cycle_analytics/components/metric_popover.vue b/app/assets/javascripts/cycle_analytics/components/metric_popover.vue new file mode 100644 index 00000000000..8d90e7b2392 --- /dev/null +++ b/app/assets/javascripts/cycle_analytics/components/metric_popover.vue @@ -0,0 +1,61 @@ + + + diff --git a/app/assets/javascripts/cycle_analytics/components/value_stream_metrics.vue b/app/assets/javascripts/cycle_analytics/components/value_stream_metrics.vue index 7371ffd2c7c..a132931de60 100644 --- a/app/assets/javascripts/cycle_analytics/components/value_stream_metrics.vue +++ b/app/assets/javascripts/cycle_analytics/components/value_stream_metrics.vue @@ -1,11 +1,13 @@ @@ -93,14 +103,11 @@ export default { :unit="metric.unit || ''" :should-animate="true" :animation-decimal-places="1" + :class="{ 'gl-hover-cursor-pointer': hasLinks(metric.links) }" tabindex="0" + @click="clickHandler(metric)" /> - - - {{ metric.description }} - + diff --git a/app/assets/javascripts/packages_and_registries/package_registry/components/details/app.vue b/app/assets/javascripts/packages_and_registries/package_registry/components/details/app.vue index 3d3fa62fd43..bcbeec72961 100644 --- a/app/assets/javascripts/packages_and_registries/package_registry/components/details/app.vue +++ b/app/assets/javascripts/packages_and_registries/package_registry/components/details/app.vue @@ -23,6 +23,7 @@ import PackageFiles from '~/packages_and_registries/package_registry/components/ import PackageHistory from '~/packages_and_registries/package_registry/components/details/package_history.vue'; import PackageTitle from '~/packages_and_registries/package_registry/components/details/package_title.vue'; import VersionRow from '~/packages_and_registries/package_registry/components/details/version_row.vue'; +import DeletePackage from '~/packages_and_registries/package_registry/components/functional/delete_package.vue'; import { PACKAGE_TYPE_NUGET, PACKAGE_TYPE_COMPOSER, @@ -35,12 +36,10 @@ import { CANCEL_DELETE_PACKAGE_FILE_TRACKING_ACTION, SHOW_DELETE_SUCCESS_ALERT, FETCH_PACKAGE_DETAILS_ERROR_MESSAGE, - DELETE_PACKAGE_ERROR_MESSAGE, DELETE_PACKAGE_FILE_ERROR_MESSAGE, DELETE_PACKAGE_FILE_SUCCESS_MESSAGE, } from '~/packages_and_registries/package_registry/constants'; -import destroyPackageMutation from '~/packages_and_registries/package_registry/graphql/mutations/destroy_package.mutation.graphql'; import destroyPackageFileMutation from '~/packages_and_registries/package_registry/graphql/mutations/destroy_package_file.mutation.graphql'; import getPackageDetails from '~/packages_and_registries/package_registry/graphql/queries/get_package_details.query.graphql'; import Tracking from '~/tracking'; @@ -62,6 +61,7 @@ export default { AdditionalMetadata, InstallationCommands, PackageFiles, + DeletePackage, }, directives: { GlTooltip: GlTooltipDirective, @@ -148,40 +148,15 @@ export default { formatSize(size) { return numberToHumanSize(size); }, - async deletePackage() { - const { data } = await this.$apollo.mutate({ - mutation: destroyPackageMutation, - variables: { - id: this.packageEntity.id, - }, - }); + navigateToListWithSuccessModal() { + const returnTo = + !this.groupListUrl || document.referrer.includes(this.projectName) + ? this.projectListUrl + : this.groupListUrl; // to avoid security issue url are supplied from backend - if (data?.destroyPackage?.errors[0]) { - throw data.destroyPackage.errors[0]; - } - }, - async confirmPackageDeletion() { - this.track(DELETE_PACKAGE_TRACKING_ACTION); + const modalQuery = objectToQuery({ [SHOW_DELETE_SUCCESS_ALERT]: true }); - try { - await this.deletePackage(); - - const returnTo = - !this.groupListUrl || document.referrer.includes(this.projectName) - ? this.projectListUrl - : this.groupListUrl; // to avoid security issue url are supplied from backend - - const modalQuery = objectToQuery({ [SHOW_DELETE_SUCCESS_ALERT]: true }); - - window.location.replace(`${returnTo}?${modalQuery}`); - } catch (error) { - createFlash({ - message: DELETE_PACKAGE_ERROR_MESSAGE, - type: 'warning', - captureError: true, - error, - }); - } + window.location.replace(`${returnTo}?${modalQuery}`); }, async deletePackageFile(id) { try { @@ -322,26 +297,33 @@ export default { - - - - + + +import destroyPackageMutation from '~/packages_and_registries/package_registry/graphql/mutations/destroy_package.mutation.graphql'; +import createFlash from '~/flash'; +import { s__ } from '~/locale'; + +export default { + props: { + refetchQueries: { + type: Array, + required: false, + default: null, + }, + showSuccessAlert: { + type: Boolean, + required: false, + default: false, + }, + }, + i18n: { + errorMessage: s__('PackageRegistry|Something went wrong while deleting the package.'), + successMessage: s__('PackageRegistry|Package deleted successfully'), + }, + methods: { + async deletePackage(packageEntity) { + try { + this.$emit('start'); + const { data } = await this.$apollo.mutate({ + mutation: destroyPackageMutation, + variables: { + id: packageEntity.id, + }, + awaitRefetchQueries: Boolean(this.refetchQueries), + refetchQueries: this.refetchQueries, + }); + + if (data?.destroyPackage?.errors[0]) { + throw data.destroyPackage.errors[0]; + } + if (this.showSuccessAlert) { + createFlash({ + message: this.$options.i18n.successMessage, + type: 'success', + }); + } + } catch (error) { + createFlash({ + message: this.$options.i18n.errorMessage, + type: 'warning', + captureError: true, + error, + }); + } + this.$emit('end'); + }, + }, + render() { + return this.$scopedSlots.default({ deletePackage: this.deletePackage }); + }, +}; + 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 b1fe7a7021b..ee68d7db92b 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 @@ -1,22 +1,19 @@