From 9578c9f9e88421a5dc4d9215f40d932bd30cbabc Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 3 Mar 2021 18:11:16 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .gitlab/CODEOWNERS | 8 +- .gitlab/ci/rails.gitlab-ci.yml | 1 + .../components/delete_button.vue | 16 +- .../components/design_destroyer.vue | 1 + .../components/toolbar/index.vue | 2 +- .../components/upload/button.vue | 2 +- .../design_management/pages/index.vue | 5 +- .../graph/graph_component_wrapper.vue | 9 +- .../graph/linked_pipelines_column.vue | 7 +- .../pipelines/components/graph/utils.js | 21 ++- .../pipelines_list/pipeline_operations.vue | 119 ++++++++++++++ .../pipelines_list/pipeline_triggerer.vue | 2 +- .../pipelines_list/pipeline_url.vue | 2 +- .../pipelines_list/pipelines_commit.vue | 85 ++++++++++ .../pipelines_list/pipelines_status_badge.vue | 37 +++++ .../pipelines_list/pipelines_table.vue | 155 +++++++++++++++++- app/assets/javascripts/pipelines/constants.js | 2 + .../ref/components/ref_results_section.vue | 8 +- .../ref/components/ref_selector.vue | 58 ++++++- app/assets/javascripts/ref/constants.js | 5 + app/assets/javascripts/ref/stores/actions.js | 17 +- .../javascripts/ref/stores/mutation_types.js | 2 + .../javascripts/ref/stores/mutations.js | 3 + app/assets/javascripts/ref/stores/state.js | 25 ++- .../projects/merge_requests_controller.rb | 1 + app/controllers/root_controller.rb | 2 + app/helpers/preferences_helper.rb | 1 + app/models/user.rb | 2 +- .../shared/milestones/_milestone.html.haml | 6 +- ...ser-activity-as-dashboard-user-choices.yml | 5 + .../design-management-minor-fixe.yml | 5 + ...k-to-clear-description-templates-cache.yml | 5 + .../runners-api-context-metadata.yml | 5 + doc/administration/raketasks/maintenance.md | 72 ++++++-- doc/api/graphql/index.md | 3 +- doc/ci/metrics_reports.md | 4 +- doc/ci/variables/predefined_variables.md | 4 +- doc/user/group/subgroups/index.md | 4 +- doc/user/packages/generic_packages/index.md | 4 +- doc/user/profile/preferences.md | 3 +- lib/api/ci/runner.rb | 15 +- lib/api/helpers/runner.rb | 20 +++ .../cache/ci/project_pipeline_status.rb | 2 + lib/gitlab/ci/pipeline/seed/build.rb | 8 +- .../cleanup/redis/batch_delete_by_pattern.rb | 49 ++++++ ...on_templates_cache_keys_pattern_builder.rb | 88 ++++++++++ lib/gitlab/setup_helper.rb | 2 +- lib/tasks/cache.rake | 32 ++-- locale/gitlab.pot | 3 + spec/controllers/root_controller_spec.rb | 12 ++ .../components/delete_button_spec.js | 4 +- .../components/toolbar/index_spec.js | 4 +- .../upload/__snapshots__/button_spec.js.snap | 4 +- .../design_management/pages/index_spec.js | 6 +- .../pipelines/pipeline_triggerer_spec.js | 4 +- spec/frontend/pipelines/pipeline_url_spec.js | 5 +- spec/frontend/pipelines/pipelines_spec.js | 2 +- .../pipelines/pipelines_table_spec.js | 98 ++++++++++- .../ref/components/ref_selector_spec.js | 92 ++++++++++- spec/frontend/ref/stores/actions_spec.js | 22 ++- spec/frontend/ref/stores/mutations_spec.js | 11 +- spec/helpers/preferences_helper_spec.rb | 1 + .../lib/gitlab/ci/pipeline/seed/build_spec.rb | 71 ++++++++ .../redis/batch_delete_by_pattern_spec.rb | 91 ++++++++++ ...mplates_cache_keys_pattern_builder_spec.rb | 94 +++++++++++ .../api/ci/runner/jobs_request_post_spec.rb | 44 +++++ .../api/ci/runner/runners_post_spec.rb | 30 +++- spec/support/helpers/test_env.rb | 9 +- ...ing_application_context_shared_examples.rb | 16 ++ spec/tasks/cache/clear/redis_spec.rb | 25 ++- 70 files changed, 1436 insertions(+), 146 deletions(-) create mode 100644 app/assets/javascripts/pipelines/components/pipelines_list/pipeline_operations.vue create mode 100644 app/assets/javascripts/pipelines/components/pipelines_list/pipelines_commit.vue create mode 100644 app/assets/javascripts/pipelines/components/pipelines_list/pipelines_status_badge.vue create mode 100644 changelogs/unreleased/add-ollowed-user-activity-as-dashboard-user-choices.yml create mode 100644 changelogs/unreleased/design-management-minor-fixe.yml create mode 100644 changelogs/unreleased/rake-task-to-clear-description-templates-cache.yml create mode 100644 changelogs/unreleased/runners-api-context-metadata.yml create mode 100644 lib/gitlab/cleanup/redis/batch_delete_by_pattern.rb create mode 100644 lib/gitlab/cleanup/redis/description_templates_cache_keys_pattern_builder.rb create mode 100644 spec/lib/gitlab/cleanup/redis/batch_delete_by_pattern_spec.rb create mode 100644 spec/lib/gitlab/cleanup/redis/description_templates_cache_keys_pattern_builder_spec.rb diff --git a/.gitlab/CODEOWNERS b/.gitlab/CODEOWNERS index 6b72d133862..709a8fa9b2a 100644 --- a/.gitlab/CODEOWNERS +++ b/.gitlab/CODEOWNERS @@ -24,7 +24,6 @@ /doc/administration/troubleshooting @axil @marcia @mjang1 /doc/ci/ @marcel.amirault @sselhorn /doc/ci/environments/ @axil -/doc/ci/release/ @axil /doc/ci/services/ @sselhorn /doc/ci/test_cases/ @msedlakjakubowski /doc/development/ @marcia @mjang1 @@ -205,15 +204,16 @@ Dangerfile @gl-quality/eng-prod # Secure & Threat Management ownership delineation # https://about.gitlab.com/handbook/engineering/development/threat-management/delineate-secure-threat-management.html#technical-boundaries [Threat Insights] +/app/models/vulnerability.rb @gitlab-org/secure/threat-insights-backend-team /ee/app/finders/security/ @gitlab-org/secure/threat-insights-backend-team /ee/app/models/security/ @gitlab-org/secure/threat-insights-backend-team /ee/app/models/vulnerabilities/ @gitlab-org/secure/threat-insights-backend-team -/ee/app/models/vulnerability.rb @gitlab-org/secure/threat-insights-backend-team /ee/app/policies/vulnerabilities/ @gitlab-org/secure/threat-insights-backend-team /ee/app/policies/vulnerability*.rb @gitlab-org/secure/threat-insights-backend-team /ee/lib/api/vulnerabilit*.rb @gitlab-org/secure/threat-insights-backend-team /ee/spec/policies/vulnerabilities/ @gitlab-org/secure/threat-insights-backend-team -/ee/spec/policies/vulnerabilities/vulnerability*.rb @gitlab-org/secure/threat-insights-backend-team +/ee/spec/policies/vulnerability*.rb @gitlab-org/secure/threat-insights-backend-team + [Secure] /ee/lib/gitlab/ci/parsers/license_compliance/ @gitlab-org/secure/composition-analysis-be /ee/lib/gitlab/ci/parsers/security/ @gitlab-org/secure/composition-analysis-be @gitlab-org/secure/dynamic-analysis-be @gitlab-org/secure/static-analysis-be @gitlab-org/secure/fuzzing-be @@ -260,9 +260,7 @@ Dangerfile @gl-quality/eng-prod [Product Intelligence] /ee/lib/gitlab/usage_data_counters/ @gitlab-org/growth/product-intelligence/engineers /ee/lib/ee/gitlab/usage_data.rb @gitlab-org/growth/product-intelligence/engineers -/lib/gitlab/grafana_embed_usage_data.rb @gitlab-org/growth/product-intelligence/engineers /lib/gitlab/usage_data.rb @gitlab-org/growth/product_intelligence/engineers -/lib/gitlab/cycle_analytics/usage_data.rb @gitlab-org/growth/product-intelligence/engineers /lib/gitlab/usage_data_counters/ @gitlab-org/growth/product-intelligence/engineers [Growth Experiments] diff --git a/.gitlab/ci/rails.gitlab-ci.yml b/.gitlab/ci/rails.gitlab-ci.yml index 22aa92779ea..78840315c37 100644 --- a/.gitlab/ci/rails.gitlab-ci.yml +++ b/.gitlab/ci/rails.gitlab-ci.yml @@ -162,6 +162,7 @@ setup-test-env: - tmp/tests/gitaly/gitaly-lfs-smudge - tmp/tests/gitaly/gitaly-ssh - tmp/tests/gitaly/internal/ + - tmp/tests/gitaly/internal_gitaly2/ - tmp/tests/gitaly/internal_sockets/ - tmp/tests/gitaly/Makefile - tmp/tests/gitaly/praefect diff --git a/app/assets/javascripts/design_management/components/delete_button.vue b/app/assets/javascripts/design_management/components/delete_button.vue index 273fa3f6be2..fbcce22ec1e 100644 --- a/app/assets/javascripts/design_management/components/delete_button.vue +++ b/app/assets/javascripts/design_management/components/delete_button.vue @@ -73,21 +73,19 @@ export default { diff --git a/app/assets/javascripts/design_management/components/upload/button.vue b/app/assets/javascripts/design_management/components/upload/button.vue index d7b287f663b..394ccb3c483 100644 --- a/app/assets/javascripts/design_management/components/upload/button.vue +++ b/app/assets/javascripts/design_management/components/upload/button.vue @@ -50,7 +50,7 @@ export default { type="file" name="design_file" :accept="$options.VALID_DESIGN_FILE_MIMETYPE.mimetype" - class="hide" + class="gl-display-none" multiple @change="onFileUploadChange" /> diff --git a/app/assets/javascripts/design_management/pages/index.vue b/app/assets/javascripts/design_management/pages/index.vue index c73c8fb6ca4..99ac38fc554 100644 --- a/app/assets/javascripts/design_management/pages/index.vue +++ b/app/assets/javascripts/design_management/pages/index.vue @@ -365,7 +365,8 @@ export default { v-if="isLatestVersion" variant="link" size="small" - class="gl-mr-4 js-select-all" + class="gl-mr-3" + data-testid="select-all-designs-button" @click="toggleDesignsSelection" >{{ selectAllButtonText }} @@ -385,7 +386,7 @@ export default { data-qa-selector="archive_button" :loading="loading" :has-selected-designs="hasSelectedDesigns" - @deleteSelectedDesigns="mutate()" + @delete-selected-designs="mutate()" > {{ s__('DesignManagement|Archive selected') }} diff --git a/app/assets/javascripts/pipelines/components/graph/graph_component_wrapper.vue b/app/assets/javascripts/pipelines/components/graph/graph_component_wrapper.vue index 9c922f0ec13..fa0f959bce9 100644 --- a/app/assets/javascripts/pipelines/components/graph/graph_component_wrapper.vue +++ b/app/assets/javascripts/pipelines/components/graph/graph_component_wrapper.vue @@ -7,6 +7,7 @@ import PipelineGraph from './graph_component.vue'; import { getQueryHeaders, reportToSentry, + serializeGqlErr, toggleQueryPollingByVisibility, unwrapPipelineData, } from './utils'; @@ -60,8 +61,8 @@ export default { update(data) { return unwrapPipelineData(this.pipelineProjectPath, data); }, - error() { - this.reportFailure(LOAD_FAILURE); + error({ gqlError }) { + this.reportFailure(LOAD_FAILURE, serializeGqlErr(gqlError)); }, }, }, @@ -112,10 +113,10 @@ export default { refreshPipelineGraph() { this.$apollo.queries.pipeline.refetch(); }, - reportFailure(type) { + reportFailure(type, err = '') { this.showAlert = true; this.alertType = type; - reportToSentry(this.$options.name, this.alertType); + reportToSentry(this.$options.name, `type: ${this.alertType}, info: ${err}`); }, }, }; diff --git a/app/assets/javascripts/pipelines/components/graph/linked_pipelines_column.vue b/app/assets/javascripts/pipelines/components/graph/linked_pipelines_column.vue index 356207cbdd4..cccabf8619b 100644 --- a/app/assets/javascripts/pipelines/components/graph/linked_pipelines_column.vue +++ b/app/assets/javascripts/pipelines/components/graph/linked_pipelines_column.vue @@ -6,6 +6,7 @@ import LinkedPipeline from './linked_pipeline.vue'; import { getQueryHeaders, reportToSentry, + serializeGqlErr, toggleQueryPollingByVisibility, unwrapPipelineData, validateConfigPaths, @@ -99,12 +100,14 @@ export default { this.loadingPipelineId = null; this.$emit('scrollContainer'); }, - error(err, _vm, _key, type) { + error({ gqlError }, _vm, _key, type) { this.$emit('error', LOAD_FAILURE); reportToSentry( 'linked_pipelines_column', - `error type: ${LOAD_FAILURE}, error: ${err}, apollo error type: ${type}`, + `error type: ${LOAD_FAILURE}, error: ${serializeGqlErr( + gqlError, + )}, apollo error type: ${type}`, ); }, }); diff --git a/app/assets/javascripts/pipelines/components/graph/utils.js b/app/assets/javascripts/pipelines/components/graph/utils.js index 9e4936c1c24..81d8fe7f489 100644 --- a/app/assets/javascripts/pipelines/components/graph/utils.js +++ b/app/assets/javascripts/pipelines/components/graph/utils.js @@ -23,7 +23,6 @@ const getQueryHeaders = (etagResource) => { }, }; }; -/* eslint-enable @gitlab/require-i18n-strings */ const reportToSentry = (component, failureType) => { Sentry.withScope((scope) => { @@ -32,6 +31,25 @@ const reportToSentry = (component, failureType) => { }); }; +const serializeGqlErr = (gqlError) => { + if (!gqlError) { + return 'gqlError data not available.'; + } + + const { locations, message, path } = gqlError; + + return ` + ${message}. + Locations: ${locations + .flatMap((loc) => Object.entries(loc)) + .flat(2) + .join(' ')}. + Path: ${path.join(', ')}. + `; +}; + +/* eslint-enable @gitlab/require-i18n-strings */ + const toggleQueryPollingByVisibility = (queryRef, interval = 10000) => { const stopStartQuery = (query) => { if (!Visibility.hidden()) { @@ -82,6 +100,7 @@ const validateConfigPaths = (value) => value.graphqlResourceEtag?.length > 0; export { getQueryHeaders, reportToSentry, + serializeGqlErr, toggleQueryPollingByVisibility, unwrapPipelineData, validateConfigPaths, diff --git a/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_operations.vue b/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_operations.vue new file mode 100644 index 00000000000..81eeead2171 --- /dev/null +++ b/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_operations.vue @@ -0,0 +1,119 @@ + + + diff --git a/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_triggerer.vue b/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_triggerer.vue index 6955b27cb22..c707b395192 100644 --- a/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_triggerer.vue +++ b/app/assets/javascripts/pipelines/components/pipelines_list/pipeline_triggerer.vue @@ -29,7 +29,7 @@ export default { };