From bd1bebd1b0a0d9a0484849c73ee15449dd27fe92 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 22 Mar 2022 18:08:29 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .gitlab/ci/rules.gitlab-ci.yml | 4 - GITALY_SERVER_VERSION | 2 +- app/assets/javascripts/deprecated_notes.js | 87 ++++----- .../issues/show/components/locked_warning.vue | 7 +- .../filtered_search/jobs_filtered_search.vue | 42 +++++ .../filtered_search/tokens/job_status_token.vue | 122 ++++++++++++ .../javascripts/jobs/components/table/constants.js | 3 + .../jobs/components/table/jobs_table_app.vue | 68 ++++++- .../jobs/components/table/jobs_table_tabs.vue | 2 +- .../history/components/import_error_details.vue | 41 +++++ .../history/components/import_history_app.vue | 199 ++++++++++++++++++++ .../javascripts/pages/import/history/index.js | 21 +++ .../pages/import/history/utils/error_messages.js | 3 + .../drawer/cards/first_pipeline_card.vue | 37 ++-- .../drawer/cards/getting_started_card.vue | 27 ++- .../cards/pipeline_config_reference_card.vue | 89 +++++---- .../drawer/cards/visualize_and_lint_card.vue | 14 +- .../components/drawer/pipeline_editor_drawer.vue | 106 ++++------- .../components/editor/ci_editor_header.vue | 21 +++ .../components/pipeline_editor_tabs.vue | 6 +- .../javascripts/pipeline_editor/constants.js | 2 - .../pipeline_editor/pipeline_editor_app.vue | 2 +- .../pipeline_editor/pipeline_editor_home.vue | 16 +- .../runner/admin_runners/admin_runners_app.vue | 22 ++- .../components/cells/runner_actions_cell.vue | 12 +- .../runner/components/runner_delete_button.vue | 5 + .../runner/components/runner_pause_button.vue | 2 + .../runner/group_runners/group_runners_app.vue | 27 ++- .../security_configuration/components/app.vue | 10 + app/controllers/ide_controller.rb | 2 + app/controllers/import/history_controller.rb | 5 + app/controllers/projects/jobs_controller.rb | 5 + app/controllers/projects/snippets_controller.rb | 2 + .../projects/web_ide_schemas_controller.rb | 2 + app/controllers/projects_controller.rb | 7 - app/controllers/snippets/blobs_controller.rb | 1 + .../new_project_sast_enabled_experiment.rb | 15 -- app/views/import/history/index.html.haml | 4 + app/views/layouts/nav/sidebar/_admin.html.haml | 6 +- app/views/projects/_import_project_pane.html.haml | 3 +- app/views/projects/_new_project_fields.html.haml | 17 +- .../_new_project_initialize_with_sast.html.haml | 16 -- .../development/jobs_table_vue_search.yml | 8 + .../experiment/new_project_sast_enabled.yml | 8 - ...216175000_i_analytics_dev_ops_score_monthly.yml | 2 +- config/routes/admin.rb | 3 +- config/routes/import.rb | 2 + ...al-search-deprecate-user-email-lookup-limit.yml | 11 ++ .../14_9/14-9-key-user_email_lookup_limit.yml | 9 - data/whats_new/202203210001_14_09.yml | 2 +- doc/development/fe_guide/registry_architecture.md | 90 +++++++++ doc/development/service_ping/index.md | 2 +- doc/development/testing_guide/review_apps.md | 6 +- doc/subscriptions/self_managed/index.md | 14 +- doc/update/deprecations.md | 14 ++ doc/update/removals.md | 10 - doc/user/admin_area/analytics/dev_ops_report.md | 74 +------- doc/user/admin_area/analytics/dev_ops_reports.md | 73 ++++++++ doc/user/admin_area/analytics/index.md | 2 +- doc/user/clusters/agent/troubleshooting.md | 44 ++--- doc/user/crm/index.md | 30 ++- doc/user/packages/maven_repository/index.md | 7 +- lib/api/project_snippets.rb | 2 +- lib/api/snippets.rb | 2 +- lib/api/wikis.rb | 2 +- locale/gitlab.pot | 69 ++++++- qa/qa/page/project/new.rb | 5 +- qa/qa/page/project/pipeline_editor/show.rb | 22 +-- spec/controllers/projects_controller_spec.rb | 22 --- .../new_project_sast_enabled_experiment_spec.rb | 20 -- spec/features/admin/admin_dev_ops_report_spec.rb | 68 ------- spec/features/admin/admin_dev_ops_reports_spec.rb | 68 +++++++ .../features/projects/user_creates_project_spec.rb | 23 --- .../filtered_search/jobs_filtered_search_spec.js | 49 +++++ .../tokens/job_status_token_spec.js | 57 ++++++ .../jobs/components/table/job_table_app_spec.js | 105 ++++++++++- spec/frontend/jobs/mock_data.js | 2 + .../components/import_error_details_spec.js | 66 +++++++ .../history/components/import_history_app_spec.js | 205 +++++++++++++++++++++ .../drawer/pipeline_editor_drawer_spec.js | 137 +------------- .../components/editor/ci_editor_header_spec.js | 53 +++++- .../components/pipeline_editor_tabs_spec.js | 1 + .../pipeline_editor/pipeline_editor_home_spec.js | 99 +++++++--- .../runner/admin_runners/admin_runners_app_spec.js | 18 +- .../components/cells/runner_actions_cell_spec.js | 10 + .../runner/components/runner_pause_button_spec.js | 4 + .../runner/group_runners/group_runners_app_spec.js | 20 +- .../security_configuration/components/app_spec.js | 14 +- spec/routing/admin_routing_spec.rb | 11 +- 89 files changed, 1879 insertions(+), 770 deletions(-) create mode 100644 app/assets/javascripts/jobs/components/filtered_search/jobs_filtered_search.vue create mode 100644 app/assets/javascripts/jobs/components/filtered_search/tokens/job_status_token.vue create mode 100644 app/assets/javascripts/pages/import/history/components/import_error_details.vue create mode 100644 app/assets/javascripts/pages/import/history/components/import_history_app.vue create mode 100644 app/assets/javascripts/pages/import/history/index.js create mode 100644 app/assets/javascripts/pages/import/history/utils/error_messages.js create mode 100644 app/controllers/import/history_controller.rb delete mode 100644 app/experiments/new_project_sast_enabled_experiment.rb create mode 100644 app/views/import/history/index.html.haml delete mode 100644 app/views/projects/_new_project_initialize_with_sast.html.haml create mode 100644 config/feature_flags/development/jobs_table_vue_search.yml delete mode 100644 config/feature_flags/experiment/new_project_sast_enabled.yml create mode 100644 data/deprecations/14-9-global-search-deprecate-user-email-lookup-limit.yml delete mode 100644 data/removals/14_9/14-9-key-user_email_lookup_limit.yml create mode 100644 doc/development/fe_guide/registry_architecture.md create mode 100644 doc/user/admin_area/analytics/dev_ops_reports.md delete mode 100644 spec/experiments/new_project_sast_enabled_experiment_spec.rb delete mode 100644 spec/features/admin/admin_dev_ops_report_spec.rb create mode 100644 spec/features/admin/admin_dev_ops_reports_spec.rb create mode 100644 spec/frontend/jobs/components/filtered_search/jobs_filtered_search_spec.js create mode 100644 spec/frontend/jobs/components/filtered_search/tokens/job_status_token_spec.js create mode 100644 spec/frontend/pages/import/history/components/import_error_details_spec.js create mode 100644 spec/frontend/pages/import/history/components/import_history_app_spec.js diff --git a/.gitlab/ci/rules.gitlab-ci.yml b/.gitlab/ci/rules.gitlab-ci.yml index 3220e399c28..e9159c44bf8 100644 --- a/.gitlab/ci/rules.gitlab-ci.yml +++ b/.gitlab/ci/rules.gitlab-ci.yml @@ -1611,10 +1611,6 @@ rules: - <<: *if-not-ee when: never - - <<: *if-dot-com-gitlab-org-merge-request - changes: *code-qa-patterns - when: manual - allow_failure: true - <<: *if-dot-com-gitlab-org-schedule allow_failure: true diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index ccc4d935619..e131cf3c553 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -719c5a5bd2b5ddb54de519d6873ccb1636f7b450 +e9c85a7455f1934bbebf589db4e9600a45c8f1bb diff --git a/app/assets/javascripts/deprecated_notes.js b/app/assets/javascripts/deprecated_notes.js index 0707ae02872..2301ec95167 100644 --- a/app/assets/javascripts/deprecated_notes.js +++ b/app/assets/javascripts/deprecated_notes.js @@ -143,7 +143,7 @@ export default class Notes { // resolve a discussion this.$wrapperEl.on('click', '.js-comment-resolve-button', this.postComment); // remove a note (in general) - this.$wrapperEl.on('click', '.js-note-delete', this.removeNote); + this.$wrapperEl.on('ajax:success', '.js-note-delete', this.removeNote); // delete note attachment this.$wrapperEl.on('click', '.js-note-attachment-delete', this.removeAttachment); // update the file name when an attachment is selected @@ -188,7 +188,7 @@ export default class Notes { cleanBinding() { this.$wrapperEl.off('click', '.js-note-edit'); this.$wrapperEl.off('click', '.note-edit-cancel'); - this.$wrapperEl.off('click', '.js-note-delete'); + this.$wrapperEl.off('ajax:success', '.js-note-delete'); this.$wrapperEl.off('click', '.js-note-attachment-delete'); this.$wrapperEl.off('click', '.js-discussion-reply-button'); this.$wrapperEl.off('click', '.js-add-diff-note-button'); @@ -827,50 +827,53 @@ export default class Notes { */ removeNote(e) { const $note = $(e.currentTarget).closest('.note'); - const noteElId = $note.attr('id'); - $(`.note[id="${noteElId}"]`).each((i, el) => { - // A same note appears in the "Discussion" and in the "Changes" tab, we have - // to remove all. Using $('.note[id='noteId']') ensure we get all the notes, - // where $('#noteId') would return only one. - const $note = $(el); - const $notes = $note.closest('.discussion-notes'); - const discussionId = $('.notes', $notes).data('discussionId'); - - $note.remove(); - - // check if this is the last note for this line - if ($notes.find('.note').length === 0) { - const notesTr = $notes.closest('tr'); - - // "Discussions" tab - $notes.closest('.timeline-entry').remove(); - - $(`.js-diff-avatars-${discussionId}`).trigger('remove.vue'); - - // The notes tr can contain multiple lists of notes, like on the parallel diff - // notesTr does not exist for image diffs - if (notesTr.find('.discussion-notes').length > 1 || notesTr.length === 0) { - const $diffFile = $notes.closest('.diff-file'); - if ($diffFile.length > 0) { - const removeBadgeEvent = new CustomEvent('removeBadge.imageDiff', { - detail: { - // badgeNumber's start with 1 and index starts with 0 - badgeNumber: $notes.index() + 1, - }, - }); - $diffFile[0].dispatchEvent(removeBadgeEvent); - } + $note.one('ajax:complete', () => { + const noteElId = $note.attr('id'); + $(`.note[id="${noteElId}"]`).each((i, el) => { + // A same note appears in the "Discussion" and in the "Changes" tab, we have + // to remove all. Using $('.note[id='noteId']') ensure we get all the notes, + // where $('#noteId') would return only one. + const $note = $(el); + const $notes = $note.closest('.discussion-notes'); + const discussionId = $('.notes', $notes).data('discussionId'); + + $note.remove(); + + // check if this is the last note for this line + if ($notes.find('.note').length === 0) { + const notesTr = $notes.closest('tr'); + + // "Discussions" tab + $notes.closest('.timeline-entry').remove(); + + $(`.js-diff-avatars-${discussionId}`).trigger('remove.vue'); + + // The notes tr can contain multiple lists of notes, like on the parallel diff + // notesTr does not exist for image diffs + if (notesTr.find('.discussion-notes').length > 1 || notesTr.length === 0) { + const $diffFile = $notes.closest('.diff-file'); + if ($diffFile.length > 0) { + const removeBadgeEvent = new CustomEvent('removeBadge.imageDiff', { + detail: { + // badgeNumber's start with 1 and index starts with 0 + badgeNumber: $notes.index() + 1, + }, + }); + + $diffFile[0].dispatchEvent(removeBadgeEvent); + } - $notes.remove(); - } else if (notesTr.length > 0) { - notesTr.remove(); + $notes.remove(); + } else if (notesTr.length > 0) { + notesTr.remove(); + } } - } - }); + }); - Notes.checkMergeRequestStatus(); - return this.updateNotesCount(-1); + Notes.checkMergeRequestStatus(); + return this.updateNotesCount(-1); + }); } /** diff --git a/app/assets/javascripts/issues/show/components/locked_warning.vue b/app/assets/javascripts/issues/show/components/locked_warning.vue index 4b99888ae73..12feacb027b 100644 --- a/app/assets/javascripts/issues/show/components/locked_warning.vue +++ b/app/assets/javascripts/issues/show/components/locked_warning.vue @@ -1,5 +1,5 @@ diff --git a/app/assets/javascripts/jobs/components/filtered_search/jobs_filtered_search.vue b/app/assets/javascripts/jobs/components/filtered_search/jobs_filtered_search.vue new file mode 100644 index 00000000000..fe7b7428c6e --- /dev/null +++ b/app/assets/javascripts/jobs/components/filtered_search/jobs_filtered_search.vue @@ -0,0 +1,42 @@ + + + diff --git a/app/assets/javascripts/jobs/components/filtered_search/tokens/job_status_token.vue b/app/assets/javascripts/jobs/components/filtered_search/tokens/job_status_token.vue new file mode 100644 index 00000000000..aad86ded80a --- /dev/null +++ b/app/assets/javascripts/jobs/components/filtered_search/tokens/job_status_token.vue @@ -0,0 +1,122 @@ + + + diff --git a/app/assets/javascripts/jobs/components/table/constants.js b/app/assets/javascripts/jobs/components/table/constants.js index 951d9324813..853834ed51d 100644 --- a/app/assets/javascripts/jobs/components/table/constants.js +++ b/app/assets/javascripts/jobs/components/table/constants.js @@ -4,6 +4,9 @@ import { DEFAULT_TH_CLASSES } from '~/lib/utils/constants'; /* Error constants */ export const POST_FAILURE = 'post_failure'; export const DEFAULT = 'default'; +export const RAW_TEXT_WARNING = s__( + 'Jobs|Raw text search is not currently supported for the jobs filtered search feature. Please use the available search tokens.', +); /* Job Status Constants */ export const JOB_SCHEDULED = 'SCHEDULED'; diff --git a/app/assets/javascripts/jobs/components/table/jobs_table_app.vue b/app/assets/javascripts/jobs/components/table/jobs_table_app.vue index 864e322eecd..b141dcf81dd 100644 --- a/app/assets/javascripts/jobs/components/table/jobs_table_app.vue +++ b/app/assets/javascripts/jobs/components/table/jobs_table_app.vue @@ -1,26 +1,34 @@ diff --git a/app/assets/javascripts/pipeline_editor/components/pipeline_editor_tabs.vue b/app/assets/javascripts/pipeline_editor/components/pipeline_editor_tabs.vue index 5cff93c884f..d50e6f9a623 100644 --- a/app/assets/javascripts/pipeline_editor/components/pipeline_editor_tabs.vue +++ b/app/assets/javascripts/pipeline_editor/components/pipeline_editor_tabs.vue @@ -86,6 +86,10 @@ export default { type: Boolean, required: true, }, + showDrawer: { + type: Boolean, + required: true, + }, }, apollo: { appStatus: { @@ -157,7 +161,7 @@ export default { @click="setCurrentTab($options.tabConstants.CREATE_TAB)" > - + -
+
@@ -137,6 +147,10 @@ export default { @scrolled-to-commit-form="setScrollToCommitForm(false)" v-on="$listeners" /> - +
diff --git a/app/assets/javascripts/runner/admin_runners/admin_runners_app.vue b/app/assets/javascripts/runner/admin_runners/admin_runners_app.vue index 8aba91eedf7..9abd45424e7 100644 --- a/app/assets/javascripts/runner/admin_runners/admin_runners_app.vue +++ b/app/assets/javascripts/runner/admin_runners/admin_runners_app.vue @@ -1,9 +1,9 @@ @@ -262,6 +267,11 @@ export default {

{{ $options.i18n.securityTrainingDescription }}

+

+ {{ + $options.i18n.securityTrainingDoc + }} +