From ae567e129f79b561404fee0f99082975a8ece087 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Fri, 22 Apr 2022 12:08:38 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .../Security developer workflow.md | 1 + .rubocop_todo/rspec/verified_doubles.yml | 2 +- .../extensions/paste_markdown.js | 2 +- .../services/code_block_language_loader.js | 10 -- .../content_editor/services/content_editor.js | 4 +- .../services/create_content_editor.js | 4 +- ...zer.js => gl_api_markdown_deserializer.js} | 7 +- .../ci_cd_analytics_charts.vue | 10 +- .../segmented_control_button_group.vue | 35 +++++ app/graphql/types/ci/runner_type.rb | 3 +- .../integrations/reset_secret_fields.rb | 41 ++++++ app/models/concerns/packages/destructible.rb | 2 +- app/models/integration.rb | 2 + .../integrations/base_chat_notification.rb | 4 + app/models/integrations/field.rb | 1 + app/models/integrations/jira.rb | 23 +-- app/models/project_import_state.rb | 4 +- app/workers/all_queues.yml | 9 ++ .../packages/cleanup_package_file_worker.rb | 2 +- .../projects/after_import_worker.rb} | 15 +- .../graphql_ci_runner_executor.yml | 8 - .../development/rendered_diffs_viewer.yml | 4 +- config/sidekiq_queues.yml | 2 + ...or_cleanup_index_packages_package_files.rb | 19 +++ db/schema_migrations/20220420192542 | 1 + db/structure.sql | 2 + .../img/GoogleWorkspace-basic-SAML_v14_10.png | Bin 69719 -> 39027 bytes .../img/GoogleWorkspace-claims_v14_10.png | Bin 54548 -> 30571 bytes .../img/GoogleWorkspace-linkscert_v14_10.png | Bin 77766 -> 50479 bytes doc/api/graphql/reference/index.md | 2 +- doc/ci/pipelines/merge_trains.md | 4 +- doc/development/feature_flags/controls.md | 2 +- .../new_fe_guide/development/performance.md | 14 +- doc/development/secure_coding_guidelines.md | 42 +++++- doc/development/testing_guide/img/k9s.png | Bin 117900 -> 0 bytes doc/install/aws/gitlab_hybrid_on_aws.md | 4 +- .../img/limit_namespaces_projects_options.png | Bin 48021 -> 24863 bytes doc/subscriptions/img/support_diagram_c.png | Bin 161323 -> 55374 bytes .../img/branches_dropdown_v14_10.png | Bin 56137 -> 20781 bytes doc/user/application_security/dast/index.md | 1 + .../img/vsa_aggregated_data_toggle_v14_9.png | Bin 145830 -> 49736 bytes .../img/gitlab_import_history_page_v14_10.png | Bin 103923 -> 28219 bytes .../issues/img/design_management_v14_10.png | Bin 139386 -> 54706 bytes .../img/security_approvals_v15_0.png | Bin 23749 -> 13285 bytes .../repository/jupyter_notebooks/index.md | 10 +- lib/banzai/filter/image_lazy_load_filter.rb | 4 +- locale/gitlab.pot | 6 + .../markdown_golden_master_examples.yml | 16 +- .../code_block_language_loader_spec.js | 18 --- .../services/content_editor_spec.js | 8 +- ...s => gl_api_markdown_deserializer_spec.js} | 16 +- .../services/markdown_sourcemap_spec.js | 2 +- .../components/ci_cd_analytics_charts_spec.js | 6 +- .../segmented_control_button_group_spec.js | 104 +++++++++++++ .../filter/image_lazy_load_filter_spec.rb | 5 + spec/lib/gitlab/asciidoc_spec.rb | 12 +- .../integrations/reset_secret_fields_spec.rb | 19 +++ .../base_chat_notification_spec.rb | 19 ++- spec/models/integrations/jira_spec.rb | 137 +----------------- spec/models/project_import_state_spec.rb | 31 +--- .../reset_secret_fields_shared_examples.rb | 110 ++++++++++++++ .../projects/after_import_worker_spec.rb} | 40 ++--- 62 files changed, 546 insertions(+), 303 deletions(-) rename app/assets/javascripts/content_editor/services/{markdown_deserializer.js => gl_api_markdown_deserializer.js} (87%) create mode 100644 app/assets/javascripts/vue_shared/components/segmented_control_button_group.vue create mode 100644 app/models/concerns/integrations/reset_secret_fields.rb rename app/{services/projects/after_import_service.rb => workers/projects/after_import_worker.rb} (82%) delete mode 100644 config/feature_flags/development/graphql_ci_runner_executor.yml create mode 100644 db/migrate/20220420192542_add_id_for_cleanup_index_packages_package_files.rb create mode 100644 db/schema_migrations/20220420192542 delete mode 100644 doc/development/testing_guide/img/k9s.png rename spec/frontend/content_editor/services/{markdown_deserializer_spec.js => gl_api_markdown_deserializer_spec.js} (74%) create mode 100644 spec/frontend/vue_shared/components/segmented_control_button_group_spec.js create mode 100644 spec/models/concerns/integrations/reset_secret_fields_spec.rb create mode 100644 spec/support/shared_examples/models/concerns/integrations/reset_secret_fields_shared_examples.rb rename spec/{services/projects/after_import_service_spec.rb => workers/projects/after_import_worker_spec.rb} (82%) diff --git a/.gitlab/issue_templates/Security developer workflow.md b/.gitlab/issue_templates/Security developer workflow.md index 5c1b669a88f..4cced5a25fe 100644 --- a/.gitlab/issue_templates/Security developer workflow.md +++ b/.gitlab/issue_templates/Security developer workflow.md @@ -44,6 +44,7 @@ After your merge request has been approved according to our [approval guidelines - [ ] Fill in any upgrade notes that users may need to take into account in the [details section](#details) - [ ] Add Yes/No and further details if needed to the migration and settings columns in the [details section](#details) - [ ] Add the nickname of the external user who found the issue (and/or HackerOne profile) to the Thanks row in the [details section](#details) +- [ ] If this includes a breaking change, make sure it is mentioned for the relevant versions in [`doc/update/index.md`](https://gitlab.com/gitlab-org/security/gitlab/-/blob/master/doc/update/index.md#version-specific-upgrading-instructions) ## Summary diff --git a/.rubocop_todo/rspec/verified_doubles.yml b/.rubocop_todo/rspec/verified_doubles.yml index 9df856ea4a7..085cd2c08e4 100644 --- a/.rubocop_todo/rspec/verified_doubles.yml +++ b/.rubocop_todo/rspec/verified_doubles.yml @@ -1053,7 +1053,7 @@ RSpec/VerifiedDoubles: - spec/services/packages/nuget/metadata_extraction_service_spec.rb - spec/services/pages/zip_directory_service_spec.rb - spec/services/post_receive_service_spec.rb - - spec/services/projects/after_import_service_spec.rb + - spec/workers/projects/after_import_worker_spec.rb - spec/services/projects/branches_by_mode_service_spec.rb - spec/services/projects/create_service_spec.rb - spec/services/projects/destroy_service_spec.rb diff --git a/app/assets/javascripts/content_editor/extensions/paste_markdown.js b/app/assets/javascripts/content_editor/extensions/paste_markdown.js index e50732bd869..f87e4d8d1dd 100644 --- a/app/assets/javascripts/content_editor/extensions/paste_markdown.js +++ b/app/assets/javascripts/content_editor/extensions/paste_markdown.js @@ -2,7 +2,7 @@ import { Extension } from '@tiptap/core'; import { Plugin, PluginKey } from 'prosemirror-state'; import { __ } from '~/locale'; import { VARIANT_DANGER } from '~/flash'; -import createMarkdownDeserializer from '../services/markdown_deserializer'; +import createMarkdownDeserializer from '../services/gl_api_markdown_deserializer'; import { ALERT_EVENT, LOADING_CONTENT_EVENT, diff --git a/app/assets/javascripts/content_editor/services/code_block_language_loader.js b/app/assets/javascripts/content_editor/services/code_block_language_loader.js index c967dd899de..74018d7e1e3 100644 --- a/app/assets/javascripts/content_editor/services/code_block_language_loader.js +++ b/app/assets/javascripts/content_editor/services/code_block_language_loader.js @@ -36,16 +36,6 @@ const codeBlockLanguageLoader = { return this.lowlight.registered(language); }, - loadLanguagesFromDOM(domTree) { - const languages = []; - - domTree.querySelectorAll('pre').forEach((preElement) => { - languages.push(preElement.getAttribute('lang')); - }); - - return this.loadLanguages(languages); - }, - loadLanguageFromInputRule(match) { const { syntax } = this.findLanguageBySyntax(match[1]); diff --git a/app/assets/javascripts/content_editor/services/content_editor.js b/app/assets/javascripts/content_editor/services/content_editor.js index 56badf965ee..21843c482a8 100644 --- a/app/assets/javascripts/content_editor/services/content_editor.js +++ b/app/assets/javascripts/content_editor/services/content_editor.js @@ -52,9 +52,9 @@ export class ContentEditor { }); if (Object.keys(result).length !== 0) { - const { document, dom } = result; + const { document, languages } = result; - await languageLoader.loadLanguagesFromDOM(dom); + await languageLoader.loadLanguages(languages); tr.setSelection(selection) .replaceSelectionWith(document, false) diff --git a/app/assets/javascripts/content_editor/services/create_content_editor.js b/app/assets/javascripts/content_editor/services/create_content_editor.js index af19a0ab0e4..a7e6bb8d5a2 100644 --- a/app/assets/javascripts/content_editor/services/create_content_editor.js +++ b/app/assets/javascripts/content_editor/services/create_content_editor.js @@ -58,7 +58,7 @@ import Video from '../extensions/video'; import WordBreak from '../extensions/word_break'; import { ContentEditor } from './content_editor'; import createMarkdownSerializer from './markdown_serializer'; -import createMarkdownDeserializer from './markdown_deserializer'; +import createGlApiMarkdownDeserializer from './gl_api_markdown_deserializer'; import trackInputRulesAndShortcuts from './track_input_rules_and_shortcuts'; import languageLoader from './code_block_language_loader'; @@ -146,7 +146,7 @@ export const createContentEditor = ({ const trackedExtensions = allExtensions.map(trackInputRulesAndShortcuts); const tiptapEditor = createTiptapEditor({ extensions: trackedExtensions, ...tiptapOptions }); const serializer = createMarkdownSerializer({ serializerConfig }); - const deserializer = createMarkdownDeserializer({ render: renderMarkdown }); + const deserializer = createGlApiMarkdownDeserializer({ render: renderMarkdown }); return new ContentEditor({ tiptapEditor, serializer, eventHub, deserializer, languageLoader }); }; diff --git a/app/assets/javascripts/content_editor/services/markdown_deserializer.js b/app/assets/javascripts/content_editor/services/gl_api_markdown_deserializer.js similarity index 87% rename from app/assets/javascripts/content_editor/services/markdown_deserializer.js rename to app/assets/javascripts/content_editor/services/gl_api_markdown_deserializer.js index cd4863d8eac..3742d14bfd1 100644 --- a/app/assets/javascripts/content_editor/services/markdown_deserializer.js +++ b/app/assets/javascripts/content_editor/services/gl_api_markdown_deserializer.js @@ -18,6 +18,7 @@ export default ({ render }) => { return { deserialize: async ({ schema, content }) => { const html = await render(content); + const languages = []; if (!html) return {}; @@ -27,7 +28,11 @@ export default ({ render }) => { // append original source as a comment that nodes can access body.append(document.createComment(content)); - return { document: ProseMirrorDOMParser.fromSchema(schema).parse(body), dom: body }; + body.querySelectorAll('pre').forEach((preElement) => { + languages.push(preElement.getAttribute('lang')); + }); + + return { document: ProseMirrorDOMParser.fromSchema(schema).parse(body), languages }; }, }; }; diff --git a/app/assets/javascripts/vue_shared/components/ci_cd_analytics/ci_cd_analytics_charts.vue b/app/assets/javascripts/vue_shared/components/ci_cd_analytics/ci_cd_analytics_charts.vue index 8b76af05ffe..6a03e38a31d 100644 --- a/app/assets/javascripts/vue_shared/components/ci_cd_analytics/ci_cd_analytics_charts.vue +++ b/app/assets/javascripts/vue_shared/components/ci_cd_analytics/ci_cd_analytics_charts.vue @@ -1,12 +1,12 @@