From ecad3f3e663eaf426e6a649c53a3cc537a5b3c77 Mon Sep 17 00:00:00 2001 From: Pirate Praveen Date: Thu, 8 Nov 2018 19:23:39 +0530 Subject: [PATCH] New upstream version 11.1.8+dfsg --- .codeclimate.yml | 2 - .eslintrc | 56 - .eslintrc.yml | 71 + .flayignore | 22 + .gitignore | 3 +- .gitlab-ci.yml | 458 +- .gitlab/issue_templates/Feature Proposal.md | 9 - .gitlab/issue_templates/Feature proposal.md | 15 + ...earch Proposal.md => Research proposal.md} | 0 ...flow.md => Security developer workflow.md} | 1 + ...atabase Changes.md => Database changes.md} | 14 +- .nvmrc | 2 +- .rubocop_todo.yml | 11 +- .ruby-version | 2 +- .scss-lint.yml | 3 +- CHANGELOG.md | 654 +- CONTRIBUTING.md | 147 +- GITALY_SERVER_VERSION | 2 +- GITLAB_PAGES_VERSION | 2 +- GITLAB_SHELL_VERSION | 2 +- GITLAB_WORKHORSE_VERSION | 2 +- Gemfile | 62 +- Gemfile.lock | 209 +- Gemfile.rails5.lock | 520 +- INSTALLATION_TYPE | 1 + LICENSE | 7 +- PROCESS.md | 59 +- README.md | 11 +- VERSION | 2 +- .../dev/favicon_status_canceled.ico | Bin 4286 -> 0 bytes .../dev/favicon_status_created.ico | Bin 4286 -> 0 bytes .../ci_favicons/dev/favicon_status_failed.ico | Bin 4286 -> 0 bytes .../ci_favicons/dev/favicon_status_manual.ico | Bin 4286 -> 0 bytes .../dev/favicon_status_not_found.ico | Bin 4286 -> 0 bytes .../dev/favicon_status_pending.ico | Bin 4286 -> 0 bytes .../dev/favicon_status_running.ico | Bin 4286 -> 0 bytes .../dev/favicon_status_skipped.ico | Bin 4286 -> 0 bytes .../dev/favicon_status_success.ico | Bin 4286 -> 0 bytes .../dev/favicon_status_warning.ico | Bin 4286 -> 0 bytes .../ci_favicons/favicon_status_canceled.ico | Bin 4286 -> 0 bytes .../ci_favicons/favicon_status_canceled.png | Bin 0 -> 864 bytes .../ci_favicons/favicon_status_created.ico | Bin 4286 -> 0 bytes .../ci_favicons/favicon_status_created.png | Bin 0 -> 889 bytes .../ci_favicons/favicon_status_failed.ico | Bin 4286 -> 0 bytes .../ci_favicons/favicon_status_failed.png | Bin 0 -> 1015 bytes .../ci_favicons/favicon_status_manual.ico | Bin 4286 -> 0 bytes .../ci_favicons/favicon_status_manual.png | Bin 0 -> 1067 bytes .../ci_favicons/favicon_status_not_found.ico | Bin 4286 -> 0 bytes .../ci_favicons/favicon_status_not_found.png | Bin 0 -> 945 bytes .../ci_favicons/favicon_status_pending.ico | Bin 4286 -> 0 bytes .../ci_favicons/favicon_status_pending.png | Bin 0 -> 919 bytes .../ci_favicons/favicon_status_running.ico | Bin 4286 -> 0 bytes .../ci_favicons/favicon_status_running.png | Bin 0 -> 1077 bytes .../ci_favicons/favicon_status_skipped.ico | Bin 4286 -> 0 bytes .../ci_favicons/favicon_status_skipped.png | Bin 0 -> 923 bytes .../ci_favicons/favicon_status_success.ico | Bin 4286 -> 0 bytes .../ci_favicons/favicon_status_success.png | Bin 0 -> 1044 bytes .../ci_favicons/favicon_status_warning.ico | Bin 4286 -> 0 bytes .../ci_favicons/favicon_status_warning.png | Bin 0 -> 830 bytes app/assets/images/favicon-blue.ico | Bin 5430 -> 0 bytes app/assets/images/favicon-blue.png | Bin 0 -> 1522 bytes app/assets/images/favicon-yellow.ico | Bin 5430 -> 0 bytes app/assets/images/favicon-yellow.png | Bin 0 -> 1667 bytes app/assets/images/favicon.ico | Bin 5430 -> 0 bytes app/assets/images/favicon.png | Bin 0 -> 1611 bytes app/assets/javascripts/activities.js | 2 +- .../javascripts/ajax_loading_spinner.js | 2 +- app/assets/javascripts/api.js | 45 +- app/assets/javascripts/autosave.js | 6 +- app/assets/javascripts/awards_handler.js | 197 +- .../javascripts/badges/components/badge.vue | 18 +- .../badges/components/badge_form.vue | 20 +- .../badges/components/badge_list.vue | 10 +- .../badges/components/badge_list_row.vue | 10 +- .../badges/components/badge_settings.vue | 2 +- .../behaviors/copy_to_clipboard.js | 6 +- .../behaviors/markdown/copy_as_gfm.js | 42 +- .../javascripts/behaviors/quick_submit.js | 2 +- .../javascripts/behaviors/requires_input.js | 4 +- .../blob/balsamiq/balsamiq_viewer.js | 8 +- .../javascripts/blob/balsamiq_viewer.js | 2 +- app/assets/javascripts/blob/pdf/index.js | 1 - app/assets/javascripts/blob/sketch/index.js | 2 +- app/assets/javascripts/blob/stl_viewer.js | 2 +- app/assets/javascripts/blob/viewer/index.js | 4 +- .../javascripts/blob_edit/blob_bundle.js | 3 +- .../javascripts/boards/components/board.js | 89 +- .../boards/components/board_blank_state.vue | 4 +- .../boards/components/board_card.vue | 130 +- .../boards/components/board_delete.js | 9 +- .../boards/components/board_list.vue | 55 +- .../boards/components/board_new_issue.vue | 24 +- .../boards/components/board_sidebar.js | 67 +- .../boards/components/issue_card_inner.js | 195 - .../boards/components/issue_card_inner.vue | 202 + .../modal/{empty_state.js => empty_state.vue} | 68 +- .../modal/{footer.js => footer.vue} | 82 +- .../boards/components/modal/header.js | 79 - .../boards/components/modal/header.vue | 82 + .../boards/components/modal/index.js | 171 - .../boards/components/modal/index.vue | 178 + .../boards/components/modal/list.js | 158 - .../boards/components/modal/list.vue | 161 + .../boards/components/modal/lists_dropdown.js | 54 - .../components/modal/lists_dropdown.vue | 56 + .../boards/components/modal/tabs.js | 46 - .../boards/components/modal/tabs.vue | 49 + .../boards/components/new_list_dropdown.js | 3 +- .../boards/components/project_select.vue | 112 +- .../boards/components/sidebar/remove_issue.js | 73 - .../components/sidebar/remove_issue.vue | 91 + .../boards/filtered_search_boards.js | 1 - .../boards/filters/due_date_filters.js | 5 +- app/assets/javascripts/boards/index.js | 14 +- .../boards/mixins/sortable_default_options.js | 1 - .../javascripts/boards/models/assignee.js | 12 - app/assets/javascripts/boards/models/issue.js | 3 +- app/assets/javascripts/boards/models/list.js | 152 +- .../javascripts/boards/models/milestone.js | 2 - .../boards/services/board_service.js | 10 +- .../javascripts/boards/stores/boards_store.js | 28 +- .../javascripts/boards/stores/modal_store.js | 2 +- app/assets/javascripts/build_artifacts.js | 2 +- .../ci_variable_list/ci_variable_list.js | 5 + .../javascripts/clusters/clusters_bundle.js | 9 +- .../clusters/components/application_row.vue | 20 +- .../clusters/components/applications.vue | 80 +- app/assets/javascripts/clusters/constants.js | 1 + .../clusters/services/clusters_service.js | 5 +- .../clusters/stores/clusters_store.js | 16 +- app/assets/javascripts/commit/image_file.js | 8 +- .../commit/pipelines/pipelines_table.vue | 4 +- app/assets/javascripts/commits.js | 2 +- app/assets/javascripts/commons/bootstrap.js | 10 +- .../javascripts/compare_autocomplete.js | 4 +- .../create_merge_request_dropdown.js | 71 +- .../cycle_analytics/components/banner.vue | 2 +- .../components/limit_warning_component.vue | 6 +- .../components/stage_component.vue | 2 +- .../components/stage_review_component.vue | 4 +- .../components/stage_staging_component.vue | 4 +- .../components/stage_test_component.vue | 2 +- .../cycle_analytics/cycle_analytics_bundle.js | 2 - .../cycle_analytics_service.js | 30 +- .../deploy_keys/components/action_btn.vue | 2 +- .../deploy_keys/components/app.vue | 8 +- .../deploy_keys/components/key.vue | 30 +- .../deploy_keys/components/keys_panel.vue | 2 +- .../javascripts/deploy_keys/service/index.js | 33 +- .../components/comment_resolve_btn.js | 5 +- .../components/diff_note_avatars.js | 153 +- .../components/jump_to_discussion.js | 18 +- .../diff_notes/components/resolve_btn.js | 157 +- .../diff_notes/components/resolve_count.js | 10 +- .../components/resolve_discussion_btn.js | 27 +- .../diff_notes/diff_notes_bundle.js | 31 +- .../diff_notes/mixins/discussion.js | 6 +- .../diff_notes/models/discussion.js | 2 +- .../javascripts/diff_notes/models/note.js | 2 - .../diff_notes/services/resolve.js | 40 +- .../javascripts/diff_notes/stores/comments.js | 2 +- .../javascripts/diffs/components/app.vue | 204 + .../diffs/components/changed_files.vue | 171 + .../components/changed_files_dropdown.vue | 126 + .../diffs/components/compare_versions.vue | 55 + .../components/compare_versions_dropdown.vue | 165 + .../diffs/components/diff_content.vue | 62 + .../diffs/components/diff_discussions.vue | 37 + .../diffs/components/diff_file.vue | 153 + .../diffs/components/diff_file_header.vue | 265 + .../diffs/components/diff_gutter_avatars.vue | 105 + .../components/diff_line_gutter_content.vue | 203 + .../diffs/components/diff_line_note_form.vue | 113 + .../diffs/components/diff_table_cell.vue | 141 + .../diffs/components/edit_button.vue | 42 + .../diffs/components/hidden_files_warning.vue | 51 + .../components/inline_diff_comment_row.vue | 64 + .../components/inline_diff_table_row.vue | 111 + .../diffs/components/inline_diff_view.vue | 79 + .../diffs/components/no_changes.vue | 49 + .../components/parallel_diff_comment_row.vue | 117 + .../components/parallel_diff_table_row.vue | 152 + .../diffs/components/parallel_diff_view.vue | 113 + app/assets/javascripts/diffs/constants.js | 27 + app/assets/javascripts/diffs/index.js | 41 + .../javascripts/diffs/mixins/changed_files.js | 38 + app/assets/javascripts/diffs/store/actions.js | 113 + app/assets/javascripts/diffs/store/getters.js | 64 + .../diffs/store/modules/diff_state.js | 18 + .../javascripts/diffs/store/modules/index.js | 12 + .../javascripts/diffs/store/mutation_types.js | 10 + .../javascripts/diffs/store/mutations.js | 75 + app/assets/javascripts/diffs/store/utils.js | 175 + app/assets/javascripts/dispatcher.js | 8 +- app/assets/javascripts/due_date_select.js | 41 +- .../environments/components/container.vue | 6 +- .../components/environment_actions.vue | 16 +- .../components/environment_external_url.vue | 8 +- .../components/environment_item.vue | 24 +- .../components/environment_monitoring.vue | 8 +- .../components/environment_rollback.vue | 6 +- .../components/environment_stop.vue | 12 +- .../environment_terminal_button.vue | 6 +- .../components/environments_app.vue | 7 +- .../folder/environments_folder_view.vue | 4 +- .../environments/mixins/environments_mixin.js | 24 +- .../services/environments_service.js | 17 +- .../environments/stores/environments_store.js | 4 +- .../feature_highlight/feature_highlight.js | 2 +- .../recent_searches_dropdown_content.vue | 2 +- .../filtered_search/dropdown_utils.js | 6 +- .../filtered_search_dropdown_manager.js | 2 +- .../filtered_search_manager.js | 4 +- .../filtered_search_visual_tokens.js | 4 +- .../filtered_search/recent_searches_root.js | 2 +- .../frequent_items/components/app.vue | 122 + .../components/frequent_items_list.vue | 78 + .../components/frequent_items_list_item.vue | 117 + .../components/frequent_items_mixin.js | 23 + .../frequent_items_search_input.vue | 55 + .../javascripts/frequent_items/constants.js | 38 + .../event_hub.js | 0 .../javascripts/frequent_items/index.js | 69 + .../frequent_items/store/actions.js | 81 + .../frequent_items/store/getters.js | 4 + .../javascripts/frequent_items/store/index.js | 16 + .../frequent_items/store/mutation_types.js | 9 + .../frequent_items/store/mutations.js | 71 + .../javascripts/frequent_items/store/state.js | 8 + .../javascripts/frequent_items/utils.js | 49 + app/assets/javascripts/gfm_auto_complete.js | 24 +- app/assets/javascripts/gl_dropdown.js | 23 +- app/assets/javascripts/gl_field_error.js | 10 +- app/assets/javascripts/gl_form.js | 22 +- .../javascripts/group_label_subscription.js | 18 +- .../javascripts/groups/components/app.vue | 7 +- .../groups/components/group_item.vue | 12 +- .../groups/components/item_actions.vue | 4 +- .../groups/components/item_stats.vue | 22 +- .../groups/components/item_stats_value.vue | 2 +- app/assets/javascripts/groups/index.js | 4 +- .../ide/components/activity_bar.vue | 50 +- .../ide/components/changed_file_icon.vue | 2 +- .../ide/components/commit_sidebar/actions.vue | 28 +- .../ide/components/commit_sidebar/form.vue | 32 +- .../ide/components/commit_sidebar/list.vue | 77 +- .../commit_sidebar/list_collapsed.vue | 9 +- .../components/commit_sidebar/list_item.vue | 40 +- .../commit_sidebar/message_field.vue | 18 +- .../components/commit_sidebar/radio_group.vue | 18 +- .../commit_sidebar/stage_button.vue | 34 +- .../commit_sidebar/unstage_button.vue | 8 +- .../ide/components/editor_mode_dropdown.vue | 8 +- .../ide/components/error_message.vue | 69 + .../ide/components/external_link.vue | 41 + .../ide/components/file_finder/index.vue | 18 +- .../ide/components/file_finder/item.vue | 6 +- app/assets/javascripts/ide/components/ide.vue | 23 +- .../ide/components/ide_file_buttons.vue | 84 - .../javascripts/ide/components/ide_review.vue | 19 +- .../ide/components/ide_side_bar.vue | 95 +- .../ide/components/ide_status_bar.vue | 48 +- .../ide/components/ide_tree_list.vue | 4 +- .../ide/components/jobs/detail.vue | 137 + .../components/jobs/detail/description.vue | 47 + .../components/jobs/detail/scroll_button.vue | 66 + .../javascripts/ide/components/jobs/item.vue | 44 + .../javascripts/ide/components/jobs/list.vue | 45 + .../javascripts/ide/components/jobs/stage.vue | 112 + .../components/merge_requests/dropdown.vue | 63 + .../ide/components/merge_requests/info.vue | 43 + .../ide/components/merge_requests/item.vue | 63 + .../ide/components/merge_requests/list.vue | 132 + .../ide/components/mr_file_icon.vue | 4 +- .../ide/components/new_dropdown/index.vue | 14 +- .../ide/components/new_dropdown/modal.vue | 26 +- .../ide/components/new_dropdown/upload.vue | 3 +- .../ide/components/panes/right.vue | 104 + .../ide/components/pipelines/list.vue | 146 + .../ide/components/repo_commit_section.vue | 37 +- .../ide/components/repo_editor.vue | 71 +- .../javascripts/ide/components/repo_file.vue | 55 +- .../ide/components/repo_file_status_icon.vue | 2 +- .../ide/components/repo_loading_file.vue | 6 +- .../javascripts/ide/components/repo_tab.vue | 10 +- .../javascripts/ide/components/repo_tabs.vue | 2 +- .../ide/components/resizable_panel.vue | 4 +- app/assets/javascripts/ide/constants.js | 20 +- app/assets/javascripts/ide/ide_router.js | 28 +- app/assets/javascripts/ide/index.js | 10 +- .../javascripts/ide/lib/common/model.js | 17 +- .../ide/lib/common/model_manager.js | 5 +- .../javascripts/ide/lib/diff/controller.js | 4 +- .../javascripts/ide/lib/diff/diff_worker.js | 4 +- app/assets/javascripts/ide/lib/editor.js | 36 +- .../javascripts/ide/lib/editor_options.js | 1 + app/assets/javascripts/ide/monaco_loader.js | 16 - app/assets/javascripts/ide/services/index.js | 50 +- app/assets/javascripts/ide/stores/actions.js | 9 + .../javascripts/ide/stores/actions/file.js | 39 +- .../ide/stores/actions/merge_request.js | 50 +- .../javascripts/ide/stores/actions/project.js | 101 +- .../javascripts/ide/stores/actions/tree.js | 64 +- app/assets/javascripts/ide/stores/getters.js | 5 +- app/assets/javascripts/ide/stores/index.js | 25 +- .../ide/stores/modules/commit/actions.js | 104 +- .../ide/stores/modules/commit/getters.js | 17 +- .../stores/modules/merge_requests/actions.js | 59 + .../modules/merge_requests/constants.js | 10 + .../stores/modules/merge_requests/getters.js | 4 + .../stores/modules/merge_requests/index.js | 12 + .../modules/merge_requests/mutation_types.js | 5 + .../modules/merge_requests/mutations.js | 26 + .../stores/modules/merge_requests/state.js | 13 + .../ide/stores/modules/pipelines/actions.js | 153 + .../ide/stores/modules/pipelines/constants.js | 4 + .../ide/stores/modules/pipelines/getters.js | 22 + .../ide/stores/modules/pipelines/index.js | 12 + .../modules/pipelines/mutation_types.js | 15 + .../ide/stores/modules/pipelines/mutations.js | 79 + .../ide/stores/modules/pipelines/state.js | 7 + .../ide/stores/modules/pipelines/utils.js | 11 + .../javascripts/ide/stores/mutation_types.js | 9 + .../javascripts/ide/stores/mutations.js | 20 +- .../javascripts/ide/stores/mutations/file.js | 15 +- .../javascripts/ide/stores/mutations/tree.js | 5 + app/assets/javascripts/ide/stores/state.js | 3 + app/assets/javascripts/ide/stores/utils.js | 8 +- .../stores/workers/files_decorator_worker.js | 6 +- .../image_diff/helpers/dom_helper.js | 3 +- .../image_diff/helpers/utils_helper.js | 3 +- app/assets/javascripts/importer_status.js | 14 +- .../javascripts/init_changes_dropdown.js | 2 +- app/assets/javascripts/init_notes.js | 4 +- .../integrations/integration_settings_form.js | 21 +- .../issuable/auto_width_dropdown_select.js | 2 +- .../issuable_bulk_update_actions.js | 2 +- app/assets/javascripts/issuable_form.js | 2 +- app/assets/javascripts/issue.js | 2 +- .../javascripts/issue_show/components/app.vue | 8 +- .../issue_show/components/description.vue | 10 +- .../issue_show/components/edit_actions.vue | 20 +- .../issue_show/components/edited.vue | 4 +- .../components/fields/description.vue | 14 +- .../fields/description_template.vue | 12 +- .../issue_show/components/fields/title.vue | 2 +- .../issue_show/components/form.vue | 12 +- .../issue_show/components/locked_warning.vue | 2 +- .../issue_show/components/title.vue | 116 +- app/assets/javascripts/issue_show/index.js | 7 +- app/assets/javascripts/job.js | 104 +- .../javascripts/jobs/components/header.vue | 9 +- .../jobs/components/sidebar_detail_row.vue | 2 +- .../jobs/components/sidebar_details_block.vue | 54 +- .../javascripts/jobs/job_details_bundle.js | 2 +- .../javascripts/jobs/job_details_mediator.js | 5 +- app/assets/javascripts/label_manager.js | 21 +- app/assets/javascripts/labels_select.js | 15 +- app/assets/javascripts/lazy_loader.js | 4 +- .../lib/utils/bootstrap_linked_tabs.js | 2 +- .../javascripts/lib/utils/common_utils.js | 221 +- .../javascripts/lib/utils/datetime_utility.js | 204 +- app/assets/javascripts/lib/utils/dom_utils.js | 7 +- .../javascripts/lib/utils/http_status.js | 1 + .../lib/utils/logoutput_behaviours.js | 46 + app/assets/javascripts/lib/utils/notify.js | 2 +- .../javascripts/lib/utils/number_utils.js | 4 +- .../javascripts/lib/utils/scroll_utils.js | 29 + app/assets/javascripts/lib/utils/sticky.js | 23 +- .../javascripts/lib/utils/text_markdown.js | 2 +- .../javascripts/lib/utils/text_utility.js | 21 + .../javascripts/lib/utils/url_utility.js | 4 +- app/assets/javascripts/line_highlighter.js | 14 +- app/assets/javascripts/locale/index.js | 6 +- app/assets/javascripts/locale/sprintf.js | 2 +- app/assets/javascripts/main.js | 13 +- .../components/diff_file_editor.js | 17 +- .../components/inline_conflict_lines.js | 13 +- .../components/parallel_conflict_lines.js | 11 +- .../merge_conflicts/merge_conflict_service.js | 31 +- .../merge_conflicts/merge_conflict_store.js | 6 +- .../merge_conflicts/merge_conflicts_bundle.js | 41 +- .../mixins/line_conflict_actions.js | 20 +- .../mixins/line_conflict_utils.js | 32 +- app/assets/javascripts/merge_request.js | 3 +- app/assets/javascripts/merge_request_tabs.js | 179 +- app/assets/javascripts/milestone.js | 4 +- app/assets/javascripts/milestone_select.js | 12 +- .../monitoring/components/dashboard.vue | 60 +- .../monitoring/components/empty_state.vue | 4 +- .../monitoring/components/graph.vue | 27 +- .../monitoring/components/graph/axis.vue | 20 +- .../components/graph/deployment.vue | 4 +- .../monitoring/components/graph/flag.vue | 10 +- .../monitoring/components/graph/legend.vue | 14 +- .../monitoring/components/graph/path.vue | 10 +- .../components/graph/track_line.vue | 2 +- .../monitoring/components/graph_group.vue | 6 +- .../monitoring/services/monitoring_service.js | 19 +- .../monitoring/stores/monitoring_store.js | 12 +- .../monitoring/utils/multiple_time_series.js | 6 +- app/assets/javascripts/mr_notes/index.js | 51 +- .../javascripts/mr_notes/stores/actions.js | 7 + .../javascripts/mr_notes/stores/getters.js | 5 + .../javascripts/mr_notes/stores/index.js | 15 + .../mr_notes/stores/modules/index.js | 12 + .../mr_notes/stores/mutation_types.js | 3 + .../javascripts/mr_notes/stores/mutations.js | 7 + app/assets/javascripts/namespace_select.js | 2 +- .../javascripts/network/branch_graph.js | 57 +- app/assets/javascripts/new_branch_form.js | 4 +- app/assets/javascripts/new_commit_form.js | 2 +- .../javascripts/notebook/cells/code.vue | 4 +- .../javascripts/notebook/cells/code/index.vue | 4 +- .../notebook/cells/output/index.vue | 2 +- app/assets/javascripts/notes.js | 301 +- .../notes/components/comment_form.vue | 88 +- .../notes/components/diff_file_header.vue | 12 +- .../notes/components/diff_with_note.vue | 128 +- .../notes/components/discussion_counter.vue | 23 +- .../components/discussion_locked_widget.vue | 2 +- .../notes/components/note_actions.vue | 48 +- .../notes/components/note_awards_list.vue | 18 +- .../notes/components/note_body.vue | 18 +- .../notes/components/note_edited_text.vue | 19 +- .../notes/components/note_form.vue | 81 +- .../notes/components/note_header.vue | 48 +- .../notes/components/noteable_discussion.vue | 219 +- .../notes/components/noteable_note.vue | 58 +- .../notes/components/notes_app.vue | 112 +- app/assets/javascripts/notes/constants.js | 3 +- app/assets/javascripts/notes/index.js | 84 +- .../javascripts/notes/mixins/autosave.js | 6 +- .../javascripts/notes/mixins/noteable.js | 9 +- .../javascripts/notes/mixins/resolvable.js | 36 +- .../notes/services/notes_service.js | 8 +- .../javascripts/notes/stores/actions.js | 118 +- .../notes/stores/collapse_utils.js | 108 + .../javascripts/notes/stores/getters.js | 77 +- app/assets/javascripts/notes/stores/index.js | 26 +- .../javascripts/notes/stores/modules/index.js | 27 + .../notes/stores/mutation_types.js | 10 +- .../javascripts/notes/stores/mutations.js | 106 +- app/assets/javascripts/notifications_form.js | 2 +- app/assets/javascripts/pages/admin/admin.js | 2 +- .../jobs/index/components/stop_jobs_modal.vue | 2 +- .../index/components/delete_project_modal.vue | 6 +- .../users/components/delete_user_modal.vue | 12 +- .../pages/dashboard/todos/index/todos.js | 4 +- .../javascripts/pages/groups/edit/index.js | 6 + .../components/delete_milestone_modal.vue | 2 +- .../components/promote_milestone_modal.vue | 2 +- .../javascripts/pages/profiles/keys/index.js | 16 + .../pages/profiles/two_factor_auths/index.js | 2 +- .../projects/clusters/gcp/login/index.js | 3 - .../pages/projects/clusters/gcp/new/index.js | 5 + .../pages/projects/clusters/new/index.js | 3 - .../graphs/show/stat_graph_contributors.js | 15 +- .../show/stat_graph_contributors_graph.js | 54 +- .../show/stat_graph_contributors_util.js | 9 +- .../javascripts/pages/projects/index.js | 14 + .../javascripts/pages/projects/init_blob.js | 8 +- .../javascripts/pages/projects/init_form.js | 2 +- .../javascripts/pages/projects/issues/form.js | 2 +- .../javascripts/pages/projects/issues/show.js | 3 +- .../pages/projects/jobs/terminal/index.js | 3 + .../labels/components/promote_label_modal.vue | 2 +- .../merge_requests/init_merge_request.js | 2 +- .../merge_requests/init_merge_request_show.js | 17 +- .../projects/merge_requests/show/index.js | 6 +- .../pages/projects/network/network.js | 2 +- .../components/interval_pattern_input.vue | 22 +- .../javascripts/pages/projects/project.js | 3 +- .../projects/settings/ci_cd/show/index.js | 14 + .../projects/settings/repository/form.js | 4 +- .../components/project_feature_setting.vue | 8 +- .../components/project_setting_row.vue | 2 +- .../permissions/components/settings_panel.vue | 34 +- .../pages/projects/tags/new/index.js | 2 +- .../wikis/components/delete_wiki_modal.vue | 77 + .../javascripts/pages/projects/wikis/index.js | 30 +- .../javascripts/pages/projects/wikis/wikis.js | 11 +- .../javascripts/pages/search/show/search.js | 2 +- .../javascripts/pages/sessions/new/index.js | 3 +- .../pages/sessions/new/oauth_remember_me.js | 3 +- .../sessions/new/signin_tabs_memoizer.js | 5 + .../pages/sessions/new/username_validator.js | 11 +- app/assets/javascripts/pages/snippets/form.js | 10 +- .../pages/users/activity_calendar.js | 5 +- .../javascripts/pages/users/user_tabs.js | 33 +- app/assets/javascripts/pdf/index.vue | 4 +- app/assets/javascripts/pdf/page/index.vue | 2 +- .../components/detailed_metric.vue | 3 +- .../components/performance_bar_app.vue | 3 +- .../components/request_selector.vue | 5 +- .../pipelines/components/async_button.vue | 95 - .../pipelines/components/blank_state.vue | 30 +- .../pipelines/components/empty_state.vue | 38 +- .../components/graph/action_component.vue | 15 +- .../graph/dropdown_job_component.vue | 10 +- .../components/graph/job_component.vue | 19 +- .../components/graph/job_name_component.vue | 40 +- .../graph/stage_column_component.vue | 6 +- .../pipelines/components/header_component.vue | 144 +- .../pipelines/components/nav_controls.vue | 70 +- .../pipelines/components/pipeline_url.vue | 90 +- .../pipelines/components/pipelines.vue | 548 +- .../components/pipelines_actions.vue | 80 +- .../components/pipelines_artifacts.vue | 34 +- .../pipelines/components/pipelines_table.vue | 164 +- .../components/pipelines_table_row.vue | 492 +- .../pipelines/components/stage.vue | 49 +- .../pipelines/components/time_ago.vue | 102 +- .../javascripts/pipelines/mixins/pipelines.js | 13 +- .../pipelines/pipeline_details_bundle.js | 5 +- .../pipelines/pipeline_details_mediator.js | 3 +- .../pipelines/services/pipelines_service.js | 2 +- app/assets/javascripts/preview_markdown.js | 18 +- .../components/delete_account_modal.vue | 12 +- .../account/components/update_username.vue | 16 +- .../profile/add_ssh_key_validation.js | 43 + app/assets/javascripts/profile/gl_crop.js | 23 +- app/assets/javascripts/profile/profile.js | 15 +- app/assets/javascripts/project_find_file.js | 9 +- app/assets/javascripts/project_fork.js | 2 +- app/assets/javascripts/project_import.js | 2 +- .../javascripts/project_label_subscription.js | 28 +- app/assets/javascripts/project_select.js | 7 +- app/assets/javascripts/project_visibility.js | 2 +- .../components/gke_dropdown_mixin.js | 71 + .../components/gke_machine_type_dropdown.vue | 144 + .../components/gke_project_id_dropdown.vue | 203 + .../components/gke_zone_dropdown.vue | 118 + .../gke_cluster_dropdowns/constants.js | 11 + .../projects/gke_cluster_dropdowns/index.js | 88 + .../gke_cluster_dropdowns/store/actions.js | 95 + .../gke_cluster_dropdowns/store/getters.js | 3 + .../gke_cluster_dropdowns/store/index.js | 18 + .../store/mutation_types.js | 8 + .../gke_cluster_dropdowns/store/mutations.js | 28 + .../gke_cluster_dropdowns/store/state.js | 13 + .../javascripts/projects/project_new.js | 8 +- .../commit_pipeline_status_component.vue | 6 +- .../projects_dropdown/components/app.vue | 158 - .../components/projects_list_frequent.vue | 57 - .../components/projects_list_item.vue | 116 - .../components/projects_list_search.vue | 63 - .../projects_dropdown/components/search.vue | 65 - .../projects_dropdown/constants.js | 10 - .../javascripts/projects_dropdown/index.js | 66 - .../service/projects_service.js | 137 - .../projects_dropdown/store/projects_store.js | 33 - .../prometheus_metrics/prometheus_metrics.js | 4 +- .../protected_branch_create.js | 34 - app/assets/javascripts/raven/raven_config.js | 2 +- .../javascripts/registry/components/app.vue | 2 +- .../components/collapsible_container.vue | 19 +- .../registry/components/table_registry.vue | 20 +- app/assets/javascripts/registry/index.js | 2 +- .../javascripts/registry/stores/actions.js | 20 +- app/assets/javascripts/right_sidebar.js | 4 +- app/assets/javascripts/search_autocomplete.js | 10 +- app/assets/javascripts/settings_panels.js | 4 +- .../javascripts/shared/milestones/form.js | 11 +- app/assets/javascripts/shortcuts_find_file.js | 4 +- app/assets/javascripts/shortcuts_issuable.js | 24 +- .../javascripts/shortcuts_navigation.js | 6 +- .../components/assignees/assignee_title.vue | 4 +- .../components/assignees/assignees.vue | 31 +- .../assignees/sidebar_assignees.vue | 4 +- .../confidential_issue_sidebar.vue | 15 +- .../components/confidential/edit_form.vue | 2 +- .../sidebar/components/lock/edit_form.vue | 6 +- .../components/lock/lock_issue_sidebar.vue | 15 +- .../components/participants/participants.vue | 9 +- .../subscriptions/subscriptions.vue | 5 +- .../time_tracking/collapsed_state.vue | 5 +- .../time_tracking/comparison_pane.vue | 18 +- .../components/time_tracking/help_state.vue | 2 +- .../components/time_tracking/time_tracker.vue | 6 +- .../javascripts/sidebar/mount_sidebar.js | 1 - .../javascripts/sidebar/sidebar_mediator.js | 2 +- app/assets/javascripts/single_file_diff.js | 4 +- app/assets/javascripts/smart_interval.js | 9 +- .../javascripts/snippet/snippet_embed.js | 2 +- app/assets/javascripts/syntax_highlight.js | 2 +- .../javascripts/test_utils/simulate_drag.js | 4 +- app/assets/javascripts/tree.js | 2 +- app/assets/javascripts/u2f/authenticate.js | 8 +- app/assets/javascripts/user_callout.js | 9 +- app/assets/javascripts/users_select.js | 14 +- .../components/deployment.vue | 95 +- .../components/memory_usage.vue | 2 +- .../components/mr_widget_author.vue | 6 +- .../components/mr_widget_author_time.vue | 13 +- .../components/mr_widget_header.vue | 202 +- .../components/mr_widget_maintainer_edit.vue | 20 - .../components/mr_widget_pipeline.vue | 108 +- .../components/mr_widget_status_icon.vue | 3 +- .../source_branch_removal_status.vue | 2 +- .../states/mr_widget_auto_merge_failed.vue | 4 +- .../components/states/mr_widget_checking.vue | 2 +- .../components/states/mr_widget_closed.vue | 4 +- .../components/states/mr_widget_conflicts.vue | 6 +- .../states/mr_widget_failed_to_merge.vue | 14 +- ...mr_widget_merge_when_pipeline_succeeds.vue | 16 +- .../components/states/mr_widget_merged.vue | 36 +- .../states/mr_widget_missing_branch.vue | 4 +- .../states/mr_widget_not_allowed.vue | 2 +- .../states/mr_widget_pipeline_blocked.vue | 2 +- .../components/states/mr_widget_rebase.vue | 2 +- .../states/mr_widget_squash_before_merge.vue | 63 + .../components/states/nothing_to_merge.vue | 4 +- .../components/states/pipeline_failed.vue | 2 +- .../components/states/ready_to_merge.vue | 51 +- .../components/states/sha_mismatch.vue | 2 +- .../states/unresolved_discussions.vue | 4 +- .../components/states/work_in_progress.vue | 6 +- .../vue_merge_request_widget/dependencies.js | 5 +- ...idget_options.js => mr_widget_options.vue} | 150 +- .../stores/mr_widget_store.js | 8 +- .../vue_shared/components/ci_badge_link.vue | 2 +- .../vue_shared/components/ci_icon.vue | 23 +- .../components/clipboard_button.vue | 6 +- .../vue_shared/components/commit.vue | 12 +- .../viewers/download_viewer.vue | 9 +- .../content_viewer/viewers/image_viewer.vue | 45 +- .../viewers/markdown_viewer.vue | 2 +- .../components/deprecated_modal.vue | 24 +- .../components/diff_viewer/constants.js | 12 + .../components/diff_viewer/diff_viewer.vue | 74 + .../viewers/download_diff_viewer.vue | 69 + .../viewers/image_diff/onion_skin_viewer.vue | 160 + .../viewers/image_diff/swipe_viewer.vue | 158 + .../viewers/image_diff/two_up_viewer.vue | 41 + .../diff_viewer/viewers/image_diff_viewer.vue | 109 + .../components/dropdown/dropdown_button.vue | 55 + .../dropdown_hidden_input.vue | 8 +- .../dropdown/dropdown_search_input.vue | 46 + .../vue_shared/components/expand_button.vue | 17 +- .../vue_shared/components/file_icon.vue | 2 +- .../components/file_icon/file_icon_map.js | 2 +- .../vue_shared/components/gl_modal.vue | 35 +- .../components/header_ci_component.vue | 18 +- .../vue_shared/components/identicon.vue | 4 +- .../components/issue/issue_warning.vue | 2 +- .../components/lib/utils/dom_utils.js | 5 + .../vue_shared/components/loading_button.vue | 20 +- .../vue_shared/components/loading_icon.vue | 4 +- .../vue_shared/components/markdown/field.vue | 44 +- .../vue_shared/components/markdown/header.vue | 20 +- .../components/markdown/toolbar.vue | 2 +- .../components/markdown/toolbar_button.vue | 8 +- .../vue_shared/components/memory_graph.vue | 4 +- .../vue_shared/components/navigation_tabs.vue | 4 +- .../components/notes/placeholder_note.vue | 2 +- .../components/notes/skeleton_note.vue | 13 +- .../components/notes/system_note.vue | 141 +- .../vue_shared/components/panel_resizer.vue | 2 +- .../components/project_avatar/image.vue | 2 +- .../vue_shared/components/recaptcha_modal.vue | 4 +- .../components/sidebar/date_picker.vue | 6 +- .../components/sidebar/labels_select/base.vue | 6 +- .../sidebar/labels_select/dropdown_button.vue | 6 +- .../labels_select/dropdown_create_label.vue | 14 +- .../sidebar/labels_select/dropdown_footer.vue | 2 +- .../sidebar/labels_select/dropdown_header.vue | 2 +- .../labels_select/dropdown_search_input.vue | 2 +- .../sidebar/labels_select/dropdown_title.vue | 2 +- .../sidebar/labels_select/dropdown_value.vue | 15 +- .../dropdown_value_collapsed.vue | 2 +- .../components/sidebar/toggle_sidebar.vue | 10 +- .../components/skeleton_loading_container.vue | 2 +- .../components/stacked_progress_bar.vue | 14 +- .../components/table_pagination.vue | 18 +- .../vue_shared/components/tabs/tab.vue | 47 + .../vue_shared/components/tabs/tabs.js | 76 + .../components/time_ago_tooltip.vue | 4 +- .../vue_shared/components/toggle_button.vue | 10 +- .../user_avatar/user_avatar_image.vue | 3 +- .../user_avatar/user_avatar_link.vue | 6 +- .../vue_shared/directives/popover.js | 2 +- .../vue_shared/directives/tooltip.js | 8 +- .../javascripts/vue_shared/models/assignee.js | 13 + .../javascripts/vue_shared/translate.js | 6 +- .../vue_shared/vue_resource_interceptor.js | 2 +- app/assets/javascripts/zen_mode.js | 2 +- app/assets/stylesheets/bootstrap.scss | 37 + .../stylesheets/bootstrap_migration.scss | 341 + app/assets/stylesheets/errors.scss | 120 + app/assets/stylesheets/framework.scss | 5 +- .../stylesheets/framework/animations.scss | 9 + app/assets/stylesheets/framework/avatar.scss | 2 +- app/assets/stylesheets/framework/awards.scss | 4 + app/assets/stylesheets/framework/badges.scss | 2 +- app/assets/stylesheets/framework/banner.scss | 2 +- app/assets/stylesheets/framework/blank.scss | 8 +- app/assets/stylesheets/framework/blocks.scss | 15 +- .../framework/broadcast_messages.scss | 6 + app/assets/stylesheets/framework/buttons.scss | 25 +- .../stylesheets/framework/calendar.scss | 2 +- .../framework/ci_variable_list.scss | 12 +- app/assets/stylesheets/framework/common.scss | 21 +- .../framework/contextual_sidebar.scss | 65 +- .../stylesheets/framework/dropdowns.scss | 110 +- app/assets/stylesheets/framework/emojis.scss | 1 + .../framework/feature_highlight.scss | 2 +- app/assets/stylesheets/framework/files.scss | 84 +- app/assets/stylesheets/framework/filters.scss | 21 +- app/assets/stylesheets/framework/flash.scss | 30 +- app/assets/stylesheets/framework/forms.scss | 64 +- app/assets/stylesheets/framework/gfm.scss | 1 + .../stylesheets/framework/gitlab_theme.scss | 206 +- app/assets/stylesheets/framework/header.scss | 93 +- app/assets/stylesheets/framework/icons.scss | 24 + .../stylesheets/framework/issue_box.scss | 7 +- app/assets/stylesheets/framework/layout.scss | 14 +- app/assets/stylesheets/framework/lists.scss | 249 +- .../stylesheets/framework/markdown_area.scss | 12 +- app/assets/stylesheets/framework/mixins.scss | 39 + app/assets/stylesheets/framework/mobile.scss | 6 +- app/assets/stylesheets/framework/modal.scss | 17 +- .../stylesheets/framework/page_header.scss | 6 +- .../stylesheets/framework/pagination.scss | 90 +- app/assets/stylesheets/framework/panels.scss | 17 +- .../framework/responsive_tables.scss | 22 +- .../secondary_navigation_elements.scss | 48 +- app/assets/stylesheets/framework/sidebar.scss | 6 +- .../stylesheets/framework/snippets.scss | 17 +- app/assets/stylesheets/framework/tables.scss | 92 +- app/assets/stylesheets/framework/tabs.scss | 1 + app/assets/stylesheets/framework/terms.scss | 8 +- .../stylesheets/framework/timeline.scss | 4 +- app/assets/stylesheets/framework/toggle.scss | 6 +- .../stylesheets/framework/tw_bootstrap.scss | 201 - .../framework/tw_bootstrap_variables.scss | 199 - .../stylesheets/framework/typography.scss | 44 +- .../stylesheets/framework/variables.scss | 91 +- app/assets/stylesheets/framework/wells.scss | 10 +- app/assets/stylesheets/highlight/dark.scss | 4 +- app/assets/stylesheets/highlight/monokai.scss | 4 +- .../stylesheets/highlight/solarized_dark.scss | 4 +- .../highlight/solarized_light.scss | 4 +- .../stylesheets/highlight/white_base.scss | 4 +- .../mailers/highlighted_diff_email.scss | 3 +- app/assets/stylesheets/pages/boards.scss | 53 +- app/assets/stylesheets/pages/builds.scss | 27 +- app/assets/stylesheets/pages/clusters.scss | 8 +- app/assets/stylesheets/pages/commits.scss | 38 +- .../stylesheets/pages/convdev_index.scss | 28 +- .../stylesheets/pages/cycle_analytics.scss | 16 +- app/assets/stylesheets/pages/detail_page.scss | 9 +- app/assets/stylesheets/pages/diff.scss | 214 +- app/assets/stylesheets/pages/editor.scss | 24 +- .../stylesheets/pages/environments.scss | 38 +- app/assets/stylesheets/pages/events.scss | 4 +- app/assets/stylesheets/pages/groups.scss | 246 +- app/assets/stylesheets/pages/help.scss | 4 +- app/assets/stylesheets/pages/issuable.scss | 43 +- app/assets/stylesheets/pages/issues.scss | 12 +- app/assets/stylesheets/pages/labels.scss | 232 +- app/assets/stylesheets/pages/login.scss | 6 +- app/assets/stylesheets/pages/members.scss | 90 +- .../stylesheets/pages/merge_conflicts.scss | 10 +- .../stylesheets/pages/merge_requests.scss | 223 +- app/assets/stylesheets/pages/milestone.scss | 44 +- app/assets/stylesheets/pages/note_form.scss | 40 +- app/assets/stylesheets/pages/notes.scss | 103 +- .../stylesheets/pages/notifications.scss | 2 +- .../stylesheets/pages/pipeline_schedules.scss | 2 +- app/assets/stylesheets/pages/pipelines.scss | 262 +- app/assets/stylesheets/pages/profile.scss | 14 +- .../pages/profiles/preferences.scss | 79 +- app/assets/stylesheets/pages/projects.scss | 115 +- app/assets/stylesheets/pages/repo.scss | 439 +- app/assets/stylesheets/pages/runners.scss | 2 +- app/assets/stylesheets/pages/search.scss | 18 +- app/assets/stylesheets/pages/settings.scss | 67 +- .../stylesheets/pages/settings_ci_cd.scss | 9 + app/assets/stylesheets/pages/stat_graph.scss | 13 +- app/assets/stylesheets/pages/status.scss | 2 +- app/assets/stylesheets/pages/todos.scss | 12 +- app/assets/stylesheets/pages/tree.scss | 11 +- app/assets/stylesheets/pages/wiki.scss | 9 +- app/assets/stylesheets/performance_bar.scss | 12 +- app/assets/stylesheets/print.scss | 11 +- .../admin/appearances_controller.rb | 9 + .../admin/application_settings_controller.rb | 2 +- app/controllers/admin/dashboard_controller.rb | 4 + app/controllers/admin/groups_controller.rb | 4 +- app/controllers/admin/hooks_controller.rb | 5 +- .../admin/runner_projects_controller.rb | 4 +- app/controllers/admin/users_controller.rb | 4 +- app/controllers/application_controller.rb | 21 +- app/controllers/boards/issues_controller.rb | 2 +- app/controllers/boards/lists_controller.rb | 14 +- .../concerns/accepts_pending_invitations.rb | 15 + app/controllers/concerns/group_tree.rb | 40 +- app/controllers/concerns/internal_redirect.rb | 4 + app/controllers/concerns/issuable_actions.rb | 32 +- .../concerns/issuable_collections.rb | 7 +- app/controllers/concerns/issues_action.rb | 7 +- app/controllers/concerns/issues_calendar.rb | 24 + app/controllers/concerns/notes_actions.rb | 6 +- app/controllers/concerns/preview_markdown.rb | 3 + app/controllers/concerns/send_file_upload.rb | 4 + app/controllers/concerns/uploads_actions.rb | 30 +- app/controllers/confirmations_controller.rb | 4 + .../dashboard/projects_controller.rb | 5 +- app/controllers/dashboard_controller.rb | 2 +- app/controllers/graphql_controller.rb | 45 + app/controllers/groups/boards_controller.rb | 11 +- .../groups/group_members_controller.rb | 15 +- app/controllers/groups/labels_controller.rb | 23 +- .../groups/milestones_controller.rb | 5 +- .../groups/settings/badges_controller.rb | 4 +- .../groups/shared_projects_controller.rb | 33 + app/controllers/groups/uploads_controller.rb | 4 +- app/controllers/health_controller.rb | 3 +- app/controllers/import/base_controller.rb | 10 +- .../import/bitbucket_controller.rb | 2 +- app/controllers/import/fogbugz_controller.rb | 2 +- app/controllers/import/github_controller.rb | 2 +- app/controllers/import/gitlab_controller.rb | 2 +- .../import/google_code_controller.rb | 2 +- app/controllers/metrics_controller.rb | 2 +- .../omniauth_callbacks_controller.rb | 8 +- app/controllers/profiles/keys_controller.rb | 2 +- app/controllers/profiles_controller.rb | 6 +- .../projects/artifacts_controller.rb | 9 + .../autocomplete_sources_controller.rb | 2 +- app/controllers/projects/blob_controller.rb | 70 +- app/controllers/projects/boards_controller.rb | 9 +- .../projects/branches_controller.rb | 5 +- .../clusters/applications_controller.rb | 28 +- .../projects/clusters/gcp_controller.rb | 102 - .../projects/clusters/user_controller.rb | 40 - .../projects/clusters_controller.rb | 126 +- app/controllers/projects/commit_controller.rb | 8 +- .../projects/commits_controller.rb | 14 + .../projects/discussions_controller.rb | 9 +- .../projects/environments_controller.rb | 20 + app/controllers/projects/hooks_controller.rb | 3 +- app/controllers/projects/issues_controller.rb | 9 +- app/controllers/projects/jobs_controller.rb | 30 +- .../projects/lfs_api_controller.rb | 7 +- .../projects/lfs_storage_controller.rb | 2 +- .../merge_requests/application_controller.rb | 3 +- .../merge_requests/creations_controller.rb | 4 + .../merge_requests/diffs_controller.rb | 25 +- .../projects/merge_requests_controller.rb | 50 +- .../projects/milestones_controller.rb | 11 +- app/controllers/projects/notes_controller.rb | 13 - .../projects/pipelines_controller.rb | 31 +- .../projects/runner_projects_controller.rb | 3 +- .../projects/services_controller.rb | 6 +- .../projects/settings/badges_controller.rb | 4 +- .../projects/settings/ci_cd_controller.rb | 6 +- .../settings/integrations_controller.rb | 9 +- .../projects/uploads_controller.rb | 4 +- app/controllers/projects/wikis_controller.rb | 9 +- app/controllers/projects_controller.rb | 29 +- app/controllers/registrations_controller.rb | 31 +- app/controllers/sessions_controller.rb | 49 +- app/controllers/users/terms_controller.rb | 5 + app/finders/events_finder.rb | 1 + app/finders/group_members_finder.rb | 26 +- app/finders/group_projects_finder.rb | 26 +- app/finders/issuable_finder.rb | 52 +- app/finders/issues_finder.rb | 12 +- app/finders/joined_groups_finder.rb | 19 +- app/finders/members_finder.rb | 4 +- app/finders/merge_requests_finder.rb | 8 +- app/finders/notes_finder.rb | 2 +- app/finders/personal_projects_finder.rb | 2 +- app/finders/pipelines_finder.rb | 9 +- app/finders/snippets_finder.rb | 15 +- app/finders/user_recent_events_finder.rb | 1 + app/graphql/functions/base_function.rb | 4 + app/graphql/functions/echo.rb | 13 + app/graphql/gitlab_schema.rb | 11 + app/graphql/mutations/.keep | 0 app/graphql/resolvers/base_resolver.rb | 4 + .../resolvers/concerns/resolves_pipelines.rb | 23 + app/graphql/resolvers/full_path_resolver.rb | 19 + .../merge_request_pipelines_resolver.rb | 16 + .../resolvers/merge_request_resolver.rb | 20 + .../resolvers/project_pipelines_resolver.rb | 11 + app/graphql/resolvers/project_resolver.rb | 11 + app/graphql/types/base_enum.rb | 4 + app/graphql/types/base_field.rb | 5 + app/graphql/types/base_input_object.rb | 4 + app/graphql/types/base_interface.rb | 5 + app/graphql/types/base_object.rb | 8 + app/graphql/types/base_scalar.rb | 4 + app/graphql/types/base_union.rb | 4 + app/graphql/types/ci/pipeline_status_enum.rb | 9 + app/graphql/types/ci/pipeline_type.rb | 31 + app/graphql/types/merge_request_type.rb | 55 + app/graphql/types/mutation_type.rb | 7 + .../permission_types/base_permission_type.rb | 38 + .../types/permission_types/ci/pipeline.rb | 11 + .../types/permission_types/merge_request.rb | 17 + app/graphql/types/permission_types/project.rb | 20 + app/graphql/types/project_type.rb | 79 + app/graphql/types/query_type.rb | 14 + app/graphql/types/time_type.rb | 14 + app/helpers/application_helper.rb | 7 +- app/helpers/application_settings_helper.rb | 9 +- app/helpers/auto_devops_helper.rb | 9 + app/helpers/avatars_helper.rb | 2 +- app/helpers/blob_helper.rb | 5 +- app/helpers/calendar_helper.rb | 8 + app/helpers/ci_status_helper.rb | 10 +- app/helpers/clusters_helper.rb | 1 + app/helpers/commits_helper.rb | 12 +- app/helpers/count_helper.rb | 8 +- app/helpers/events_helper.rb | 2 +- app/helpers/favicon_helper.rb | 7 + app/helpers/groups_helper.rb | 6 +- app/helpers/issuables_helper.rb | 14 +- app/helpers/labels_helper.rb | 10 +- app/helpers/markup_helper.rb | 4 +- app/helpers/merge_requests_helper.rb | 17 +- app/helpers/milestones_helper.rb | 6 +- app/helpers/nav_helper.rb | 1 + app/helpers/notes_helper.rb | 17 +- app/helpers/page_layout_helper.rb | 5 +- app/helpers/projects_helper.rb | 83 +- app/helpers/rss_helper.rb | 2 +- app/helpers/search_helper.rb | 12 +- app/helpers/submodule_helper.rb | 8 +- app/helpers/users_helper.rb | 8 + app/helpers/webpack_helper.rb | 2 - app/helpers/workhorse_helper.rb | 2 +- app/mailers/emails/merge_requests.rb | 18 +- .../mailers/previews/devise_mailer_preview.rb | 0 .../email_rejection_mailer_preview.rb | 0 .../mailers/previews/notify_preview.rb | 2 +- .../repository_check_mailer_preview.rb | 0 app/models/appearance.rb | 19 +- app/models/application_setting.rb | 100 +- app/models/application_setting/term.rb | 6 + app/models/badge.rb | 2 +- app/models/blob_viewer/package_json.rb | 3 +- app/models/board.rb | 4 + app/models/ci/build.rb | 38 +- app/models/ci/build_runner_session.rb | 25 + app/models/ci/build_trace_chunk.rb | 153 +- app/models/ci/build_trace_chunks/database.rb | 29 + app/models/ci/build_trace_chunks/fog.rb | 59 + app/models/ci/build_trace_chunks/redis.rb | 51 + app/models/ci/group.rb | 8 + app/models/ci/legacy_stage.rb | 6 +- app/models/ci/pipeline.rb | 85 +- app/models/ci/runner.rb | 83 +- app/models/ci/runner_namespace.rb | 6 +- app/models/ci/runner_project.rb | 4 +- app/models/ci/stage.rb | 32 +- app/models/clusters/applications/jupyter.rb | 92 + .../clusters/applications/prometheus.rb | 3 +- app/models/clusters/applications/runner.rb | 5 +- app/models/clusters/cluster.rb | 8 +- app/models/clusters/platforms/kubernetes.rb | 4 +- app/models/clusters/providers/gcp.rb | 2 +- app/models/commit.rb | 28 +- app/models/commit_status.rb | 10 +- app/models/concerns/atomic_internal_id.rb | 16 +- app/models/concerns/avatarable.rb | 47 + .../batch_destroy_dependent_associations.rb | 28 + app/models/concerns/cache_markdown_field.rb | 24 +- app/models/concerns/cacheable_attributes.rb | 74 + app/models/concerns/diff_file.rb | 9 + app/models/concerns/enum_with_nil.rb | 33 + app/models/concerns/group_descendant.rb | 4 +- app/models/concerns/has_status.rb | 2 + app/models/concerns/has_variable.rb | 2 +- app/models/concerns/iid_routes.rb | 9 + app/models/concerns/issuable.rb | 6 +- .../project_features_compatibility.rb | 2 +- app/models/concerns/protected_ref_access.rb | 4 +- app/models/concerns/reactive_caching.rb | 18 +- app/models/concerns/redis_cacheable.rb | 19 +- app/models/concerns/resolvable_note.rb | 2 +- app/models/concerns/routable.rb | 4 +- app/models/concerns/sortable.rb | 4 +- app/models/concerns/time_trackable.rb | 4 + app/models/concerns/with_uploads.rb | 43 + app/models/deployment.rb | 1 + app/models/diff_note.rb | 67 +- app/models/discussion.rb | 4 + app/models/environment.rb | 2 +- app/models/event.rb | 22 +- app/models/generic_commit_status.rb | 2 +- app/models/group.rb | 62 +- app/models/hooks/system_hook.rb | 5 + app/models/hooks/web_hook.rb | 9 +- app/models/hooks/web_hook_log.rb | 5 + app/models/import_export_upload.rb | 13 + app/models/internal_id.rb | 26 +- app/models/issue.rb | 22 +- app/models/label.rb | 19 +- app/models/list.rb | 18 +- app/models/member.rb | 11 + app/models/merge_request.rb | 88 +- app/models/merge_request_diff.rb | 27 + app/models/merge_request_diff_file.rb | 7 +- app/models/milestone.rb | 4 +- app/models/namespace.rb | 6 +- app/models/note.rb | 36 +- app/models/note_diff_file.rb | 7 + app/models/notification_recipient.rb | 31 +- app/models/pages_domain.rb | 2 +- app/models/personal_snippet.rb | 1 + app/models/project.rb | 123 +- app/models/project_auto_devops.rb | 31 + app/models/project_import_data.rb | 2 +- app/models/project_services/bamboo_service.rb | 24 +- .../project_services/bugzilla_service.rb | 2 +- .../project_services/buildkite_service.rb | 2 +- .../chat_message/base_message.rb | 7 +- .../chat_message/pipeline_message.rb | 4 - .../chat_notification_service.rb | 3 +- .../custom_issue_tracker_service.rb | 2 +- .../project_services/drone_ci_service.rb | 4 +- .../project_services/external_wiki_service.rb | 2 +- .../project_services/gemnasium_service.rb | 20 +- .../gitlab_issue_tracker_service.rb | 2 +- .../project_services/hipchat_service.rb | 2 +- app/models/project_services/jira_service.rb | 6 +- .../project_services/kubernetes_service.rb | 4 +- .../microsoft_teams_service.rb | 2 +- .../project_services/mock_ci_service.rb | 2 +- .../project_services/prometheus_service.rb | 2 +- .../project_services/redmine_service.rb | 2 +- .../project_services/teamcity_service.rb | 2 +- app/models/project_team.rb | 2 +- app/models/project_wiki.rb | 4 - app/models/protected_branch.rb | 2 +- app/models/remote_mirror.rb | 5 +- app/models/repository.rb | 91 +- app/models/service.rb | 8 +- app/models/system_note_metadata.rb | 5 + app/models/term_agreement.rb | 2 + app/models/timelog.rb | 9 +- app/models/user.rb | 97 +- app/policies/ci/build_policy.rb | 15 + app/policies/ci/pipeline_policy.rb | 8 + app/policies/ci/runner_policy.rb | 15 +- app/policies/group_policy.rb | 13 + app/policies/project_policy.rb | 7 +- app/presenters/commit_status_presenter.rb | 3 +- app/presenters/merge_request_presenter.rb | 23 + app/presenters/project_presenter.rb | 5 +- app/serializers/blob_entity.rb | 4 +- app/serializers/build_details_entity.rb | 2 +- app/serializers/cluster_application_entity.rb | 1 + app/serializers/diff_file_entity.rb | 128 +- app/serializers/diffs_entity.rb | 65 + app/serializers/diffs_serializer.rb | 3 + app/serializers/discussion_entity.rb | 49 +- app/serializers/group_child_entity.rb | 2 +- app/serializers/job_entity.rb | 2 +- app/serializers/merge_request_basic_entity.rb | 4 + app/serializers/merge_request_diff_entity.rb | 46 + app/serializers/merge_request_user_entity.rb | 24 + .../merge_request_widget_entity.rb | 17 +- app/serializers/note_entity.rb | 30 +- app/serializers/pipeline_details_entity.rb | 2 +- app/serializers/pipeline_entity.rb | 6 +- app/serializers/pipeline_serializer.rb | 17 +- app/serializers/runner_entity.rb | 2 +- app/serializers/status_entity.rb | 11 +- .../application_settings/update_service.rb | 14 + app/services/applications/create_service.rb | 5 +- app/services/base_count_service.rb | 6 +- app/services/base_service.rb | 2 +- app/services/boards/issues/create_service.rb | 6 +- app/services/boards/issues/list_service.rb | 29 +- app/services/boards/issues/move_service.rb | 6 +- app/services/boards/lists/create_service.rb | 20 +- .../check_gcp_project_billing_service.rb | 11 - app/services/ci/register_job_service.rb | 31 +- .../check_installation_progress_service.rb | 6 +- .../clusters/applications/install_service.rb | 8 +- .../schedule_installation_service.rb | 17 +- app/services/commits/create_service.rb | 2 +- .../concerns/exclusive_lease_guard.rb | 2 +- .../concerns/issues/resolve_discussions.rb | 1 - app/services/create_branch_service.rb | 2 +- app/services/delete_branch_service.rb | 2 +- .../import_export_clean_up_service.rb | 11 +- app/services/issuable_base_service.rb | 5 +- app/services/issues/base_service.rb | 5 +- app/services/issues/move_service.rb | 3 +- app/services/keys/base_service.rb | 2 +- app/services/keys/destroy_service.rb | 12 + app/services/labels/find_or_create_service.rb | 8 +- app/services/lfs/unlock_file_service.rb | 8 +- app/services/merge_requests/base_service.rb | 4 +- .../create_from_issue_service.rb | 4 +- .../delete_non_latest_diffs_service.rb | 18 + .../merge_requests/ff_merge_service.rb | 2 +- .../merge_request_diff_cache_service.rb | 17 - app/services/merge_requests/merge_service.rb | 19 +- .../merge_when_pipeline_succeeds_service.rb | 6 +- .../merge_requests/post_merge_service.rb | 7 +- app/services/merge_requests/rebase_service.rb | 8 + .../merge_requests/refresh_service.rb | 8 +- .../merge_requests/reload_diffs_service.rb | 43 + app/services/merge_requests/squash_service.rb | 28 + app/services/metrics_service.rb | 20 +- app/services/milestones/base_service.rb | 1 + .../notification_recipient_service.rb | 25 + app/services/notification_service.rb | 24 + app/services/pages_service.rb | 15 - app/services/preview_markdown_service.rb | 7 +- app/services/projects/autocomplete_service.rb | 32 +- app/services/projects/count_service.rb | 6 +- app/services/projects/create_service.rb | 18 +- app/services/projects/destroy_service.rb | 34 +- app/services/projects/import_service.rb | 33 +- .../lfs_download_link_list_service.rb | 93 + .../lfs_pointers/lfs_download_service.rb | 58 + .../lfs_pointers/lfs_import_service.rb | 92 + .../projects/lfs_pointers/lfs_link_service.rb | 29 + .../projects/lfs_pointers/lfs_list_service.rb | 19 + .../projects/open_issues_count_service.rb | 70 +- app/services/projects/participants_service.rb | 8 +- app/services/projects/update_service.rb | 6 +- .../quick_actions/interpret_service.rb | 11 + app/services/tags/create_service.rb | 2 +- app/services/tags/destroy_service.rb | 2 +- app/services/test_hooks/project_service.rb | 4 +- app/services/todo_service.rb | 30 +- app/services/upload_service.rb | 6 +- app/services/validate_new_branch_service.rb | 2 +- app/services/web_hook_service.rb | 2 +- app/uploaders/attachment_uploader.rb | 2 + app/uploaders/avatar_uploader.rb | 2 + app/uploaders/favicon_uploader.rb | 15 + app/uploaders/file_mover.rb | 2 + app/uploaders/file_uploader.rb | 50 +- app/uploaders/gitlab_uploader.rb | 2 + app/uploaders/import_export_uploader.rb | 15 + app/uploaders/job_artifact_uploader.rb | 2 + app/uploaders/legacy_artifact_uploader.rb | 2 + app/uploaders/lfs_object_uploader.rb | 2 + app/uploaders/namespace_file_uploader.rb | 2 + app/uploaders/object_storage.rb | 78 +- app/uploaders/personal_file_uploader.rb | 2 + app/uploaders/records_uploads.rb | 4 +- app/uploaders/uploader_helper.rb | 4 +- app/uploaders/workhorse.rb | 2 + app/validators/abstract_path_validator.rb | 2 + app/validators/addressable_url_validator.rb | 45 - .../certificate_fingerprint_validator.rb | 2 + app/validators/certificate_key_validator.rb | 2 + app/validators/certificate_validator.rb | 2 + app/validators/cluster_name_validator.rb | 2 + app/validators/color_validator.rb | 2 + app/validators/cron_timezone_validator.rb | 2 + app/validators/cron_validator.rb | 2 + app/validators/duration_validator.rb | 2 + app/validators/email_validator.rb | 2 + app/validators/importable_url_validator.rb | 11 - app/validators/key_restriction_validator.rb | 2 + app/validators/line_code_validator.rb | 2 + app/validators/namespace_name_validator.rb | 2 + app/validators/namespace_path_validator.rb | 2 + app/validators/project_path_validator.rb | 2 + app/validators/public_url_validator.rb | 28 + app/validators/top_level_group_validator.rb | 2 + app/validators/url_placeholder_validator.rb | 32 - app/validators/url_validator.rb | 64 +- .../variable_duplicates_validator.rb | 6 +- .../abuse_report_mailer/notify.html.haml | 2 +- app/views/abuse_reports/new.html.haml | 12 +- .../abuse_reports/_abuse_report.html.haml | 6 +- app/views/admin/abuse_reports/index.html.haml | 2 +- app/views/admin/appearances/_form.html.haml | 47 +- .../application_settings/_abuse.html.haml | 11 +- .../_account_and_limit.html.haml | 50 +- .../_background_jobs.html.haml | 33 +- .../application_settings/_ci_cd.html.haml | 66 +- .../application_settings/_email.html.haml | 36 +- .../application_settings/_gitaly.html.haml | 35 +- .../application_settings/_help_page.html.haml | 25 +- .../application_settings/_influx.html.haml | 90 +- .../application_settings/_ip_limits.html.haml | 71 +- .../application_settings/_koding.html.haml | 32 +- .../application_settings/_logging.html.haml | 44 +- .../application_settings/_outbound.html.haml | 11 +- .../application_settings/_pages.html.haml | 28 +- .../_performance.html.haml | 25 +- .../_performance_bar.html.haml | 16 +- .../application_settings/_plantuml.html.haml | 24 +- .../_prometheus.html.haml | 25 +- .../application_settings/_realtime.html.haml | 23 +- .../application_settings/_registry.html.haml | 7 +- .../_repository_check.html.haml | 86 +- .../_repository_mirrors_form.html.haml | 19 +- .../_repository_storage.html.haml | 79 +- .../application_settings/_signin.html.haml | 82 +- .../application_settings/_signup.html.haml | 80 +- .../application_settings/_spam.html.haml | 82 +- .../application_settings/_terminal.html.haml | 13 +- .../application_settings/_terms.html.haml | 27 +- .../_third_party_offers.html.haml | 13 + .../application_settings/_usage.html.haml | 56 +- .../_visibility_and_access.html.haml | 87 +- .../admin/application_settings/show.html.haml | 24 +- app/views/admin/applications/_form.html.haml | 24 +- app/views/admin/applications/show.html.haml | 2 +- .../admin/background_jobs/show.html.haml | 8 +- .../admin/broadcast_messages/_form.html.haml | 26 +- .../admin/broadcast_messages/index.html.haml | 4 +- .../_card.html.haml | 20 +- .../_disabled.html.haml | 2 +- .../_no_data.html.haml | 2 +- .../show.html.haml | 4 +- app/views/admin/dashboard/index.html.haml | 85 +- app/views/admin/deploy_keys/edit.html.haml | 2 +- app/views/admin/deploy_keys/index.html.haml | 4 +- app/views/admin/deploy_keys/new.html.haml | 2 +- .../admin/gitaly_servers/index.html.haml | 4 +- app/views/admin/groups/_form.html.haml | 21 +- app/views/admin/groups/_group.html.haml | 7 +- app/views/admin/groups/show.html.haml | 64 +- app/views/admin/health_check/show.html.haml | 8 +- app/views/admin/hook_logs/_index.html.haml | 4 +- app/views/admin/hook_logs/show.html.haml | 3 +- app/views/admin/hooks/_form.html.haml | 18 +- app/views/admin/hooks/edit.html.haml | 4 +- app/views/admin/hooks/index.html.haml | 8 +- app/views/admin/identities/_form.html.haml | 12 +- .../admin/identities/_identity.html.haml | 10 +- app/views/admin/identities/edit.html.haml | 4 +- app/views/admin/identities/index.html.haml | 10 +- app/views/admin/identities/new.html.haml | 4 +- app/views/admin/labels/_form.html.haml | 27 +- app/views/admin/labels/_label.html.haml | 6 +- app/views/admin/labels/destroy.js.haml | 2 +- app/views/admin/labels/edit.html.haml | 8 +- app/views/admin/labels/index.html.haml | 12 +- app/views/admin/labels/new.html.haml | 4 +- app/views/admin/logs/show.html.haml | 8 +- app/views/admin/projects/_projects.html.haml | 4 +- app/views/admin/projects/index.html.haml | 4 +- app/views/admin/projects/show.html.haml | 64 +- .../admin/requests_profiles/index.html.haml | 4 +- app/views/admin/runners/_runner.html.haml | 20 +- app/views/admin/runners/index.html.haml | 20 +- app/views/admin/runners/show.html.haml | 14 +- app/views/admin/services/_form.html.haml | 5 +- app/views/admin/spam_logs/_spam_log.html.haml | 12 +- app/views/admin/system_info/show.html.haml | 8 +- .../admin/users/_access_levels.html.haml | 20 +- app/views/admin/users/_form.html.haml | 46 +- app/views/admin/users/_head.html.haml | 4 +- app/views/admin/users/_profile.html.haml | 6 +- app/views/admin/users/_projects.html.haml | 8 +- app/views/admin/users/_user.html.haml | 8 +- app/views/admin/users/index.html.haml | 18 +- app/views/admin/users/projects.html.haml | 20 +- app/views/admin/users/show.html.haml | 56 +- app/views/award_emoji/_awards_block.html.haml | 4 +- app/views/ci/lints/show.html.haml | 4 +- .../ci/status/_dropdown_graph_badge.html.haml | 4 +- .../ci/variables/_variable_row.html.haml | 1 + app/views/dashboard/_activities.html.haml | 2 +- app/views/dashboard/_activity_head.html.haml | 2 +- app/views/dashboard/_groups_head.html.haml | 2 +- app/views/dashboard/_projects_head.html.haml | 2 +- app/views/dashboard/_snippets_head.html.haml | 4 +- app/views/dashboard/issues.html.haml | 3 +- app/views/dashboard/issues_calendar.ics.haml | 1 + app/views/dashboard/projects/_nav.html.haml | 2 +- .../dashboard/projects/starred.html.haml | 2 +- app/views/dashboard/snippets/index.html.haml | 2 +- app/views/dashboard/todos/index.html.haml | 12 +- app/views/devise/sessions/_new_base.html.haml | 8 +- .../devise/sessions/_new_crowd.html.haml | 2 +- app/views/devise/sessions/_new_ldap.html.haml | 2 +- .../devise/sessions/two_factor.html.haml | 2 +- .../devise/shared/_omniauth_box.html.haml | 2 +- app/views/devise/shared/_signup_box.html.haml | 7 + app/views/devise/shared/_tab_single.html.haml | 6 +- app/views/devise/shared/_tabs_ldap.html.haml | 18 +- .../devise/shared/_tabs_normal.html.haml | 10 +- app/views/discussions/_discussion.html.haml | 4 +- app/views/discussions/_notes.html.haml | 4 +- .../doorkeeper/applications/_form.html.haml | 4 +- .../doorkeeper/applications/index.html.haml | 2 +- .../doorkeeper/applications/show.html.haml | 2 +- .../doorkeeper/authorizations/new.html.haml | 2 +- .../authorized_applications/index.html.haml | 2 +- .../rejection.html.haml | 1 + .../rejection.text.haml | 1 + app/views/errors/_footer.html.haml | 11 + app/views/errors/access_denied.html.haml | 21 +- app/views/errors/not_found.html.haml | 19 +- app/views/events/_event_push.atom.haml | 2 +- app/views/events/event/_push.html.haml | 2 +- app/views/explore/groups/_nav.html.haml | 2 +- app/views/explore/groups/index.html.haml | 2 +- app/views/explore/projects/_filter.html.haml | 4 +- app/views/explore/projects/_nav.html.haml | 2 +- app/views/groups/_activities.html.haml | 4 +- app/views/groups/_create_chat_team.html.haml | 8 +- .../groups/_group_admin_settings.html.haml | 28 +- app/views/groups/edit.html.haml | 101 +- .../group_members/_new_group_member.html.haml | 6 +- .../groups/group_members/index.html.haml | 29 +- app/views/groups/issues.html.haml | 7 +- app/views/groups/issues_calendar.ics.haml | 1 + app/views/groups/labels/index.html.haml | 45 +- app/views/groups/merge_requests.html.haml | 2 +- app/views/groups/milestones/_form.html.haml | 10 +- app/views/groups/new.html.haml | 46 +- app/views/groups/projects.html.haml | 12 +- .../groups/runners/_group_runners.html.haml | 2 +- app/views/groups/runners/_runner.html.haml | 4 +- app/views/groups/runners/edit.html.haml | 2 +- app/views/groups/settings/_advanced.html.haml | 49 + app/views/groups/settings/_general.html.haml | 38 + .../groups/settings/_permissions.html.haml | 28 + .../groups/settings/ci_cd/show.html.haml | 6 +- app/views/groups/show.html.haml | 4 +- app/views/help/_shortcuts.html.haml | 188 +- app/views/help/index.html.haml | 6 +- app/views/help/ui.html.haml | 87 +- app/views/ide/index.html.haml | 4 +- app/views/import/_githubish_status.html.haml | 11 +- app/views/import/bitbucket/status.html.haml | 11 +- app/views/import/fogbugz/new.html.haml | 20 +- .../import/fogbugz/new_user_map.html.haml | 2 +- app/views/import/gitea/new.html.haml | 10 +- app/views/import/github/new.html.haml | 2 +- .../import/gitlab_projects/new.html.haml | 16 +- app/views/import/google_code/new.html.haml | 2 +- .../import/google_code/new_user_map.html.haml | 4 +- app/views/import/google_code/status.html.haml | 2 +- app/views/issues/_issues_calendar.ics.ruby | 15 + .../kaminari/gitlab/_first_page.html.haml | 4 +- app/views/kaminari/gitlab/_gap.html.haml | 5 +- .../kaminari/gitlab/_last_page.html.haml | 4 +- .../kaminari/gitlab/_next_page.html.haml | 11 +- app/views/kaminari/gitlab/_page.html.haml | 4 +- .../kaminari/gitlab/_paginator.html.haml | 4 +- .../kaminari/gitlab/_prev_page.html.haml | 11 +- .../kaminari/gitlab/_without_count.html.haml | 12 +- app/views/layouts/_head.html.haml | 2 +- app/views/layouts/_search.html.haml | 2 +- app/views/layouts/devise.html.haml | 8 +- app/views/layouts/devise_empty.html.haml | 2 +- app/views/layouts/errors.html.haml | 66 +- .../header/_current_user_dropdown.html.haml | 1 + app/views/layouts/header/_default.html.haml | 26 +- app/views/layouts/header/_empty.html.haml | 4 +- app/views/layouts/header/_new_dropdown.haml | 6 +- app/views/layouts/nav/_dashboard.html.haml | 28 +- .../nav/groups_dropdown/_show.html.haml | 12 + .../nav/projects_dropdown/_show.html.haml | 6 +- .../layouts/nav/sidebar/_admin.html.haml | 4 +- .../layouts/nav/sidebar/_group.html.haml | 8 +- .../layouts/nav/sidebar/_project.html.haml | 163 +- app/views/layouts/terms.html.haml | 8 +- .../notify/member_invited_email.html.haml | 2 +- .../merge_request_unmergeable_email.html.haml | 2 + .../merge_request_unmergeable_email.text.haml | 8 + .../notify/new_merge_request_email.html.haml | 2 + .../notify/new_merge_request_email.text.erb | 2 +- .../notify/pipeline_failed_email.html.haml | 4 +- .../notify/pipeline_success_email.html.haml | 4 +- app/views/peek/_bar.html.haml | 2 +- app/views/profiles/_event_table.html.haml | 4 +- .../active_sessions/_active_session.html.haml | 8 +- .../profiles/active_sessions/index.html.haml | 5 +- .../profiles/chat_names/_chat_name.html.haml | 2 +- app/views/profiles/chat_names/new.html.haml | 2 +- app/views/profiles/emails/index.html.haml | 16 +- app/views/profiles/gpg_keys/_key.html.haml | 6 +- .../profiles/gpg_keys/_key_table.html.haml | 2 +- app/views/profiles/keys/_form.html.haml | 15 +- app/views/profiles/keys/_key.html.haml | 8 +- .../profiles/keys/_key_details.html.haml | 8 +- app/views/profiles/keys/_key_table.html.haml | 2 +- app/views/profiles/keys/index.html.haml | 9 +- .../notifications/_group_settings.html.haml | 2 +- .../notifications/_project_settings.html.haml | 2 +- .../profiles/notifications/show.html.haml | 2 +- app/views/profiles/passwords/edit.html.haml | 2 +- app/views/profiles/passwords/new.html.haml | 14 +- .../personal_access_tokens/index.html.haml | 24 +- app/views/profiles/preferences/show.html.haml | 14 +- app/views/profiles/show.html.haml | 7 +- .../two_factor_auths/_codes.html.haml | 2 +- .../profiles/two_factor_auths/show.html.haml | 2 +- app/views/projects/_activity.html.haml | 3 +- .../_bitbucket_import_modal.html.haml | 5 +- app/views/projects/_export.html.haml | 4 +- .../projects/_gitlab_import_modal.html.haml | 5 +- app/views/projects/_home_panel.html.haml | 6 +- .../projects/_import_project_pane.html.haml | 94 +- .../projects/_issuable_by_email.html.haml | 8 +- app/views/projects/_last_push.html.haml | 2 +- app/views/projects/_md_preview.html.haml | 2 +- ...ge_request_fast_forward_settings.html.haml | 13 - ...ge_request_merge_method_settings.html.haml | 36 + .../_merge_request_merge_settings.html.haml | 24 +- .../_merge_request_rebase_settings.html.haml | 13 - .../_merge_request_settings.html.haml | 15 +- .../projects/_new_project_fields.html.haml | 31 +- .../projects/_new_project_push_tip.html.haml | 6 +- .../projects/_project_templates.html.haml | 23 +- .../projects/_stat_anchor_list.html.haml | 8 +- app/views/projects/_wiki.html.haml | 2 +- app/views/projects/artifacts/browse.html.haml | 4 +- app/views/projects/artifacts/file.html.haml | 6 +- app/views/projects/blame/show.html.haml | 2 +- app/views/projects/blob/_blob.html.haml | 2 +- app/views/projects/blob/_breadcrumb.html.haml | 4 +- app/views/projects/blob/_editor.html.haml | 2 +- app/views/projects/blob/_header.html.haml | 2 + .../projects/blob/_header_content.html.haml | 2 +- app/views/projects/blob/_new_dir.html.haml | 9 +- app/views/projects/blob/_remove.html.haml | 9 +- app/views/projects/blob/_upload.html.haml | 5 +- app/views/projects/blob/edit.html.haml | 4 +- app/views/projects/blob/new.html.haml | 2 +- .../projects/blob/viewers/_download.html.haml | 2 +- app/views/projects/branches/_branch.html.haml | 12 +- .../_delete_protected_modal.html.haml | 3 +- app/views/projects/branches/_panel.html.haml | 8 +- app/views/projects/branches/index.html.haml | 4 +- app/views/projects/branches/new.html.haml | 14 +- .../projects/buttons/_download.html.haml | 4 +- .../projects/buttons/_dropdown.html.haml | 4 +- .../projects/buttons/_xcode_link.html.haml | 2 + app/views/projects/ci/builds/_build.html.haml | 10 +- app/views/projects/ci/lints/show.html.haml | 23 +- .../clusters/_advanced_settings.html.haml | 4 +- .../projects/clusters/_dropdown.html.haml | 12 - .../projects/clusters/_empty_state.html.haml | 4 +- .../_gcp_signup_offer_banner.html.haml | 2 +- .../clusters/_integration_form.html.haml | 35 +- .../projects/clusters/_sidebar.html.haml | 6 +- .../projects/clusters/gcp/_form.html.haml | 62 +- .../projects/clusters/gcp/_header.html.haml | 2 +- .../projects/clusters/gcp/_show.html.haml | 16 +- .../projects/clusters/gcp/login.html.haml | 21 - app/views/projects/clusters/gcp/new.html.haml | 10 - app/views/projects/clusters/new.html.haml | 35 +- app/views/projects/clusters/show.html.haml | 1 + .../projects/clusters/user/_form.html.haml | 25 +- .../projects/clusters/user/_header.html.haml | 2 +- .../projects/clusters/user/_show.html.haml | 17 +- .../projects/clusters/user/new.html.haml | 11 - .../projects/commit/_ajax_signature.html.haml | 2 +- app/views/projects/commit/_change.html.haml | 23 +- app/views/projects/commit/_ci_menu.html.haml | 6 +- .../projects/commit/_commit_box.html.haml | 10 +- .../commit/_signature_badge.html.haml | 2 +- app/views/projects/commit/branches.html.haml | 3 +- app/views/projects/commits/_commit.html.haml | 11 +- .../projects/commits/_commit_list.html.haml | 4 +- .../projects/commits/_inline_commit.html.haml | 2 +- app/views/projects/commits/show.html.haml | 2 +- app/views/projects/compare/_form.html.haml | 51 +- app/views/projects/compare/show.html.haml | 2 +- .../cycle_analytics/_overview.html.haml | 2 +- .../projects/cycle_analytics/show.html.haml | 14 +- .../projects/deploy_keys/_form.html.haml | 22 +- .../projects/deploy_keys/_index.html.haml | 2 +- app/views/projects/deploy_keys/edit.html.haml | 2 +- .../projects/deploy_tokens/_index.html.haml | 11 +- .../deploy_tokens/_new_deploy_token.html.haml | 28 +- .../deploy_tokens/_revoke_modal.html.haml | 8 +- .../projects/deploy_tokens/_table.html.haml | 2 +- app/views/projects/deployments/_actions.haml | 2 +- .../projects/deployments/_commit.html.haml | 2 +- .../deployments/_deployment.html.haml | 8 +- app/views/projects/deployments/_rollback.haml | 4 +- app/views/projects/diffs/_collapsed.html.haml | 2 +- app/views/projects/diffs/_diffs.html.haml | 8 +- app/views/projects/diffs/_file.html.haml | 2 +- .../projects/diffs/_file_header.html.haml | 2 +- app/views/projects/diffs/_line.html.haml | 4 +- .../projects/diffs/_parallel_view.html.haml | 4 +- app/views/projects/diffs/_stats.html.haml | 4 +- app/views/projects/diffs/_warning.html.haml | 2 +- app/views/projects/edit.html.haml | 36 +- app/views/projects/empty.html.haml | 17 +- .../environments/_external_url.html.haml | 2 +- .../environments/_metrics_button.html.haml | 2 +- .../environments/_terminal_button.html.haml | 2 +- .../projects/environments/empty.html.haml | 14 + .../projects/environments/metrics.html.haml | 9 +- .../projects/environments/terminal.html.haml | 2 +- app/views/projects/find_file/show.html.haml | 4 +- app/views/projects/forks/index.html.haml | 2 +- app/views/projects/forks/new.html.haml | 0 .../_generic_commit_status.html.haml | 4 +- app/views/projects/graphs/charts.html.haml | 2 +- app/views/projects/graphs/show.html.haml | 2 +- app/views/projects/hook_logs/_index.html.haml | 4 +- app/views/projects/hook_logs/show.html.haml | 2 +- app/views/projects/hooks/_index.html.haml | 2 +- app/views/projects/hooks/edit.html.haml | 2 +- app/views/projects/imports/new.html.haml | 8 +- .../projects/issues/_discussion.html.haml | 3 +- app/views/projects/issues/_form.html.haml | 4 +- app/views/projects/issues/_issue.html.haml | 12 +- app/views/projects/issues/_nav_btns.html.haml | 4 +- .../projects/issues/_new_branch.html.haml | 10 +- app/views/projects/issues/calendar.ics.haml | 1 + app/views/projects/issues/show.html.haml | 18 +- .../projects/jobs/_empty_state.html.haml | 4 +- app/views/projects/jobs/_header.html.haml | 2 +- app/views/projects/jobs/_sidebar.html.haml | 12 +- app/views/projects/jobs/_user.html.haml | 4 +- app/views/projects/jobs/show.html.haml | 10 +- app/views/projects/jobs/terminal.html.haml | 11 + app/views/projects/labels/index.html.haml | 34 +- .../projects/mattermosts/_no_teams.html.haml | 2 +- .../mattermosts/_team_selection.html.haml | 10 +- app/views/projects/mattermosts/new.html.haml | 2 +- .../projects/merge_requests/_form.html.haml | 6 +- .../merge_requests/_how_to_merge.html.haml | 7 +- .../merge_requests/_merge_request.html.haml | 18 +- .../projects/merge_requests/_mr_box.html.haml | 2 +- .../merge_requests/_mr_title.html.haml | 12 +- .../conflicts/_commit_stats.html.haml | 4 +- .../conflicts/_submit_form.html.haml | 26 +- .../creations/_new_compare.html.haml | 16 +- .../creations/_new_submit.html.haml | 43 +- .../diffs/_commit_widget.html.haml | 2 +- .../merge_requests/diffs/_diffs.html.haml | 6 +- .../_not_all_comments_displayed.html.haml | 2 +- .../diffs/_version_controls.html.haml | 4 +- .../projects/merge_requests/invalid.html.haml | 8 +- .../projects/merge_requests/show.html.haml | 77 +- app/views/projects/milestones/_form.html.haml | 12 +- app/views/projects/milestones/show.html.haml | 4 +- app/views/projects/mirrors/_push.html.haml | 6 +- app/views/projects/network/show.html.haml | 6 +- app/views/projects/new.html.haml | 28 +- app/views/projects/no_repo.html.haml | 2 +- app/views/projects/pages/_access.html.haml | 6 +- app/views/projects/pages/_destroy.haml | 8 +- .../projects/pages/_https_only.html.haml | 2 +- app/views/projects/pages/_list.html.haml | 10 +- .../projects/pages/_no_domains.html.haml | 4 +- app/views/projects/pages/_use.html.haml | 6 +- app/views/projects/pages/show.html.haml | 2 +- .../projects/pages_domains/_form.html.haml | 12 +- .../projects/pages_domains/edit.html.haml | 2 +- .../projects/pages_domains/new.html.haml | 4 +- .../projects/pages_domains/show.html.haml | 18 +- .../pipeline_schedules/_form.html.haml | 14 +- .../_pipeline_schedule.html.haml | 2 +- .../pipeline_schedules/_tabs.html.haml | 8 +- .../pipeline_schedules/index.html.haml | 2 +- app/views/projects/pipelines/_info.html.haml | 4 +- .../projects/pipelines/_with_tabs.html.haml | 50 +- app/views/projects/pipelines/new.html.haml | 10 +- .../project_members/_groups.html.haml | 8 +- .../_new_project_member.html.haml | 2 +- .../_new_shared_group.html.haml | 2 +- .../projects/project_members/_team.html.haml | 13 +- .../projects/project_members/import.html.haml | 6 +- .../projects/project_members/index.html.haml | 12 +- .../_update_protected_branch.html.haml | 2 +- .../shared/_branches_list.html.haml | 4 +- .../shared/_create_protected_branch.html.haml | 57 +- .../shared/_index.html.haml | 6 +- .../shared/_matching_branch.html.haml | 2 +- .../shared/_protected_branch.html.haml | 4 +- .../shared/_create_protected_tag.html.haml | 49 +- .../protected_tags/shared/_index.html.haml | 4 +- .../shared/_matching_tag.html.haml | 2 +- .../shared/_protected_tag.html.haml | 2 +- .../shared/_tags_list.html.haml | 4 +- app/views/projects/refs/logs_tree.js.haml | 2 + .../registry/repositories/_tag.html.haml | 2 +- .../registry/repositories/index.html.haml | 10 +- app/views/projects/releases/edit.html.haml | 6 +- .../projects/repositories/_feed.html.haml | 2 +- .../projects/runners/_group_runners.html.haml | 8 +- app/views/projects/runners/_runner.html.haml | 8 +- .../runners/_shared_runners.html.haml | 6 +- .../runners/_specific_runners.html.haml | 3 +- app/views/projects/runners/edit.html.haml | 2 +- app/views/projects/services/_form.html.haml | 2 +- app/views/projects/services/_index.html.haml | 6 +- .../_detailed_help.html.haml | 86 +- .../mattermost_slash_commands/_help.html.haml | 27 +- .../_installation_info.html.haml | 2 +- .../_configuration_banner.html.haml | 2 +- .../services/prometheus/_help.html.haml | 2 +- .../services/prometheus/_show.html.haml | 20 +- .../slack_slash_commands/_help.html.haml | 169 +- .../settings/ci_cd/_autodevops_form.html.haml | 81 +- .../projects/settings/ci_cd/_badge.html.haml | 8 +- .../projects/settings/ci_cd/_form.html.haml | 91 +- .../projects/settings/ci_cd/show.html.haml | 40 +- .../integrations/_project_hook.html.haml | 10 +- .../settings/integrations/show.html.haml | 4 +- .../projects/settings/members/show.html.haml | 2 +- .../settings/repository/show.html.haml | 4 +- .../projects/snippets/_actions.html.haml | 30 +- app/views/projects/snippets/edit.html.haml | 6 +- app/views/projects/snippets/index.html.haml | 4 +- app/views/projects/snippets/new.html.haml | 8 +- app/views/projects/snippets/show.html.haml | 4 +- app/views/projects/tags/_tag.html.haml | 2 +- app/views/projects/tags/index.html.haml | 2 +- app/views/projects/tags/new.html.haml | 26 +- app/views/projects/tags/show.html.haml | 2 +- app/views/projects/tree/_blob_item.html.haml | 4 +- .../projects/tree/_submodule_item.html.haml | 2 +- .../projects/tree/_tree_content.html.haml | 6 +- .../projects/tree/_tree_header.html.haml | 14 +- app/views/projects/tree/_tree_item.html.haml | 2 +- .../projects/triggers/_content.html.haml | 2 +- app/views/projects/triggers/_form.html.haml | 2 +- app/views/projects/triggers/_index.html.haml | 10 +- .../projects/triggers/_trigger.html.haml | 4 +- app/views/projects/wikis/_form.html.haml | 20 +- app/views/projects/wikis/_new.html.haml | 3 +- .../projects/wikis/_pages_wiki_page.html.haml | 2 +- app/views/projects/wikis/_sidebar.html.haml | 2 +- app/views/projects/wikis/edit.html.haml | 13 +- app/views/projects/wikis/empty.html.haml | 6 +- app/views/projects/wikis/git_access.html.haml | 4 +- app/views/projects/wikis/show.html.haml | 4 +- app/views/search/_category.html.haml | 28 +- app/views/search/_filter.html.haml | 4 +- app/views/search/results/_blob.html.haml | 18 +- app/views/search/results/_blob_data.html.haml | 10 + app/views/search/results/_commit.html.haml | 2 +- app/views/search/results/_issue.html.haml | 4 +- .../search/results/_merge_request.html.haml | 6 +- .../search/results/_snippet_title.html.haml | 6 +- app/views/search/results/_wiki_blob.html.haml | 15 +- .../shared/_allow_request_access.html.haml | 6 +- .../shared/_auto_devops_callout.html.haml | 2 +- .../_choose_group_avatar_button.html.haml | 2 +- app/views/shared/_clone_panel.html.haml | 12 +- .../_commit_message_container.html.haml | 4 +- app/views/shared/_commit_well.html.haml | 2 +- app/views/shared/_confirm_modal.html.haml | 3 +- .../shared/_delete_label_modal.html.haml | 3 +- app/views/shared/_email_with_badge.html.haml | 2 +- app/views/shared/_event_filter.html.haml | 4 +- app/views/shared/_field.html.haml | 8 +- app/views/shared/_group_form.html.haml | 25 +- app/views/shared/_import_form.html.haml | 21 +- .../shared/_issuable_meta_data.html.haml | 8 +- app/views/shared/_issues.html.haml | 2 +- app/views/shared/_label.html.haml | 137 +- app/views/shared/_label_row.html.haml | 35 +- app/views/shared/_merge_requests.html.haml | 2 +- app/views/shared/_milestone_expired.html.haml | 9 +- app/views/shared/_milestones_filter.html.haml | 8 +- .../_milestones_sort_dropdown.html.haml | 2 +- app/views/shared/_new_commit_form.html.haml | 4 +- .../_new_merge_request_checkbox.html.haml | 6 +- .../_personal_access_tokens_form.html.haml | 16 +- .../_personal_access_tokens_table.html.haml | 2 +- app/views/shared/_project_limit.html.haml | 4 +- app/views/shared/_ref_switcher.html.haml | 2 +- app/views/shared/_service_settings.html.haml | 30 +- app/views/shared/_sort_dropdown.html.haml | 4 +- ..._user_dropdown_contributing_link.html.haml | 5 + app/views/shared/_visibility_level.html.haml | 6 +- app/views/shared/_visibility_radios.html.haml | 6 +- app/views/shared/boards/_show.html.haml | 11 +- .../shared/boards/components/_board.html.haml | 28 +- .../boards/components/_sidebar.html.haml | 7 +- .../components/sidebar/_due_date.html.haml | 12 +- .../components/sidebar/_labels.html.haml | 10 +- .../components/sidebar/_milestone.html.haml | 12 +- .../shared/builds/_build_output.html.haml | 3 + app/views/shared/builds/_tabs.html.haml | 10 +- .../dashboard/_no_filter_selected.html.haml | 4 +- app/views/shared/deploy_keys/_form.html.haml | 8 +- .../shared/empty_states/_issues.html.haml | 6 +- .../shared/empty_states/_labels.html.haml | 4 +- .../empty_states/_merge_requests.html.haml | 6 +- .../shared/empty_states/_wikis.html.haml | 30 + .../empty_states/_wikis_layout.html.haml | 7 + .../form_elements/_description.html.haml | 6 +- app/views/shared/groups/_dropdown.html.haml | 2 +- app/views/shared/groups/_group.html.haml | 2 +- app/views/shared/hook_logs/_content.html.haml | 4 +- .../shared/hook_logs/_status_label.html.haml | 2 +- app/views/shared/icons/_icon_calendar.svg | 1 + .../_board_create_list_dropdown.html.haml | 8 + .../issuable/_bulk_update_sidebar.html.haml | 4 +- .../issuable/_close_reopen_button.html.haml | 6 +- .../_close_reopen_report_toggle.html.haml | 6 +- .../shared/issuable/_feed_buttons.html.haml | 4 + app/views/shared/issuable/_filter.html.haml | 2 +- app/views/shared/issuable/_form.html.haml | 24 +- .../issuable/_label_page_create.html.haml | 7 +- .../issuable/_label_page_default.html.haml | 7 +- .../issuable/_milestone_dropdown.html.haml | 2 + app/views/shared/issuable/_nav.html.haml | 2 +- .../shared/issuable/_search_bar.html.haml | 21 +- app/views/shared/issuable/_sidebar.html.haml | 37 +- .../issuable/_sidebar_assignees.html.haml | 12 +- .../shared/issuable/_sidebar_todo.html.haml | 2 +- .../issuable/form/_branch_chooser.html.haml | 8 +- .../issuable/form/_contribution.html.haml | 18 +- .../form/_default_templates.html.haml | 4 + .../issuable/form/_issue_assignee.html.haml | 2 +- .../issuable/form/_merge_params.html.haml | 27 +- .../form/_merge_request_assignee.html.haml | 4 +- .../shared/issuable/form/_metadata.html.haml | 27 +- .../form/_metadata_issue_assignee.html.haml | 4 +- ..._metadata_merge_request_assignee.html.haml | 2 +- .../shared/issuable/form/_title.html.haml | 9 +- app/views/shared/labels/_form.html.haml | 21 +- .../members/_filter_2fa_dropdown.html.haml | 11 + app/views/shared/members/_group.html.haml | 24 +- app/views/shared/members/_member.html.haml | 22 +- app/views/shared/members/_requests.html.haml | 6 +- .../shared/members/_sort_dropdown.html.haml | 2 +- .../shared/milestones/_form_dates.html.haml | 17 +- .../shared/milestones/_issuables.html.haml | 8 +- .../shared/milestones/_labels_tab.html.haml | 2 +- .../shared/milestones/_milestone.html.haml | 109 +- .../shared/milestones/_sidebar.html.haml | 36 +- app/views/shared/milestones/_tabs.html.haml | 32 +- app/views/shared/milestones/_top.html.haml | 6 +- .../shared/notes/_comment_button.html.haml | 2 +- app/views/shared/notes/_edit_form.html.haml | 2 +- app/views/shared/notes/_form.html.haml | 2 +- app/views/shared/notes/_hints.html.haml | 2 +- app/views/shared/notes/_note.html.haml | 13 +- .../shared/notes/_notes_with_form.html.haml | 9 +- .../shared/notifications/_button.html.haml | 4 +- .../_custom_notifications.html.haml | 10 +- app/views/shared/plugins/_index.html.haml | 6 +- app/views/shared/projects/_dropdown.html.haml | 4 +- .../projects/_edit_information.html.haml | 2 +- app/views/shared/projects/_project.html.haml | 4 +- app/views/shared/runners/_form.html.haml | 60 +- .../runners/_runner_description.html.haml | 4 +- app/views/shared/runners/show.html.haml | 10 +- app/views/shared/snippets/_blob.html.haml | 2 +- app/views/shared/snippets/_embed.html.haml | 2 +- app/views/shared/snippets/_form.html.haml | 12 +- app/views/shared/snippets/_header.html.haml | 13 +- app/views/shared/snippets/_snippet.html.haml | 8 +- .../shared/tokens/_scopes_form.html.haml | 9 +- app/views/shared/web_hooks/_form.html.haml | 120 +- .../shared/web_hooks/_test_button.html.haml | 2 +- .../sherlock/file_samples/show.html.haml | 2 +- .../sherlock/queries/_backtrace.html.haml | 12 +- app/views/sherlock/queries/_general.html.haml | 26 +- app/views/sherlock/queries/show.html.haml | 4 +- .../transactions/_file_samples.html.haml | 2 +- .../sherlock/transactions/_general.html.haml | 6 +- .../sherlock/transactions/_queries.html.haml | 2 +- .../sherlock/transactions/index.html.haml | 4 +- .../sherlock/transactions/show.html.haml | 8 +- app/views/snippets/_actions.html.haml | 4 +- .../snippets/_snippets_scope_menu.html.haml | 10 +- app/views/snippets/index.html.haml | 6 +- app/views/u2f/_authenticate.html.haml | 3 - app/views/users/show.html.haml | 12 +- app/views/users/terms/index.html.haml | 25 +- app/workers/admin_email_worker.rb | 2 + app/workers/all_queues.yml | 11 +- app/workers/archive_trace_worker.rb | 4 +- app/workers/authorized_projects_worker.rb | 2 + app/workers/background_migration_worker.rb | 2 + app/workers/build_coverage_worker.rb | 2 + app/workers/build_finished_worker.rb | 2 + app/workers/build_hooks_worker.rb | 2 + app/workers/build_queue_worker.rb | 2 + app/workers/build_success_worker.rb | 2 + app/workers/build_trace_sections_worker.rb | 2 + .../check_gcp_project_billing_worker.rb | 92 - app/workers/ci/archive_traces_cron_worker.rb | 29 + .../ci/build_trace_chunk_flush_worker.rb | 4 +- app/workers/cluster_install_app_worker.rb | 2 + app/workers/cluster_provision_worker.rb | 2 + ...luster_wait_for_app_installation_worker.rb | 2 + ...ster_wait_for_ingress_ip_address_worker.rb | 2 + app/workers/concerns/application_worker.rb | 2 + app/workers/concerns/cluster_applications.rb | 2 + app/workers/concerns/cluster_queue.rb | 2 + app/workers/concerns/cronjob_queue.rb | 2 + app/workers/concerns/each_shard_worker.rb | 31 + app/workers/concerns/exception_backtrace.rb | 2 + .../concerns/gitlab/github_import/queue.rb | 2 + app/workers/concerns/mail_scheduler_queue.rb | 2 + app/workers/concerns/new_issuable.rb | 2 + app/workers/concerns/object_storage_queue.rb | 2 + .../concerns/pipeline_background_queue.rb | 2 + app/workers/concerns/pipeline_queue.rb | 2 + .../concerns/project_import_options.rb | 2 + app/workers/concerns/project_start_import.rb | 2 + .../concerns/repository_check_queue.rb | 2 + app/workers/concerns/waitable_worker.rb | 2 + app/workers/create_gpg_signature_worker.rb | 2 + app/workers/create_note_diff_file_worker.rb | 11 + app/workers/create_pipeline_worker.rb | 2 + app/workers/delete_diff_files_worker.rb | 17 + app/workers/delete_merged_branches_worker.rb | 2 + app/workers/delete_user_worker.rb | 2 + app/workers/email_receiver_worker.rb | 2 + app/workers/emails_on_push_worker.rb | 2 + app/workers/expire_build_artifacts_worker.rb | 2 + .../expire_build_instance_artifacts_worker.rb | 2 + app/workers/expire_job_cache_worker.rb | 2 + app/workers/expire_pipeline_cache_worker.rb | 2 + app/workers/git_garbage_collect_worker.rb | 60 +- .../github_import/advance_stage_worker.rb | 1 + .../github_import/import_lfs_object_worker.rb | 25 + .../stage/import_lfs_objects_worker.rb | 32 + .../stage/import_notes_worker.rb | 2 +- app/workers/gitlab_shell_worker.rb | 2 + app/workers/gitlab_usage_ping_worker.rb | 2 + app/workers/group_destroy_worker.rb | 2 + .../import_export_project_cleanup_worker.rb | 2 + .../invalid_gpg_signature_update_worker.rb | 2 + app/workers/irker_worker.rb | 17 +- app/workers/issue_due_scheduler_worker.rb | 2 + .../mail_scheduler/issue_due_worker.rb | 2 + .../notification_service_worker.rb | 2 + app/workers/merge_worker.rb | 2 + .../namespaceless_project_destroy_worker.rb | 2 + app/workers/new_issue_worker.rb | 2 + app/workers/new_merge_request_worker.rb | 2 + app/workers/new_note_worker.rb | 2 + .../object_storage/background_move_worker.rb | 2 + app/workers/object_storage_upload_worker.rb | 21 - .../pages_domain_verification_cron_worker.rb | 2 + .../pages_domain_verification_worker.rb | 2 + app/workers/pages_worker.rb | 2 + app/workers/pipeline_hooks_worker.rb | 2 + app/workers/pipeline_metrics_worker.rb | 2 + app/workers/pipeline_notification_worker.rb | 2 + app/workers/pipeline_process_worker.rb | 2 + app/workers/pipeline_schedule_worker.rb | 2 + app/workers/pipeline_success_worker.rb | 2 + app/workers/pipeline_update_worker.rb | 2 + app/workers/plugin_worker.rb | 2 + app/workers/post_receive.rb | 2 + app/workers/process_commit_worker.rb | 2 + app/workers/project_cache_worker.rb | 2 + app/workers/project_destroy_worker.rb | 2 + app/workers/project_export_worker.rb | 2 + .../project_migrate_hashed_storage_worker.rb | 2 + app/workers/project_service_worker.rb | 2 + .../propagate_service_template_worker.rb | 2 + app/workers/prune_old_events_worker.rb | 2 + app/workers/prune_web_hook_logs_worker.rb | 26 + app/workers/reactive_caching_worker.rb | 2 + app/workers/rebase_worker.rb | 2 + .../remove_expired_group_links_worker.rb | 2 + app/workers/remove_expired_members_worker.rb | 2 + .../remove_old_web_hook_logs_worker.rb | 2 + .../remove_unreferenced_lfs_objects_worker.rb | 2 + .../repository_archive_cache_worker.rb | 2 + app/workers/repository_check/batch_worker.rb | 39 +- app/workers/repository_check/clear_worker.rb | 2 + .../repository_check/dispatch_worker.rb | 24 + .../single_repository_worker.rb | 2 + app/workers/repository_fork_worker.rb | 27 +- app/workers/repository_import_worker.rb | 2 + .../repository_remove_remote_worker.rb | 2 + .../repository_update_remote_mirror_worker.rb | 2 + app/workers/requests_profiles_worker.rb | 2 + app/workers/run_pipeline_schedule_worker.rb | 2 + .../schedule_update_user_activity_worker.rb | 2 + app/workers/stage_update_worker.rb | 2 + app/workers/storage_migrator_worker.rb | 27 +- app/workers/stuck_ci_jobs_worker.rb | 2 + app/workers/stuck_import_jobs_worker.rb | 2 + app/workers/stuck_merge_jobs_worker.rb | 2 + app/workers/system_hook_push_worker.rb | 2 + app/workers/trending_projects_worker.rb | 2 + ..._head_pipeline_for_merge_request_worker.rb | 2 + app/workers/update_merge_requests_worker.rb | 2 + app/workers/update_user_activity_worker.rb | 2 + app/workers/upload_checksum_worker.rb | 2 + .../wait_for_cluster_creation_worker.rb | 2 + app/workers/web_hook_worker.rb | 2 + bin/changelog | 49 +- bin/secpick | 5 +- bin/spinach | 13 - changelogs/no-rm-rf-gitlab-basics.yml | 5 - config/application.rb | 33 +- config/aws.yml.example | 22 - config/dependency_decisions.yml | 6 + config/environments/development.rb | 2 +- config/environments/test.rb | 4 +- config/gitlab.yml.example | 13 +- .../{secret_token.rb => 01_secret_token.rb} | 3 + config/initializers/1_settings.rb | 19 +- config/initializers/2_gitlab.rb | 2 +- config/initializers/6_validations.rb | 35 - config/initializers/7_prometheus_metrics.rb | 2 +- .../initializers/active_record_data_types.rb | 2 +- config/initializers/active_record_locking.rb | 113 +- .../initializers/active_record_migration.rb | 10 + .../artifacts_direct_upload_support.rb | 7 - config/initializers/carrierwave.rb | 31 - config/initializers/console_message.rb | 4 +- config/initializers/devise.rb | 4 +- config/initializers/direct_upload_support.rb | 19 + .../initializers/disable_email_interceptor.rb | 5 +- config/initializers/doorkeeper.rb | 52 +- .../initializers/doorkeeper_openid_connect.rb | 9 +- config/initializers/flipper.rb | 21 - .../initializers/grape_route_helpers_fix.rb | 51 - config/initializers/kubeclient.rb | 16 + config/initializers/lograge.rb | 1 + config/initializers/mime_types.rb | 2 + config/initializers/mini_magick.rb | 3 + config/initializers/omniauth.rb | 11 +- .../postgresql_opclasses_support.rb | 16 +- config/initializers/rack_attack_global.rb | 6 +- config/karma.config.js | 1 + config/locales/carrierwave.en.yml | 14 + config/locales/doorkeeper.en.yml | 16 +- config/prometheus/additional_metrics.yml | 8 +- config/routes.rb | 6 + config/routes/admin.rb | 3 +- config/routes/api.rb | 5 + config/routes/dashboard.rb | 1 + config/routes/group.rb | 5 +- config/routes/profile.rb | 2 +- config/routes/project.rb | 17 +- config/routes/uploads.rb | 2 +- config/routes/wiki.rb | 2 +- config/settings.rb | 18 + config/sidekiq_queues.yml | 2 + config/unicorn.rb.example | 11 + config/webpack.config.js | 251 +- db/fixtures/development/04_project.rb | 4 + db/fixtures/development/08_settings.rb | 7 + db/fixtures/development/20_nested_groups.rb | 28 +- db/migrate/20121220064453_init_schema.rb | 307 - ...055_rename_owner_to_creator_for_project.rb | 6 - .../20130110172407_add_public_to_project.rb | 6 - ...123114545_add_issues_tracker_to_project.rb | 6 - .../20130125090214_add_user_permissions.rb | 12 - ...070232_remove_private_flag_from_project.rb | 10 - ...206084024_add_description_to_namsespace.rb | 6 - ...20130207104426_add_description_to_teams.rb | 6 - ...085435_add_issues_tracker_id_to_project.rb | 6 - ...name_state_to_merge_status_in_milestone.rb | 6 - .../20130218140952_add_state_to_issue.rb | 6 - ...130218141038_add_state_to_merge_request.rb | 6 - .../20130218141117_add_state_to_milestone.rb | 6 - ...141258_convert_closed_to_state_in_issue.rb | 19 - ...onvert_closed_to_state_in_merge_request.rb | 21 - ...44_convert_closed_to_state_in_milestone.rb | 19 - ...141444_remove_merged_from_merge_request.rb | 10 - ...20130218141507_remove_closed_from_issue.rb | 10 - ...141536_remove_closed_from_merge_request.rb | 10 - ...0218141554_remove_closed_from_milestone.rb | 10 - ...4_add_new_merge_status_to_merge_request.rb | 6 - ...4_convert_merge_status_in_merge_request.rb | 20 - ..._remove_merge_status_from_merge_request.rb | 10 - ...rge_status_to_merge_status_in_milestone.rb | 6 - .../20130304104623_add_state_to_user.rb | 6 - ...20130304104740_convert_blocked_to_state.rb | 15 - ...20130304105317_remove_blocked_from_user.rb | 10 - .../20130315124931_user_color_scheme.rb | 15 - ...20130318212250_add_snippets_to_features.rb | 6 - ...30319214458_create_forked_project_links.rb | 14 - .../20130323174317_add_private_to_snippets.rb | 6 - .../20130324151736_add_type_to_snippets.rb | 6 - ...7_change_project_id_to_null_in_snipepts.rb | 10 - ...30324203535_add_type_value_for_snippets.rb | 9 - ...25173941_add_notification_level_to_user.rb | 6 - ...add_index_to_users_authentication_token.rb | 6 - ...0_add_last_activity_column_into_project.rb | 24 - ..._add_notification_level_to_user_project.rb | 6 - .../20130410175022_remove_wiki_table.rb | 10 - .../20130419190306_allow_merges_for_forks.rb | 20 - db/migrate/20130506085413_add_type_to_key.rb | 6 - ...30506090604_create_deploy_keys_projects.rb | 13 - ...130506095501_remove_project_id_from_key.rb | 23 - ...130522141856_add_more_fields_to_service.rb | 7 - .../20130528184641_add_system_to_notes.rb | 17 - ...10815_increase_snippet_text_column_size.rb | 10 - ...165816_add_password_expires_at_to_users.rb | 6 - ...0130613173246_add_created_by_id_to_user.rb | 6 - .../20130614132337_add_improted_to_project.rb | 6 - .../20130617095603_create_users_groups.rb | 14 - ...23_add_notification_level_to_user_group.rb | 6 - .../20130622115340_add_more_db_index.rb | 13 - .../20130624162710_add_fingerprint_to_key.rb | 7 - ...130711063759_create_project_group_links.rb | 13 - .../20130804151314_add_st_diff_to_note.rb | 6 - ...0809124851_add_permission_check_to_user.rb | 6 - ...0130812143708_add_import_url_to_project.rb | 6 - ...82730_add_internal_ids_to_issues_and_mr.rb | 7 - ...102832_add_access_to_project_group_link.rb | 6 - ...20130821090530_remove_deprecated_tables.rb | 12 - ...21090531_add_internal_ids_to_milestones.rb | 6 - ...132950_add_description_to_merge_request.rb | 6 - ...0130926081215_change_owner_id_for_group.rb | 10 - .../20131005191208_add_avatar_to_users.rb | 6 - ...20131009115346_add_confirmable_to_users.rb | 16 - .../20131106151520_remove_default_branch.rb | 10 - ...0131112114325_create_broadcast_messages.rb | 15 - ...220935_add_visibility_level_to_projects.rb | 16 - ...20131129154016_add_archived_to_projects.rb | 6 - ...dd_color_and_font_to_broadcast_messages.rb | 7 - ...202192556_add_event_fields_for_web_hook.rb | 8 - ...1214224427_add_hide_no_ssh_key_to_users.rb | 6 - ...0131217102743_add_recipients_to_service.rb | 6 - ...20140116231608_add_website_url_to_users.rb | 6 - ...140122112253_create_merge_request_diffs.rb | 24 - db/migrate/20140122114406_migrate_mr_diffs.rb | 10 - .../20140122122549_remove_m_rdiff_fields.rb | 22 - .../20140125162722_add_avatar_to_projects.rb | 6 - .../20140127170938_add_group_avatars.rb | 6 - db/migrate/20140209025651_create_emails.rb | 16 - .../20140214102325_add_api_key_to_services.rb | 6 - ...merge_request_diffs_on_merge_request_id.rb | 6 - ...3308_add_tag_push_hooks_to_project_hook.rb | 6 - ...0312145357_add_import_status_to_project.rb | 6 - db/migrate/20140313092127_init_schema.rb | 337 + ...92127_migrate_already_imported_projects.rb | 15 - ...14608_add_trigram_indexes_for_searching.rb | 7 +- ...8_remove_wrong_import_url_from_projects.rb | 2 +- ...1322_migrate_process_commit_worker_jobs.rb | 4 +- ...31620_fixup_environment_name_uniqueness.rb | 3 +- .../20161207231626_add_environment_slug.rb | 3 +- ...226122833_remove_dot_git_from_usernames.rb | 4 +- ...8_add_unique_constraint_to_ci_variables.rb | 11 +- ...170925184228_add_favicon_to_appearances.rb | 7 + ..._issues_due_date_index_to_partial_index.rb | 6 +- ...0180201110056_add_foreign_keys_to_todos.rb | 2 +- ...54_rename_users_rss_token_to_feed_token.rb | 15 + ...160449_add_pipeline_iid_to_ci_pipelines.rb | 13 + ...9_add_index_constraints_to_pipeline_iid.rb | 15 + ...20180504195842_project_name_lower_index.rb | 32 + ...20180508135515_set_runner_type_not_null.rb | 9 + ...724_add_index_on_ci_runners_runner_type.rb | 15 + ...58_create_clusters_applications_jupyter.rb | 23 + ...0515005612_add_squash_to_merge_requests.rb | 19 + .../20180515121227_create_notes_diff_files.rb | 21 + ...l_constraints_to_project_authorizations.rb | 38 + ..._increase_mysql_text_limit_for_gpg_keys.rb | 2 + ...merge_requests_allow_maintainer_to_push.rb | 17 + ...uests_target_id_iid_state_partial_index.rb | 27 + ...0530135500_add_index_to_stages_position.rb | 15 + ...e_default_value_for_dsa_key_restriction.rb | 16 + ..._deploy_strategy_to_project_auto_devops.rb | 19 + ...name_merge_requests_allow_collaboration.rb | 21 + ...3081317_create_ci_builds_runner_session.rb | 21 + ...0625113853_create_import_export_uploads.rb | 16 + ...add_index_on_deployable_for_deployments.rb | 18 + ...80628124813_alter_web_hook_logs_indexes.rb | 28 + ...rd_party_offers_to_application_settings.rb | 18 + db/migrate/gpg_keys_limits_to_mysql.rb | 15 + ...merge_request_diff_file_limits_to_mysql.rb | 2 +- .../composite_primary_keys.rb | 63 + ...project_records_with_invalid_visibility.rb | 3 +- ...er_activities_to_users_last_activity_on.rb | 3 +- ...s_service_to_new_clusters_architectures.rb | 2 +- ...08143355_cleanup_users_rss_token_rename.rb | 13 + .../20180424151928_fill_file_store.rb | 72 + ...83701_set_minimal_project_build_timeout.rb | 19 + ...nstraint_to_project_features_project_id.rb | 43 + ...nstraint_to_project_features_project_id.rb | 21 + ...20180514161336_remove_gemnasium_service.rb | 15 + ...metrics_populating_background_migration.rb | 44 + ...equests_allow_maintainer_to_push_rename.rb | 17 + ...52628_schedule_to_archive_legacy_traces.rb | 35 + ...ate_object_storage_upload_sidekiq_queue.rb | 16 + ...23514_cleanup_stages_position_migration.rb | 43 + ...rge_requests_allow_collaboration_rename.rb | 20 + ...o_projects_for_last_repository_check_at.rb | 18 + ...7_enqueue_fix_cross_project_label_links.rb | 30 + .../20180704145007_update_project_indexes.rb | 23 + db/schema.rb | 82 +- doc/README.md | 11 +- .../how_to_configure_ldap_gitlab_ce/index.md | 2 +- doc/administration/auth/ldap.md | 317 +- doc/administration/custom_hooks.md | 3 +- doc/administration/external_database.md | 17 + .../high_availability/database.md | 11 +- .../high_availability/gitlab.md | 35 +- doc/administration/high_availability/nfs.md | 6 +- doc/administration/index.md | 8 +- doc/administration/integration/koding.md | 18 +- doc/administration/integration/terminal.md | 16 +- doc/administration/job_artifacts.md | 8 +- doc/administration/job_traces.md | 155 +- .../monitoring/prometheus/gitlab_metrics.md | 20 +- .../monitoring/prometheus/index.md | 15 +- doc/administration/pages/index.md | 74 +- doc/administration/pages/source.md | 18 +- doc/administration/raketasks/check.md | 7 +- .../raketasks/project_import_export.md | 9 +- doc/administration/raketasks/storage.md | 50 +- .../repository_storage_types.md | 68 +- doc/administration/uploads.md | 4 +- doc/api/README.md | 18 +- doc/api/access_requests.md | 2 +- doc/api/applications.md | 2 +- doc/api/avatar.md | 33 + doc/api/branches.md | 11 +- doc/api/commits.md | 1 + doc/api/environments.md | 2 +- doc/api/graphql/index.md | 40 + doc/api/group_milestones.md | 2 +- doc/api/groups.md | 9 +- doc/api/issues.md | 13 +- doc/api/jobs.md | 65 +- doc/api/markdown.md | 29 + doc/api/members.md | 6 +- doc/api/merge_requests.md | 201 +- doc/api/namespaces.md | 2 +- doc/api/pages_domains.md | 8 +- doc/api/pipelines.md | 1 + doc/api/projects.md | 58 +- doc/api/protected_branches.md | 18 +- doc/api/repositories.md | 1 + doc/api/repository_files.md | 34 + doc/api/runners.md | 95 + doc/api/search.md | 9 + doc/api/services.md | 15 +- doc/api/settings.md | 11 +- doc/api/snippets.md | 6 +- doc/api/v3_to_v4.md | 7 +- doc/articles/index.md | 2 +- doc/articles/openshift_and_gitlab/index.md | 5 +- doc/ci/README.md | 7 +- doc/ci/autodeploy/index.md | 130 +- doc/ci/docker/using_docker_build.md | 23 +- doc/ci/docker/using_docker_images.md | 4 +- doc/ci/environments.md | 37 +- doc/ci/examples/README.md | 8 +- .../examples/artifactory_and_gitlab/index.md | 10 +- doc/ci/examples/code_climate.md | 46 +- doc/ci/examples/code_quality.md | 49 + doc/ci/examples/container_scanning.md | 23 +- doc/ci/examples/dast.md | 2 +- .../img/cloud_foundry_secret_variables.png | Bin 0 -> 49735 bytes .../img/create_from_template.png | Bin 0 -> 82121 bytes .../index.md | 142 + doc/ci/examples/deployment/README.md | 2 +- .../index.md | 4 +- .../laravel_with_gitlab_and_envoy/index.md | 6 +- doc/ci/pipelines.md | 2 +- doc/ci/quick_start/README.md | 4 +- doc/ci/runners/README.md | 8 +- doc/ci/services/docker-services.md | 8 +- doc/ci/ssh_keys/README.md | 8 +- doc/ci/triggers/README.md | 4 +- doc/ci/variables/README.md | 102 +- .../variables/where_variables_can_be_used.md | 113 + doc/ci/yaml/README.md | 120 +- doc/container_registry/README.md | 2 +- doc/customization/favicon.md | 16 + doc/customization/favicon/appearance.png | Bin 0 -> 52245 bytes doc/customization/favicon/custom_favicon.png | Bin 0 -> 60083 bytes doc/customization/issue_closing.md | 7 +- doc/development/README.md | 8 +- doc/development/api_graphql_styleguide.md | 214 + doc/development/architecture.md | 2 +- doc/development/changelog.md | 2 + doc/development/code_review.md | 7 +- doc/development/database_debugging.md | 2 +- doc/development/doc_styleguide.md | 428 +- .../img/manual_build_docs.png | Bin doc/development/documentation/index.md | 557 ++ doc/development/documentation/styleguide.md | 513 ++ doc/development/ee_features.md | 66 +- doc/development/emails.md | 4 +- .../fe_guide/development_process.md | 6 +- doc/development/fe_guide/icons.md | 112 +- doc/development/fe_guide/index.md | 4 +- doc/development/fe_guide/style_guide_js.md | 2 +- doc/development/fe_guide/style_guide_scss.md | 10 +- doc/development/fe_guide/vue.md | 196 +- doc/development/fe_guide/vuex.md | 46 +- doc/development/gotchas.md | 48 + doc/development/i18n/externalization.md | 25 +- doc/development/i18n/proofreader.md | 4 +- doc/development/licensing.md | 22 +- doc/development/new_fe_guide/dependencies.md | 19 +- .../new_fe_guide/development/accessibility.md | 49 +- .../new_fe_guide/development/testing.md | 136 +- .../new_fe_guide/style/prettier.md | 14 + doc/development/new_fe_guide/tips.md | 8 +- doc/development/query_recorder.md | 16 +- doc/development/rake_tasks.md | 22 +- .../testing_guide/best_practices.md | 33 +- doc/development/testing_guide/ci.md | 3 +- .../testing_guide/frontend_testing.md | 20 - doc/development/testing_guide/index.md | 15 - .../testing_guide/testing_levels.md | 1 - doc/development/utilities.md | 41 + doc/development/ux_guide/components.md | 2 +- doc/development/ux_guide/copy.md | 2 +- doc/development/what_requires_downtime.md | 80 +- doc/development/writing_documentation.md | 540 +- doc/downgrade_ee_to_ce/README.md | 23 +- doc/gitlab-basics/command-line-commands.md | 58 +- doc/gitlab-basics/create-project.md | 3 + .../img/create_new_project_info.png | Bin 75470 -> 77490 bytes doc/gitlab-basics/start-using-git.md | 151 +- doc/install/README.md | 1 + doc/install/azure/index.md | 5 + doc/install/docker.md | 2 +- doc/install/google_cloud_platform/index.md | 4 + doc/install/installation.md | 34 +- doc/install/kubernetes/gitlab_chart.md | 137 +- doc/install/kubernetes/gitlab_omnibus.md | 8 +- doc/install/kubernetes/index.md | 57 +- doc/install/kubernetes/preparation/connect.md | 31 + doc/install/kubernetes/preparation/eks.md | 44 + .../kubernetes/preparation/networking.md | 36 + doc/install/kubernetes/preparation/rbac.md | 16 + doc/install/kubernetes/preparation/tiller.md | 94 + .../preparation/tools_installation.md | 19 + doc/install/openshift_and_gitlab/index.md | 10 +- doc/install/requirements.md | 12 +- doc/integration/bitbucket.md | 21 +- doc/integration/github.md | 2 +- doc/integration/gitlab.md | 12 +- doc/integration/google.md | 11 +- doc/integration/img/gitlab_app.png | Bin 15402 -> 56480 bytes doc/integration/omniauth.md | 2 +- doc/integration/openid_connect_provider.md | 13 +- doc/integration/recaptcha.md | 19 +- doc/integration/saml.md | 151 +- doc/integration/shibboleth.md | 29 +- doc/legal/README.md | 3 +- ...corporate_contributor_license_agreement.md | 5 +- ...ndividual_contributor_license_agreement.md | 5 +- doc/raketasks/backup_restore.md | 41 +- doc/raketasks/features.md | 2 +- doc/raketasks/web_hooks.md | 2 +- doc/security/information_exclusivity.md | 2 +- doc/security/webhooks.md | 2 +- doc/ssh/README.md | 8 +- doc/system_hooks/system_hooks.md | 8 +- doc/topics/autodevops/img/auto_monitoring.png | Bin 69473 -> 26675 bytes .../img/autodevops_domain_variables.png | Bin 0 -> 8456 bytes .../img/autodevops_multiple_clusters.png | Bin 0 -> 12619 bytes .../autodevops/img/guide_choose_gke.png | Bin 0 -> 7895 bytes .../autodevops/img/guide_cluster_apps.png | Bin 0 -> 28667 bytes .../autodevops/img/guide_connect_cluster.png | Bin 38724 -> 15225 bytes .../autodevops/img/guide_create_cluster.png | Bin 0 -> 18915 bytes .../autodevops/img/guide_create_project.png | Bin 0 -> 17704 bytes .../img/guide_enable_autodevops.png | Bin 0 -> 27763 bytes .../autodevops/img/guide_environments.png | Bin 0 -> 8570 bytes .../img/guide_environments_metrics.png | Bin 0 -> 10231 bytes .../autodevops/img/guide_first_pipeline.png | Bin 0 -> 10350 bytes .../img/guide_gitlab_gke_details.png | Bin 0 -> 22677 bytes .../autodevops/img/guide_gke_apis_after.png | Bin 0 -> 26811 bytes .../autodevops/img/guide_gke_apis_before.png | Bin 0 -> 14882 bytes .../autodevops/img/guide_google_auth.png | Bin 0 -> 12729 bytes .../autodevops/img/guide_google_signin.png | Bin 0 -> 14343 bytes .../autodevops/img/guide_ide_commit.png | Bin 0 -> 22035 bytes .../autodevops/img/guide_integration.png | Bin 44263 -> 0 bytes .../autodevops/img/guide_merge_request.png | Bin 0 -> 31157 bytes .../img/guide_merge_request_ide.png | Bin 0 -> 35052 bytes .../img/guide_merge_request_review_app.png | Bin 0 -> 25596 bytes .../autodevops/img/guide_pipeline_stages.png | Bin 0 -> 12557 bytes .../img/guide_project_landing_page.png | Bin 0 -> 19227 bytes .../autodevops/img/guide_project_template.png | Bin 0 -> 14699 bytes doc/topics/autodevops/img/guide_secret.png | Bin 16233 -> 0 bytes .../img/rollout_staging_disabled.png | Bin 13837 -> 13834 bytes .../img/rollout_staging_enabled.png | Bin 17306 -> 17299 bytes doc/topics/autodevops/img/staging_enabled.png | Bin 17929 -> 17922 bytes doc/topics/autodevops/index.md | 227 +- doc/topics/autodevops/quick_start_guide.md | 347 +- doc/topics/git/how_to_install_git/index.md | 1 + doc/topics/git/index.md | 2 +- doc/university/README.md | 13 +- doc/university/glossary/README.md | 4 - .../high-availability/aws/README.md | 4 + doc/university/training/gitlab_flow.md | 30 +- doc/university/training/topics/gitlab_flow.md | 56 +- .../training/topics/merge_requests.md | 2 +- doc/update/10.6-to-10.7.md | 12 +- doc/update/10.8-to-11.0.md | 361 ++ doc/update/11.0-to-11.1.md | 378 ++ doc/user/admin_area/labels.md | 2 +- .../admin_area/monitoring/health_check.md | 9 - .../admin_area/settings/img/enforce_terms.png | Bin 51979 -> 54881 bytes .../settings/img/respond_to_terms.png | Bin .../admin_area/settings/img/sign_up_terms.png | Bin 0 -> 18174 bytes .../settings/sign_up_restrictions.md | 1 + doc/user/admin_area/settings/terms.md | 13 + .../admin_area/settings/third_party_offers.md | 6 + doc/user/discussions/index.md | 4 +- doc/user/gitlab_com/index.md | 8 +- doc/user/group/index.md | 22 +- doc/user/group/subgroups/index.md | 4 +- doc/user/index.md | 14 +- doc/user/markdown.md | 179 +- doc/user/permissions.md | 90 +- .../profil-preferences-navigation-theme.png | Bin 0 -> 16403 bytes .../img/profile-preferences-syntax-themes.png | Bin 0 -> 44844 bytes .../profile/img/profile_settings_dropdown.png | Bin 4184 -> 6972 bytes doc/user/profile/preferences.md | 52 +- doc/user/project/bulk_editing.md | 17 + .../eks_and_gitlab/img/add_cluster.png | Bin 0 -> 77046 bytes .../eks_and_gitlab/img/create_dns.png | Bin 0 -> 29185 bytes .../eks_and_gitlab/img/create_project.png | Bin 0 -> 43429 bytes .../eks_and_gitlab/img/deploy_apps.png | Bin 0 -> 115299 bytes .../eks_and_gitlab/img/environment.png | Bin 0 -> 31644 bytes .../eks_and_gitlab/img/new_project.png | Bin 0 -> 10309 bytes .../clusters/eks_and_gitlab/img/pipeline.png | Bin 0 -> 26500 bytes .../project/clusters/eks_and_gitlab/index.md | 135 + doc/user/project/clusters/index.md | 125 +- doc/user/project/container_registry.md | 19 + doc/user/project/deploy_tokens/index.md | 2 +- doc/user/project/img/group_issue_board.png | Bin 0 -> 163417 bytes doc/user/project/img/issue_board.png | Bin 82592 -> 100684 bytes doc/user/project/img/issue_board_add_list.png | Bin 17312 -> 6404 bytes .../img/issue_board_assignee_lists.png | Bin 0 -> 134674 bytes doc/user/project/img/issue_board_creation.png | Bin 0 -> 108674 bytes .../project/img/issue_board_edit_button.png | Bin 0 -> 108168 bytes .../project/img/issue_board_focus_mode.gif | Bin 0 -> 1043366 bytes .../img/issue_board_move_issue_card_list.png | Bin 36747 -> 13670 bytes .../project/img/issue_board_system_notes.png | Bin 4899 -> 4893 bytes .../project/img/issue_board_view_scope.png | Bin 0 -> 63542 bytes .../img/issue_board_welcome_message.png | Bin 26533 -> 13519 bytes .../img/issue_boards_add_issues_modal.png | Bin 29176 -> 12421 bytes .../project/img/issue_boards_multiple.png | Bin 0 -> 6092 bytes .../project/img/issue_boards_remove_issue.png | Bin 135168 -> 39357 bytes doc/user/project/import/bitbucket.md | 4 + doc/user/project/import/github.md | 213 +- .../img/import_projects_from_repo_url.png | Bin 150259 -> 142329 bytes doc/user/project/index.md | 2 + doc/user/project/integrations/bamboo.md | 7 +- .../img/kubernetes_configuration.png | Bin 14407 -> 0 bytes doc/user/project/integrations/index.md | 2 +- doc/user/project/integrations/jira.md | 2 +- doc/user/project/integrations/kubernetes.md | 138 +- .../project/integrations/microsoft_teams.md | 2 +- .../project/integrations/project_services.md | 3 +- doc/user/project/integrations/prometheus.md | 2 +- .../prometheus_library/nginx_ingress.md | 2 +- doc/user/project/integrations/webhooks.md | 16 +- doc/user/project/issue_board.md | 228 +- .../project/issues/confidential_issues.md | 4 +- doc/user/project/issues/deleting_issues.md | 4 +- doc/user/project/issues/due_dates.md | 8 + doc/user/project/issues/index.md | 10 +- .../project/issues/issues_functionalities.md | 2 +- doc/user/project/members/index.md | 6 +- .../members/share_project_with_groups.md | 2 +- .../merge_requests/allow_collaboration.md | 20 + .../authorization_for_merge_requests.md | 6 +- .../img/allow_collaboration.png | Bin 0 -> 39513 bytes .../img/allow_maintainer_push.png | Bin 49216 -> 0 bytes .../merge_requests/img/merge_request.png | Bin 67228 -> 748131 bytes .../merge_requests/img/squash_edit_form.png | Bin 0 -> 4232 bytes .../merge_requests/img/squash_mr_commits.png | Bin 0 -> 85635 bytes .../merge_requests/img/squash_mr_widget.png | Bin 0 -> 6496 bytes .../img/squash_squashed_commit.png | Bin 0 -> 63371 bytes doc/user/project/merge_requests/index.md | 18 +- .../merge_requests/maintainer_access.md | 19 +- .../merge_requests/resolve_conflicts.md | 2 +- .../merge_requests/squash_and_merge.md | 80 + .../img/milestones_new_group_milestone.png | Bin 156704 -> 276831 bytes .../img/milestones_new_project_milestone.png | Bin 173762 -> 257285 bytes .../img/milestones_promote_milestone.png | Bin 350399 -> 76864 bytes doc/user/project/milestones/index.md | 1 - doc/user/project/pages/index.md | 6 +- doc/user/project/pages/introduction.md | 6 +- doc/user/project/protected_branches.md | 16 +- doc/user/project/protected_tags.md | 4 +- doc/user/project/quick_actions.md | 1 + doc/user/project/repository/index.md | 14 +- doc/user/project/settings/import_export.md | 6 +- doc/user/project/settings/index.md | 8 +- .../project/web_ide/img/commit_changes.png | Bin 672321 -> 244172 bytes doc/user/project/web_ide/index.md | 44 +- doc/user/reserved_names.md | 1 + doc/user/snippets.md | 51 +- doc/workflow/gitlab_flow.md | 2 +- doc/workflow/lfs/lfs_administration.md | 98 +- .../lfs/manage_large_binaries_with_git_lfs.md | 2 +- doc/workflow/merge_requests.md | 2 +- doc/workflow/notifications.md | 13 +- doc/workflow/protected_branches.md | 2 +- doc/workflow/repository_mirroring.md | 252 +- .../repository_mirroring_detect_host_keys.png | Bin 0 -> 61463 bytes .../repository_mirroring_diverged_branch.png | Bin 0 -> 22668 bytes .../repository_mirroring_hard_failed_main.png | Bin 0 -> 47943 bytes ...ository_mirroring_hard_failed_settings.png | Bin 0 -> 53279 bytes .../repository_mirroring_new_project.png | Bin 0 -> 20364 bytes ...tory_mirroring_pull_advanced_host_keys.png | Bin 0 -> 115796 bytes .../repository_mirroring_pull_settings.png | Bin 0 -> 100470 bytes ...sitory_mirroring_pull_settings_for_ssh.png | Bin 0 -> 69467 bytes ...itory_mirroring_ssh_host_keys_verified.png | Bin 0 -> 23724 bytes ...irroring_ssh_public_key_authentication.png | Bin 0 -> 82456 bytes doc/workflow/shortcuts.md | 22 +- doc/workflow/todos.md | 3 + doc_styleguide.md | 3 - .../project/commits/diff_comments.feature | 96 - features/project/deploy_keys.feature | 46 - features/project/ff_merge_requests.feature | 41 - .../project/forked_merge_requests.feature | 51 - features/project/issues/references.feature | 33 - .../project/merge_requests/references.feature | 31 - features/steps/group/members.rb | 68 - features/steps/profile/notifications.rb | 20 - features/steps/project/commits/branches.rb | 32 - features/steps/project/commits/comments.rb | 6 - .../steps/project/commits/diff_comments.rb | 6 - features/steps/project/create.rb | 23 - features/steps/project/deploy_keys.rb | 94 - features/steps/project/ff_merge_requests.rb | 87 - .../steps/project/forked_merge_requests.rb | 139 - .../steps/project/issues/filter_labels.rb | 61 - features/steps/project/issues/issues.rb | 175 - features/steps/project/issues/milestones.rb | 20 - features/steps/project/issues/references.rb | 7 - .../project/merge_requests/references.rb | 7 - features/steps/project/source/browse_files.rb | 435 -- features/steps/shared/active_tab.rb | 32 - features/steps/shared/admin.rb | 11 - features/steps/shared/authentication.rb | 75 - features/steps/shared/diff_note.rb | 237 - features/steps/shared/group.rb | 46 - features/steps/shared/issuable.rb | 167 - features/steps/shared/markdown.rb | 11 - features/steps/shared/note.rb | 25 - features/steps/shared/paths.rb | 430 -- features/steps/shared/project.rb | 132 - features/steps/shared/project_tab.rb | 66 - features/steps/shared/shortcuts.rb | 18 - features/steps/shared/sidebar_active_tab.rb | 31 - features/steps/shared/user.rb | 41 - features/support/capybara.rb | 50 - features/support/db_cleaner.rb | 11 - features/support/env.rb | 60 - features/support/gitaly.rb | 3 - features/support/login_helpers.rb | 19 - features/support/rerun.rb | 16 - lib/api/api.rb | 64 +- lib/api/avatar.rb | 21 + lib/api/boards.rb | 1 + lib/api/branches.rb | 8 +- lib/api/commits.rb | 22 +- lib/api/entities.rb | 97 +- lib/api/events.rb | 25 +- lib/api/files.rb | 56 +- lib/api/groups.rb | 15 +- lib/api/helpers.rb | 3 +- lib/api/helpers/headers_helpers.rb | 11 + lib/api/helpers/internal_helpers.rb | 6 - lib/api/helpers/pagination.rb | 269 +- lib/api/helpers/related_resources_helpers.rb | 11 +- lib/api/helpers/runner.rb | 5 + lib/api/internal.rb | 6 +- lib/api/issues.rb | 14 +- lib/api/jobs.rb | 1 + lib/api/markdown.rb | 30 + lib/api/merge_requests.rb | 83 +- lib/api/milestone_responses.rb | 2 +- lib/api/pipelines.rb | 9 +- lib/api/project_export.rb | 10 +- lib/api/projects.rb | 24 +- lib/api/protected_branches.rb | 4 +- lib/api/repositories.rb | 3 +- lib/api/runner.rb | 48 +- lib/api/runners.rb | 38 +- lib/api/search.rb | 4 +- lib/api/settings.rb | 25 +- lib/api/users.rb | 26 +- lib/api/v3/award_emoji.rb | 130 - lib/api/v3/boards.rb | 72 - lib/api/v3/branches.rb | 76 - lib/api/v3/broadcast_messages.rb | 31 - lib/api/v3/builds.rb | 250 - lib/api/v3/commits.rb | 199 - lib/api/v3/deploy_keys.rb | 143 - lib/api/v3/deployments.rb | 43 - lib/api/v3/entities.rb | 309 - lib/api/v3/environments.rb | 87 - lib/api/v3/files.rb | 138 - lib/api/v3/groups.rb | 185 - lib/api/v3/helpers.rb | 49 - lib/api/v3/issues.rb | 240 - lib/api/v3/labels.rb | 34 - lib/api/v3/members.rb | 136 - lib/api/v3/merge_request_diffs.rb | 44 - lib/api/v3/merge_requests.rb | 297 - lib/api/v3/milestones.rb | 65 - lib/api/v3/notes.rb | 148 - lib/api/v3/pipelines.rb | 38 - lib/api/v3/project_hooks.rb | 111 - lib/api/v3/project_snippets.rb | 143 - lib/api/v3/projects.rb | 475 -- lib/api/v3/repositories.rb | 110 - lib/api/v3/runners.rb | 66 - lib/api/v3/services.rb | 670 -- lib/api/v3/settings.rb | 147 - lib/api/v3/snippets.rb | 141 - lib/api/v3/subscriptions.rb | 53 - lib/api/v3/system_hooks.rb | 32 - lib/api/v3/tags.rb | 40 - lib/api/v3/templates.rb | 122 - lib/api/v3/time_tracking_endpoints.rb | 116 - lib/api/v3/todos.rb | 30 - lib/api/v3/triggers.rb | 112 - lib/api/v3/users.rb | 204 - lib/api/v3/variables.rb | 29 - lib/backup.rb | 3 + lib/backup/artifacts.rb | 6 +- lib/backup/builds.rb | 6 +- lib/backup/database.rb | 20 +- lib/backup/files.rb | 19 +- lib/backup/lfs.rb | 6 +- lib/backup/manager.rb | 61 +- lib/backup/pages.rb | 6 +- lib/backup/registry.rb | 6 +- lib/backup/repository.rb | 274 +- lib/backup/uploads.rb | 6 +- lib/banzai.rb | 7 + .../filter/abstract_reference_filter.rb | 11 +- lib/banzai/filter/blockquote_fence_filter.rb | 12 +- lib/banzai/filter/emoji_filter.rb | 4 - lib/banzai/filter/gollum_tags_filter.rb | 5 + lib/banzai/filter/markdown_filter.rb | 2 +- .../filter/merge_request_reference_filter.rb | 5 +- .../filter/milestone_reference_filter.rb | 2 +- lib/banzai/filter/plantuml_filter.rb | 2 +- lib/banzai/filter/reference_filter.rb | 10 +- lib/banzai/filter/sanitization_filter.rb | 17 +- lib/banzai/object_renderer.rb | 1 + lib/banzai/pipeline/gfm_pipeline.rb | 8 +- lib/banzai/redactor.rb | 8 +- lib/banzai/reference_parser/issue_parser.rb | 3 +- lib/bitbucket/representation/issue.rb | 2 +- lib/constraints/feature_constrainer.rb | 13 + lib/feature.rb | 24 +- lib/gitaly/server.rb | 20 +- lib/gitlab.rb | 1 + lib/gitlab/access.rb | 16 +- lib/gitlab/auth.rb | 27 +- lib/gitlab/auth/ldap/access.rb | 41 +- lib/gitlab/auth/ldap/config.rb | 18 +- lib/gitlab/auth/o_auth/user.rb | 4 + lib/gitlab/auth/request_authenticator.rb | 2 +- lib/gitlab/auth/saml/auth_hash.rb | 15 + lib/gitlab/auth/saml/config.rb | 8 + lib/gitlab/auth/saml/user.rb | 10 +- lib/gitlab/auth/user_access_denied_reason.rb | 8 +- lib/gitlab/auth/user_auth_finders.rb | 28 +- .../archive_legacy_traces.rb | 24 + .../cleanup_concurrent_rename.rb | 14 + .../cleanup_concurrent_schema_change.rb | 52 + .../cleanup_concurrent_type_change.rb | 48 +- .../background_migration/delete_diff_files.rb | 46 + .../fill_file_store_job_artifact.rb | 20 + .../fill_file_store_lfs_object.rb | 20 + .../background_migration/fill_store_upload.rb | 21 + .../fix_cross_project_label_links.rb | 138 + .../prepare_untracked_uploads.rb | 3 +- lib/gitlab/cache/request_cache.rb | 37 +- lib/gitlab/checks/change_access.rb | 2 +- lib/gitlab/checks/commit_check.rb | 2 +- lib/gitlab/checks/force_push.rb | 16 +- lib/gitlab/ci/pipeline/chain/populate.rb | 3 + lib/gitlab/ci/pipeline/expression.rb | 10 + .../ci/pipeline/expression/lexeme/matches.rb | 29 + .../ci/pipeline/expression/lexeme/pattern.rb | 33 + lib/gitlab/ci/pipeline/expression/lexer.rb | 8 +- .../ci/pipeline/expression/statement.rb | 9 +- lib/gitlab/ci/pipeline/preloader.rb | 52 + lib/gitlab/ci/status/build/failed.rb | 2 +- lib/gitlab/ci/status/stage/common.rb | 4 +- lib/gitlab/ci/trace.rb | 48 +- lib/gitlab/ci/trace/http_io.rb | 2 +- lib/gitlab/ci/variables/collection/item.rb | 3 + lib/gitlab/contributions_calendar.rb | 2 +- lib/gitlab/current_settings.rb | 41 +- lib/gitlab/cycle_analytics/summary/commit.rb | 16 +- lib/gitlab/data_builder/pipeline.rb | 2 +- lib/gitlab/database.rb | 22 +- lib/gitlab/database/count.rb | 72 +- lib/gitlab/database/median.rb | 17 +- lib/gitlab/database/migration_helpers.rb | 91 + .../v1/migration_classes.rb | 1 + lib/gitlab/diff/file.rb | 42 +- .../file_collection/merge_request_diff.rb | 2 +- lib/gitlab/diff/highlight.rb | 4 +- lib/gitlab/diff/line.rb | 44 +- lib/gitlab/diff/parser.rb | 8 +- lib/gitlab/ee_compat_check.rb | 4 +- .../email/handler/create_issue_handler.rb | 2 +- lib/gitlab/email/handler/reply_processing.rb | 8 +- lib/gitlab/email/reply_parser.rb | 7 +- lib/gitlab/exclusive_lease_helpers.rb | 29 + lib/gitlab/favicon.rb | 58 + lib/gitlab/file_detector.rb | 1 + lib/gitlab/file_finder.rb | 43 +- lib/gitlab/gfm/uploads_rewriter.rb | 22 +- lib/gitlab/git.rb | 2 +- lib/gitlab/git/blame.rb | 29 +- lib/gitlab/git/blob.rb | 113 +- lib/gitlab/git/commit.rb | 239 +- lib/gitlab/git/commit_stats.rb | 16 +- lib/gitlab/git/committer_with_hooks.rb | 2 +- lib/gitlab/git/conflict/resolver.rb | 69 +- lib/gitlab/git/gitlab_projects.rb | 62 +- lib/gitlab/git/hook.rb | 6 +- lib/gitlab/git/hooks_service.rb | 2 - lib/gitlab/git/lfs_changes.rb | 38 +- lib/gitlab/git/operation_service.rb | 2 + lib/gitlab/git/pre_receive_error.rb | 21 + lib/gitlab/git/remote_mirror.rb | 77 +- lib/gitlab/git/repository.rb | 1030 +-- lib/gitlab/git/repository_mirroring.rb | 6 +- lib/gitlab/git/rev_list.rb | 23 +- lib/gitlab/git/storage/checker.rb | 2 +- lib/gitlab/git/storage/circuit_breaker.rb | 15 +- lib/gitlab/git/tag.rb | 77 +- lib/gitlab/git/tree.rb | 10 +- lib/gitlab/git/version.rb | 11 + lib/gitlab/git/wiki.rb | 169 +- lib/gitlab/gitaly_client.rb | 31 +- lib/gitlab/gitaly_client/blob_service.rb | 10 +- lib/gitlab/gitaly_client/commit_service.rb | 39 +- lib/gitlab/gitaly_client/conflicts_service.rb | 12 +- lib/gitlab/gitaly_client/namespace_service.rb | 12 +- lib/gitlab/gitaly_client/operation_service.rb | 40 +- lib/gitlab/gitaly_client/ref_service.rb | 42 +- lib/gitlab/gitaly_client/remote_service.rb | 4 +- .../gitaly_client/repository_service.rb | 178 +- lib/gitlab/gitaly_client/server_service.rb | 2 +- lib/gitlab/gitaly_client/storage_service.rb | 15 + lib/gitlab/gitaly_client/storage_settings.rb | 37 +- lib/gitlab/gitaly_client/util.rb | 14 - lib/gitlab/gitaly_client/wiki_service.rb | 10 +- .../importer/lfs_object_importer.rb | 24 + .../importer/lfs_objects_importer.rb | 37 + .../importer/pull_request_importer.rb | 57 +- lib/gitlab/github_import/parallel_importer.rb | 9 + .../representation/lfs_object.rb | 32 + .../github_import/sequential_importer.rb | 5 +- lib/gitlab/gitlab_import/client.rb | 10 +- lib/gitlab/gitlab_import/importer.rb | 2 +- lib/gitlab/gitlab_import/project_creator.rb | 2 +- lib/gitlab/gon_helper.rb | 2 +- lib/gitlab/gpg.rb | 6 +- .../formatters/lograge_with_timestamp.rb | 17 + .../loggers/queue_duration_logger.rb | 26 + lib/gitlab/graphql.rb | 5 + lib/gitlab/graphql/authorize.rb | 21 + .../graphql/authorize/instrumentation.rb | 45 + lib/gitlab/graphql/connections.rb | 12 + .../graphql/connections/keyset_connection.rb | 73 + lib/gitlab/graphql/errors.rb | 8 + lib/gitlab/graphql/expose_permissions.rb | 15 + lib/gitlab/graphql/present.rb | 20 + lib/gitlab/graphql/present/instrumentation.rb | 36 + lib/gitlab/graphql/variables.rb | 37 + lib/gitlab/hashed_storage/migrator.rb | 57 + lib/gitlab/hashed_storage/rake_helper.rb | 83 + lib/gitlab/health_checks/db_check.rb | 2 +- lib/gitlab/health_checks/fs_shards_check.rb | 166 - lib/gitlab/health_checks/gitaly_check.rb | 14 +- lib/gitlab/highlight.rb | 14 +- lib/gitlab/i18n.rb | 3 +- lib/gitlab/i18n/metadata_entry.rb | 11 +- lib/gitlab/i18n/po_linter.rb | 144 +- lib/gitlab/i18n/translation_entry.rb | 26 +- lib/gitlab/import_export.rb | 6 +- .../base_after_export_strategy.rb | 17 +- .../web_upload_strategy.rb | 26 +- lib/gitlab/import_export/avatar_saver.rb | 11 +- .../group_project_object_builder.rb | 90 + lib/gitlab/import_export/import_export.yml | 1 + .../import_export/project_tree_restorer.rb | 29 +- lib/gitlab/import_export/relation_factory.rb | 88 +- lib/gitlab/import_export/repo_saver.rb | 4 - lib/gitlab/import_export/saver.rb | 31 +- lib/gitlab/import_export/uploads_manager.rb | 104 + lib/gitlab/import_export/uploads_restorer.rb | 21 +- lib/gitlab/import_export/uploads_saver.rb | 15 +- lib/gitlab/import_export/wiki_repo_saver.rb | 6 +- lib/gitlab/import_formatter.rb | 1 + lib/gitlab/incoming_email.rb | 2 +- lib/gitlab/kubernetes/helm/base_command.rb | 2 +- lib/gitlab/kubernetes/helm/install_command.rb | 11 +- .../legacy_github_import/project_creator.rb | 5 +- lib/gitlab/metrics/prometheus.rb | 8 + lib/gitlab/metrics/samplers/influx_sampler.rb | 6 - lib/gitlab/metrics/samplers/ruby_sampler.rb | 36 +- .../metrics/subscribers/active_record.rb | 2 +- lib/gitlab/metrics/transaction.rb | 2 +- lib/gitlab/metrics/web_transaction.rb | 9 +- lib/gitlab/middleware/multipart.rb | 16 +- lib/gitlab/middleware/read_only/controller.rb | 46 +- lib/gitlab/multi_collection_paginator.rb | 2 +- lib/gitlab/omniauth_initializer.rb | 5 + lib/gitlab/path_regex.rb | 1 + lib/gitlab/profiler.rb | 13 +- lib/gitlab/project_search_results.rb | 5 +- .../active_support_subscriber.rb | 2 +- lib/gitlab/quick_actions/extractor.rb | 8 +- .../quick_actions/substitution_definition.rb | 2 +- lib/gitlab/repo_path.rb | 19 +- lib/gitlab/repository_cache_adapter.rb | 10 + lib/gitlab/request_forgery_protection.rb | 2 +- lib/gitlab/search/parsed_query.rb | 23 + lib/gitlab/search/query.rb | 55 + lib/gitlab/serializer/pagination.rb | 2 - lib/gitlab/setup_helper.rb | 5 +- lib/gitlab/shard_health_cache.rb | 41 + lib/gitlab/shell.rb | 62 +- lib/gitlab/slash_commands/command.rb | 18 +- .../slash_commands/presenters/access.rb | 2 +- lib/gitlab/sql/cte.rb | 50 + lib/gitlab/task_helpers.rb | 14 +- lib/gitlab/temporarily_allow.rb | 42 + lib/gitlab/themes.rb | 15 +- lib/gitlab/untrusted_regexp.rb | 45 +- lib/gitlab/url_blocker.rb | 34 +- lib/gitlab/url_builder.rb | 2 + lib/gitlab/usage_data.rb | 17 +- lib/gitlab/user_access.rb | 2 +- lib/gitlab/utils/override.rb | 18 +- lib/gitlab/verify/batch_verifier.rb | 59 +- lib/gitlab/verify/job_artifacts.rb | 10 +- lib/gitlab/verify/lfs_objects.rb | 12 +- lib/gitlab/verify/rake_task.rb | 2 +- lib/gitlab/verify/uploads.rb | 12 +- lib/gitlab/webpack/dev_server_middleware.rb | 5 + lib/gitlab/wiki_file_finder.rb | 23 + lib/gitlab/workhorse.rb | 7 +- lib/google_api/cloud_platform/client.rb | 17 +- lib/mattermost/command.rb | 2 +- lib/mattermost/session.rb | 4 +- lib/mattermost/team.rb | 6 +- lib/microsoft_teams/notifier.rb | 2 +- lib/mysql_zero_date.rb | 18 + lib/object_storage/direct_upload.rb | 166 + lib/omni_auth/strategies/jwt.rb | 4 +- .../rblineprof/custom_controller_helpers.rb | 4 +- lib/rspec_flaky/listener.rb | 10 +- lib/rspec_flaky/report.rb | 4 +- lib/support/nginx/gitlab | 16 +- lib/support/nginx/gitlab-ssl | 16 +- lib/system_check/orphans/namespace_check.rb | 14 +- lib/system_check/orphans/repository_check.rb | 16 +- lib/system_check/simple_executor.rb | 30 +- lib/tasks/flay.rake | 2 +- lib/tasks/gettext.rake | 38 +- lib/tasks/gitlab/backup.rake | 132 +- lib/tasks/gitlab/check.rake | 12 +- lib/tasks/gitlab/cleanup.rake | 5 +- lib/tasks/gitlab/db.rake | 4 +- lib/tasks/gitlab/import_export.rake | 21 +- lib/tasks/gitlab/info.rake | 6 +- lib/tasks/gitlab/storage.rake | 124 +- lib/tasks/gitlab/test.rake | 1 - lib/tasks/gitlab/traces.rake | 4 +- lib/tasks/import.rake | 7 +- lib/tasks/lint.rake | 43 +- lib/tasks/migrate/add_limits_mysql.rake | 2 + lib/tasks/migrate/composite_primary_keys.rake | 15 + lib/tasks/migrate/setup_postgresql.rake | 17 + lib/tasks/spinach.rake | 60 - lib/tasks/tokens.rake | 10 +- lib/uploaded_file.rb | 17 +- locale/bg/gitlab.po | 2226 ++++--- locale/cs_CZ/gitlab.po | 5640 +++++++++++++++++ locale/de/gitlab.po | 2226 ++++--- locale/eo/gitlab.po | 2226 ++++--- locale/es/gitlab.po | 2254 ++++--- locale/fil_PH/gitlab.po | 2216 ++++--- locale/fr/gitlab.po | 3450 +++++----- locale/gitlab.pot | 1255 +++- locale/gl_ES/gitlab.po | 5562 ++++++++++++++++ locale/id_ID/gitlab.po | 2200 ++++--- locale/it/gitlab.po | 2238 ++++--- locale/ja/gitlab.po | 3124 ++++----- locale/ko/gitlab.po | 2210 ++++--- locale/nl_NL/gitlab.po | 2218 ++++--- locale/pl_PL/gitlab.po | 2250 ++++--- locale/pt_BR/gitlab.po | 2984 +++++---- locale/ru/gitlab.po | 2900 +++++---- locale/tr_TR/gitlab.po | 2222 ++++--- locale/uk/gitlab.po | 2678 ++++---- locale/zh_CN/gitlab.po | 2620 ++++---- locale/zh_HK/gitlab.po | 2210 ++++--- locale/zh_TW/gitlab.po | 3964 ++++++------ package.json | 51 +- public/favicon.ico | Bin 5430 -> 0 bytes qa/Dockerfile | 9 + qa/qa.rb | 44 +- qa/qa/factory/repository/project_push.rb | 34 + qa/qa/factory/repository/push.rb | 39 +- qa/qa/factory/repository/wiki_push.rb | 32 + qa/qa/factory/resource/branch.rb | 29 +- qa/qa/factory/resource/group.rb | 2 +- qa/qa/factory/resource/kubernetes_cluster.rb | 55 + qa/qa/factory/resource/merge_request.rb | 4 +- qa/qa/factory/resource/project.rb | 18 +- .../resource/project_imported_from_github.rb | 37 + qa/qa/factory/resource/sandbox.rb | 4 +- qa/qa/factory/resource/wiki.rb | 25 + qa/qa/fixtures/auto_devops_rack/Gemfile | 3 + qa/qa/fixtures/auto_devops_rack/Gemfile.lock | 15 + qa/qa/fixtures/auto_devops_rack/Rakefile | 7 + qa/qa/fixtures/auto_devops_rack/config.ru | 1 + qa/qa/git/repository.rb | 19 +- qa/qa/page/admin/settings/main.rb | 4 +- qa/qa/page/base.rb | 2 +- qa/qa/page/component/select2.rb | 11 + qa/qa/page/group/show.rb | 6 +- qa/qa/page/issuable/sidebar.rb | 17 + qa/qa/page/main/login.rb | 71 +- qa/qa/page/menu/main.rb | 17 +- qa/qa/page/menu/side.rb | 33 + qa/qa/page/merge_request/show.rb | 50 +- qa/qa/page/project/import/github.rb | 66 + qa/qa/page/project/job/show.rb | 31 +- qa/qa/page/project/new.rb | 20 +- .../page/project/operations/kubernetes/add.rb | 19 + .../operations/kubernetes/add_existing.rb | 39 + .../project/operations/kubernetes/index.rb | 19 + .../project/operations/kubernetes/show.rb | 39 + qa/qa/page/project/pipeline/show.rb | 4 +- qa/qa/page/project/settings/advanced.rb | 6 +- qa/qa/page/project/settings/ci_cd.rb | 25 +- qa/qa/page/project/settings/deploy_keys.rb | 4 + qa/qa/page/project/settings/main.rb | 4 +- qa/qa/page/project/settings/merge_request.rb | 12 +- .../project/settings/protected_branches.rb | 29 +- qa/qa/page/project/settings/repository.rb | 10 +- qa/qa/page/project/show.rb | 43 +- qa/qa/page/project/wiki/edit.rb | 27 + qa/qa/page/project/wiki/new.rb | 45 + qa/qa/page/project/wiki/show.rb | 19 + qa/qa/page/settings/common.rb | 20 +- qa/qa/page/shared/clone_panel.rb | 50 + qa/qa/runtime/api.rb | 82 - qa/qa/runtime/api/client.rb | 39 + qa/qa/runtime/api/request.rb | 43 + qa/qa/runtime/browser.rb | 25 +- qa/qa/runtime/env.rb | 33 +- qa/qa/runtime/namespace.rb | 4 +- qa/qa/scenario/test/integration/github.rb | 18 + qa/qa/scenario/test/integration/kubernetes.rb | 11 + qa/qa/service/kubernetes_cluster.rb | 77 + qa/qa/service/runner.rb | 1 - qa/qa/specs/features/api/basics_spec.rb | 61 + qa/qa/specs/features/api/users_spec.rb | 21 +- qa/qa/specs/features/login/ldap_spec.rb | 10 +- qa/qa/specs/features/login/standard_spec.rb | 4 +- .../features/mattermost/group_create_spec.rb | 4 +- qa/qa/specs/features/mattermost/login_spec.rb | 4 +- .../features/merge_request/create_spec.rb | 6 +- .../features/merge_request/rebase_spec.rb | 6 +- .../features/merge_request/squash_spec.rb | 50 + qa/qa/specs/features/project/activity_spec.rb | 6 +- .../features/project/add_deploy_key_spec.rb | 4 +- .../project/add_secret_variable_spec.rb | 4 +- .../features/project/auto_devops_spec.rb | 57 + .../features/project/create_issue_spec.rb | 4 +- qa/qa/specs/features/project/create_spec.rb | 4 +- .../features/project/deploy_key_clone_spec.rb | 30 +- .../project/import_from_github_spec.rb | 106 + .../specs/features/project/pipelines_spec.rb | 8 +- qa/qa/specs/features/project/wikis_spec.rb | 45 + qa/qa/specs/features/repository/clone_spec.rb | 8 +- .../repository/protected_branches_spec.rb | 86 +- qa/qa/specs/features/repository/push_spec.rb | 6 +- qa/spec/git/repository_spec.rb | 40 + .../client_spec.rb} | 0 qa/spec/runtime/api/request_spec.rb | 44 + qa/spec/runtime/api_request_spec.rb | 42 - qa/spec/runtime/env_spec.rb | 23 + qa/spec/support/stub_env.rb | 2 + rubocop/cop/gitlab/finder_with_find_by.rb | 52 + .../cop/group_public_or_visible_to_user.rb | 22 + .../line_break_around_conditional_block.rb | 2 +- rubocop/cop/migration/update_large_table.rb | 15 +- rubocop/rubocop.rb | 2 + scripts/create_mysql_user.sh | 1 - scripts/create_postgres_user.sh | 4 +- scripts/frontend/postinstall.js | 22 + scripts/frontend/prettier.js | 55 +- scripts/no-ee-check | 7 + scripts/prepare_build.sh | 20 +- scripts/prune-old-flaky-specs | 6 +- scripts/rails5-gemfile-lock-check | 19 + scripts/trigger-build | 185 + scripts/trigger-build-docs | 14 +- scripts/trigger-build-omnibus | 108 - scripts/utils.sh | 18 + spec/bin/changelog_spec.rb | 11 +- .../application_settings_controller_spec.rb | 2 +- .../application_controller_spec.rb | 96 +- .../boards/issues_controller_spec.rb | 4 +- .../boards/lists_controller_spec.rb | 18 +- spec/controllers/concerns/group_tree_spec.rb | 11 + .../concerns/internal_redirect_spec.rb | 25 + .../concerns/send_file_upload_spec.rb | 15 + spec/controllers/graphql_controller_spec.rb | 69 + .../groups/avatars_controller_spec.rb | 2 +- .../groups/runners_controller_spec.rb | 3 +- .../groups/shared_projects_controller_spec.rb | 68 + .../groups/uploads_controller_spec.rb | 8 + spec/controllers/health_controller_spec.rb | 4 +- .../import/gitlab_projects_controller_spec.rb | 2 +- .../import/google_code_controller_spec.rb | 2 +- spec/controllers/metrics_controller_spec.rb | 42 +- .../oauth/authorizations_controller_spec.rb | 34 +- .../omniauth_callbacks_controller_spec.rb | 205 +- .../profiles/avatars_controller_spec.rb | 2 +- spec/controllers/profiles_controller_spec.rb | 2 +- .../projects/avatars_controller_spec.rb | 2 +- .../projects/blob_controller_spec.rb | 79 +- .../projects/boards_controller_spec.rb | 66 +- .../projects/branches_controller_spec.rb | 18 + .../projects/clusters/gcp_controller_spec.rb | 202 - .../projects/clusters/user_controller_spec.rb | 89 - .../projects/clusters_controller_spec.rb | 233 +- .../projects/commit_controller_spec.rb | 33 +- .../projects/discussions_controller_spec.rb | 23 +- .../projects/environments_controller_spec.rb | 26 + .../projects/group_links_controller_spec.rb | 12 + .../projects/imports_controller_spec.rb | 26 +- .../projects/issues_controller_spec.rb | 4 +- .../projects/jobs_controller_spec.rb | 136 +- .../conflicts_controller_spec.rb | 2 +- .../merge_requests/diffs_controller_spec.rb | 29 +- .../merge_requests_controller_spec.rb | 75 +- .../projects/milestones_controller_spec.rb | 39 +- .../projects/mirrors_controller_spec.rb | 2 +- .../projects/notes_controller_spec.rb | 14 +- .../projects/pages_controller_spec.rb | 4 +- .../pipeline_schedules_controller_spec.rb | 16 +- .../projects/pipelines_controller_spec.rb | 135 +- .../project_members_controller_spec.rb | 2 +- .../projects/runners_controller_spec.rb | 3 +- .../projects/services_controller_spec.rb | 2 +- .../settings/ci_cd_controller_spec.rb | 10 +- .../projects/uploads_controller_spec.rb | 8 + spec/controllers/projects_controller_spec.rb | 113 +- .../registrations_controller_spec.rb | 21 + spec/controllers/sessions_controller_spec.rb | 62 +- spec/controllers/uploads_controller_spec.rb | 101 +- .../users/terms_controller_spec.rb | 29 +- spec/dependencies/omniauth_saml_spec.rb | 22 + spec/factories/application_settings.rb | 1 + spec/factories/ci/build_trace_chunks.rb | 48 + spec/factories/ci/builds.rb | 6 + spec/factories/ci/runner_projects.rb | 2 +- spec/factories/ci/runners.rb | 31 +- spec/factories/clusters/applications/helm.rb | 3 + spec/factories/clusters/clusters.rb | 4 +- spec/factories/gitaly/tag.rb | 9 + spec/factories/import_export_uploads.rb | 5 + spec/factories/issues.rb | 1 + spec/factories/lfs_objects.rb | 2 +- spec/factories/merge_requests.rb | 11 + spec/factories/notes.rb | 4 +- spec/factories/project_auto_devops.rb | 9 + spec/factories/projects.rb | 28 +- spec/factories/term_agreements.rb | 8 + spec/factories/uploads.rb | 7 + spec/factories/users.rb | 4 - spec/fast_spec_helper.rb | 12 +- spec/features/abuse_report_spec.rb | 4 +- .../admin/admin_abuse_reports_spec.rb | 2 +- spec/features/admin/admin_appearance_spec.rb | 36 +- .../admin/admin_broadcast_messages_spec.rb | 12 +- .../admin/admin_browse_spam_logs_spec.rb | 2 +- spec/features/admin/admin_cohorts_spec.rb | 4 +- ...admin_disables_git_access_protocol_spec.rb | 16 +- .../admin/admin_disables_two_factor_spec.rb | 6 +- spec/features/admin/admin_groups_spec.rb | 13 +- .../features/admin/admin_health_check_spec.rb | 2 +- spec/features/admin/admin_hook_logs_spec.rb | 8 +- spec/features/admin/admin_projects_spec.rb | 2 +- .../admin/admin_requests_profiles_spec.rb | 4 +- spec/features/admin/admin_runners_spec.rb | 25 +- spec/features/admin/admin_settings_spec.rb | 79 +- spec/features/admin/admin_users_spec.rb | 6 +- .../admin_uses_repository_checks_spec.rb | 10 +- spec/features/atom/dashboard_issues_spec.rb | 12 +- spec/features/atom/dashboard_spec.rb | 6 +- spec/features/atom/issues_spec.rb | 13 +- spec/features/atom/users_spec.rb | 6 +- spec/features/boards/add_issues_modal_spec.rb | 32 +- spec/features/boards/boards_spec.rb | 54 +- spec/features/boards/issue_ordering_spec.rb | 41 +- spec/features/boards/modal_filter_spec.rb | 22 +- spec/features/boards/new_issue_spec.rb | 2 +- spec/features/boards/sidebar_spec.rb | 26 +- .../features/boards/sub_group_project_spec.rb | 2 +- spec/features/calendar_spec.rb | 2 +- spec/features/commits_spec.rb | 2 +- spec/features/container_registry_spec.rb | 8 +- spec/features/cycle_analytics_spec.rb | 2 +- spec/features/dashboard/activity_spec.rb | 20 +- .../dashboard/datetime_on_tooltips_spec.rb | 2 +- spec/features/dashboard/groups_list_spec.rb | 6 +- spec/features/dashboard/issues_filter_spec.rb | 8 +- spec/features/dashboard/issues_spec.rb | 4 +- .../features/dashboard/merge_requests_spec.rb | 2 +- .../dashboard/milestone_filter_spec.rb | 2 +- spec/features/dashboard/milestones_spec.rb | 2 +- .../project_member_activity_index_spec.rb | 2 +- spec/features/dashboard/projects_spec.rb | 34 +- spec/features/dashboard/shortcuts_spec.rb | 6 +- .../dashboard/todos/target_state_spec.rb | 12 +- .../dashboard/todos/todos_filtering_spec.rb | 2 +- .../dashboard/todos/todos_sorting_spec.rb | 2 +- spec/features/dashboard/todos/todos_spec.rb | 4 +- spec/features/error_pages_spec.rb | 42 + spec/features/expand_collapse_diffs_spec.rb | 2 +- spec/features/explore/groups_list_spec.rb | 4 + spec/features/explore/new_menu_spec.rb | 38 +- spec/features/global_search_spec.rb | 2 +- spec/features/group_variables_spec.rb | 4 +- spec/features/groups/activity_spec.rb | 10 +- spec/features/groups/empty_states_spec.rb | 34 +- spec/features/groups/group_settings_spec.rb | 53 +- spec/features/groups/issues_spec.rb | 38 +- spec/features/groups/labels/edit_spec.rb | 12 +- spec/features/groups/labels/index_spec.rb | 17 + .../groups/labels/subscription_spec.rb | 4 +- .../labels/user_sees_links_to_issuables.rb | 4 +- .../groups/members/filter_members_spec.rb | 54 + .../groups/members/leave_group_spec.rb | 12 +- .../groups/members/list_members_spec.rb | 8 +- .../groups/members/manage_members_spec.rb | 18 +- .../master_manages_access_requests_spec.rb | 2 +- .../groups/members/request_access_spec.rb | 18 +- .../groups/members/search_members_spec.rb | 2 +- .../groups/members/sort_members_spec.rb | 22 +- spec/features/groups/merge_requests_spec.rb | 19 +- spec/features/groups/milestone_spec.rb | 15 +- .../groups/milestones_sorting_spec.rb | 4 +- .../groups/settings/group_badges_spec.rb | 18 +- spec/features/groups/share_lock_spec.rb | 51 +- spec/features/groups/show_spec.rb | 6 +- .../user_browse_projects_group_page_spec.rb | 2 +- ..._users_dropdowns_in_issuables_list_spec.rb | 2 +- spec/features/groups_spec.rb | 8 +- spec/features/ics/dashboard_issues_spec.rb | 102 + spec/features/ics/group_issues_spec.rb | 77 + spec/features/ics/project_issues_spec.rb | 76 + spec/features/invites_spec.rb | 112 +- .../internal_references_spec.rb | 140 + .../markdown_references/jira_spec.rb | 187 + .../issuables/markdown_references_spec.rb | 193 - .../issuables/shortcuts_issuable_spec.rb | 25 +- spec/features/issues/award_spec.rb | 2 +- .../issues/bulk_assignment_labels_spec.rb | 2 +- ...e_for_discussions_in_merge_request_spec.rb | 16 +- ...single_discussion_in_merge_request_spec.rb | 22 +- .../filtered_search/dropdown_assignee_spec.rb | 51 +- .../filtered_search/filter_issues_spec.rb | 42 +- spec/features/issues/form_spec.rb | 3 + spec/features/issues/gfm_autocomplete_spec.rb | 2 +- spec/features/issues/issue_detail_spec.rb | 19 +- spec/features/issues/issue_sidebar_spec.rb | 2 +- spec/features/issues/markdown_toolbar_spec.rb | 2 +- spec/features/issues/move_spec.rb | 24 +- spec/features/issues/note_polling_spec.rb | 2 +- spec/features/issues/todo_spec.rb | 2 +- spec/features/issues/update_issues_spec.rb | 2 +- ...r_creates_branch_and_merge_request_spec.rb | 4 +- .../issues/user_uses_slash_commands_spec.rb | 42 +- spec/features/issues_spec.rb | 16 +- spec/features/labels_hierarchy_spec.rb | 26 +- spec/features/markdown/copy_as_gfm_spec.rb | 9 +- spec/features/markdown/markdown_spec.rb | 241 +- .../maintainer_edits_fork_spec.rb | 2 +- ...mmits_from_memebers_who_can_merge_spec.rb} | 22 +- .../user_creates_image_diff_notes_spec.rb | 10 +- .../user_locks_discussion_spec.rb | 4 +- .../user_posts_diff_notes_spec.rb | 27 +- .../merge_request/user_posts_notes_spec.rb | 26 +- .../user_resolves_conflicts_spec.rb | 29 +- ...diff_notes_and_discussions_resolve_spec.rb | 44 +- ...resolves_outdated_diff_discussions_spec.rb | 4 +- .../user_scrolls_to_note_on_load_spec.rb | 10 +- .../user_sees_avatar_on_diff_notes_spec.rb | 6 +- .../user_sees_check_out_branch_modal_spec.rb | 24 + .../merge_request/user_sees_diff_spec.rb | 68 +- .../user_sees_discussions_spec.rb | 8 +- .../user_sees_mini_pipeline_graph_spec.rb | 7 +- ...ser_sees_notes_from_forked_project_spec.rb | 2 +- .../user_sees_system_notes_spec.rb | 2 +- .../merge_request/user_sees_versions_spec.rb | 6 +- .../user_uses_slash_commands_spec.rb | 33 +- .../user_squashes_merge_request_spec.rb | 124 + spec/features/milestone_spec.rb | 30 +- .../milestones/user_deletes_milestone_spec.rb | 1 + spec/features/oauth_login_spec.rb | 2 +- .../participants_autocomplete_spec.rb | 8 +- spec/features/password_reset_spec.rb | 2 +- spec/features/profile_spec.rb | 12 +- spec/features/profiles/account_spec.rb | 26 +- .../features/profiles/active_sessions_spec.rb | 6 +- spec/features/profiles/chat_names_spec.rb | 26 +- spec/features/profiles/emails_spec.rb | 14 +- spec/features/profiles/gpg_keys_spec.rb | 12 +- spec/features/profiles/keys_spec.rb | 28 +- ...r_changes_notified_of_own_activity_spec.rb | 6 +- .../user_visits_notifications_tab_spec.rb | 2 +- spec/features/projects/activity/rss_spec.rb | 6 +- .../activity/user_sees_activity_spec.rb | 2 +- spec/features/projects/actve_tabs_spec.rb | 4 +- spec/features/projects/artifacts/file_spec.rb | 2 +- spec/features/projects/artifacts/raw_spec.rb | 2 +- .../features/projects/badges/coverage_spec.rb | 20 +- spec/features/projects/badges/list_spec.rb | 10 +- .../projects/badges/pipeline_badge_spec.rb | 2 +- .../blobs/blob_line_permalink_updater_spec.rb | 2 +- .../features/projects/blobs/blob_show_spec.rb | 20 +- spec/features/projects/blobs/edit_spec.rb | 2 +- .../projects/blobs/shortcuts_blob_spec.rb | 2 +- ...er_creates_new_blob_in_new_project_spec.rb | 2 +- .../branches/download_buttons_spec.rb | 18 +- .../projects/clusters/applications_spec.rb | 6 +- spec/features/projects/clusters/gcp_spec.rb | 237 +- .../clusters/interchangeability_spec.rb | 2 +- spec/features/projects/clusters/user_spec.rb | 4 +- spec/features/projects/clusters_spec.rb | 4 +- spec/features/projects/commit/builds_spec.rb | 10 +- .../commit/comments/user_adds_comment_spec.rb | 170 + .../comments/user_deletes_comments_spec.rb | 37 + .../comments/user_edits_comments_spec.rb | 42 + .../projects/commit/diff_notes_spec.rb | 2 +- .../commit/mini_pipeline_graph_spec.rb | 2 +- .../commit/user_comments_on_commit_spec.rb | 25 +- spec/features/projects/commits/rss_spec.rb | 10 +- spec/features/projects/deploy_keys_spec.rb | 3 +- .../features/projects/diffs/diff_show_spec.rb | 5 +- .../environments/environment_metrics_spec.rb | 18 +- .../projects/environments/environment_spec.rb | 76 +- .../environments/environments_spec.rb | 48 +- .../files/template_selector_menu_spec.rb | 10 +- .../files/user_reads_pipeline_status_spec.rb | 2 +- .../projects/hook_logs/user_reads_log_spec.rb | 10 +- .../import_export/export_file_spec.rb | 7 +- .../import_export/import_file_spec.rb | 16 +- .../namespace_export_file_spec.rb | 1 + .../import_export/test_project_export.tar.gz | Bin 343091 -> 3368 bytes .../projects/issuable_templates_spec.rb | 22 +- spec/features/projects/issues/rss_spec.rb | 10 +- .../issues/user_comments_on_issue_spec.rb | 15 +- .../issues/user_creates_issue_spec.rb | 3 + .../projects/issues/user_sorts_issues_spec.rb | 2 +- .../projects/jobs/permissions_spec.rb | 3 +- .../projects/jobs/user_browses_job_spec.rb | 6 +- .../projects/jobs/user_browses_jobs_spec.rb | 2 +- spec/features/projects/jobs_spec.rb | 12 +- .../labels/issues_sorted_by_priority_spec.rb | 6 +- .../projects/labels/subscription_spec.rb | 10 +- .../labels/update_prioritization_spec.rb | 20 +- .../labels/user_removes_labels_spec.rb | 20 +- .../labels/user_sees_links_to_issuables.rb | 14 +- .../anonymous_user_sees_members_spec.rb | 6 +- ..._member_cannot_leave_group_project_spec.rb | 6 +- ...equest_access_to_his_group_project_spec.rb | 12 +- .../projects/members/group_members_spec.rb | 12 +- ...r_cannot_request_access_to_project_spec.rb | 6 +- .../members/groups_with_access_list_spec.rb | 14 +- spec/features/projects/members/list_spec.rb | 16 +- ...r_adds_member_with_expiration_date_spec.rb | 8 +- .../master_manages_access_requests_spec.rb | 2 +- ...nnot_request_access_to_his_project_spec.rb | 6 +- .../members/member_leaves_project_spec.rb | 6 +- .../owner_cannot_leave_project_spec.rb | 6 +- ...nnot_request_access_to_his_project_spec.rb | 6 +- .../projects/members/share_with_group_spec.rb | 20 +- .../features/projects/members/sorting_spec.rb | 22 +- .../members/user_requests_access_spec.rb | 14 +- .../projects/merge_request_button_spec.rb | 2 +- .../user_comments_on_diff_spec.rb | 14 +- .../user_comments_on_merge_request_spec.rb | 3 +- .../user_creates_merge_request_spec.rb | 82 +- .../user_merges_merge_request_spec.rb | 43 + .../user_rebases_merge_request_spec.rb | 34 + .../user_reverts_merge_request_spec.rb | 2 + .../user_sorts_merge_requests_spec.rb | 4 +- .../merge_requests/user_views_diffs_spec.rb | 16 +- .../projects/milestones/milestone_spec.rb | 10 +- .../milestones/milestones_sorting_spec.rb | 4 +- spec/features/projects/milestones/new_spec.rb | 6 +- spec/features/projects/new_project_spec.rb | 11 +- spec/features/projects/pages_spec.rb | 40 +- .../projects/pipeline_schedules_spec.rb | 18 +- .../projects/pipelines/pipeline_spec.rb | 20 +- .../projects/pipelines/pipelines_spec.rb | 7 +- spec/features/projects/remote_mirror_spec.rb | 2 +- ...activates_mattermost_slash_command_spec.rb | 6 +- ...user_activates_slack_slash_command_spec.rb | 10 +- .../settings/pipelines_settings_spec.rb | 23 + .../projects/settings/project_badges_spec.rb | 18 +- .../settings/repository_settings_spec.rb | 4 +- .../user_interacts_with_deploy_keys_spec.rb | 125 + .../settings/user_manages_group_links_spec.rb | 2 +- .../user_manages_project_members_spec.rb | 2 +- ...ser_sees_revoke_deploy_token_modal_spec.rb | 25 + ...r_views_empty_project_instructions_spec.rb | 14 +- .../projects/show/download_buttons_spec.rb | 20 +- .../projects/show/no_password_spec.rb | 2 +- spec/features/projects/show/rss_spec.rb | 6 +- .../user_sees_setup_shortcut_buttons_spec.rb | 60 +- .../projects/tags/download_buttons_spec.rb | 20 +- .../projects/tree/create_directory_spec.rb | 2 +- .../projects/tree/create_file_spec.rb | 2 +- spec/features/projects/tree/rss_spec.rb | 6 +- spec/features/projects/tree/tree_show_spec.rb | 2 +- .../projects/tree/upload_file_spec.rb | 2 +- .../projects/user_creates_project_spec.rb | 2 +- .../projects/user_sees_sidebar_spec.rb | 14 +- .../projects/user_uses_shortcuts_spec.rb | 49 +- spec/features/projects/view_on_env_spec.rb | 4 +- .../projects/wiki/markdown_preview_spec.rb | 35 +- spec/features/projects/wiki/shortcuts_spec.rb | 4 +- .../wiki/user_creates_wiki_page_spec.rb | 5 +- .../wiki/user_deletes_wiki_page_spec.rb | 3 +- .../wiki/user_git_access_wiki_page_spec.rb | 2 +- .../wiki/user_updates_wiki_page_spec.rb | 5 +- .../wiki/user_views_wiki_empty_spec.rb | 75 + .../wiki/user_views_wiki_page_spec.rb | 2 + spec/features/projects_spec.rb | 2 +- spec/features/protected_branches_spec.rb | 47 +- spec/features/protected_tags_spec.rb | 2 +- spec/features/raven_js_spec.rb | 2 +- spec/features/runners_spec.rb | 127 +- spec/features/signed_commits_spec.rb | 61 +- spec/features/snippets/explore_spec.rb | 8 +- .../snippets/internal_snippet_spec.rb | 6 +- .../features/snippets/public_snippets_spec.rb | 6 +- .../features/snippets/search_snippets_spec.rb | 6 +- spec/features/snippets/show_spec.rb | 22 +- .../snippets/user_creates_snippet_spec.rb | 12 +- .../snippets/user_deletes_snippet_spec.rb | 2 +- .../snippets/user_edits_snippet_spec.rb | 2 +- spec/features/snippets/user_snippets_spec.rb | 12 +- spec/features/tags/master_creates_tag_spec.rb | 18 +- spec/features/tags/master_deletes_tag_spec.rb | 33 +- spec/features/tags/master_updates_tag_spec.rb | 10 +- spec/features/tags/master_views_tags_spec.rb | 14 +- spec/features/task_lists_spec.rb | 47 +- spec/features/triggers_spec.rb | 32 +- spec/features/u2f_spec.rb | 2 +- .../user_uploads_avatar_to_group_spec.rb | 8 +- .../user_uploads_avatar_to_profile_spec.rb | 29 +- .../uploads/user_uploads_file_to_note_spec.rb | 4 +- spec/features/users/active_sessions_spec.rb | 10 +- spec/features/users/login_spec.rb | 41 +- spec/features/users/rss_spec.rb | 6 +- spec/features/users/signup_spec.rb | 30 +- spec/features/users/terms_spec.rb | 175 +- ...user_browses_projects_on_user_page_spec.rb | 32 +- spec/finders/group_members_finder_spec.rb | 12 + spec/finders/issues_finder_spec.rb | 2 +- spec/finders/members_finder_spec.rb | 12 + spec/finders/merge_requests_finder_spec.rb | 14 +- spec/finders/notes_finder_spec.rb | 2 +- spec/finders/personal_projects_finder_spec.rb | 12 +- spec/finders/pipelines_finder_spec.rb | 29 +- spec/finders/runner_jobs_finder_spec.rb | 2 +- spec/fixtures/api/schemas/cluster_status.json | 3 +- spec/fixtures/api/schemas/entities/issue.json | 2 +- .../schemas/entities/merge_request_basic.json | 17 +- .../entities/merge_request_widget.json | 6 +- .../schemas/entities/note_user_entity.json | 26 + spec/fixtures/api/schemas/list.json | 2 +- .../api/schemas/public_api/v3/issues.json | 78 - .../schemas/public_api/v3/merge_requests.json | 90 - .../api/schemas/public_api/v4/branch.json | 3 +- .../public_api/v4/commit/with_stats.json | 14 + .../public_api/v4/commits_with_stats.json | 4 + .../schemas/public_api/v4/merge_requests.json | 4 +- .../api/schemas/public_api/v4/milestones.json | 3 +- .../api/schemas/public_api/v4/projects.json | 1 + .../api/schemas/public_api/v4/snippets.json | 1 + .../fixtures/authentication/saml_response.xml | 42 + .../emails/valid_new_issue_with_quote.eml | 25 + spec/fixtures/exported-project.gz | Bin 2560 -> 0 bytes spec/fixtures/markdown.md.erb | 10 +- spec/fixtures/project_export.tar.gz | Bin 0 -> 343091 bytes spec/graphql/gitlab_schema_spec.rb | 39 + .../concerns/resolves_pipelines_spec.rb | 52 + .../merge_request_pipelines_resolver_spec.rb | 30 + .../resolvers/merge_request_resolver_spec.rb | 45 + .../project_pipelines_resolver_spec.rb | 22 + .../resolvers/project_resolver_spec.rb | 32 + spec/graphql/types/ci/pipeline_type_spec.rb | 7 + spec/graphql/types/merge_request_type_spec.rb | 16 + .../base_permission_type_spec.rb | 47 + .../permission_types/merge_request_spec.rb | 13 + .../merge_request_type_spec.rb | 5 + .../types/permission_types/project_spec.rb | 18 + spec/graphql/types/project_type_spec.rb | 18 + spec/graphql/types/query_type_spec.rb | 23 + spec/graphql/types/time_type_spec.rb | 16 + spec/helpers/application_helper_spec.rb | 2 +- spec/helpers/blob_helper_spec.rb | 10 +- spec/helpers/calendar_helper_spec.rb | 20 + spec/helpers/emails_helper_spec.rb | 4 +- spec/helpers/groups_helper_spec.rb | 16 +- spec/helpers/issuables_helper_spec.rb | 9 +- spec/helpers/markup_helper_spec.rb | 23 +- spec/helpers/merge_requests_helper_spec.rb | 2 +- spec/helpers/page_layout_helper_spec.rb | 17 - spec/helpers/preferences_helper_spec.rb | 4 +- spec/helpers/projects_helper_spec.rb | 63 +- spec/helpers/rss_helper_spec.rb | 8 +- spec/helpers/storage_helper_spec.rb | 24 +- spec/helpers/submodule_helper_spec.rb | 21 +- spec/initializers/6_validations_spec.rb | 63 - .../artifacts_direct_upload_support_spec.rb | 71 - .../direct_upload_support_spec.rb | 90 + .../fog_google_https_private_urls_spec.rb | 12 +- .../grape_route_helpers_fix_spec.rb | 14 - spec/initializers/secret_token_spec.rb | 2 +- spec/javascripts/.eslintrc | 33 - spec/javascripts/.eslintrc.yml | 38 + spec/javascripts/activities_spec.js | 2 +- spec/javascripts/api_spec.js | 48 +- spec/javascripts/awards_handler_spec.js | 106 +- .../badges/components/badge_list_spec.js | 2 +- .../badges/components/badge_settings_spec.js | 4 +- .../javascripts/behaviors/copy_as_gfm_spec.js | 55 + .../behaviors/quick_submit_spec.js | 81 +- .../behaviors/secret_values_spec.js | 2 +- .../blob/3d_viewer/mesh_object_spec.js | 4 +- .../balsamiq_viewer_integration_spec.js | 2 - .../blob/balsamiq/balsamiq_viewer_spec.js | 6 +- spec/javascripts/blob/notebook/index_spec.js | 9 +- spec/javascripts/blob/pdf/index_spec.js | 2 - spec/javascripts/blob/sketch/index_spec.js | 2 +- spec/javascripts/blob/viewer/index_spec.js | 4 +- .../boards/board_blank_state_spec.js | 1 - spec/javascripts/boards/board_card_spec.js | 3 +- spec/javascripts/boards/board_list_spec.js | 7 +- .../boards/board_new_issue_spec.js | 1 - spec/javascripts/boards/boards_store_spec.js | 5 +- spec/javascripts/boards/issue_card_spec.js | 48 +- spec/javascripts/boards/issue_spec.js | 3 +- spec/javascripts/boards/list_spec.js | 3 +- spec/javascripts/boards/modal_store_spec.js | 2 +- spec/javascripts/bootstrap_jquery_spec.js | 2 +- .../javascripts/bootstrap_linked_tabs_spec.js | 2 +- .../clusters/clusters_bundle_spec.js | 32 +- .../components/application_row_spec.js | 22 +- .../clusters/components/applications_spec.js | 94 +- .../clusters/services/mock_data.js | 35 + .../clusters/stores/clusters_store_spec.js | 18 + .../commit_pipeline_status_component_spec.js | 5 +- .../commit/pipelines/pipelines_spec.js | 2 +- spec/javascripts/commits_spec.js | 2 +- .../create_merge_request_dropdown_spec.js | 67 + spec/javascripts/datetime_utility_spec.js | 23 +- .../deploy_keys/components/app_spec.js | 23 +- .../deploy_keys/components/key_spec.js | 2 +- spec/javascripts/diffs/components/app_spec.js | 1 + .../components/changed_files_dropdown_spec.js | 1 + .../diffs/components/changed_files_spec.js | 105 + .../compare_versions_dropdown_spec.js | 1 + .../diffs/components/compare_versions_spec.js | 1 + .../diffs/components/diff_content_spec.js | 95 + .../diffs/components/diff_discussions_spec.js | 24 + .../diffs/components/diff_file_header_spec.js | 439 ++ .../diffs/components/diff_file_spec.js | 88 + .../components/diff_gutter_avatars_spec.js | 115 + .../diff_line_gutter_content_spec.js | 108 + .../components/diff_line_note_form_spec.js | 85 + .../diffs/components/edit_button_spec.js | 1 + .../components/hidden_files_warning_spec.js | 1 + .../diffs/components/inline_diff_view_spec.js | 47 + .../diffs/components/no_changes_spec.js | 1 + .../components/parallel_diff_view_spec.js | 29 + .../diffs/mock_data/diff_discussions.js | 496 ++ spec/javascripts/diffs/mock_data/diff_file.js | 220 + spec/javascripts/diffs/store/actions_spec.js | 238 + spec/javascripts/diffs/store/getters_spec.js | 206 + .../javascripts/diffs/store/mutations_spec.js | 134 + spec/javascripts/diffs/store/utils_spec.js | 210 + .../environments/environments_app_spec.js | 214 +- .../folder/environments_folder_view_spec.js | 83 +- spec/javascripts/environments/mock_data.js | 1 + .../recent_searches_dropdown_content_spec.js | 8 +- .../filtered_search_token_keys_spec.js | 11 + .../recent_searches_root_spec.js | 3 +- spec/javascripts/fixtures/commit.rb | 33 + .../fixtures/event_filter.html.haml | 2 +- .../javascripts/fixtures/images/green_box.png | Bin 0 -> 1306 bytes spec/javascripts/fixtures/images/red_box.png | Bin 0 -> 1305 bytes .../fixtures/issue_sidebar_label.html.haml | 2 +- .../fixtures/linked_tabs.html.haml | 10 +- spec/javascripts/fixtures/merge_requests.rb | 7 + spec/javascripts/fixtures/snippet.rb | 1 + .../frequent_items/components/app_spec.js | 251 + .../frequent_items_list_item_spec.js} | 34 +- .../components/frequent_items_list_spec.js | 84 + .../frequent_items_search_input_spec.js | 77 + spec/javascripts/frequent_items/mock_data.js | 168 + .../frequent_items/store/actions_spec.js | 225 + .../frequent_items/store/getters_spec.js | 24 + .../frequent_items/store/mutations_spec.js | 117 + spec/javascripts/frequent_items/utils_spec.js | 89 + spec/javascripts/gl_dropdown_spec.js | 14 +- spec/javascripts/gl_field_errors_spec.js | 8 +- .../javascripts/groups/components/app_spec.js | 6 +- .../groups/components/group_item_spec.js | 2 +- spec/javascripts/helpers/index.js | 3 + .../helpers/init_vue_mr_page_helper.js | 46 + .../helpers/user_mock_data_helper.js | 2 +- .../helpers/vue_mount_component_helper.js | 20 +- .../helpers/vue_resource_helper.js | 1 - .../javascripts/helpers/vuex_action_helper.js | 2 +- .../components/commit_sidebar/actions_spec.js | 14 + .../components/commit_sidebar/form_spec.js | 16 + .../commit_sidebar/list_item_spec.js | 17 + .../components/commit_sidebar/list_spec.js | 5 +- .../commit_sidebar/message_field_spec.js | 1 + .../commit_sidebar/radio_group_spec.js | 15 + .../commit_sidebar/stage_button_spec.js | 2 +- .../ide/components/error_message_spec.js | 106 + .../ide/components/external_link_spec.js | 35 + .../ide/components/ide_file_buttons_spec.js | 61 - spec/javascripts/ide/components/ide_spec.js | 14 + .../jobs/detail/description_spec.js | 28 + .../jobs/detail/scroll_button_spec.js | 59 + .../ide/components/jobs/detail_spec.js | 185 + .../ide/components/jobs/item_spec.js | 39 + .../ide/components/jobs/list_spec.js | 67 + .../ide/components/jobs/stage_spec.js | 95 + .../merge_requests/dropdown_spec.js | 47 + .../components/merge_requests/info_spec.js | 51 + .../components/merge_requests/item_spec.js | 61 + .../components/merge_requests/list_spec.js | 126 + .../ide/components/panes/right_spec.js | 72 + .../ide/components/pipelines/list_spec.js | 120 + .../components/repo_commit_section_spec.js | 50 +- .../ide/components/repo_editor_spec.js | 17 +- .../ide/components/repo_tab_spec.js | 26 +- spec/javascripts/ide/helpers.js | 30 +- .../ide/lib/common/model_manager_spec.js | 10 +- spec/javascripts/ide/lib/common/model_spec.js | 18 +- .../ide/lib/decorations/controller_spec.js | 18 +- .../ide/lib/diff/controller_spec.js | 27 +- spec/javascripts/ide/lib/editor_spec.js | 44 +- spec/javascripts/ide/mock_data.js | 151 +- spec/javascripts/ide/monaco_loader_spec.js | 15 - .../ide/stores/actions/file_spec.js | 305 +- .../ide/stores/actions/merge_request_spec.js | 259 +- .../ide/stores/actions/project_spec.js | 197 +- .../ide/stores/actions/tree_spec.js | 236 +- spec/javascripts/ide/stores/actions_spec.js | 14 + spec/javascripts/ide/stores/getters_spec.js | 30 +- .../ide/stores/modules/commit/actions_spec.js | 99 +- .../ide/stores/modules/commit/getters_spec.js | 92 +- .../modules/merge_requests/actions_spec.js | 240 + .../modules/merge_requests/mutations_spec.js | 58 + .../stores/modules/pipelines/actions_spec.js | 457 ++ .../stores/modules/pipelines/getters_spec.js | 40 + .../modules/pipelines/mutations_spec.js | 223 + .../ide/stores/mutations/file_spec.js | 47 + spec/javascripts/ide/stores/mutations_spec.js | 8 + spec/javascripts/ide/stores/utils_spec.js | 110 + spec/javascripts/importer_status_spec.js | 20 +- .../integration_settings_form_spec.js | 23 + .../javascripts/issuable_time_tracker_spec.js | 2 +- .../issue_show/components/app_spec.js | 4 +- spec/javascripts/issue_show/index_spec.js | 19 + spec/javascripts/issue_spec.js | 2 +- spec/javascripts/job_spec.js | 1 - spec/javascripts/jobs/header_spec.js | 7 +- spec/javascripts/jobs/mock_data.js | 4 +- spec/javascripts/labels_select_spec.js | 4 + .../lib/utils/common_utils_spec.js | 121 +- spec/javascripts/lib/utils/mock_data.js | 5 + .../lib/utils/text_utility_spec.js | 16 + .../javascripts/lib/utils/url_utility_spec.js | 29 + spec/javascripts/line_highlighter_spec.js | 2 +- spec/javascripts/matchers.js | 26 +- spec/javascripts/merge_request_notes_spec.js | 108 - spec/javascripts/merge_request_spec.js | 25 +- spec/javascripts/merge_request_tabs_spec.js | 630 +- .../mini_pipeline_graph_dropdown_spec.js | 2 - spec/javascripts/monitoring/dashboard_spec.js | 45 +- spec/javascripts/monitoring/graph_spec.js | 10 +- spec/javascripts/monitoring/mock_data.js | 60 +- .../monitoring/monitoring_store_spec.js | 7 +- spec/javascripts/namespace_select_spec.js | 4 +- spec/javascripts/new_branch_spec.js | 2 +- .../notebook/cells/markdown_spec.js | 1 + .../notes/components/comment_form_spec.js | 96 +- .../notes/components/diff_file_header_spec.js | 93 - .../notes/components/diff_with_note_spec.js | 20 +- .../components/discussion_counter_spec.js | 58 + .../notes/components/note_actions_spec.js | 16 +- .../notes/components/note_app_spec.js | 72 +- .../notes/components/note_awards_list_spec.js | 8 +- .../notes/components/note_body_spec.js | 7 +- .../notes/components/note_form_spec.js | 28 +- .../notes/components/note_header_spec.js | 30 +- .../components/note_signed_out_widget_spec.js | 20 +- .../components/noteable_discussion_spec.js | 92 +- .../notes/components/noteable_note_spec.js | 16 +- spec/javascripts/notes/mock_data.js | 593 ++ spec/javascripts/notes/stores/actions_spec.js | 66 +- .../notes/stores/collapse_utils_spec.js | 46 + spec/javascripts/notes/stores/getters_spec.js | 60 +- .../javascripts/notes/stores/mutation_spec.js | 129 +- spec/javascripts/notes_spec.js | 157 +- spec/javascripts/pdf/index_spec.js | 2 - spec/javascripts/pdf/page_spec.js | 2 - .../pipelines/async_button_spec.js | 62 - .../javascripts/pipelines/empty_state_spec.js | 2 +- .../pipelines/graph/action_component_spec.js | 24 +- .../graph/dropdown_job_component_spec.js | 8 - .../pipelines/graph/job_component_spec.js | 38 +- spec/javascripts/pipelines/graph/mock_data.js | 18 +- .../graph/stage_column_component_spec.js | 1 + spec/javascripts/pipelines/mock_data.js | 2 +- spec/javascripts/pipelines/pipelines_spec.js | 2 +- .../pipelines/pipelines_table_row_spec.js | 67 +- .../pipelines/pipelines_table_spec.js | 2 +- .../components/update_username_spec.js | 3 +- .../profile/add_ssh_key_validation_spec.js | 69 + .../gke_machine_type_dropdown_spec.js | 103 + .../gke_project_id_dropdown_spec.js | 92 + .../components/gke_zone_dropdown_spec.js | 88 + .../projects/gke_cluster_dropdowns/helpers.js | 49 + .../gke_cluster_dropdowns/mock_data.js | 75 + .../stores/actions_spec.js | 131 + .../stores/getters_spec.js | 65 + .../stores/mutations_spec.js | 87 + .../projects_dropdown/components/app_spec.js | 349 - .../components/projects_list_frequent_spec.js | 72 - .../components/projects_list_search_spec.js | 84 - .../components/search_spec.js | 101 - .../projects_dropdown/mock_data.js | 96 - .../service/projects_service_spec.js | 179 - .../store/projects_store_spec.js | 41 - spec/javascripts/right_sidebar_spec.js | 2 +- spec/javascripts/search_autocomplete_spec.js | 2 +- spec/javascripts/settings_panels_spec.js | 4 +- spec/javascripts/shortcuts_issuable_spec.js | 77 +- spec/javascripts/shortcuts_spec.js | 19 +- .../confidential_issue_sidebar_spec.js | 5 +- .../sidebar/sidebar_move_issue_spec.js | 4 +- spec/javascripts/signin_tabs_memoizer_spec.js | 15 + spec/javascripts/smart_interval_spec.js | 4 +- spec/javascripts/syntax_highlight_spec.js | 2 +- spec/javascripts/test_bundle.js | 9 +- spec/javascripts/test_constants.js | 3 + spec/javascripts/u2f/authenticate_spec.js | 86 +- spec/javascripts/u2f/mock_u2f_device.js | 3 +- .../components/deployment_spec.js | 2 +- .../components/mr_widget_author_spec.js | 6 +- .../components/mr_widget_author_time_spec.js | 8 +- .../components/mr_widget_header_spec.js | 18 +- .../mr_widget_maintainer_edit_spec.js | 40 - .../states/mr_widget_failed_to_merge_spec.js | 23 +- .../states/mr_widget_merged_spec.js | 7 +- .../vue_mr_widget/mr_widget_options_spec.js | 15 +- .../content_viewer/content_viewer_spec.js | 10 +- .../diff_viewer/diff_viewer_spec.js | 70 + .../viewers/image_diff_viewer_spec.js | 185 + .../dropdown/dropdown_button_spec.js | 69 + .../dropdown_hidden_input_spec.js | 8 +- .../dropdown/dropdown_search_input_spec.js | 52 + .../components/dropdown/mock_data.js | 11 + .../components/expand_button_spec.js | 2 +- .../vue_shared/components/file_icon_spec.js | 2 +- .../vue_shared/components/gl_modal_spec.js | 41 + .../vue_shared/components/icon_spec.js | 2 +- .../components/lib/utils/dom_utils_spec.js | 13 + .../components/markdown/header_spec.js | 2 +- .../components/notes/placeholder_note_spec.js | 20 +- .../components/notes/system_note_spec.js | 14 +- .../labels_select/dropdown_value_spec.js | 2 +- .../components/table_pagination_spec.js | 2 +- .../vue_shared/components/tabs/tab_spec.js | 32 + .../vue_shared/components/tabs/tabs_spec.js | 68 + .../user_avatar/user_avatar_image_spec.js | 4 +- .../user_avatar/user_avatar_link_spec.js | 2 +- spec/javascripts/zen_mode_spec.js | 59 +- spec/lib/api/helpers/pagination_spec.rb | 212 +- .../helpers/related_resources_helpers_spec.rb | 16 +- spec/lib/backup/files_spec.rb | 4 +- spec/lib/backup/manager_spec.rb | 9 +- spec/lib/backup/repository_spec.rb | 60 +- .../filter/blockquote_fence_filter_spec.rb | 4 + spec/lib/banzai/filter/emoji_filter_spec.rb | 9 - .../banzai/filter/gollum_tags_filter_spec.rb | 6 + .../filter/image_lazy_load_filter_spec.rb | 2 +- .../filter/label_reference_filter_spec.rb | 10 +- .../lib/banzai/filter/markdown_filter_spec.rb | 58 +- .../merge_request_reference_filter_spec.rb | 7 + .../filter/milestone_reference_filter_spec.rb | 10 +- .../banzai/filter/sanitization_filter_spec.rb | 12 + spec/lib/feature_spec.rb | 24 + spec/lib/gitaly/server_spec.rb | 34 + spec/lib/gitlab/auth/ldap/access_spec.rb | 13 +- spec/lib/gitlab/auth/ldap/config_spec.rb | 36 +- spec/lib/gitlab/auth/ldap/user_spec.rb | 5 +- spec/lib/gitlab/auth/o_auth/user_spec.rb | 8 + .../gitlab/auth/request_authenticator_spec.rb | 10 +- spec/lib/gitlab/auth/saml/auth_hash_spec.rb | 51 + spec/lib/gitlab/auth/saml/user_spec.rb | 41 + .../auth/user_access_denied_reason_spec.rb | 3 +- .../lib/gitlab/auth/user_auth_finders_spec.rb | 48 +- .../archive_legacy_traces_spec.rb | 59 + .../delete_diff_files_spec.rb | 69 + ...ze_merge_request_diffs_and_commits_spec.rb | 12 +- .../fix_cross_project_label_links_spec.rb | 109 + .../populate_untracked_uploads_spec.rb | 2 +- .../bare_repository_import/importer_spec.rb | 7 + .../bare_repository_import/repository_spec.rb | 6 +- .../gitlab/bitbucket_import/importer_spec.rb | 30 + .../bitbucket_import/project_creator_spec.rb | 4 +- spec/lib/gitlab/checks/change_access_spec.rb | 4 +- spec/lib/gitlab/checks/force_push_spec.rb | 18 +- spec/lib/gitlab/checks/lfs_integrity_spec.rb | 4 +- .../lib/gitlab/ci/config/entry/policy_spec.rb | 10 +- spec/lib/gitlab/ci/config_spec.rb | 2 +- .../gitlab/ci/pipeline/chain/populate_spec.rb | 67 +- .../ci/pipeline/chain/validate/config_spec.rb | 2 +- .../expression/lexeme/matches_spec.rb | 80 + .../expression/lexeme/pattern_spec.rb | 96 + .../ci/pipeline/expression/lexer_spec.rb | 8 +- .../ci/pipeline/expression/parser_spec.rb | 2 +- .../ci/pipeline/expression/statement_spec.rb | 91 +- .../ci/pipeline/expression/token_spec.rb | 2 +- spec/lib/gitlab/ci/pipeline/preloader_spec.rb | 49 + .../gitlab/ci/status/build/factory_spec.rb | 2 +- .../ci/status/build/failed_allowed_spec.rb | 4 +- .../lib/gitlab/ci/status/build/failed_spec.rb | 4 +- .../gitlab/ci/status/build/retried_spec.rb | 2 +- spec/lib/gitlab/ci/trace_spec.rb | 2 +- .../ci/variables/collection/item_spec.rb | 64 +- .../gitlab/ci/variables/collection_spec.rb | 12 +- spec/lib/gitlab/ci/yaml_processor_spec.rb | 12 +- spec/lib/gitlab/conflict/file_spec.rb | 6 +- spec/lib/gitlab/current_settings_spec.rb | 224 +- .../gitlab/cycle_analytics/usage_data_spec.rb | 19 +- spec/lib/gitlab/data_builder/note_spec.rb | 8 +- spec/lib/gitlab/database/count_spec.rb | 91 +- .../gitlab/database/migration_helpers_spec.rb | 55 + spec/lib/gitlab/database_spec.rb | 38 +- .../merge_request_diff_spec.rb | 9 + spec/lib/gitlab/diff/file_spec.rb | 86 +- spec/lib/gitlab/diff/highlight_spec.rb | 38 +- spec/lib/gitlab/diff/line_spec.rb | 22 + .../handler/create_issue_handler_spec.rb | 14 + spec/lib/gitlab/email/reply_parser_spec.rb | 18 +- .../gitlab/exclusive_lease_helpers_spec.rb | 76 + spec/lib/gitlab/favicon_spec.rb | 67 + spec/lib/gitlab/file_finder_spec.rb | 34 +- spec/lib/gitlab/gfm/uploads_rewriter_spec.rb | 74 +- spec/lib/gitlab/git/blame_spec.rb | 10 +- spec/lib/gitlab/git/blob_spec.rb | 32 +- spec/lib/gitlab/git/branch_spec.rb | 4 +- spec/lib/gitlab/git/commit_spec.rb | 235 +- .../gitlab/git/committer_with_hooks_spec.rb | 270 +- spec/lib/gitlab/git/diff_spec.rb | 6 +- spec/lib/gitlab/git/gitlab_projects_spec.rb | 124 +- spec/lib/gitlab/git/hook_spec.rb | 32 +- spec/lib/gitlab/git/hooks_service_spec.rb | 8 +- spec/lib/gitlab/git/index_spec.rb | 7 + spec/lib/gitlab/git/lfs_changes_spec.rb | 41 +- spec/lib/gitlab/git/pre_receive_error_spec.rb | 9 + spec/lib/gitlab/git/repository_spec.rb | 921 ++- spec/lib/gitlab/git/rev_list_spec.rb | 14 +- spec/lib/gitlab/git/tag_spec.rb | 52 + spec/lib/gitlab/git/wiki_spec.rb | 20 +- spec/lib/gitlab/git_access_spec.rb | 48 +- spec/lib/gitlab/git_access_wiki_spec.rb | 4 +- .../gitaly_client/commit_service_spec.rb | 4 +- .../gitaly_client/operation_service_spec.rb | 138 +- .../gitaly_client/storage_settings_spec.rb | 29 + .../importer/issue_importer_spec.rb | 4 +- .../importer/lfs_object_importer_spec.rb | 23 + .../importer/lfs_objects_importer_spec.rb | 94 + .../importer/pull_request_importer_spec.rb | 97 +- .../importer/pull_requests_importer_spec.rb | 2 +- .../importer/repository_importer_spec.rb | 3 +- .../github_import/sequential_importer_spec.rb | 1 - .../lib/gitlab/gitlab_import/importer_spec.rb | 4 +- .../gitlab_import/project_creator_spec.rb | 4 +- .../project_creator_spec.rb | 4 +- spec/lib/gitlab/gpg_spec.rb | 13 + .../loggers/queue_duration_logger_spec.rb | 35 + .../connections/keyset_connection_spec.rb | 112 + .../gitlab/hashed_storage/migrator_spec.rb | 75 + .../health_checks/fs_shards_check_spec.rb | 200 - .../gitlab/health_checks/gitaly_check_spec.rb | 7 +- spec/lib/gitlab/highlight_spec.rb | 17 + spec/lib/gitlab/i18n/metadata_entry_spec.rb | 6 +- spec/lib/gitlab/i18n/po_linter_spec.rb | 163 +- .../lib/gitlab/i18n/translation_entry_spec.rb | 6 +- ...ter_export_strategy_object_storage_spec.rb | 105 + .../base_after_export_strategy_spec.rb | 1 + .../web_upload_strategy_spec.rb | 31 +- spec/lib/gitlab/import_export/all_models.yml | 9 + .../gitlab/import_export/avatar_saver_spec.rb | 3 +- spec/lib/gitlab/import_export/fork_spec.rb | 6 +- .../group_project_object_builder_spec.rb | 52 + .../lib/gitlab/import_export/importer_spec.rb | 4 +- .../merge_request_parser_spec.rb | 4 +- spec/lib/gitlab/import_export/project.json | 20 - .../gitlab/import_export/project.light.json | 8 +- .../import_export/project.milestone-iid.json | 80 + .../project_tree_restorer_spec.rb | 82 +- .../import_export/relation_factory_spec.rb | 19 + .../import_export/repo_restorer_spec.rb | 12 +- .../import_export/safe_model_attributes.yml | 16 + spec/lib/gitlab/import_export/saver_spec.rb | 43 + .../import_export/uploads_manager_spec.rb | 112 + .../import_export/uploads_saver_spec.rb | 7 +- spec/lib/gitlab/import_sources_spec.rb | 19 + spec/lib/gitlab/incoming_email_spec.rb | 4 + spec/lib/gitlab/kubernetes/helm/api_spec.rb | 8 +- .../kubernetes/helm/install_command_spec.rb | 78 +- .../project_creator_spec.rb | 45 +- spec/lib/gitlab/metrics/prometheus_spec.rb | 18 + .../metrics/samplers/influx_sampler_spec.rb | 4 - .../metrics/samplers/ruby_sampler_spec.rb | 6 +- .../gitlab/metrics/web_transaction_spec.rb | 11 +- spec/lib/gitlab/middleware/multipart_spec.rb | 88 +- spec/lib/gitlab/middleware/read_only_spec.rb | 79 +- spec/lib/gitlab/path_regex_spec.rb | 12 +- spec/lib/gitlab/profiler_spec.rb | 45 + .../lib/gitlab/project_search_results_spec.rb | 94 +- .../gitlab/quick_actions/extractor_spec.rb | 16 + spec/lib/gitlab/repo_path_spec.rb | 19 - .../gitlab/repository_cache_adapter_spec.rb | 12 +- spec/lib/gitlab/search/query_spec.rb | 39 + spec/lib/gitlab/shard_health_cache_spec.rb | 52 + spec/lib/gitlab/shell_spec.rb | 56 +- spec/lib/gitlab/sql/cte_spec.rb | 42 + spec/lib/gitlab/sql/glob_spec.rb | 3 +- spec/lib/gitlab/themes_spec.rb | 6 +- spec/lib/gitlab/untrusted_regexp_spec.rb | 53 +- spec/lib/gitlab/url_blocker_spec.rb | 101 +- spec/lib/gitlab/url_builder_spec.rb | 25 + spec/lib/gitlab/usage_data_spec.rb | 33 +- spec/lib/gitlab/user_access_spec.rb | 2 +- spec/lib/gitlab/utils/override_spec.rb | 172 +- spec/lib/gitlab/verify/job_artifacts_spec.rb | 29 +- spec/lib/gitlab/verify/lfs_objects_spec.rb | 25 +- spec/lib/gitlab/verify/uploads_spec.rb | 56 +- spec/lib/gitlab/wiki_file_finder_spec.rb | 20 + spec/lib/gitlab/workhorse_spec.rb | 12 +- .../google_api/cloud_platform/client_spec.rb | 24 - spec/lib/mattermost/command_spec.rb | 10 +- spec/lib/mattermost/session_spec.rb | 26 +- spec/lib/mattermost/team_spec.rb | 48 +- spec/lib/microsoft_teams/notifier_spec.rb | 2 +- spec/lib/object_storage/direct_upload_spec.rb | 168 + spec/lib/omni_auth/strategies/jwt_spec.rb | 6 +- spec/lib/uploaded_file_spec.rb | 37 +- spec/mailers/notify_spec.rb | 92 +- spec/migrations/active_record/schema_spec.rb | 6 +- ...int_to_project_features_project_id_spec.rb | 59 + ...ault_value_for_dsa_key_restriction_spec.rb | 33 + .../cleanup_stages_position_migration_spec.rb | 67 + spec/migrations/fill_file_store_spec.rb | 43 + ...bject_storage_upload_sidekiq_queue_spec.rb | 33 + ...migrate_process_commit_worker_jobs_spec.rb | 6 +- ...cs_populating_background_migration_spec.rb | 36 + .../remove_soft_removed_objects_spec.rb | 36 +- .../schedule_to_archive_legacy_traces_spec.rb | 45 + ...oups_into_regular_groups_for_mysql_spec.rb | 8 +- spec/models/appearance_spec.rb | 37 +- spec/models/application_setting/term_spec.rb | 37 + spec/models/application_setting_spec.rb | 211 +- spec/models/blob_viewer/package_json_spec.rb | 21 +- spec/models/ci/build_runner_session_spec.rb | 36 + spec/models/ci/build_spec.rb | 256 +- spec/models/ci/build_trace_chunk_spec.rb | 466 +- .../ci/build_trace_chunks/database_spec.rb | 105 + spec/models/ci/build_trace_chunks/fog_spec.rb | 146 + .../ci/build_trace_chunks/redis_spec.rb | 132 + spec/models/ci/group_spec.rb | 51 + spec/models/ci/job_artifact_spec.rb | 6 +- spec/models/ci/pipeline_spec.rb | 186 +- spec/models/ci/runner_spec.rb | 299 +- spec/models/ci/stage_spec.rb | 142 +- .../clusters/applications/ingress_spec.rb | 1 + .../clusters/applications/jupyter_spec.rb | 60 + .../clusters/applications/prometheus_spec.rb | 3 +- .../clusters/applications/runner_spec.rb | 7 +- spec/models/clusters/cluster_spec.rb | 3 +- .../clusters/platforms/kubernetes_spec.rb | 9 +- spec/models/commit_spec.rb | 116 +- ...tch_destroy_dependent_associations_spec.rb | 60 + .../concerns/cache_markdown_field_spec.rb | 26 +- .../concerns/cacheable_attributes_spec.rb | 230 + .../concerns/discussion_on_diff_spec.rb | 2 +- spec/models/concerns/has_variable_spec.rb | 4 +- spec/models/concerns/issuable_spec.rb | 32 +- spec/models/concerns/reactive_caching_spec.rb | 34 +- spec/models/concerns/redis_cacheable_spec.rb | 83 +- .../concerns/resolvable_discussion_spec.rb | 13 +- spec/models/concerns/resolvable_note_spec.rb | 8 + spec/models/concerns/sortable_spec.rb | 118 + .../concerns/token_authenticatable_spec.rb | 2 +- spec/models/deployment_spec.rb | 1 + spec/models/diff_note_spec.rb | 62 +- spec/models/event_spec.rb | 137 + spec/models/group_spec.rb | 78 +- spec/models/guest_spec.rb | 6 +- spec/models/hooks/web_hook_log_spec.rb | 18 + spec/models/import_export_upload_spec.rb | 25 + spec/models/internal_id_spec.rb | 37 +- spec/models/issue_spec.rb | 1 + spec/models/merge_request_diff_spec.rb | 54 + spec/models/merge_request_spec.rb | 309 +- spec/models/milestone_spec.rb | 2 + spec/models/namespace_spec.rb | 23 +- spec/models/note_diff_file_spec.rb | 11 + spec/models/note_spec.rb | 79 +- spec/models/notification_recipient_spec.rb | 44 + spec/models/project_auto_devops_spec.rb | 121 + .../project_services/bamboo_service_spec.rb | 24 +- .../gemnasium_service_spec.rb | 37 +- .../project_services/jira_service_spec.rb | 19 +- .../kubernetes_service_spec.rb | 12 +- .../mattermost_slash_commands_service_spec.rb | 10 +- .../microsoft_teams_service_spec.rb | 7 +- spec/models/project_spec.rb | 236 +- spec/models/project_team_spec.rb | 4 +- spec/models/project_wiki_spec.rb | 6 +- spec/models/remote_mirror_spec.rb | 13 +- spec/models/repository_spec.rb | 458 +- spec/models/service_spec.rb | 2 +- spec/models/term_agreement_spec.rb | 9 + spec/models/timelog_spec.rb | 3 + spec/models/user_spec.rb | 214 +- spec/policies/ci/build_policy_spec.rb | 13 + spec/policies/ci/pipeline_policy_spec.rb | 12 + spec/policies/group_policy_spec.rb | 6 +- spec/policies/project_policy_spec.rb | 42 +- spec/presenters/ci/build_presenter_spec.rb | 16 +- spec/requests/api/avatar_spec.rb | 106 + spec/requests/api/boards_spec.rb | 1 - spec/requests/api/branches_spec.rb | 29 + spec/requests/api/commit_statuses_spec.rb | 2 +- spec/requests/api/commits_spec.rb | 43 +- spec/requests/api/environments_spec.rb | 2 +- spec/requests/api/events_spec.rb | 4 +- spec/requests/api/files_spec.rb | 85 + .../api/graphql/project/merge_request_spec.rb | 94 + .../api/graphql/project_query_spec.rb | 56 + spec/requests/api/groups_spec.rb | 62 +- spec/requests/api/helpers_spec.rb | 2 +- spec/requests/api/internal_spec.rb | 30 +- spec/requests/api/issues_spec.rb | 333 +- spec/requests/api/jobs_spec.rb | 20 +- spec/requests/api/markdown_spec.rb | 158 + spec/requests/api/merge_requests_spec.rb | 468 +- spec/requests/api/pipelines_spec.rb | 60 +- spec/requests/api/project_export_spec.rb | 23 + spec/requests/api/project_import_spec.rb | 2 +- spec/requests/api/project_snippets_spec.rb | 2 +- spec/requests/api/projects_spec.rb | 41 +- spec/requests/api/redacted_events_spec.rb | 68 + spec/requests/api/repositories_spec.rb | 34 +- spec/requests/api/runner_spec.rb | 114 +- spec/requests/api/runners_spec.rb | 108 +- spec/requests/api/search_spec.rb | 24 + spec/requests/api/settings_spec.rb | 26 +- spec/requests/api/snippets_spec.rb | 5 +- spec/requests/api/tags_spec.rb | 5 +- spec/requests/api/users_spec.rb | 130 +- spec/requests/api/v3/award_emoji_spec.rb | 297 - spec/requests/api/v3/boards_spec.rb | 114 - spec/requests/api/v3/branches_spec.rb | 120 - .../api/v3/broadcast_messages_spec.rb | 32 - spec/requests/api/v3/builds_spec.rb | 550 -- spec/requests/api/v3/commits_spec.rb | 603 -- spec/requests/api/v3/deploy_keys_spec.rb | 179 - spec/requests/api/v3/deployments_spec.rb | 69 - spec/requests/api/v3/environments_spec.rb | 163 - spec/requests/api/v3/files_spec.rb | 283 - spec/requests/api/v3/groups_spec.rb | 564 -- spec/requests/api/v3/issues_spec.rb | 1298 ---- spec/requests/api/v3/labels_spec.rb | 169 - spec/requests/api/v3/members_spec.rb | 350 - .../api/v3/merge_request_diffs_spec.rb | 48 - spec/requests/api/v3/merge_requests_spec.rb | 749 --- spec/requests/api/v3/milestones_spec.rb | 238 - spec/requests/api/v3/notes_spec.rb | 431 -- spec/requests/api/v3/pipelines_spec.rb | 201 - spec/requests/api/v3/project_hooks_spec.rb | 219 - spec/requests/api/v3/project_snippets_spec.rb | 226 - spec/requests/api/v3/projects_spec.rb | 1495 ----- spec/requests/api/v3/repositories_spec.rb | 366 -- spec/requests/api/v3/runners_spec.rb | 152 - spec/requests/api/v3/services_spec.rb | 26 - spec/requests/api/v3/settings_spec.rb | 63 - spec/requests/api/v3/snippets_spec.rb | 186 - spec/requests/api/v3/system_hooks_spec.rb | 56 - spec/requests/api/v3/tags_spec.rb | 88 - spec/requests/api/v3/templates_spec.rb | 201 - spec/requests/api/v3/todos_spec.rb | 77 - spec/requests/api/v3/triggers_spec.rb | 235 - spec/requests/api/v3/users_spec.rb | 362 -- spec/requests/git_http_spec.rb | 17 + spec/requests/lfs_http_spec.rb | 3 +- spec/requests/oauth_tokens_spec.rb | 55 + spec/requests/openid_connect_spec.rb | 114 +- spec/requests/rack_attack_global_spec.rb | 2 +- spec/routing/admin_routing_spec.rb | 4 +- spec/routing/api_routing_spec.rb | 31 + spec/routing/project_routing_spec.rb | 26 +- spec/routing/routing_spec.rb | 10 +- .../cop/gitlab/finder_with_find_by_spec.rb | 56 + .../group_public_or_visible_to_user_spec.rb | 28 + ...ine_break_around_conditional_block_spec.rb | 12 + .../cop/migration/update_large_table_spec.rb | 20 + spec/serializers/blob_entity_spec.rb | 20 + spec/serializers/build_serializer_spec.rb | 6 +- spec/serializers/diff_file_entity_spec.rb | 62 +- spec/serializers/diffs_entity_spec.rb | 28 + spec/serializers/discussion_entity_spec.rb | 60 +- spec/serializers/job_entity_spec.rb | 25 +- .../merge_request_diff_entity_spec.rb | 24 + .../merge_request_user_entity_spec.rb | 19 + spec/serializers/pipeline_entity_spec.rb | 7 + spec/serializers/pipeline_serializer_spec.rb | 38 +- spec/serializers/runner_entity_spec.rb | 4 +- spec/serializers/status_entity_spec.rb | 12 +- .../update_service_spec.rb | 88 +- ...er_registry_authentication_service_spec.rb | 13 + .../check_gcp_project_billing_service_spec.rb | 32 - .../ci/create_pipeline_service_spec.rb | 22 +- spec/services/ci/register_job_service_spec.rb | 59 +- spec/services/ci/retry_build_service_spec.rb | 2 +- .../ci/retry_pipeline_service_spec.rb | 29 + .../ci/update_build_queue_service_spec.rb | 17 +- .../check_ingress_ip_address_service_spec.rb | 17 +- ...heck_installation_progress_service_spec.rb | 2 +- .../applications/install_service_spec.rb | 2 +- .../schedule_installation_service_spec.rb | 33 +- spec/services/clusters/create_service_spec.rb | 68 +- spec/services/files/update_service_spec.rb | 12 - spec/services/git_tag_push_service_spec.rb | 4 +- .../import_export_clean_up_service_spec.rb | 19 +- spec/services/issues/move_service_spec.rb | 26 +- .../issues/resolve_discussions_spec.rb | 4 +- spec/services/issues/update_service_spec.rb | 8 +- spec/services/keys/destroy_service_spec.rb | 13 + spec/services/keys/last_used_service_spec.rb | 4 +- .../labels/find_or_create_service_spec.rb | 20 + spec/services/lfs/unlock_file_service_spec.rb | 4 +- .../conflicts/list_service_spec.rb | 22 +- .../conflicts/resolve_service_spec.rb | 11 - .../create_from_issue_service_spec.rb | 11 +- .../delete_non_latest_diffs_service_spec.rb | 59 + .../merge_requests/ff_merge_service_spec.rb | 2 +- .../merge_request_diff_cache_service_spec.rb | 39 - .../merge_requests/merge_service_spec.rb | 62 +- ...rge_when_pipeline_succeeds_service_spec.rb | 26 - .../merge_requests/post_merge_service_spec.rb | 25 + .../merge_requests/rebase_service_spec.rb | 38 +- .../reload_diffs_service_spec.rb | 64 + .../merge_requests/squash_service_spec.rb | 156 + .../merge_requests/update_service_spec.rb | 20 +- spec/services/notes/create_service_spec.rb | 82 + .../notification_recipient_service_spec.rb | 36 + spec/services/notification_service_spec.rb | 214 +- spec/services/pages_service_spec.rb | 53 - .../services/preview_markdown_service_spec.rb | 12 + .../projects/after_import_service_spec.rb | 8 +- .../projects/autocomplete_service_spec.rb | 69 + .../batch_open_issues_count_service_spec.rb | 54 + spec/services/projects/create_service_spec.rb | 17 +- .../services/projects/destroy_service_spec.rb | 6 +- spec/services/projects/fork_service_spec.rb | 2 +- .../gitlab_projects_import_service_spec.rb | 2 +- .../migrate_repository_service_spec.rb | 6 +- .../projects/housekeeping_service_spec.rb | 72 +- spec/services/projects/import_service_spec.rb | 76 +- .../lfs_download_link_list_service_spec.rb | 102 + .../lfs_pointers/lfs_download_service_spec.rb | 69 + .../lfs_pointers/lfs_import_service_spec.rb | 146 + .../lfs_pointers/lfs_link_service_spec.rb | 33 + .../open_issues_count_service_spec.rb | 86 +- .../projects/participants_service_spec.rb | 2 +- .../projects/transfer_service_spec.rb | 14 +- .../projects/update_pages_service_spec.rb | 12 +- .../update_remote_mirror_service_spec.rb | 315 +- spec/services/projects/update_service_spec.rb | 8 +- .../quick_actions/interpret_service_spec.rb | 18 + spec/services/system_note_service_spec.rb | 9 +- spec/services/tags/create_service_spec.rb | 2 +- .../test_hooks/project_service_spec.rb | 10 +- spec/services/todo_service_spec.rb | 25 +- ...date_merge_request_metrics_service_spec.rb | 4 +- spec/services/upload_service_spec.rb | 10 +- spec/services/users/destroy_service_spec.rb | 8 +- ...efresh_authorized_projects_service_spec.rb | 10 +- spec/services/web_hook_service_spec.rb | 30 + spec/spec_helper.rb | 37 +- .../support/api/milestones_shared_examples.rb | 6 + .../api/scopes/read_user_shared_examples.rb | 10 +- .../api/time_tracking_shared_examples.rb | 28 +- .../api/v3/time_tracking_shared_examples.rb | 128 - ...ubish_import_controller_shared_examples.rb | 9 +- .../reportable_note_shared_examples.rb | 6 +- spec/support/features/rss_shared_examples.rb | 24 +- spec/support/forgery_protection.rb | 17 +- spec/support/gitaly.rb | 5 +- spec/support/gitlab-git-test.git/packed-refs | 1 + spec/support/gitlab_stubs/project_8.json | 68 +- spec/support/gitlab_stubs/projects.json | 283 +- spec/support/gitlab_stubs/session.json | 18 - spec/support/helpers/api_helpers.rb | 11 - spec/support/helpers/assets_helpers.rb | 15 + spec/support/helpers/board_helpers.rb | 2 +- .../helpers/cycle_analytics_helpers.rb | 30 +- spec/support/helpers/drag_to_helper.rb | 4 +- .../helpers/exclusive_lease_helpers.rb | 36 + .../helpers/expect_next_instance_of.rb | 13 + .../support/helpers/features/notes_helpers.rb | 2 +- .../helpers/features/sorting_helpers.rb | 2 +- spec/support/helpers/graphql_helpers.rb | 111 + spec/support/helpers/kubernetes_helpers.rb | 69 +- spec/support/helpers/login_helpers.rb | 53 +- .../helpers/merge_request_diff_helpers.rb | 2 +- spec/support/helpers/migrations_helpers.rb | 4 - spec/support/helpers/mobile_helpers.rb | 4 +- spec/support/helpers/query_recorder.rb | 7 +- spec/support/helpers/rake_helpers.rb | 4 + spec/support/helpers/routes_helpers.rb | 7 + spec/support/helpers/seed_repo.rb | 1 + spec/support/helpers/sorting_helper.rb | 2 +- spec/support/helpers/stub_gitlab_calls.rb | 20 +- spec/support/helpers/stub_object_storage.rb | 24 +- spec/support/helpers/test_env.rb | 15 +- spec/support/helpers/wait_for_requests.rb | 4 +- .../import_export/configuration_helper.rb | 2 +- .../matchers/disallow_request_matchers.rb | 15 + spec/support/matchers/email_matchers.rb | 5 - spec/support/matchers/exceed_query_limit.rb | 65 +- spec/support/matchers/graphql_matchers.rb | 71 + spec/support/matchers/match_ids.rb | 7 + spec/support/redis/redis_shared_examples.rb | 9 +- spec/support/rspec.rb | 2 + .../clusters/create_service_shared.rb | 57 + .../ci_trace_shared_examples.rb | 144 +- .../uploads_actions_shared_examples.rb | 83 +- ...ures_apply_to_issuables_shared_examples.rb | 2 +- .../protected_branches_access_control_ce.rb | 40 +- spec/support/shared_examples/file_finder.rb | 21 + .../shared_examples/helm_generated_script.rb | 2 +- .../malicious_regexp_shared_examples.rb | 2 + .../models/atomic_internal_id_spec.rb | 29 +- .../models/with_uploads_shared_examples.rb | 23 + .../shared_examples/notify_shared_examples.rb | 4 +- .../requests/api/merge_requests_list.rb | 281 + .../requests/graphql_shared_examples.rb | 11 + .../serializers/note_entity_examples.rb | 4 +- ...attermost_notifications_shared_examples.rb | 81 +- .../shared_examples/throttled_touch.rb | 4 +- .../object_storage_shared_examples.rb | 12 +- .../shared_examples/url_validator_examples.rb | 42 + spec/support/shoulda/matchers/rails_shim.rb | 27 + spec/support/trace/trace_helpers.rb | 27 + spec/tasks/gitlab/backup_rake_spec.rb | 29 +- spec/tasks/gitlab/db_rake_spec.rb | 10 +- spec/tasks/gitlab/git_rake_spec.rb | 17 +- spec/tasks/gitlab/gitaly_rake_spec.rb | 4 +- spec/tasks/gitlab/shell_rake_spec.rb | 8 +- spec/tasks/gitlab/storage_rake_spec.rb | 137 +- spec/tasks/tokens_spec.rb | 4 +- spec/uploaders/attachment_uploader_spec.rb | 2 +- spec/uploaders/file_mover_spec.rb | 2 +- spec/uploaders/file_uploader_spec.rb | 101 +- spec/uploaders/gitlab_uploader_spec.rb | 2 +- spec/uploaders/import_export_uploader_spec.rb | 20 + spec/uploaders/job_artifact_uploader_spec.rb | 8 +- .../legacy_artifact_uploader_spec.rb | 3 +- .../uploaders/namespace_file_uploader_spec.rb | 2 +- spec/uploaders/object_storage_spec.rb | 193 +- spec/uploaders/personal_file_uploader_spec.rb | 2 +- spec/uploaders/records_uploads_spec.rb | 2 +- spec/uploaders/uploader_helper_spec.rb | 2 +- .../background_move_worker_spec.rb | 6 +- .../migrate_uploads_worker_spec.rb | 51 +- spec/validators/public_url_validator_spec.rb | 28 + .../url_placeholder_validator_spec.rb | 39 - spec/validators/url_validator_spec.rb | 99 +- .../admin/dashboard/index.html.haml_spec.rb | 5 + .../shared/_signin_box.html.haml_spec.rb | 1 + .../errors/access_denied.html.haml_spec.rb | 7 + .../nav/sidebar/_project.html.haml_spec.rb | 9 +- .../creations/_new_submit.html.haml_spec.rb | 1 + .../merge_requests/edit.html.haml_spec.rb | 1 + .../ci_cd/_autodevops_form.html.haml_spec.rb | 8 +- .../check_gcp_project_billing_worker_spec.rb | 116 - .../ci/archive_traces_cron_worker_spec.rb | 71 + spec/workers/concerns/waitable_worker_spec.rb | 4 +- .../create_note_diff_file_worker_spec.rb | 16 + spec/workers/delete_diff_files_worker_spec.rb | 41 + spec/workers/delete_user_worker_spec.rb | 10 +- spec/workers/every_sidekiq_worker_spec.rb | 2 +- .../git_garbage_collect_worker_spec.rb | 131 +- .../stage/import_lfs_objects_worker_spec.rb | 28 + .../stage/import_notes_worker_spec.rb | 2 +- .../object_storage_upload_worker_spec.rb | 108 - spec/workers/project_cache_worker_spec.rb | 15 +- spec/workers/project_destroy_worker_spec.rb | 6 +- ...ject_migrate_hashed_storage_worker_spec.rb | 70 +- .../propagate_service_template_worker_spec.rb | 38 +- .../prune_web_hook_logs_worker_spec.rb | 22 + .../repository_check/batch_worker_spec.rb | 37 +- .../repository_check/dispatch_worker_spec.rb | 44 + .../single_repository_worker_spec.rb | 8 +- spec/workers/repository_fork_worker_spec.rb | 18 +- spec/workers/repository_import_worker_spec.rb | 15 +- .../repository_remove_remote_worker_spec.rb | 61 +- spec/workers/storage_migrator_worker_spec.rb | 25 +- spec/workers/stuck_ci_jobs_worker_spec.rb | 36 +- .../update_merge_requests_worker_spec.rb | 5 +- vendor/assets/javascripts/Sortable.js | 1374 ---- vendor/assets/javascripts/date.format.js | 132 - vendor/gitignore/Autotools.gitignore | 3 +- vendor/gitignore/CraftCMS.gitignore | 5 +- vendor/gitignore/Dart.gitignore | 10 +- vendor/gitignore/Delphi.gitignore | 2 +- vendor/gitignore/Eagle.gitignore | 1 - vendor/gitignore/GWT.gitignore | 3 - vendor/gitignore/Global/Backup.gitignore | 5 + vendor/gitignore/Global/CodeKit.gitignore | 1 + vendor/gitignore/Global/Eclipse.gitignore | 5 +- vendor/gitignore/Global/JetBrains.gitignore | 13 +- vendor/gitignore/Global/Matlab.gitignore | 15 +- vendor/gitignore/Global/Patch.gitignore | 2 + vendor/gitignore/Global/SynopsysVCS.gitignore | 8 +- vendor/gitignore/Global/Vim.gitignore | 3 +- vendor/gitignore/LabVIEW.gitignore | 1 + vendor/gitignore/Maven.gitignore | 4 +- vendor/gitignore/Node.gitignore | 12 + vendor/gitignore/Objective-C.gitignore | 3 + vendor/gitignore/Perl6.gitignore | 7 + vendor/gitignore/Sass.gitignore | 2 + vendor/gitignore/Swift.gitignore | 3 + vendor/gitignore/TeX.gitignore | 10 +- vendor/gitignore/Terraform.gitignore | 12 +- vendor/gitignore/Typo3.gitignore | 5 +- vendor/gitignore/Umbraco.gitignore | 2 +- vendor/gitignore/UnrealEngine.gitignore | 3 - vendor/gitignore/VisualStudio.gitignore | 7 +- .../gitlab-ci-yml/Auto-DevOps.gitlab-ci.yml | 124 +- .../Kubernetes-with-canary.gitlab-ci.yml | 87 - .../autodeploy/Kubernetes.gitlab-ci.yml | 74 - .../autodeploy/OpenShift.gitlab-ci.yml | 74 - vendor/jupyter/values.yaml | 19 + vendor/licenses.csv | 457 +- vendor/project_templates/express.tar.gz | Bin 4866 -> 4894 bytes vendor/project_templates/rails.tar.gz | Bin 25151 -> 25182 bytes vendor/project_templates/spring.tar.gz | Bin 49430 -> 49476 bytes yarn.lock | 2557 +++----- 4181 files changed, 120348 insertions(+), 80018 deletions(-) delete mode 100644 .eslintrc create mode 100644 .eslintrc.yml delete mode 100644 .gitlab/issue_templates/Feature Proposal.md create mode 100644 .gitlab/issue_templates/Feature proposal.md rename .gitlab/issue_templates/{Research Proposal.md => Research proposal.md} (100%) rename .gitlab/issue_templates/{Security Developer Workflow.md => Security developer workflow.md} (99%) rename .gitlab/merge_request_templates/{Database Changes.md => Database changes.md} (83%) create mode 100644 INSTALLATION_TYPE delete mode 100644 app/assets/images/ci_favicons/dev/favicon_status_canceled.ico delete mode 100644 app/assets/images/ci_favicons/dev/favicon_status_created.ico delete mode 100644 app/assets/images/ci_favicons/dev/favicon_status_failed.ico delete mode 100644 app/assets/images/ci_favicons/dev/favicon_status_manual.ico delete mode 100644 app/assets/images/ci_favicons/dev/favicon_status_not_found.ico delete mode 100644 app/assets/images/ci_favicons/dev/favicon_status_pending.ico delete mode 100644 app/assets/images/ci_favicons/dev/favicon_status_running.ico delete mode 100644 app/assets/images/ci_favicons/dev/favicon_status_skipped.ico delete mode 100644 app/assets/images/ci_favicons/dev/favicon_status_success.ico delete mode 100644 app/assets/images/ci_favicons/dev/favicon_status_warning.ico delete mode 100644 app/assets/images/ci_favicons/favicon_status_canceled.ico create mode 100644 app/assets/images/ci_favicons/favicon_status_canceled.png delete mode 100644 app/assets/images/ci_favicons/favicon_status_created.ico create mode 100644 app/assets/images/ci_favicons/favicon_status_created.png delete mode 100644 app/assets/images/ci_favicons/favicon_status_failed.ico create mode 100644 app/assets/images/ci_favicons/favicon_status_failed.png delete mode 100644 app/assets/images/ci_favicons/favicon_status_manual.ico create mode 100644 app/assets/images/ci_favicons/favicon_status_manual.png delete mode 100644 app/assets/images/ci_favicons/favicon_status_not_found.ico create mode 100644 app/assets/images/ci_favicons/favicon_status_not_found.png delete mode 100644 app/assets/images/ci_favicons/favicon_status_pending.ico create mode 100644 app/assets/images/ci_favicons/favicon_status_pending.png delete mode 100644 app/assets/images/ci_favicons/favicon_status_running.ico create mode 100644 app/assets/images/ci_favicons/favicon_status_running.png delete mode 100644 app/assets/images/ci_favicons/favicon_status_skipped.ico create mode 100644 app/assets/images/ci_favicons/favicon_status_skipped.png delete mode 100644 app/assets/images/ci_favicons/favicon_status_success.ico create mode 100644 app/assets/images/ci_favicons/favicon_status_success.png delete mode 100644 app/assets/images/ci_favicons/favicon_status_warning.ico create mode 100644 app/assets/images/ci_favicons/favicon_status_warning.png delete mode 100644 app/assets/images/favicon-blue.ico create mode 100644 app/assets/images/favicon-blue.png delete mode 100644 app/assets/images/favicon-yellow.ico create mode 100644 app/assets/images/favicon-yellow.png delete mode 100644 app/assets/images/favicon.ico create mode 100644 app/assets/images/favicon.png delete mode 100644 app/assets/javascripts/boards/components/issue_card_inner.js create mode 100644 app/assets/javascripts/boards/components/issue_card_inner.vue rename app/assets/javascripts/boards/components/modal/{empty_state.js => empty_state.vue} (51%) rename app/assets/javascripts/boards/components/modal/{footer.js => footer.vue} (55%) delete mode 100644 app/assets/javascripts/boards/components/modal/header.js create mode 100644 app/assets/javascripts/boards/components/modal/header.vue delete mode 100644 app/assets/javascripts/boards/components/modal/index.js create mode 100644 app/assets/javascripts/boards/components/modal/index.vue delete mode 100644 app/assets/javascripts/boards/components/modal/list.js create mode 100644 app/assets/javascripts/boards/components/modal/list.vue delete mode 100644 app/assets/javascripts/boards/components/modal/lists_dropdown.js create mode 100644 app/assets/javascripts/boards/components/modal/lists_dropdown.vue delete mode 100644 app/assets/javascripts/boards/components/modal/tabs.js create mode 100644 app/assets/javascripts/boards/components/modal/tabs.vue delete mode 100644 app/assets/javascripts/boards/components/sidebar/remove_issue.js create mode 100644 app/assets/javascripts/boards/components/sidebar/remove_issue.vue delete mode 100644 app/assets/javascripts/boards/models/assignee.js create mode 100644 app/assets/javascripts/diffs/components/app.vue create mode 100644 app/assets/javascripts/diffs/components/changed_files.vue create mode 100644 app/assets/javascripts/diffs/components/changed_files_dropdown.vue create mode 100644 app/assets/javascripts/diffs/components/compare_versions.vue create mode 100644 app/assets/javascripts/diffs/components/compare_versions_dropdown.vue create mode 100644 app/assets/javascripts/diffs/components/diff_content.vue create mode 100644 app/assets/javascripts/diffs/components/diff_discussions.vue create mode 100644 app/assets/javascripts/diffs/components/diff_file.vue create mode 100644 app/assets/javascripts/diffs/components/diff_file_header.vue create mode 100644 app/assets/javascripts/diffs/components/diff_gutter_avatars.vue create mode 100644 app/assets/javascripts/diffs/components/diff_line_gutter_content.vue create mode 100644 app/assets/javascripts/diffs/components/diff_line_note_form.vue create mode 100644 app/assets/javascripts/diffs/components/diff_table_cell.vue create mode 100644 app/assets/javascripts/diffs/components/edit_button.vue create mode 100644 app/assets/javascripts/diffs/components/hidden_files_warning.vue create mode 100644 app/assets/javascripts/diffs/components/inline_diff_comment_row.vue create mode 100644 app/assets/javascripts/diffs/components/inline_diff_table_row.vue create mode 100644 app/assets/javascripts/diffs/components/inline_diff_view.vue create mode 100644 app/assets/javascripts/diffs/components/no_changes.vue create mode 100644 app/assets/javascripts/diffs/components/parallel_diff_comment_row.vue create mode 100644 app/assets/javascripts/diffs/components/parallel_diff_table_row.vue create mode 100644 app/assets/javascripts/diffs/components/parallel_diff_view.vue create mode 100644 app/assets/javascripts/diffs/constants.js create mode 100644 app/assets/javascripts/diffs/index.js create mode 100644 app/assets/javascripts/diffs/mixins/changed_files.js create mode 100644 app/assets/javascripts/diffs/store/actions.js create mode 100644 app/assets/javascripts/diffs/store/getters.js create mode 100644 app/assets/javascripts/diffs/store/modules/diff_state.js create mode 100644 app/assets/javascripts/diffs/store/modules/index.js create mode 100644 app/assets/javascripts/diffs/store/mutation_types.js create mode 100644 app/assets/javascripts/diffs/store/mutations.js create mode 100644 app/assets/javascripts/diffs/store/utils.js create mode 100644 app/assets/javascripts/frequent_items/components/app.vue create mode 100644 app/assets/javascripts/frequent_items/components/frequent_items_list.vue create mode 100644 app/assets/javascripts/frequent_items/components/frequent_items_list_item.vue create mode 100644 app/assets/javascripts/frequent_items/components/frequent_items_mixin.js create mode 100644 app/assets/javascripts/frequent_items/components/frequent_items_search_input.vue create mode 100644 app/assets/javascripts/frequent_items/constants.js rename app/assets/javascripts/{projects_dropdown => frequent_items}/event_hub.js (100%) create mode 100644 app/assets/javascripts/frequent_items/index.js create mode 100644 app/assets/javascripts/frequent_items/store/actions.js create mode 100644 app/assets/javascripts/frequent_items/store/getters.js create mode 100644 app/assets/javascripts/frequent_items/store/index.js create mode 100644 app/assets/javascripts/frequent_items/store/mutation_types.js create mode 100644 app/assets/javascripts/frequent_items/store/mutations.js create mode 100644 app/assets/javascripts/frequent_items/store/state.js create mode 100644 app/assets/javascripts/frequent_items/utils.js create mode 100644 app/assets/javascripts/ide/components/error_message.vue create mode 100644 app/assets/javascripts/ide/components/external_link.vue delete mode 100644 app/assets/javascripts/ide/components/ide_file_buttons.vue create mode 100644 app/assets/javascripts/ide/components/jobs/detail.vue create mode 100644 app/assets/javascripts/ide/components/jobs/detail/description.vue create mode 100644 app/assets/javascripts/ide/components/jobs/detail/scroll_button.vue create mode 100644 app/assets/javascripts/ide/components/jobs/item.vue create mode 100644 app/assets/javascripts/ide/components/jobs/list.vue create mode 100644 app/assets/javascripts/ide/components/jobs/stage.vue create mode 100644 app/assets/javascripts/ide/components/merge_requests/dropdown.vue create mode 100644 app/assets/javascripts/ide/components/merge_requests/info.vue create mode 100644 app/assets/javascripts/ide/components/merge_requests/item.vue create mode 100644 app/assets/javascripts/ide/components/merge_requests/list.vue create mode 100644 app/assets/javascripts/ide/components/panes/right.vue create mode 100644 app/assets/javascripts/ide/components/pipelines/list.vue delete mode 100644 app/assets/javascripts/ide/monaco_loader.js create mode 100644 app/assets/javascripts/ide/stores/modules/merge_requests/actions.js create mode 100644 app/assets/javascripts/ide/stores/modules/merge_requests/constants.js create mode 100644 app/assets/javascripts/ide/stores/modules/merge_requests/getters.js create mode 100644 app/assets/javascripts/ide/stores/modules/merge_requests/index.js create mode 100644 app/assets/javascripts/ide/stores/modules/merge_requests/mutation_types.js create mode 100644 app/assets/javascripts/ide/stores/modules/merge_requests/mutations.js create mode 100644 app/assets/javascripts/ide/stores/modules/merge_requests/state.js create mode 100644 app/assets/javascripts/ide/stores/modules/pipelines/actions.js create mode 100644 app/assets/javascripts/ide/stores/modules/pipelines/constants.js create mode 100644 app/assets/javascripts/ide/stores/modules/pipelines/getters.js create mode 100644 app/assets/javascripts/ide/stores/modules/pipelines/index.js create mode 100644 app/assets/javascripts/ide/stores/modules/pipelines/mutation_types.js create mode 100644 app/assets/javascripts/ide/stores/modules/pipelines/mutations.js create mode 100644 app/assets/javascripts/ide/stores/modules/pipelines/state.js create mode 100644 app/assets/javascripts/ide/stores/modules/pipelines/utils.js create mode 100644 app/assets/javascripts/lib/utils/logoutput_behaviours.js create mode 100644 app/assets/javascripts/lib/utils/scroll_utils.js create mode 100644 app/assets/javascripts/mr_notes/stores/actions.js create mode 100644 app/assets/javascripts/mr_notes/stores/getters.js create mode 100644 app/assets/javascripts/mr_notes/stores/index.js create mode 100644 app/assets/javascripts/mr_notes/stores/modules/index.js create mode 100644 app/assets/javascripts/mr_notes/stores/mutation_types.js create mode 100644 app/assets/javascripts/mr_notes/stores/mutations.js create mode 100644 app/assets/javascripts/notes/stores/collapse_utils.js create mode 100644 app/assets/javascripts/notes/stores/modules/index.js create mode 100644 app/assets/javascripts/pages/profiles/keys/index.js delete mode 100644 app/assets/javascripts/pages/projects/clusters/gcp/login/index.js create mode 100644 app/assets/javascripts/pages/projects/clusters/gcp/new/index.js delete mode 100644 app/assets/javascripts/pages/projects/clusters/new/index.js create mode 100644 app/assets/javascripts/pages/projects/jobs/terminal/index.js create mode 100644 app/assets/javascripts/pages/projects/wikis/components/delete_wiki_modal.vue delete mode 100644 app/assets/javascripts/pipelines/components/async_button.vue create mode 100644 app/assets/javascripts/profile/add_ssh_key_validation.js create mode 100644 app/assets/javascripts/projects/gke_cluster_dropdowns/components/gke_dropdown_mixin.js create mode 100644 app/assets/javascripts/projects/gke_cluster_dropdowns/components/gke_machine_type_dropdown.vue create mode 100644 app/assets/javascripts/projects/gke_cluster_dropdowns/components/gke_project_id_dropdown.vue create mode 100644 app/assets/javascripts/projects/gke_cluster_dropdowns/components/gke_zone_dropdown.vue create mode 100644 app/assets/javascripts/projects/gke_cluster_dropdowns/constants.js create mode 100644 app/assets/javascripts/projects/gke_cluster_dropdowns/index.js create mode 100644 app/assets/javascripts/projects/gke_cluster_dropdowns/store/actions.js create mode 100644 app/assets/javascripts/projects/gke_cluster_dropdowns/store/getters.js create mode 100644 app/assets/javascripts/projects/gke_cluster_dropdowns/store/index.js create mode 100644 app/assets/javascripts/projects/gke_cluster_dropdowns/store/mutation_types.js create mode 100644 app/assets/javascripts/projects/gke_cluster_dropdowns/store/mutations.js create mode 100644 app/assets/javascripts/projects/gke_cluster_dropdowns/store/state.js delete mode 100644 app/assets/javascripts/projects_dropdown/components/app.vue delete mode 100644 app/assets/javascripts/projects_dropdown/components/projects_list_frequent.vue delete mode 100644 app/assets/javascripts/projects_dropdown/components/projects_list_item.vue delete mode 100644 app/assets/javascripts/projects_dropdown/components/projects_list_search.vue delete mode 100644 app/assets/javascripts/projects_dropdown/components/search.vue delete mode 100644 app/assets/javascripts/projects_dropdown/constants.js delete mode 100644 app/assets/javascripts/projects_dropdown/index.js delete mode 100644 app/assets/javascripts/projects_dropdown/service/projects_service.js delete mode 100644 app/assets/javascripts/projects_dropdown/store/projects_store.js delete mode 100644 app/assets/javascripts/vue_merge_request_widget/components/mr_widget_maintainer_edit.vue create mode 100644 app/assets/javascripts/vue_merge_request_widget/components/states/mr_widget_squash_before_merge.vue rename app/assets/javascripts/vue_merge_request_widget/{mr_widget_options.js => mr_widget_options.vue} (82%) create mode 100644 app/assets/javascripts/vue_shared/components/diff_viewer/constants.js create mode 100644 app/assets/javascripts/vue_shared/components/diff_viewer/diff_viewer.vue create mode 100644 app/assets/javascripts/vue_shared/components/diff_viewer/viewers/download_diff_viewer.vue create mode 100644 app/assets/javascripts/vue_shared/components/diff_viewer/viewers/image_diff/onion_skin_viewer.vue create mode 100644 app/assets/javascripts/vue_shared/components/diff_viewer/viewers/image_diff/swipe_viewer.vue create mode 100644 app/assets/javascripts/vue_shared/components/diff_viewer/viewers/image_diff/two_up_viewer.vue create mode 100644 app/assets/javascripts/vue_shared/components/diff_viewer/viewers/image_diff_viewer.vue create mode 100644 app/assets/javascripts/vue_shared/components/dropdown/dropdown_button.vue rename app/assets/javascripts/vue_shared/components/{sidebar/labels_select => dropdown}/dropdown_hidden_input.vue (77%) create mode 100644 app/assets/javascripts/vue_shared/components/dropdown/dropdown_search_input.vue create mode 100644 app/assets/javascripts/vue_shared/components/lib/utils/dom_utils.js create mode 100644 app/assets/javascripts/vue_shared/components/tabs/tab.vue create mode 100644 app/assets/javascripts/vue_shared/components/tabs/tabs.js create mode 100644 app/assets/javascripts/vue_shared/models/assignee.js create mode 100644 app/assets/stylesheets/bootstrap.scss create mode 100644 app/assets/stylesheets/bootstrap_migration.scss create mode 100644 app/assets/stylesheets/errors.scss delete mode 100644 app/assets/stylesheets/framework/tw_bootstrap.scss delete mode 100644 app/assets/stylesheets/framework/tw_bootstrap_variables.scss create mode 100644 app/controllers/concerns/accepts_pending_invitations.rb create mode 100644 app/controllers/concerns/issues_calendar.rb create mode 100644 app/controllers/graphql_controller.rb create mode 100644 app/controllers/groups/shared_projects_controller.rb delete mode 100644 app/controllers/projects/clusters/gcp_controller.rb delete mode 100644 app/controllers/projects/clusters/user_controller.rb create mode 100644 app/graphql/functions/base_function.rb create mode 100644 app/graphql/functions/echo.rb create mode 100644 app/graphql/gitlab_schema.rb create mode 100644 app/graphql/mutations/.keep create mode 100644 app/graphql/resolvers/base_resolver.rb create mode 100644 app/graphql/resolvers/concerns/resolves_pipelines.rb create mode 100644 app/graphql/resolvers/full_path_resolver.rb create mode 100644 app/graphql/resolvers/merge_request_pipelines_resolver.rb create mode 100644 app/graphql/resolvers/merge_request_resolver.rb create mode 100644 app/graphql/resolvers/project_pipelines_resolver.rb create mode 100644 app/graphql/resolvers/project_resolver.rb create mode 100644 app/graphql/types/base_enum.rb create mode 100644 app/graphql/types/base_field.rb create mode 100644 app/graphql/types/base_input_object.rb create mode 100644 app/graphql/types/base_interface.rb create mode 100644 app/graphql/types/base_object.rb create mode 100644 app/graphql/types/base_scalar.rb create mode 100644 app/graphql/types/base_union.rb create mode 100644 app/graphql/types/ci/pipeline_status_enum.rb create mode 100644 app/graphql/types/ci/pipeline_type.rb create mode 100644 app/graphql/types/merge_request_type.rb create mode 100644 app/graphql/types/mutation_type.rb create mode 100644 app/graphql/types/permission_types/base_permission_type.rb create mode 100644 app/graphql/types/permission_types/ci/pipeline.rb create mode 100644 app/graphql/types/permission_types/merge_request.rb create mode 100644 app/graphql/types/permission_types/project.rb create mode 100644 app/graphql/types/project_type.rb create mode 100644 app/graphql/types/query_type.rb create mode 100644 app/graphql/types/time_type.rb create mode 100644 app/helpers/calendar_helper.rb create mode 100644 app/helpers/favicon_helper.rb rename {spec => app}/mailers/previews/devise_mailer_preview.rb (100%) rename {spec => app}/mailers/previews/email_rejection_mailer_preview.rb (100%) rename {spec => app}/mailers/previews/notify_preview.rb (98%) rename {spec => app}/mailers/previews/repository_check_mailer_preview.rb (100%) create mode 100644 app/models/ci/build_runner_session.rb create mode 100644 app/models/ci/build_trace_chunks/database.rb create mode 100644 app/models/ci/build_trace_chunks/fog.rb create mode 100644 app/models/ci/build_trace_chunks/redis.rb create mode 100644 app/models/clusters/applications/jupyter.rb create mode 100644 app/models/concerns/batch_destroy_dependent_associations.rb create mode 100644 app/models/concerns/cacheable_attributes.rb create mode 100644 app/models/concerns/diff_file.rb create mode 100644 app/models/concerns/enum_with_nil.rb create mode 100644 app/models/concerns/iid_routes.rb create mode 100644 app/models/concerns/with_uploads.rb create mode 100644 app/models/import_export_upload.rb create mode 100644 app/models/note_diff_file.rb create mode 100644 app/serializers/diffs_entity.rb create mode 100644 app/serializers/diffs_serializer.rb create mode 100644 app/serializers/merge_request_diff_entity.rb create mode 100644 app/serializers/merge_request_user_entity.rb delete mode 100644 app/services/check_gcp_project_billing_service.rb create mode 100644 app/services/keys/destroy_service.rb create mode 100644 app/services/merge_requests/delete_non_latest_diffs_service.rb delete mode 100644 app/services/merge_requests/merge_request_diff_cache_service.rb create mode 100644 app/services/merge_requests/reload_diffs_service.rb create mode 100644 app/services/merge_requests/squash_service.rb delete mode 100644 app/services/pages_service.rb create mode 100644 app/services/projects/lfs_pointers/lfs_download_link_list_service.rb create mode 100644 app/services/projects/lfs_pointers/lfs_download_service.rb create mode 100644 app/services/projects/lfs_pointers/lfs_import_service.rb create mode 100644 app/services/projects/lfs_pointers/lfs_link_service.rb create mode 100644 app/services/projects/lfs_pointers/lfs_list_service.rb create mode 100644 app/uploaders/favicon_uploader.rb create mode 100644 app/uploaders/import_export_uploader.rb delete mode 100644 app/validators/addressable_url_validator.rb delete mode 100644 app/validators/importable_url_validator.rb create mode 100644 app/validators/public_url_validator.rb delete mode 100644 app/validators/url_placeholder_validator.rb create mode 100644 app/views/admin/application_settings/_third_party_offers.html.haml create mode 100644 app/views/dashboard/issues_calendar.ics.haml create mode 100644 app/views/errors/_footer.html.haml create mode 100644 app/views/groups/issues_calendar.ics.haml create mode 100644 app/views/groups/settings/_advanced.html.haml create mode 100644 app/views/groups/settings/_general.html.haml create mode 100644 app/views/groups/settings/_permissions.html.haml create mode 100644 app/views/issues/_issues_calendar.ics.ruby create mode 100644 app/views/layouts/nav/groups_dropdown/_show.html.haml create mode 100644 app/views/notify/merge_request_unmergeable_email.html.haml create mode 100644 app/views/notify/merge_request_unmergeable_email.text.haml delete mode 100644 app/views/projects/_merge_request_fast_forward_settings.html.haml create mode 100644 app/views/projects/_merge_request_merge_method_settings.html.haml delete mode 100644 app/views/projects/_merge_request_rebase_settings.html.haml create mode 100644 app/views/projects/buttons/_xcode_link.html.haml delete mode 100644 app/views/projects/clusters/_dropdown.html.haml delete mode 100644 app/views/projects/clusters/gcp/login.html.haml delete mode 100644 app/views/projects/clusters/gcp/new.html.haml delete mode 100644 app/views/projects/clusters/user/new.html.haml create mode 100644 app/views/projects/environments/empty.html.haml mode change 100755 => 100644 app/views/projects/forks/new.html.haml create mode 100644 app/views/projects/issues/calendar.ics.haml create mode 100644 app/views/projects/jobs/terminal.html.haml create mode 100644 app/views/search/results/_blob_data.html.haml create mode 100644 app/views/shared/_user_dropdown_contributing_link.html.haml create mode 100644 app/views/shared/builds/_build_output.html.haml create mode 100644 app/views/shared/empty_states/_wikis.html.haml create mode 100644 app/views/shared/empty_states/_wikis_layout.html.haml create mode 100644 app/views/shared/icons/_icon_calendar.svg create mode 100644 app/views/shared/issuable/_board_create_list_dropdown.html.haml create mode 100644 app/views/shared/issuable/_feed_buttons.html.haml create mode 100644 app/views/shared/issuable/form/_default_templates.html.haml create mode 100644 app/views/shared/members/_filter_2fa_dropdown.html.haml delete mode 100644 app/workers/check_gcp_project_billing_worker.rb create mode 100644 app/workers/ci/archive_traces_cron_worker.rb create mode 100644 app/workers/concerns/each_shard_worker.rb create mode 100644 app/workers/create_note_diff_file_worker.rb create mode 100644 app/workers/delete_diff_files_worker.rb create mode 100644 app/workers/gitlab/github_import/import_lfs_object_worker.rb create mode 100644 app/workers/gitlab/github_import/stage/import_lfs_objects_worker.rb delete mode 100644 app/workers/object_storage_upload_worker.rb create mode 100644 app/workers/prune_web_hook_logs_worker.rb create mode 100644 app/workers/repository_check/dispatch_worker.rb delete mode 100755 bin/spinach delete mode 100644 changelogs/no-rm-rf-gitlab-basics.yml delete mode 100644 config/aws.yml.example rename config/initializers/{secret_token.rb => 01_secret_token.rb} (95%) create mode 100644 config/initializers/active_record_migration.rb delete mode 100644 config/initializers/artifacts_direct_upload_support.rb delete mode 100644 config/initializers/carrierwave.rb create mode 100644 config/initializers/direct_upload_support.rb delete mode 100644 config/initializers/grape_route_helpers_fix.rb create mode 100644 config/initializers/kubeclient.rb create mode 100644 config/initializers/mini_magick.rb create mode 100644 config/locales/carrierwave.en.yml create mode 100644 db/fixtures/development/08_settings.rb delete mode 100644 db/migrate/20121220064453_init_schema.rb delete mode 100644 db/migrate/20130102143055_rename_owner_to_creator_for_project.rb delete mode 100644 db/migrate/20130110172407_add_public_to_project.rb delete mode 100644 db/migrate/20130123114545_add_issues_tracker_to_project.rb delete mode 100644 db/migrate/20130125090214_add_user_permissions.rb delete mode 100644 db/migrate/20130131070232_remove_private_flag_from_project.rb delete mode 100644 db/migrate/20130206084024_add_description_to_namsespace.rb delete mode 100644 db/migrate/20130207104426_add_description_to_teams.rb delete mode 100644 db/migrate/20130211085435_add_issues_tracker_id_to_project.rb delete mode 100644 db/migrate/20130214154045_rename_state_to_merge_status_in_milestone.rb delete mode 100644 db/migrate/20130218140952_add_state_to_issue.rb delete mode 100644 db/migrate/20130218141038_add_state_to_merge_request.rb delete mode 100644 db/migrate/20130218141117_add_state_to_milestone.rb delete mode 100644 db/migrate/20130218141258_convert_closed_to_state_in_issue.rb delete mode 100644 db/migrate/20130218141327_convert_closed_to_state_in_merge_request.rb delete mode 100644 db/migrate/20130218141344_convert_closed_to_state_in_milestone.rb delete mode 100644 db/migrate/20130218141444_remove_merged_from_merge_request.rb delete mode 100644 db/migrate/20130218141507_remove_closed_from_issue.rb delete mode 100644 db/migrate/20130218141536_remove_closed_from_merge_request.rb delete mode 100644 db/migrate/20130218141554_remove_closed_from_milestone.rb delete mode 100644 db/migrate/20130220124204_add_new_merge_status_to_merge_request.rb delete mode 100644 db/migrate/20130220125544_convert_merge_status_in_merge_request.rb delete mode 100644 db/migrate/20130220125545_remove_merge_status_from_merge_request.rb delete mode 100644 db/migrate/20130220133245_rename_new_merge_status_to_merge_status_in_milestone.rb delete mode 100644 db/migrate/20130304104623_add_state_to_user.rb delete mode 100644 db/migrate/20130304104740_convert_blocked_to_state.rb delete mode 100644 db/migrate/20130304105317_remove_blocked_from_user.rb delete mode 100644 db/migrate/20130315124931_user_color_scheme.rb delete mode 100644 db/migrate/20130318212250_add_snippets_to_features.rb delete mode 100644 db/migrate/20130319214458_create_forked_project_links.rb delete mode 100644 db/migrate/20130323174317_add_private_to_snippets.rb delete mode 100644 db/migrate/20130324151736_add_type_to_snippets.rb delete mode 100644 db/migrate/20130324172327_change_project_id_to_null_in_snipepts.rb delete mode 100644 db/migrate/20130324203535_add_type_value_for_snippets.rb delete mode 100644 db/migrate/20130325173941_add_notification_level_to_user.rb delete mode 100644 db/migrate/20130326142630_add_index_to_users_authentication_token.rb delete mode 100644 db/migrate/20130403003950_add_last_activity_column_into_project.rb delete mode 100644 db/migrate/20130404164628_add_notification_level_to_user_project.rb delete mode 100644 db/migrate/20130410175022_remove_wiki_table.rb delete mode 100644 db/migrate/20130419190306_allow_merges_for_forks.rb delete mode 100644 db/migrate/20130506085413_add_type_to_key.rb delete mode 100644 db/migrate/20130506090604_create_deploy_keys_projects.rb delete mode 100644 db/migrate/20130506095501_remove_project_id_from_key.rb delete mode 100644 db/migrate/20130522141856_add_more_fields_to_service.rb delete mode 100644 db/migrate/20130528184641_add_system_to_notes.rb delete mode 100644 db/migrate/20130611210815_increase_snippet_text_column_size.rb delete mode 100644 db/migrate/20130613165816_add_password_expires_at_to_users.rb delete mode 100644 db/migrate/20130613173246_add_created_by_id_to_user.rb delete mode 100644 db/migrate/20130614132337_add_improted_to_project.rb delete mode 100644 db/migrate/20130617095603_create_users_groups.rb delete mode 100644 db/migrate/20130621195223_add_notification_level_to_user_group.rb delete mode 100644 db/migrate/20130622115340_add_more_db_index.rb delete mode 100644 db/migrate/20130624162710_add_fingerprint_to_key.rb delete mode 100644 db/migrate/20130711063759_create_project_group_links.rb delete mode 100644 db/migrate/20130804151314_add_st_diff_to_note.rb delete mode 100644 db/migrate/20130809124851_add_permission_check_to_user.rb delete mode 100644 db/migrate/20130812143708_add_import_url_to_project.rb delete mode 100644 db/migrate/20130819182730_add_internal_ids_to_issues_and_mr.rb delete mode 100644 db/migrate/20130820102832_add_access_to_project_group_link.rb delete mode 100644 db/migrate/20130821090530_remove_deprecated_tables.rb delete mode 100644 db/migrate/20130821090531_add_internal_ids_to_milestones.rb delete mode 100644 db/migrate/20130909132950_add_description_to_merge_request.rb delete mode 100644 db/migrate/20130926081215_change_owner_id_for_group.rb delete mode 100644 db/migrate/20131005191208_add_avatar_to_users.rb delete mode 100644 db/migrate/20131009115346_add_confirmable_to_users.rb delete mode 100644 db/migrate/20131106151520_remove_default_branch.rb delete mode 100644 db/migrate/20131112114325_create_broadcast_messages.rb delete mode 100644 db/migrate/20131112220935_add_visibility_level_to_projects.rb delete mode 100644 db/migrate/20131129154016_add_archived_to_projects.rb delete mode 100644 db/migrate/20131130165425_add_color_and_font_to_broadcast_messages.rb delete mode 100644 db/migrate/20131202192556_add_event_fields_for_web_hook.rb delete mode 100644 db/migrate/20131214224427_add_hide_no_ssh_key_to_users.rb delete mode 100644 db/migrate/20131217102743_add_recipients_to_service.rb delete mode 100644 db/migrate/20140116231608_add_website_url_to_users.rb delete mode 100644 db/migrate/20140122112253_create_merge_request_diffs.rb delete mode 100644 db/migrate/20140122114406_migrate_mr_diffs.rb delete mode 100644 db/migrate/20140122122549_remove_m_rdiff_fields.rb delete mode 100644 db/migrate/20140125162722_add_avatar_to_projects.rb delete mode 100644 db/migrate/20140127170938_add_group_avatars.rb delete mode 100644 db/migrate/20140209025651_create_emails.rb delete mode 100644 db/migrate/20140214102325_add_api_key_to_services.rb delete mode 100644 db/migrate/20140304005354_add_index_merge_request_diffs_on_merge_request_id.rb delete mode 100644 db/migrate/20140305193308_add_tag_push_hooks_to_project_hook.rb delete mode 100644 db/migrate/20140312145357_add_import_status_to_project.rb create mode 100644 db/migrate/20140313092127_init_schema.rb delete mode 100644 db/migrate/20140313092127_migrate_already_imported_projects.rb create mode 100644 db/migrate/20170925184228_add_favicon_to_appearances.rb create mode 100644 db/migrate/20180408143354_rename_users_rss_token_to_feed_token.rb create mode 100644 db/migrate/20180424160449_add_pipeline_iid_to_ci_pipelines.rb create mode 100644 db/migrate/20180425205249_add_index_constraints_to_pipeline_iid.rb create mode 100644 db/migrate/20180504195842_project_name_lower_index.rb create mode 100644 db/migrate/20180508135515_set_runner_type_not_null.rb create mode 100644 db/migrate/20180511090724_add_index_on_ci_runners_runner_type.rb create mode 100644 db/migrate/20180511131058_create_clusters_applications_jupyter.rb create mode 100644 db/migrate/20180515005612_add_squash_to_merge_requests.rb create mode 100644 db/migrate/20180515121227_create_notes_diff_files.rb create mode 100644 db/migrate/20180517082340_add_not_null_constraints_to_project_authorizations.rb create mode 100644 db/migrate/20180521171529_increase_mysql_text_limit_for_gpg_keys.rb create mode 100644 db/migrate/20180523042841_rename_merge_requests_allow_maintainer_to_push.rb create mode 100644 db/migrate/20180524132016_merge_requests_target_id_iid_state_partial_index.rb create mode 100644 db/migrate/20180530135500_add_index_to_stages_position.rb create mode 100644 db/migrate/20180531220618_change_default_value_for_dsa_key_restriction.rb create mode 100644 db/migrate/20180601213245_add_deploy_strategy_to_project_auto_devops.rb create mode 100644 db/migrate/20180608110058_rename_merge_requests_allow_collaboration.rb create mode 100644 db/migrate/20180613081317_create_ci_builds_runner_session.rb create mode 100644 db/migrate/20180625113853_create_import_export_uploads.rb create mode 100644 db/migrate/20180626125654_add_index_on_deployable_for_deployments.rb create mode 100644 db/migrate/20180628124813_alter_web_hook_logs_indexes.rb create mode 100644 db/migrate/20180704204006_add_hide_third_party_offers_to_application_settings.rb create mode 100644 db/migrate/gpg_keys_limits_to_mysql.rb create mode 100644 db/optional_migrations/composite_primary_keys.rb create mode 100644 db/post_migrate/20180408143355_cleanup_users_rss_token_rename.rb create mode 100644 db/post_migrate/20180424151928_fill_file_store.rb create mode 100644 db/post_migrate/20180507083701_set_minimal_project_build_timeout.rb create mode 100644 db/post_migrate/20180511174224_add_unique_constraint_to_project_features_project_id.rb create mode 100644 db/post_migrate/20180512061621_add_not_null_constraint_to_project_features_project_id.rb create mode 100644 db/post_migrate/20180514161336_remove_gemnasium_service.rb create mode 100644 db/post_migrate/20180521162137_migrate_remaining_mr_metrics_populating_background_migration.rb create mode 100644 db/post_migrate/20180523125103_cleanup_merge_requests_allow_maintainer_to_push_rename.rb create mode 100644 db/post_migrate/20180529152628_schedule_to_archive_legacy_traces.rb create mode 100644 db/post_migrate/20180603190921_migrate_object_storage_upload_sidekiq_queue.rb create mode 100644 db/post_migrate/20180604123514_cleanup_stages_position_migration.rb create mode 100644 db/post_migrate/20180608201435_cleanup_merge_requests_allow_collaboration_rename.rb create mode 100644 db/post_migrate/20180629191052_add_partial_index_to_projects_for_last_repository_check_at.rb create mode 100644 db/post_migrate/20180702120647_enqueue_fix_cross_project_label_links.rb create mode 100644 db/post_migrate/20180704145007_update_project_indexes.rb create mode 100644 doc/administration/external_database.md create mode 100644 doc/api/avatar.md create mode 100644 doc/api/graphql/index.md create mode 100644 doc/api/markdown.md create mode 100644 doc/ci/examples/code_quality.md create mode 100644 doc/ci/examples/deploy_spring_boot_to_cloud_foundry/img/cloud_foundry_secret_variables.png create mode 100644 doc/ci/examples/deploy_spring_boot_to_cloud_foundry/img/create_from_template.png create mode 100644 doc/ci/examples/deploy_spring_boot_to_cloud_foundry/index.md create mode 100644 doc/ci/variables/where_variables_can_be_used.md create mode 100644 doc/customization/favicon.md create mode 100644 doc/customization/favicon/appearance.png create mode 100644 doc/customization/favicon/custom_favicon.png create mode 100644 doc/development/api_graphql_styleguide.md rename doc/development/{ => documentation}/img/manual_build_docs.png (100%) create mode 100644 doc/development/documentation/index.md create mode 100644 doc/development/documentation/styleguide.md create mode 100644 doc/install/kubernetes/preparation/connect.md create mode 100644 doc/install/kubernetes/preparation/eks.md create mode 100644 doc/install/kubernetes/preparation/networking.md create mode 100644 doc/install/kubernetes/preparation/rbac.md create mode 100644 doc/install/kubernetes/preparation/tiller.md create mode 100644 doc/install/kubernetes/preparation/tools_installation.md create mode 100644 doc/topics/autodevops/img/autodevops_domain_variables.png create mode 100644 doc/topics/autodevops/img/autodevops_multiple_clusters.png create mode 100644 doc/topics/autodevops/img/guide_choose_gke.png create mode 100644 doc/topics/autodevops/img/guide_cluster_apps.png create mode 100644 doc/topics/autodevops/img/guide_create_cluster.png create mode 100644 doc/topics/autodevops/img/guide_create_project.png create mode 100644 doc/topics/autodevops/img/guide_enable_autodevops.png create mode 100644 doc/topics/autodevops/img/guide_environments.png create mode 100644 doc/topics/autodevops/img/guide_environments_metrics.png create mode 100644 doc/topics/autodevops/img/guide_first_pipeline.png create mode 100644 doc/topics/autodevops/img/guide_gitlab_gke_details.png create mode 100644 doc/topics/autodevops/img/guide_gke_apis_after.png create mode 100644 doc/topics/autodevops/img/guide_gke_apis_before.png create mode 100644 doc/topics/autodevops/img/guide_google_auth.png create mode 100644 doc/topics/autodevops/img/guide_google_signin.png create mode 100644 doc/topics/autodevops/img/guide_ide_commit.png delete mode 100644 doc/topics/autodevops/img/guide_integration.png create mode 100644 doc/topics/autodevops/img/guide_merge_request.png create mode 100644 doc/topics/autodevops/img/guide_merge_request_ide.png create mode 100644 doc/topics/autodevops/img/guide_merge_request_review_app.png create mode 100644 doc/topics/autodevops/img/guide_pipeline_stages.png create mode 100644 doc/topics/autodevops/img/guide_project_landing_page.png create mode 100644 doc/topics/autodevops/img/guide_project_template.png delete mode 100644 doc/topics/autodevops/img/guide_secret.png create mode 100644 doc/update/10.8-to-11.0.md create mode 100644 doc/update/11.0-to-11.1.md mode change 100755 => 100644 doc/user/admin_area/settings/img/enforce_terms.png mode change 100755 => 100644 doc/user/admin_area/settings/img/respond_to_terms.png create mode 100644 doc/user/admin_area/settings/img/sign_up_terms.png create mode 100644 doc/user/admin_area/settings/third_party_offers.md create mode 100644 doc/user/profile/img/profil-preferences-navigation-theme.png create mode 100644 doc/user/profile/img/profile-preferences-syntax-themes.png create mode 100644 doc/user/project/bulk_editing.md create mode 100644 doc/user/project/clusters/eks_and_gitlab/img/add_cluster.png create mode 100644 doc/user/project/clusters/eks_and_gitlab/img/create_dns.png create mode 100644 doc/user/project/clusters/eks_and_gitlab/img/create_project.png create mode 100644 doc/user/project/clusters/eks_and_gitlab/img/deploy_apps.png create mode 100644 doc/user/project/clusters/eks_and_gitlab/img/environment.png create mode 100644 doc/user/project/clusters/eks_and_gitlab/img/new_project.png create mode 100644 doc/user/project/clusters/eks_and_gitlab/img/pipeline.png create mode 100644 doc/user/project/clusters/eks_and_gitlab/index.md create mode 100644 doc/user/project/img/group_issue_board.png create mode 100644 doc/user/project/img/issue_board_assignee_lists.png create mode 100644 doc/user/project/img/issue_board_creation.png create mode 100644 doc/user/project/img/issue_board_edit_button.png create mode 100644 doc/user/project/img/issue_board_focus_mode.gif create mode 100644 doc/user/project/img/issue_board_view_scope.png create mode 100644 doc/user/project/img/issue_boards_multiple.png delete mode 100644 doc/user/project/integrations/img/kubernetes_configuration.png create mode 100644 doc/user/project/merge_requests/allow_collaboration.md create mode 100644 doc/user/project/merge_requests/img/allow_collaboration.png delete mode 100644 doc/user/project/merge_requests/img/allow_maintainer_push.png create mode 100644 doc/user/project/merge_requests/img/squash_edit_form.png create mode 100644 doc/user/project/merge_requests/img/squash_mr_commits.png create mode 100644 doc/user/project/merge_requests/img/squash_mr_widget.png create mode 100644 doc/user/project/merge_requests/img/squash_squashed_commit.png create mode 100644 doc/user/project/merge_requests/squash_and_merge.md create mode 100644 doc/workflow/repository_mirroring/repository_mirroring_detect_host_keys.png create mode 100644 doc/workflow/repository_mirroring/repository_mirroring_diverged_branch.png create mode 100644 doc/workflow/repository_mirroring/repository_mirroring_hard_failed_main.png create mode 100644 doc/workflow/repository_mirroring/repository_mirroring_hard_failed_settings.png create mode 100644 doc/workflow/repository_mirroring/repository_mirroring_new_project.png create mode 100644 doc/workflow/repository_mirroring/repository_mirroring_pull_advanced_host_keys.png create mode 100644 doc/workflow/repository_mirroring/repository_mirroring_pull_settings.png create mode 100644 doc/workflow/repository_mirroring/repository_mirroring_pull_settings_for_ssh.png create mode 100644 doc/workflow/repository_mirroring/repository_mirroring_ssh_host_keys_verified.png create mode 100644 doc/workflow/repository_mirroring/repository_mirroring_ssh_public_key_authentication.png delete mode 100644 doc_styleguide.md delete mode 100644 features/project/commits/diff_comments.feature delete mode 100644 features/project/deploy_keys.feature delete mode 100644 features/project/ff_merge_requests.feature delete mode 100644 features/project/forked_merge_requests.feature delete mode 100644 features/project/issues/references.feature delete mode 100644 features/project/merge_requests/references.feature delete mode 100644 features/steps/group/members.rb delete mode 100644 features/steps/profile/notifications.rb delete mode 100644 features/steps/project/commits/branches.rb delete mode 100644 features/steps/project/commits/comments.rb delete mode 100644 features/steps/project/commits/diff_comments.rb delete mode 100644 features/steps/project/create.rb delete mode 100644 features/steps/project/deploy_keys.rb delete mode 100644 features/steps/project/ff_merge_requests.rb delete mode 100644 features/steps/project/forked_merge_requests.rb delete mode 100644 features/steps/project/issues/filter_labels.rb delete mode 100644 features/steps/project/issues/issues.rb delete mode 100644 features/steps/project/issues/milestones.rb delete mode 100644 features/steps/project/issues/references.rb delete mode 100644 features/steps/project/merge_requests/references.rb delete mode 100644 features/steps/project/source/browse_files.rb delete mode 100644 features/steps/shared/active_tab.rb delete mode 100644 features/steps/shared/admin.rb delete mode 100644 features/steps/shared/authentication.rb delete mode 100644 features/steps/shared/diff_note.rb delete mode 100644 features/steps/shared/group.rb delete mode 100644 features/steps/shared/issuable.rb delete mode 100644 features/steps/shared/markdown.rb delete mode 100644 features/steps/shared/note.rb delete mode 100644 features/steps/shared/paths.rb delete mode 100644 features/steps/shared/project.rb delete mode 100644 features/steps/shared/project_tab.rb delete mode 100644 features/steps/shared/shortcuts.rb delete mode 100644 features/steps/shared/sidebar_active_tab.rb delete mode 100644 features/steps/shared/user.rb delete mode 100644 features/support/capybara.rb delete mode 100644 features/support/db_cleaner.rb delete mode 100644 features/support/env.rb delete mode 100644 features/support/gitaly.rb delete mode 100644 features/support/login_helpers.rb delete mode 100644 features/support/rerun.rb create mode 100644 lib/api/avatar.rb create mode 100644 lib/api/helpers/headers_helpers.rb create mode 100644 lib/api/markdown.rb delete mode 100644 lib/api/v3/award_emoji.rb delete mode 100644 lib/api/v3/boards.rb delete mode 100644 lib/api/v3/branches.rb delete mode 100644 lib/api/v3/broadcast_messages.rb delete mode 100644 lib/api/v3/builds.rb delete mode 100644 lib/api/v3/commits.rb delete mode 100644 lib/api/v3/deploy_keys.rb delete mode 100644 lib/api/v3/deployments.rb delete mode 100644 lib/api/v3/entities.rb delete mode 100644 lib/api/v3/environments.rb delete mode 100644 lib/api/v3/files.rb delete mode 100644 lib/api/v3/groups.rb delete mode 100644 lib/api/v3/helpers.rb delete mode 100644 lib/api/v3/issues.rb delete mode 100644 lib/api/v3/labels.rb delete mode 100644 lib/api/v3/members.rb delete mode 100644 lib/api/v3/merge_request_diffs.rb delete mode 100644 lib/api/v3/merge_requests.rb delete mode 100644 lib/api/v3/milestones.rb delete mode 100644 lib/api/v3/notes.rb delete mode 100644 lib/api/v3/pipelines.rb delete mode 100644 lib/api/v3/project_hooks.rb delete mode 100644 lib/api/v3/project_snippets.rb delete mode 100644 lib/api/v3/projects.rb delete mode 100644 lib/api/v3/repositories.rb delete mode 100644 lib/api/v3/runners.rb delete mode 100644 lib/api/v3/services.rb delete mode 100644 lib/api/v3/settings.rb delete mode 100644 lib/api/v3/snippets.rb delete mode 100644 lib/api/v3/subscriptions.rb delete mode 100644 lib/api/v3/system_hooks.rb delete mode 100644 lib/api/v3/tags.rb delete mode 100644 lib/api/v3/templates.rb delete mode 100644 lib/api/v3/time_tracking_endpoints.rb delete mode 100644 lib/api/v3/todos.rb delete mode 100644 lib/api/v3/triggers.rb delete mode 100644 lib/api/v3/users.rb delete mode 100644 lib/api/v3/variables.rb create mode 100644 lib/backup.rb create mode 100644 lib/constraints/feature_constrainer.rb create mode 100644 lib/gitlab/background_migration/archive_legacy_traces.rb create mode 100644 lib/gitlab/background_migration/cleanup_concurrent_rename.rb create mode 100644 lib/gitlab/background_migration/cleanup_concurrent_schema_change.rb create mode 100644 lib/gitlab/background_migration/delete_diff_files.rb create mode 100644 lib/gitlab/background_migration/fill_file_store_job_artifact.rb create mode 100644 lib/gitlab/background_migration/fill_file_store_lfs_object.rb create mode 100644 lib/gitlab/background_migration/fill_store_upload.rb create mode 100644 lib/gitlab/background_migration/fix_cross_project_label_links.rb create mode 100644 lib/gitlab/ci/pipeline/expression.rb create mode 100644 lib/gitlab/ci/pipeline/expression/lexeme/matches.rb create mode 100644 lib/gitlab/ci/pipeline/expression/lexeme/pattern.rb create mode 100644 lib/gitlab/ci/pipeline/preloader.rb create mode 100644 lib/gitlab/exclusive_lease_helpers.rb create mode 100644 lib/gitlab/favicon.rb create mode 100644 lib/gitlab/git/pre_receive_error.rb create mode 100644 lib/gitlab/git/version.rb create mode 100644 lib/gitlab/gitaly_client/storage_service.rb create mode 100644 lib/gitlab/github_import/importer/lfs_object_importer.rb create mode 100644 lib/gitlab/github_import/importer/lfs_objects_importer.rb create mode 100644 lib/gitlab/github_import/representation/lfs_object.rb create mode 100644 lib/gitlab/grape_logging/loggers/queue_duration_logger.rb create mode 100644 lib/gitlab/graphql.rb create mode 100644 lib/gitlab/graphql/authorize.rb create mode 100644 lib/gitlab/graphql/authorize/instrumentation.rb create mode 100644 lib/gitlab/graphql/connections.rb create mode 100644 lib/gitlab/graphql/connections/keyset_connection.rb create mode 100644 lib/gitlab/graphql/errors.rb create mode 100644 lib/gitlab/graphql/expose_permissions.rb create mode 100644 lib/gitlab/graphql/present.rb create mode 100644 lib/gitlab/graphql/present/instrumentation.rb create mode 100644 lib/gitlab/graphql/variables.rb create mode 100644 lib/gitlab/hashed_storage/migrator.rb create mode 100644 lib/gitlab/hashed_storage/rake_helper.rb delete mode 100644 lib/gitlab/health_checks/fs_shards_check.rb create mode 100644 lib/gitlab/import_export/group_project_object_builder.rb create mode 100644 lib/gitlab/import_export/uploads_manager.rb create mode 100644 lib/gitlab/search/parsed_query.rb create mode 100644 lib/gitlab/search/query.rb create mode 100644 lib/gitlab/shard_health_cache.rb create mode 100644 lib/gitlab/sql/cte.rb create mode 100644 lib/gitlab/temporarily_allow.rb create mode 100644 lib/gitlab/wiki_file_finder.rb create mode 100644 lib/mysql_zero_date.rb create mode 100644 lib/object_storage/direct_upload.rb create mode 100644 lib/tasks/migrate/composite_primary_keys.rake delete mode 100644 lib/tasks/spinach.rake create mode 100644 locale/cs_CZ/gitlab.po create mode 100644 locale/gl_ES/gitlab.po delete mode 100644 public/favicon.ico create mode 100644 qa/qa/factory/repository/project_push.rb create mode 100644 qa/qa/factory/repository/wiki_push.rb create mode 100644 qa/qa/factory/resource/kubernetes_cluster.rb create mode 100644 qa/qa/factory/resource/project_imported_from_github.rb create mode 100644 qa/qa/factory/resource/wiki.rb create mode 100644 qa/qa/fixtures/auto_devops_rack/Gemfile create mode 100644 qa/qa/fixtures/auto_devops_rack/Gemfile.lock create mode 100644 qa/qa/fixtures/auto_devops_rack/Rakefile create mode 100644 qa/qa/fixtures/auto_devops_rack/config.ru create mode 100644 qa/qa/page/component/select2.rb create mode 100644 qa/qa/page/issuable/sidebar.rb create mode 100644 qa/qa/page/project/import/github.rb create mode 100644 qa/qa/page/project/operations/kubernetes/add.rb create mode 100644 qa/qa/page/project/operations/kubernetes/add_existing.rb create mode 100644 qa/qa/page/project/operations/kubernetes/index.rb create mode 100644 qa/qa/page/project/operations/kubernetes/show.rb create mode 100644 qa/qa/page/project/wiki/edit.rb create mode 100644 qa/qa/page/project/wiki/new.rb create mode 100644 qa/qa/page/project/wiki/show.rb create mode 100644 qa/qa/page/shared/clone_panel.rb delete mode 100644 qa/qa/runtime/api.rb create mode 100644 qa/qa/runtime/api/client.rb create mode 100644 qa/qa/runtime/api/request.rb create mode 100644 qa/qa/scenario/test/integration/github.rb create mode 100644 qa/qa/scenario/test/integration/kubernetes.rb create mode 100644 qa/qa/service/kubernetes_cluster.rb create mode 100644 qa/qa/specs/features/api/basics_spec.rb create mode 100644 qa/qa/specs/features/merge_request/squash_spec.rb create mode 100644 qa/qa/specs/features/project/auto_devops_spec.rb create mode 100644 qa/qa/specs/features/project/import_from_github_spec.rb create mode 100644 qa/qa/specs/features/project/wikis_spec.rb create mode 100644 qa/spec/git/repository_spec.rb rename qa/spec/runtime/{api_client_spec.rb => api/client_spec.rb} (100%) create mode 100644 qa/spec/runtime/api/request_spec.rb create mode 100644 rubocop/cop/gitlab/finder_with_find_by.rb create mode 100644 rubocop/cop/group_public_or_visible_to_user.rb create mode 100644 scripts/frontend/postinstall.js create mode 100755 scripts/no-ee-check create mode 100755 scripts/rails5-gemfile-lock-check create mode 100755 scripts/trigger-build delete mode 100755 scripts/trigger-build-omnibus create mode 100644 spec/controllers/graphql_controller_spec.rb create mode 100644 spec/controllers/groups/shared_projects_controller_spec.rb delete mode 100644 spec/controllers/projects/clusters/gcp_controller_spec.rb delete mode 100644 spec/controllers/projects/clusters/user_controller_spec.rb create mode 100644 spec/dependencies/omniauth_saml_spec.rb create mode 100644 spec/factories/gitaly/tag.rb create mode 100644 spec/factories/import_export_uploads.rb create mode 100644 spec/features/error_pages_spec.rb create mode 100644 spec/features/groups/labels/index_spec.rb create mode 100644 spec/features/groups/members/filter_members_spec.rb create mode 100644 spec/features/ics/dashboard_issues_spec.rb create mode 100644 spec/features/ics/group_issues_spec.rb create mode 100644 spec/features/ics/project_issues_spec.rb create mode 100644 spec/features/issuables/markdown_references/internal_references_spec.rb create mode 100644 spec/features/issuables/markdown_references/jira_spec.rb delete mode 100644 spec/features/issuables/markdown_references_spec.rb rename spec/features/merge_request/{user_allows_a_maintainer_to_push_spec.rb => user_allows_commits_from_memebers_who_can_merge_spec.rb} (70%) create mode 100644 spec/features/merge_request/user_sees_check_out_branch_modal_spec.rb create mode 100644 spec/features/merge_requests/user_squashes_merge_request_spec.rb create mode 100644 spec/features/projects/commit/comments/user_adds_comment_spec.rb create mode 100644 spec/features/projects/commit/comments/user_deletes_comments_spec.rb create mode 100644 spec/features/projects/commit/comments/user_edits_comments_spec.rb create mode 100644 spec/features/projects/merge_requests/user_merges_merge_request_spec.rb create mode 100644 spec/features/projects/merge_requests/user_rebases_merge_request_spec.rb create mode 100644 spec/features/projects/settings/user_interacts_with_deploy_keys_spec.rb create mode 100644 spec/features/projects/settings/user_sees_revoke_deploy_token_modal_spec.rb create mode 100644 spec/features/projects/wiki/user_views_wiki_empty_spec.rb create mode 100644 spec/fixtures/api/schemas/entities/note_user_entity.json delete mode 100644 spec/fixtures/api/schemas/public_api/v3/issues.json delete mode 100644 spec/fixtures/api/schemas/public_api/v3/merge_requests.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/commit/with_stats.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/commits_with_stats.json create mode 100644 spec/fixtures/authentication/saml_response.xml create mode 100644 spec/fixtures/emails/valid_new_issue_with_quote.eml delete mode 100644 spec/fixtures/exported-project.gz create mode 100644 spec/fixtures/project_export.tar.gz create mode 100644 spec/graphql/gitlab_schema_spec.rb create mode 100644 spec/graphql/resolvers/concerns/resolves_pipelines_spec.rb create mode 100644 spec/graphql/resolvers/merge_request_pipelines_resolver_spec.rb create mode 100644 spec/graphql/resolvers/merge_request_resolver_spec.rb create mode 100644 spec/graphql/resolvers/project_pipelines_resolver_spec.rb create mode 100644 spec/graphql/resolvers/project_resolver_spec.rb create mode 100644 spec/graphql/types/ci/pipeline_type_spec.rb create mode 100644 spec/graphql/types/merge_request_type_spec.rb create mode 100644 spec/graphql/types/permission_types/base_permission_type_spec.rb create mode 100644 spec/graphql/types/permission_types/merge_request_spec.rb create mode 100644 spec/graphql/types/permission_types/merge_request_type_spec.rb create mode 100644 spec/graphql/types/permission_types/project_spec.rb create mode 100644 spec/graphql/types/project_type_spec.rb create mode 100644 spec/graphql/types/query_type_spec.rb create mode 100644 spec/graphql/types/time_type_spec.rb create mode 100644 spec/helpers/calendar_helper_spec.rb delete mode 100644 spec/initializers/artifacts_direct_upload_support_spec.rb create mode 100644 spec/initializers/direct_upload_support_spec.rb delete mode 100644 spec/initializers/grape_route_helpers_fix_spec.rb delete mode 100644 spec/javascripts/.eslintrc create mode 100644 spec/javascripts/.eslintrc.yml create mode 100644 spec/javascripts/create_merge_request_dropdown_spec.js create mode 100644 spec/javascripts/diffs/components/app_spec.js create mode 100644 spec/javascripts/diffs/components/changed_files_dropdown_spec.js create mode 100644 spec/javascripts/diffs/components/changed_files_spec.js create mode 100644 spec/javascripts/diffs/components/compare_versions_dropdown_spec.js create mode 100644 spec/javascripts/diffs/components/compare_versions_spec.js create mode 100644 spec/javascripts/diffs/components/diff_content_spec.js create mode 100644 spec/javascripts/diffs/components/diff_discussions_spec.js create mode 100644 spec/javascripts/diffs/components/diff_file_header_spec.js create mode 100644 spec/javascripts/diffs/components/diff_file_spec.js create mode 100644 spec/javascripts/diffs/components/diff_gutter_avatars_spec.js create mode 100644 spec/javascripts/diffs/components/diff_line_gutter_content_spec.js create mode 100644 spec/javascripts/diffs/components/diff_line_note_form_spec.js create mode 100644 spec/javascripts/diffs/components/edit_button_spec.js create mode 100644 spec/javascripts/diffs/components/hidden_files_warning_spec.js create mode 100644 spec/javascripts/diffs/components/inline_diff_view_spec.js create mode 100644 spec/javascripts/diffs/components/no_changes_spec.js create mode 100644 spec/javascripts/diffs/components/parallel_diff_view_spec.js create mode 100644 spec/javascripts/diffs/mock_data/diff_discussions.js create mode 100644 spec/javascripts/diffs/mock_data/diff_file.js create mode 100644 spec/javascripts/diffs/store/actions_spec.js create mode 100644 spec/javascripts/diffs/store/getters_spec.js create mode 100644 spec/javascripts/diffs/store/mutations_spec.js create mode 100644 spec/javascripts/diffs/store/utils_spec.js create mode 100644 spec/javascripts/fixtures/commit.rb create mode 100644 spec/javascripts/fixtures/images/green_box.png create mode 100644 spec/javascripts/fixtures/images/red_box.png create mode 100644 spec/javascripts/frequent_items/components/app_spec.js rename spec/javascripts/{projects_dropdown/components/projects_list_item_spec.js => frequent_items/components/frequent_items_list_item_spec.js} (59%) create mode 100644 spec/javascripts/frequent_items/components/frequent_items_list_spec.js create mode 100644 spec/javascripts/frequent_items/components/frequent_items_search_input_spec.js create mode 100644 spec/javascripts/frequent_items/mock_data.js create mode 100644 spec/javascripts/frequent_items/store/actions_spec.js create mode 100644 spec/javascripts/frequent_items/store/getters_spec.js create mode 100644 spec/javascripts/frequent_items/store/mutations_spec.js create mode 100644 spec/javascripts/frequent_items/utils_spec.js create mode 100644 spec/javascripts/helpers/index.js create mode 100644 spec/javascripts/helpers/init_vue_mr_page_helper.js create mode 100644 spec/javascripts/ide/components/error_message_spec.js create mode 100644 spec/javascripts/ide/components/external_link_spec.js delete mode 100644 spec/javascripts/ide/components/ide_file_buttons_spec.js create mode 100644 spec/javascripts/ide/components/jobs/detail/description_spec.js create mode 100644 spec/javascripts/ide/components/jobs/detail/scroll_button_spec.js create mode 100644 spec/javascripts/ide/components/jobs/detail_spec.js create mode 100644 spec/javascripts/ide/components/jobs/item_spec.js create mode 100644 spec/javascripts/ide/components/jobs/list_spec.js create mode 100644 spec/javascripts/ide/components/jobs/stage_spec.js create mode 100644 spec/javascripts/ide/components/merge_requests/dropdown_spec.js create mode 100644 spec/javascripts/ide/components/merge_requests/info_spec.js create mode 100644 spec/javascripts/ide/components/merge_requests/item_spec.js create mode 100644 spec/javascripts/ide/components/merge_requests/list_spec.js create mode 100644 spec/javascripts/ide/components/panes/right_spec.js create mode 100644 spec/javascripts/ide/components/pipelines/list_spec.js delete mode 100644 spec/javascripts/ide/monaco_loader_spec.js create mode 100644 spec/javascripts/ide/stores/modules/merge_requests/actions_spec.js create mode 100644 spec/javascripts/ide/stores/modules/merge_requests/mutations_spec.js create mode 100644 spec/javascripts/ide/stores/modules/pipelines/actions_spec.js create mode 100644 spec/javascripts/ide/stores/modules/pipelines/getters_spec.js create mode 100644 spec/javascripts/ide/stores/modules/pipelines/mutations_spec.js create mode 100644 spec/javascripts/issue_show/index_spec.js create mode 100644 spec/javascripts/lib/utils/mock_data.js create mode 100644 spec/javascripts/lib/utils/url_utility_spec.js delete mode 100644 spec/javascripts/merge_request_notes_spec.js delete mode 100644 spec/javascripts/notes/components/diff_file_header_spec.js create mode 100644 spec/javascripts/notes/components/discussion_counter_spec.js create mode 100644 spec/javascripts/notes/stores/collapse_utils_spec.js delete mode 100644 spec/javascripts/pipelines/async_button_spec.js create mode 100644 spec/javascripts/profile/add_ssh_key_validation_spec.js create mode 100644 spec/javascripts/projects/gke_cluster_dropdowns/components/gke_machine_type_dropdown_spec.js create mode 100644 spec/javascripts/projects/gke_cluster_dropdowns/components/gke_project_id_dropdown_spec.js create mode 100644 spec/javascripts/projects/gke_cluster_dropdowns/components/gke_zone_dropdown_spec.js create mode 100644 spec/javascripts/projects/gke_cluster_dropdowns/helpers.js create mode 100644 spec/javascripts/projects/gke_cluster_dropdowns/mock_data.js create mode 100644 spec/javascripts/projects/gke_cluster_dropdowns/stores/actions_spec.js create mode 100644 spec/javascripts/projects/gke_cluster_dropdowns/stores/getters_spec.js create mode 100644 spec/javascripts/projects/gke_cluster_dropdowns/stores/mutations_spec.js delete mode 100644 spec/javascripts/projects_dropdown/components/app_spec.js delete mode 100644 spec/javascripts/projects_dropdown/components/projects_list_frequent_spec.js delete mode 100644 spec/javascripts/projects_dropdown/components/projects_list_search_spec.js delete mode 100644 spec/javascripts/projects_dropdown/components/search_spec.js delete mode 100644 spec/javascripts/projects_dropdown/mock_data.js delete mode 100644 spec/javascripts/projects_dropdown/service/projects_service_spec.js delete mode 100644 spec/javascripts/projects_dropdown/store/projects_store_spec.js delete mode 100644 spec/javascripts/vue_mr_widget/components/mr_widget_maintainer_edit_spec.js create mode 100644 spec/javascripts/vue_shared/components/diff_viewer/diff_viewer_spec.js create mode 100644 spec/javascripts/vue_shared/components/diff_viewer/viewers/image_diff_viewer_spec.js create mode 100644 spec/javascripts/vue_shared/components/dropdown/dropdown_button_spec.js rename spec/javascripts/vue_shared/components/{sidebar/labels_select => dropdown}/dropdown_hidden_input_spec.js (78%) create mode 100644 spec/javascripts/vue_shared/components/dropdown/dropdown_search_input_spec.js create mode 100644 spec/javascripts/vue_shared/components/dropdown/mock_data.js create mode 100644 spec/javascripts/vue_shared/components/lib/utils/dom_utils_spec.js create mode 100644 spec/javascripts/vue_shared/components/tabs/tab_spec.js create mode 100644 spec/javascripts/vue_shared/components/tabs/tabs_spec.js create mode 100644 spec/lib/gitlab/background_migration/archive_legacy_traces_spec.rb create mode 100644 spec/lib/gitlab/background_migration/delete_diff_files_spec.rb create mode 100644 spec/lib/gitlab/background_migration/fix_cross_project_label_links_spec.rb create mode 100644 spec/lib/gitlab/ci/pipeline/expression/lexeme/matches_spec.rb create mode 100644 spec/lib/gitlab/ci/pipeline/expression/lexeme/pattern_spec.rb create mode 100644 spec/lib/gitlab/ci/pipeline/preloader_spec.rb create mode 100644 spec/lib/gitlab/diff/line_spec.rb create mode 100644 spec/lib/gitlab/exclusive_lease_helpers_spec.rb create mode 100644 spec/lib/gitlab/favicon_spec.rb create mode 100644 spec/lib/gitlab/git/pre_receive_error_spec.rb create mode 100644 spec/lib/gitlab/gitaly_client/storage_settings_spec.rb create mode 100644 spec/lib/gitlab/github_import/importer/lfs_object_importer_spec.rb create mode 100644 spec/lib/gitlab/github_import/importer/lfs_objects_importer_spec.rb create mode 100644 spec/lib/gitlab/grape_logging/loggers/queue_duration_logger_spec.rb create mode 100644 spec/lib/gitlab/graphql/connections/keyset_connection_spec.rb create mode 100644 spec/lib/gitlab/hashed_storage/migrator_spec.rb delete mode 100644 spec/lib/gitlab/health_checks/fs_shards_check_spec.rb create mode 100644 spec/lib/gitlab/import_export/after_export_strategies/base_after_export_strategy_object_storage_spec.rb create mode 100644 spec/lib/gitlab/import_export/group_project_object_builder_spec.rb create mode 100644 spec/lib/gitlab/import_export/project.milestone-iid.json create mode 100644 spec/lib/gitlab/import_export/saver_spec.rb create mode 100644 spec/lib/gitlab/import_export/uploads_manager_spec.rb create mode 100644 spec/lib/gitlab/metrics/prometheus_spec.rb create mode 100644 spec/lib/gitlab/search/query_spec.rb create mode 100644 spec/lib/gitlab/shard_health_cache_spec.rb create mode 100644 spec/lib/gitlab/sql/cte_spec.rb create mode 100644 spec/lib/gitlab/wiki_file_finder_spec.rb create mode 100644 spec/lib/object_storage/direct_upload_spec.rb create mode 100644 spec/migrations/add_unique_constraint_to_project_features_project_id_spec.rb create mode 100644 spec/migrations/change_default_value_for_dsa_key_restriction_spec.rb create mode 100644 spec/migrations/cleanup_stages_position_migration_spec.rb create mode 100644 spec/migrations/fill_file_store_spec.rb create mode 100644 spec/migrations/migrate_object_storage_upload_sidekiq_queue_spec.rb create mode 100644 spec/migrations/migrate_remaining_mr_metrics_populating_background_migration_spec.rb create mode 100644 spec/migrations/schedule_to_archive_legacy_traces_spec.rb create mode 100644 spec/models/ci/build_runner_session_spec.rb create mode 100644 spec/models/ci/build_trace_chunks/database_spec.rb create mode 100644 spec/models/ci/build_trace_chunks/fog_spec.rb create mode 100644 spec/models/ci/build_trace_chunks/redis_spec.rb create mode 100644 spec/models/clusters/applications/jupyter_spec.rb create mode 100644 spec/models/concerns/batch_destroy_dependent_associations_spec.rb create mode 100644 spec/models/concerns/cacheable_attributes_spec.rb create mode 100644 spec/models/concerns/sortable_spec.rb create mode 100644 spec/models/import_export_upload_spec.rb create mode 100644 spec/models/note_diff_file_spec.rb create mode 100644 spec/requests/api/avatar_spec.rb create mode 100644 spec/requests/api/graphql/project/merge_request_spec.rb create mode 100644 spec/requests/api/graphql/project_query_spec.rb create mode 100644 spec/requests/api/markdown_spec.rb create mode 100644 spec/requests/api/redacted_events_spec.rb delete mode 100644 spec/requests/api/v3/award_emoji_spec.rb delete mode 100644 spec/requests/api/v3/boards_spec.rb delete mode 100644 spec/requests/api/v3/branches_spec.rb delete mode 100644 spec/requests/api/v3/broadcast_messages_spec.rb delete mode 100644 spec/requests/api/v3/builds_spec.rb delete mode 100644 spec/requests/api/v3/commits_spec.rb delete mode 100644 spec/requests/api/v3/deploy_keys_spec.rb delete mode 100644 spec/requests/api/v3/deployments_spec.rb delete mode 100644 spec/requests/api/v3/environments_spec.rb delete mode 100644 spec/requests/api/v3/files_spec.rb delete mode 100644 spec/requests/api/v3/groups_spec.rb delete mode 100644 spec/requests/api/v3/issues_spec.rb delete mode 100644 spec/requests/api/v3/labels_spec.rb delete mode 100644 spec/requests/api/v3/members_spec.rb delete mode 100644 spec/requests/api/v3/merge_request_diffs_spec.rb delete mode 100644 spec/requests/api/v3/merge_requests_spec.rb delete mode 100644 spec/requests/api/v3/milestones_spec.rb delete mode 100644 spec/requests/api/v3/notes_spec.rb delete mode 100644 spec/requests/api/v3/pipelines_spec.rb delete mode 100644 spec/requests/api/v3/project_hooks_spec.rb delete mode 100644 spec/requests/api/v3/project_snippets_spec.rb delete mode 100644 spec/requests/api/v3/projects_spec.rb delete mode 100644 spec/requests/api/v3/repositories_spec.rb delete mode 100644 spec/requests/api/v3/runners_spec.rb delete mode 100644 spec/requests/api/v3/services_spec.rb delete mode 100644 spec/requests/api/v3/settings_spec.rb delete mode 100644 spec/requests/api/v3/snippets_spec.rb delete mode 100644 spec/requests/api/v3/system_hooks_spec.rb delete mode 100644 spec/requests/api/v3/tags_spec.rb delete mode 100644 spec/requests/api/v3/templates_spec.rb delete mode 100644 spec/requests/api/v3/todos_spec.rb delete mode 100644 spec/requests/api/v3/triggers_spec.rb delete mode 100644 spec/requests/api/v3/users_spec.rb create mode 100644 spec/requests/oauth_tokens_spec.rb create mode 100644 spec/routing/api_routing_spec.rb create mode 100644 spec/rubocop/cop/gitlab/finder_with_find_by_spec.rb create mode 100644 spec/rubocop/cop/group_public_or_visible_to_user_spec.rb create mode 100644 spec/serializers/blob_entity_spec.rb create mode 100644 spec/serializers/diffs_entity_spec.rb create mode 100644 spec/serializers/merge_request_diff_entity_spec.rb create mode 100644 spec/serializers/merge_request_user_entity_spec.rb delete mode 100644 spec/services/check_gcp_project_billing_service_spec.rb create mode 100644 spec/services/keys/destroy_service_spec.rb create mode 100644 spec/services/merge_requests/delete_non_latest_diffs_service_spec.rb delete mode 100644 spec/services/merge_requests/merge_request_diff_cache_service_spec.rb create mode 100644 spec/services/merge_requests/reload_diffs_service_spec.rb create mode 100644 spec/services/merge_requests/squash_service_spec.rb create mode 100644 spec/services/notification_recipient_service_spec.rb delete mode 100644 spec/services/pages_service_spec.rb create mode 100644 spec/services/projects/batch_open_issues_count_service_spec.rb create mode 100644 spec/services/projects/lfs_pointers/lfs_download_link_list_service_spec.rb create mode 100644 spec/services/projects/lfs_pointers/lfs_download_service_spec.rb create mode 100644 spec/services/projects/lfs_pointers/lfs_import_service_spec.rb create mode 100644 spec/services/projects/lfs_pointers/lfs_link_service_spec.rb delete mode 100644 spec/support/api/v3/time_tracking_shared_examples.rb delete mode 100644 spec/support/gitlab_stubs/session.json create mode 100644 spec/support/helpers/assets_helpers.rb create mode 100644 spec/support/helpers/exclusive_lease_helpers.rb create mode 100644 spec/support/helpers/expect_next_instance_of.rb create mode 100644 spec/support/helpers/graphql_helpers.rb create mode 100644 spec/support/helpers/routes_helpers.rb create mode 100644 spec/support/matchers/disallow_request_matchers.rb delete mode 100644 spec/support/matchers/email_matchers.rb create mode 100644 spec/support/matchers/graphql_matchers.rb create mode 100644 spec/support/services/clusters/create_service_shared.rb create mode 100644 spec/support/shared_examples/file_finder.rb create mode 100644 spec/support/shared_examples/models/with_uploads_shared_examples.rb create mode 100644 spec/support/shared_examples/requests/api/merge_requests_list.rb create mode 100644 spec/support/shared_examples/requests/graphql_shared_examples.rb create mode 100644 spec/support/shared_examples/url_validator_examples.rb create mode 100644 spec/support/shoulda/matchers/rails_shim.rb create mode 100644 spec/support/trace/trace_helpers.rb create mode 100644 spec/uploaders/import_export_uploader_spec.rb create mode 100644 spec/validators/public_url_validator_spec.rb delete mode 100644 spec/validators/url_placeholder_validator_spec.rb create mode 100644 spec/views/errors/access_denied.html.haml_spec.rb delete mode 100644 spec/workers/check_gcp_project_billing_worker_spec.rb create mode 100644 spec/workers/ci/archive_traces_cron_worker_spec.rb create mode 100644 spec/workers/create_note_diff_file_worker_spec.rb create mode 100644 spec/workers/delete_diff_files_worker_spec.rb create mode 100644 spec/workers/gitlab/github_import/stage/import_lfs_objects_worker_spec.rb delete mode 100644 spec/workers/object_storage_upload_worker_spec.rb create mode 100644 spec/workers/prune_web_hook_logs_worker_spec.rb create mode 100644 spec/workers/repository_check/dispatch_worker_spec.rb delete mode 100644 vendor/assets/javascripts/Sortable.js delete mode 100644 vendor/assets/javascripts/date.format.js create mode 100644 vendor/gitignore/Global/Backup.gitignore create mode 100644 vendor/gitignore/Global/Patch.gitignore create mode 100644 vendor/gitignore/Perl6.gitignore delete mode 100644 vendor/gitlab-ci-yml/autodeploy/Kubernetes-with-canary.gitlab-ci.yml delete mode 100644 vendor/gitlab-ci-yml/autodeploy/Kubernetes.gitlab-ci.yml delete mode 100644 vendor/gitlab-ci-yml/autodeploy/OpenShift.gitlab-ci.yml create mode 100644 vendor/jupyter/values.yaml diff --git a/.codeclimate.yml b/.codeclimate.yml index 8699a903f2..9998ddba64 100644 --- a/.codeclimate.yml +++ b/.codeclimate.yml @@ -8,8 +8,6 @@ engines: languages: - ruby - javascript - exclude_paths: - - "lib/api/v3/*" ratings: paths: - Gemfile.lock diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 3f187db0c0..0000000000 --- a/.eslintrc +++ /dev/null @@ -1,56 +0,0 @@ -{ - "env": { - "browser": true, - "es6": true - }, - "extends": [ - "airbnb-base", - "plugin:vue/recommended" - ], - "globals": { - "__webpack_public_path__": true, - "gl": false, - "gon": false, - "localStorage": false - }, - "parserOptions": { - "parser": "babel-eslint" - }, - "plugins": [ - "filenames", - "import", - "html", - "promise" - ], - "settings": { - "html/html-extensions": [".html", ".html.raw"], - "import/resolver": { - "webpack": { - "config": "./config/webpack.config.js" - } - } - }, - "rules": { - "filenames/match-regex": [2, "^[a-z0-9_]+$"], - "import/no-commonjs": "error", - "no-multiple-empty-lines": ["error", { "max": 1 }], - "promise/catch-or-return": "error", - "no-underscore-dangle": ["error", { "allow": ["__", "_links"] }], - "no-mixed-operators": 0, - "space-before-function-paren": 0, - "curly": 0, - "arrow-parens": 0, - "vue/html-self-closing": [ - "error", - { - "html": { - "void": "always", - "normal": "never", - "component": "always" - }, - "svg": "always", - "math": "always" - } - ] - } -} diff --git a/.eslintrc.yml b/.eslintrc.yml new file mode 100644 index 0000000000..77b1b72fe6 --- /dev/null +++ b/.eslintrc.yml @@ -0,0 +1,71 @@ +--- +env: + browser: true + es6: true +extends: + - airbnb-base + - plugin:vue/recommended +globals: + __webpack_public_path__: true + gl: false + gon: false + localStorage: false +parserOptions: + parser: babel-eslint +plugins: + - filenames + - import + - html + - promise +settings: + html/html-extensions: + - ".html" + - ".html.raw" + import/resolver: + webpack: + config: "./config/webpack.config.js" +rules: + filenames/match-regex: + - error + - "^[a-z0-9_]+$" + import/no-commonjs: error + no-multiple-empty-lines: + - error + - max: 1 + promise/catch-or-return: error + no-underscore-dangle: + - error + - allow: + - __ + - _links + no-mixed-operators: off + vue/html-self-closing: + - error + - html: + void: always + normal: never + component: always + svg: always + math: always + ## Conflicting rules with prettier: + space-before-function-paren: off + curly: off + arrow-parens: off + function-paren-newline: off + object-curly-newline: off + padded-blocks: off + # Disabled for now, to make the eslint 3 -> eslint 4 update smoother + ## Indent rule. We are using the old for now: https://eslint.org/docs/user-guide/migrating-to-4.0.0#indent-rewrite + indent: off + indent-legacy: + - error + - 2 + - SwitchCase: 1 + VariableDeclarator: 1 + outerIIFEBody: 1 + FunctionDeclaration: + parameters: 1 + body: 1 + FunctionExpression: + parameters: 1 + body: 1 diff --git a/.flayignore b/.flayignore index 0c4eee10ff..4b6f7ba693 100644 --- a/.flayignore +++ b/.flayignore @@ -1,12 +1,34 @@ *.erb lib/gitlab/sanitizers/svg/whitelist.rb lib/gitlab/diff/position_tracer.rb +app/controllers/projects/approver_groups_controller.rb +app/controllers/projects/approvers_controller.rb +app/controllers/projects/protected_branches/merge_access_levels_controller.rb +app/controllers/projects/protected_branches/push_access_levels_controller.rb +app/controllers/projects/protected_tags/create_access_levels_controller.rb app/policies/project_policy.rb app/models/concerns/relative_positioning.rb app/workers/stuck_merge_jobs_worker.rb lib/gitlab/redis/*.rb lib/gitlab/gitaly_client/operation_service.rb +app/models/project_services/packagist_service.rb +lib/gitlab/background_migration/normalize_ldap_extern_uids_range.rb lib/gitlab/background_migration/* app/models/project_services/kubernetes_service.rb lib/gitlab/workhorse.rb lib/gitlab/ci/trace/chunked_io.rb +lib/gitlab/gitaly_client/ref_service.rb +lib/gitlab/gitaly_client/commit_service.rb +lib/gitlab/git/commit.rb +lib/gitlab/git/tag.rb + +ee/db/**/* +ee/app/serializers/ee/merge_request_widget_entity.rb +ee/lib/api/epics.rb +ee/lib/api/geo_nodes.rb +ee/lib/ee/api/group_boards.rb +ee/lib/ee/api/boards.rb +ee/lib/ee/gitlab/ldap/sync/admin_users.rb +ee/app/workers/geo/file_download_dispatch_worker/job_artifact_job_finder.rb +ee/app/workers/geo/file_download_dispatch_worker/lfs_object_job_finder.rb +ee/spec/**/* diff --git a/.gitignore b/.gitignore index 51b77d5ac9..9a42a663fb 100644 --- a/.gitignore +++ b/.gitignore @@ -29,7 +29,7 @@ eslint-report.html /app/assets/javascripts/locale/**/app.js /backups/* /config/aws.yml -/config/database.yml +/config/database*.yml /config/gitlab.yml /config/gitlab_ci.yml /config/initializers/rack_attack.rb @@ -76,3 +76,4 @@ eslint-report.html /.rspec /plugins/* /.gitlab_pages_secret +package-lock.json diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 8dddad11f4..70f5351a91 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,4 +1,4 @@ -image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.3.7-golang-1.9-git-2.17-chrome-65.0-node-8.x-yarn-1.2-postgresql-9.6" +image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.4.4-golang-1.9-git-2.17-chrome-67.0-node-8.x-yarn-1.2-postgresql-9.6-graphicsmagick-1.3.29" .dedicated-runner: &dedicated-runner retry: 1 @@ -6,7 +6,7 @@ image: "dev.gitlab.org:5005/gitlab/gitlab-build-images:ruby-2.3.7-golang-1.9-git - gitlab-org .default-cache: &default-cache - key: "ruby-2.3.7-debian-stretch-with-yarn" + key: "ruby-2.4.4-debian-stretch-with-yarn" paths: - vendor/ruby - .yarn-cache/ @@ -31,7 +31,6 @@ variables: GIT_SUBMODULE_STRATEGY: "none" GET_SOURCES_ATTEMPTS: "3" KNAPSACK_RSPEC_SUITE_REPORT_PATH: knapsack/${CI_PROJECT_NAME}/rspec_report-master.json - KNAPSACK_SPINACH_SUITE_REPORT_PATH: knapsack/${CI_PROJECT_NAME}/spinach_report-master.json FLAKY_RSPEC_SUITE_REPORT_PATH: rspec_flaky/report-suite.json before_script: @@ -127,6 +126,23 @@ stages: <<: *dedicated-no-docs-pull-cache-job <<: *except-docs-and-qa +.single-script-job: &single-script-job + image: ruby:2.4-alpine + before_script: [] + stage: build + cache: {} + dependencies: [] + variables: &single-script-job-variables + GIT_STRATEGY: none + before_script: + # We need to download the script rather than clone the repo since the + # package-and-qa job will not be able to run when the branch gets + # deleted (when merging the MR). + - export SCRIPT_NAME="${SCRIPT_NAME:-$CI_JOB_NAME}" + - apk add --update openssl + - wget $CI_PROJECT_URL/raw/$CI_COMMIT_SHA/scripts/$SCRIPT_NAME + - chmod 755 $SCRIPT_NAME + .rake-exec: &rake-exec <<: *dedicated-no-docs-no-db-pull-cache-job script: @@ -179,46 +195,6 @@ stages: <<: *rspec-metadata-mysql <<: *rails5 -.spinach-metadata: &spinach-metadata - <<: *dedicated-runner - <<: *except-docs-and-qa - <<: *pull-cache - <<: *rails5-variables - stage: test - script: - - JOB_NAME=( $CI_JOB_NAME ) - - export CI_NODE_INDEX=${JOB_NAME[-2]} - - export CI_NODE_TOTAL=${JOB_NAME[-1]} - - export KNAPSACK_REPORT_PATH=knapsack/${CI_PROJECT_NAME}/${JOB_NAME[0]}_node_${CI_NODE_INDEX}_${CI_NODE_TOTAL}_report.json - - export KNAPSACK_GENERATE_REPORT=true - - export CACHE_CLASSES=true - - cp ${KNAPSACK_SPINACH_SUITE_REPORT_PATH} ${KNAPSACK_REPORT_PATH} - - scripts/gitaly-test-spawn - - knapsack spinach "-r rerun" -b || retry '[[ -e tmp/spinach-rerun.txt ]] && bundle exec spinach -b -r rerun $(cat tmp/spinach-rerun.txt)' - artifacts: - expire_in: 31d - when: always - paths: - - coverage/ - - knapsack/ - - tmp/capybara/ - -.spinach-metadata-pg: &spinach-metadata-pg - <<: *spinach-metadata - <<: *use-pg - -.spinach-metadata-pg-rails5: &spinach-metadata-pg-rails5 - <<: *spinach-metadata-pg - <<: *rails5 - -.spinach-metadata-mysql: &spinach-metadata-mysql - <<: *spinach-metadata - <<: *use-mysql - -.spinach-metadata-mysql-rails5: &spinach-metadata-mysql-rails5 - <<: *spinach-metadata-mysql - <<: *rails5 - .only-canonical-masters: &only-canonical-masters only: - master@gitlab-org/gitlab-ce @@ -230,7 +206,7 @@ stages: <<: *dedicated-no-docs-and-no-qa-pull-cache-job <<: *use-pg variables: - CREATE_DB_USER: "true" + SETUP_DB: "false" script: # Manually clone gitlab-test and only seed this project in # db/fixtures/development/04_project.rb thanks to SIZE=1 below @@ -244,27 +220,6 @@ stages: paths: - log/development.log -# Review docs base -.review-docs: &review-docs - <<: *dedicated-runner - <<: *except-qa - image: ruby:2.4-alpine - before_script: - - gem install gitlab --no-doc - # We need to download the script rather than clone the repo since the - # review-docs-cleanup job will not be able to run when the branch gets - # deleted (when merging the MR). - - apk add --update openssl - - wget https://gitlab.com/gitlab-org/gitlab-ce/raw/master/scripts/trigger-build-docs - - chmod 755 trigger-build-docs - cache: {} - dependencies: [] - variables: - GIT_STRATEGY: none - when: manual - only: - - branches - # DB migration, rollback, and seed jobs .db-migrate-reset: &db-migrate-reset <<: *dedicated-no-docs-and-no-qa-pull-cache-job @@ -274,7 +229,7 @@ stages: .migration-paths: &migration-paths <<: *dedicated-no-docs-and-no-qa-pull-cache-job variables: - CREATE_DB_USER: "true" + SETUP_DB: "false" script: - git fetch https://gitlab.com/gitlab-org/gitlab-ce.git v9.3.0 - git checkout -f FETCH_HEAD @@ -283,7 +238,7 @@ stages: - cp config/gitlab.yml.example config/gitlab.yml - bundle exec rake db:drop db:create db:schema:load db:seed_fu - date - - git checkout $CI_COMMIT_SHA + - git checkout -f $CI_COMMIT_SHA - bundle install $BUNDLE_INSTALL_FLAGS - date - . scripts/prepare_build.sh @@ -294,50 +249,88 @@ stages: # Trigger a package build in omnibus-gitlab repository # package-and-qa: - image: ruby:2.4-alpine - before_script: [] - stage: build - cache: {} - when: manual + <<: *single-script-job variables: - GIT_STRATEGY: none + <<: *single-script-job-variables + SCRIPT_NAME: trigger-build retry: 0 - before_script: - # We need to download the script rather than clone the repo since the - # package-and-qa job will not be able to run when the branch gets - # deleted (when merging the MR). - - apk add --update openssl - - wget https://gitlab.com/$CI_PROJECT_PATH/raw/$CI_COMMIT_SHA/scripts/trigger-build-omnibus - - chmod 755 trigger-build-omnibus script: - - ./trigger-build-omnibus + - ./$SCRIPT_NAME omnibus + when: manual only: - //@gitlab-org/gitlab-ce - //@gitlab-org/gitlab-ee -# Trigger a docs build in gitlab-docs -# Useful to preview the docs changes live -review-docs-deploy: - <<: *review-docs - stage: build +# Review docs base +.review-docs: &review-docs + <<: *dedicated-runner + <<: *single-script-job + variables: + <<: *single-script-job-variables + SCRIPT_NAME: trigger-build-docs environment: - name: review-docs/$CI_COMMIT_REF_NAME + name: review-docs/$CI_COMMIT_REF_SLUG # DOCS_REVIEW_APPS_DOMAIN and DOCS_GITLAB_REPO_SUFFIX are secret variables # Discussion: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14236/diffs#note_40140693 - url: http://$DOCS_GITLAB_REPO_SUFFIX-$CI_COMMIT_REF_SLUG.$DOCS_REVIEW_APPS_DOMAIN/$DOCS_GITLAB_REPO_SUFFIX + url: http://$CI_ENVIRONMENT_SLUG.$DOCS_REVIEW_APPS_DOMAIN/$DOCS_GITLAB_REPO_SUFFIX on_stop: review-docs-cleanup + +# Trigger a manual docs build in gitlab-docs only on non docs-only branches. +# Useful to preview the docs changes live. +review-docs-deploy-manual: + <<: *review-docs + stage: build script: - - ./trigger-build-docs deploy + - gem install gitlab --no-ri --no-rdoc + - ./$SCRIPT_NAME deploy + when: manual + only: + - branches@gitlab-org/gitlab-ce + - branches@gitlab-org/gitlab-ee + <<: *except-docs-and-qa + +# Always trigger a docs build in gitlab-docs only on docs-only branches. +# Useful to preview the docs changes live. +review-docs-deploy: + <<: *review-docs + stage: post-test + script: + - gem install gitlab --no-ri --no-rdoc + - ./$SCRIPT_NAME deploy + only: + - /(^docs[\/-].*|.*-docs$)/@gitlab-org/gitlab-ce + - /(^docs[\/-].*|.*-docs$)/@gitlab-org/gitlab-ee + <<: *except-qa # Cleanup remote environment of gitlab-docs review-docs-cleanup: <<: *review-docs stage: post-cleanup environment: - name: review-docs/$CI_COMMIT_REF_NAME + name: review-docs/$CI_COMMIT_REF_SLUG action: stop + when: manual script: - - ./trigger-build-docs cleanup + - gem install gitlab --no-ri --no-rdoc + - ./$SCRIPT_NAME cleanup + +## +# Trigger a docker image build in CNG (Cloud Native GitLab) repository +# +cloud-native-image: + image: ruby:2.4-alpine + before_script: [] + stage: build + allow_failure: true + variables: + GIT_DEPTH: "1" + cache: {} + script: + - gem install gitlab --no-ri --no-rdoc + - BUILD_TRIGGER_TOKEN=$CI_JOB_TOKEN scripts/trigger-build cng + only: + - tags@gitlab-org/gitlab-ce + - tags@gitlab-org/gitlab-ee # Retrieve knapsack and rspec_flaky reports retrieve-tests-metadata: @@ -350,9 +343,7 @@ retrieve-tests-metadata: script: - mkdir -p knapsack/${CI_PROJECT_NAME}/ - wget -O $KNAPSACK_RSPEC_SUITE_REPORT_PATH http://${TESTS_METADATA_S3_BUCKET}.s3.amazonaws.com/$KNAPSACK_RSPEC_SUITE_REPORT_PATH || rm $KNAPSACK_RSPEC_SUITE_REPORT_PATH - - wget -O $KNAPSACK_SPINACH_SUITE_REPORT_PATH http://${TESTS_METADATA_S3_BUCKET}.s3.amazonaws.com/$KNAPSACK_SPINACH_SUITE_REPORT_PATH || rm $KNAPSACK_SPINACH_SUITE_REPORT_PATH - '[[ -f $KNAPSACK_RSPEC_SUITE_REPORT_PATH ]] || echo "{}" > ${KNAPSACK_RSPEC_SUITE_REPORT_PATH}' - - '[[ -f $KNAPSACK_SPINACH_SUITE_REPORT_PATH ]] || echo "{}" > ${KNAPSACK_SPINACH_SUITE_REPORT_PATH}' - mkdir -p rspec_flaky/ - wget -O $FLAKY_RSPEC_SUITE_REPORT_PATH http://${TESTS_METADATA_S3_BUCKET}.s3.amazonaws.com/$FLAKY_RSPEC_SUITE_REPORT_PATH || rm $FLAKY_RSPEC_SUITE_REPORT_PATH - '[[ -f $FLAKY_RSPEC_SUITE_REPORT_PATH ]] || echo "{}" > ${FLAKY_RSPEC_SUITE_REPORT_PATH}' @@ -368,12 +359,11 @@ update-tests-metadata: - rspec_flaky/ policy: push script: - - retry gem install fog-aws mime-types activesupport + - retry gem install fog-aws mime-types activesupport --no-ri --no-rdoc - scripts/merge-reports ${KNAPSACK_RSPEC_SUITE_REPORT_PATH} knapsack/${CI_PROJECT_NAME}/rspec-pg_node_*.json - - scripts/merge-reports ${KNAPSACK_SPINACH_SUITE_REPORT_PATH} knapsack/${CI_PROJECT_NAME}/spinach-pg_node_*.json - scripts/merge-reports ${FLAKY_RSPEC_SUITE_REPORT_PATH} rspec_flaky/all_*_*.json - FLAKY_RSPEC_GENERATE_REPORT=1 scripts/prune-old-flaky-specs ${FLAKY_RSPEC_SUITE_REPORT_PATH} - - '[[ -z ${TESTS_METADATA_S3_BUCKET} ]] || scripts/sync-reports put $TESTS_METADATA_S3_BUCKET $KNAPSACK_RSPEC_SUITE_REPORT_PATH $KNAPSACK_SPINACH_SUITE_REPORT_PATH' + - '[[ -z ${TESTS_METADATA_S3_BUCKET} ]] || scripts/sync-reports put $TESTS_METADATA_S3_BUCKET $KNAPSACK_RSPEC_SUITE_REPORT_PATH' - '[[ -z ${TESTS_METADATA_S3_BUCKET} ]] || scripts/sync-reports put $TESTS_METADATA_S3_BUCKET $FLAKY_RSPEC_SUITE_REPORT_PATH' - rm -f knapsack/${CI_PROJECT_NAME}/*_node_*.json - rm -f rspec_flaky/all_*.json rspec_flaky/new_*.json @@ -417,7 +407,11 @@ compile-assets: - date - yarn install --frozen-lockfile --cache-folder .yarn-cache - date + - free -m - bundle exec rake gitlab:assets:compile + variables: + # we override the max_old_space_size to prevent OOM errors + NODE_OPTIONS: --max_old_space_size=3584 artifacts: expire_in: 7d paths: @@ -434,6 +428,7 @@ setup-test-env: script: - bundle exec ruby -Ispec -e 'require "spec_helper" ; TestEnv.init' - scripts/gitaly-test-build # Do not use 'bundle exec' here + - BUNDLE_GEMFILE=Gemfile.rails5 bundle install $BUNDLE_INSTALL_FLAGS artifacts: expire_in: 7d paths: @@ -441,133 +436,129 @@ setup-test-env: - config/secrets.yml - vendor/gitaly-ruby -rspec-pg 0 28: *rspec-metadata-pg -rspec-pg 1 28: *rspec-metadata-pg -rspec-pg 2 28: *rspec-metadata-pg -rspec-pg 3 28: *rspec-metadata-pg -rspec-pg 4 28: *rspec-metadata-pg -rspec-pg 5 28: *rspec-metadata-pg -rspec-pg 6 28: *rspec-metadata-pg -rspec-pg 7 28: *rspec-metadata-pg -rspec-pg 8 28: *rspec-metadata-pg -rspec-pg 9 28: *rspec-metadata-pg -rspec-pg 10 28: *rspec-metadata-pg -rspec-pg 11 28: *rspec-metadata-pg -rspec-pg 12 28: *rspec-metadata-pg -rspec-pg 13 28: *rspec-metadata-pg -rspec-pg 14 28: *rspec-metadata-pg -rspec-pg 15 28: *rspec-metadata-pg -rspec-pg 16 28: *rspec-metadata-pg -rspec-pg 17 28: *rspec-metadata-pg -rspec-pg 18 28: *rspec-metadata-pg -rspec-pg 19 28: *rspec-metadata-pg -rspec-pg 20 28: *rspec-metadata-pg -rspec-pg 21 28: *rspec-metadata-pg -rspec-pg 22 28: *rspec-metadata-pg -rspec-pg 23 28: *rspec-metadata-pg -rspec-pg 24 28: *rspec-metadata-pg -rspec-pg 25 28: *rspec-metadata-pg -rspec-pg 26 28: *rspec-metadata-pg -rspec-pg 27 28: *rspec-metadata-pg +rspec-pg 0 30: *rspec-metadata-pg +rspec-pg 1 30: *rspec-metadata-pg +rspec-pg 2 30: *rspec-metadata-pg +rspec-pg 3 30: *rspec-metadata-pg +rspec-pg 4 30: *rspec-metadata-pg +rspec-pg 5 30: *rspec-metadata-pg +rspec-pg 6 30: *rspec-metadata-pg +rspec-pg 7 30: *rspec-metadata-pg +rspec-pg 8 30: *rspec-metadata-pg +rspec-pg 9 30: *rspec-metadata-pg +rspec-pg 10 30: *rspec-metadata-pg +rspec-pg 11 30: *rspec-metadata-pg +rspec-pg 12 30: *rspec-metadata-pg +rspec-pg 13 30: *rspec-metadata-pg +rspec-pg 14 30: *rspec-metadata-pg +rspec-pg 15 30: *rspec-metadata-pg +rspec-pg 16 30: *rspec-metadata-pg +rspec-pg 17 30: *rspec-metadata-pg +rspec-pg 18 30: *rspec-metadata-pg +rspec-pg 19 30: *rspec-metadata-pg +rspec-pg 20 30: *rspec-metadata-pg +rspec-pg 21 30: *rspec-metadata-pg +rspec-pg 22 30: *rspec-metadata-pg +rspec-pg 23 30: *rspec-metadata-pg +rspec-pg 24 30: *rspec-metadata-pg +rspec-pg 25 30: *rspec-metadata-pg +rspec-pg 26 30: *rspec-metadata-pg +rspec-pg 27 30: *rspec-metadata-pg +rspec-pg 28 30: *rspec-metadata-pg +rspec-pg 29 30: *rspec-metadata-pg -rspec-mysql 0 28: *rspec-metadata-mysql -rspec-mysql 1 28: *rspec-metadata-mysql -rspec-mysql 2 28: *rspec-metadata-mysql -rspec-mysql 3 28: *rspec-metadata-mysql -rspec-mysql 4 28: *rspec-metadata-mysql -rspec-mysql 5 28: *rspec-metadata-mysql -rspec-mysql 6 28: *rspec-metadata-mysql -rspec-mysql 7 28: *rspec-metadata-mysql -rspec-mysql 8 28: *rspec-metadata-mysql -rspec-mysql 9 28: *rspec-metadata-mysql -rspec-mysql 10 28: *rspec-metadata-mysql -rspec-mysql 11 28: *rspec-metadata-mysql -rspec-mysql 12 28: *rspec-metadata-mysql -rspec-mysql 13 28: *rspec-metadata-mysql -rspec-mysql 14 28: *rspec-metadata-mysql -rspec-mysql 15 28: *rspec-metadata-mysql -rspec-mysql 16 28: *rspec-metadata-mysql -rspec-mysql 17 28: *rspec-metadata-mysql -rspec-mysql 18 28: *rspec-metadata-mysql -rspec-mysql 19 28: *rspec-metadata-mysql -rspec-mysql 20 28: *rspec-metadata-mysql -rspec-mysql 21 28: *rspec-metadata-mysql -rspec-mysql 22 28: *rspec-metadata-mysql -rspec-mysql 23 28: *rspec-metadata-mysql -rspec-mysql 24 28: *rspec-metadata-mysql -rspec-mysql 25 28: *rspec-metadata-mysql -rspec-mysql 26 28: *rspec-metadata-mysql -rspec-mysql 27 28: *rspec-metadata-mysql +rspec-mysql 0 30: *rspec-metadata-mysql +rspec-mysql 1 30: *rspec-metadata-mysql +rspec-mysql 2 30: *rspec-metadata-mysql +rspec-mysql 3 30: *rspec-metadata-mysql +rspec-mysql 4 30: *rspec-metadata-mysql +rspec-mysql 5 30: *rspec-metadata-mysql +rspec-mysql 6 30: *rspec-metadata-mysql +rspec-mysql 7 30: *rspec-metadata-mysql +rspec-mysql 8 30: *rspec-metadata-mysql +rspec-mysql 9 30: *rspec-metadata-mysql +rspec-mysql 10 30: *rspec-metadata-mysql +rspec-mysql 11 30: *rspec-metadata-mysql +rspec-mysql 12 30: *rspec-metadata-mysql +rspec-mysql 13 30: *rspec-metadata-mysql +rspec-mysql 14 30: *rspec-metadata-mysql +rspec-mysql 15 30: *rspec-metadata-mysql +rspec-mysql 16 30: *rspec-metadata-mysql +rspec-mysql 17 30: *rspec-metadata-mysql +rspec-mysql 18 30: *rspec-metadata-mysql +rspec-mysql 19 30: *rspec-metadata-mysql +rspec-mysql 20 30: *rspec-metadata-mysql +rspec-mysql 21 30: *rspec-metadata-mysql +rspec-mysql 22 30: *rspec-metadata-mysql +rspec-mysql 23 30: *rspec-metadata-mysql +rspec-mysql 24 30: *rspec-metadata-mysql +rspec-mysql 25 30: *rspec-metadata-mysql +rspec-mysql 26 30: *rspec-metadata-mysql +rspec-mysql 27 30: *rspec-metadata-mysql +rspec-mysql 28 30: *rspec-metadata-mysql +rspec-mysql 29 30: *rspec-metadata-mysql -spinach-pg 0 2: *spinach-metadata-pg -spinach-pg 1 2: *spinach-metadata-pg +rspec-pg-rails5 0 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 1 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 2 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 3 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 4 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 5 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 6 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 7 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 8 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 9 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 10 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 11 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 12 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 13 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 14 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 15 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 16 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 17 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 18 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 19 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 20 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 21 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 22 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 23 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 24 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 25 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 26 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 27 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 28 30: *rspec-metadata-pg-rails5 +rspec-pg-rails5 29 30: *rspec-metadata-pg-rails5 -spinach-mysql 0 2: *spinach-metadata-mysql -spinach-mysql 1 2: *spinach-metadata-mysql - -rspec-pg-rails5 0 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 1 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 2 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 3 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 4 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 5 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 6 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 7 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 8 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 9 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 10 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 11 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 12 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 13 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 14 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 15 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 16 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 17 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 18 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 19 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 20 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 21 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 22 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 23 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 24 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 25 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 26 28: *rspec-metadata-pg-rails5 -rspec-pg-rails5 27 28: *rspec-metadata-pg-rails5 - -rspec-mysql-rails5 0 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 1 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 2 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 3 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 4 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 5 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 6 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 7 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 8 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 9 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 10 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 11 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 12 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 13 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 14 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 15 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 16 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 17 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 18 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 19 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 20 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 21 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 22 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 23 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 24 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 25 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 26 28: *rspec-metadata-mysql-rails5 -rspec-mysql-rails5 27 28: *rspec-metadata-mysql-rails5 - -spinach-pg-rails5 0 2: *spinach-metadata-pg-rails5 -spinach-pg-rails5 1 2: *spinach-metadata-pg-rails5 - -spinach-mysql-rails5 0 2: *spinach-metadata-mysql-rails5 -spinach-mysql-rails5 1 2: *spinach-metadata-mysql-rails5 +rspec-mysql-rails5 0 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 1 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 2 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 3 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 4 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 5 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 6 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 7 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 8 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 9 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 10 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 11 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 12 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 13 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 14 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 15 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 16 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 17 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 18 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 19 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 20 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 21 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 22 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 23 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 24 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 25 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 26 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 27 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 28 30: *rspec-metadata-mysql-rails5 +rspec-mysql-rails5 29 30: *rspec-metadata-mysql-rails5 static-analysis: <<: *dedicated-no-docs-no-db-pull-cache-job @@ -577,7 +568,7 @@ static-analysis: script: - scripts/static-analysis cache: - key: "ruby-2.3.7-debian-stretch-with-yarn-and-rubocop" + key: "ruby-2.4.4-debian-stretch-with-yarn-and-rubocop" paths: - vendor/ruby - .yarn-cache/ @@ -613,12 +604,18 @@ downtime_check: - /(^docs[\/-].*|.*-docs$)/ - /(^qa[\/-].*|.*-qa$)/ +rails5_gemfile_lock_check: + <<: *dedicated-no-docs-no-db-pull-cache-job + <<: *except-docs-and-qa + script: + - scripts/rails5-gemfile-lock-check + ee_compat_check: <<: *rake-exec except: - master - tags - - /^[\d-]+-stable(-ee)?/ + - /[\d-]+-stable(-ee)?/ - /^security-/ - branches@gitlab-org/gitlab-ee - branches@gitlab/gitlab-ee @@ -685,10 +682,13 @@ gitlab:assets:compile: SKIP_STORAGE_VALIDATION: "true" WEBPACK_REPORT: "true" NO_COMPRESSION: "true" + # we override the max_old_space_size to prevent OOM errors + NODE_OPTIONS: --max_old_space_size=3584 script: - date - yarn install --frozen-lockfile --production --cache-folder .yarn-cache - date + - free -m - bundle exec rake gitlab:assets:compile artifacts: name: webpack-report @@ -828,8 +828,6 @@ lint:javascript:report: - setup-test-env before_script: [] script: - - date - - find app/ spec/ -name '*.js' -exec sed --in-place 's|/\* eslint-disable .*\*/||' {} \; # run report over all files - date - yarn run eslint-report || true # ignore exit code artifacts: @@ -884,3 +882,15 @@ gitlab_git_test: cache: {} script: - spec/support/prepare-gitlab-git-test-for-commit --check-for-changes + +no_ee_check: + <<: *dedicated-runner + <<: *except-docs-and-qa + variables: + SETUP_DB: "false" + before_script: [] + cache: {} + script: + - scripts/no-ee-check + only: + - //@gitlab-org/gitlab-ce diff --git a/.gitlab/issue_templates/Feature Proposal.md b/.gitlab/issue_templates/Feature Proposal.md deleted file mode 100644 index 5b55eb1374..0000000000 --- a/.gitlab/issue_templates/Feature Proposal.md +++ /dev/null @@ -1,9 +0,0 @@ -### Description - -(Include problem, use cases, benefits, and/or goals) - -### Proposal - -### Links / references - -/label ~"feature proposal" diff --git a/.gitlab/issue_templates/Feature proposal.md b/.gitlab/issue_templates/Feature proposal.md new file mode 100644 index 0000000000..c4065d3c4e --- /dev/null +++ b/.gitlab/issue_templates/Feature proposal.md @@ -0,0 +1,15 @@ +### Problem to solve + +### Further details + +(Include use cases, benefits, and/or goals) + +### Proposal + +### What does success look like, and how can we measure that? + +(If no way to measure success, link to an issue that will implement a way to measure this) + +### Links / references + +/label ~"feature proposal" diff --git a/.gitlab/issue_templates/Research Proposal.md b/.gitlab/issue_templates/Research proposal.md similarity index 100% rename from .gitlab/issue_templates/Research Proposal.md rename to .gitlab/issue_templates/Research proposal.md diff --git a/.gitlab/issue_templates/Security Developer Workflow.md b/.gitlab/issue_templates/Security developer workflow.md similarity index 99% rename from .gitlab/issue_templates/Security Developer Workflow.md rename to .gitlab/issue_templates/Security developer workflow.md index 0c878dbf64..c1f702e938 100644 --- a/.gitlab/issue_templates/Security Developer Workflow.md +++ b/.gitlab/issue_templates/Security developer workflow.md @@ -39,6 +39,7 @@ Set the title to: `[Security] Description of the original issue` - [ ] Add the nickname of the external user who found the issue (and/or HackerOne profile) to the Thanks row in the [details section](#details) ### Summary + #### Links | Description | Link | diff --git a/.gitlab/merge_request_templates/Database Changes.md b/.gitlab/merge_request_templates/Database changes.md similarity index 83% rename from .gitlab/merge_request_templates/Database Changes.md rename to .gitlab/merge_request_templates/Database changes.md index 2bb1f374e9..d14d52e1b6 100644 --- a/.gitlab/merge_request_templates/Database Changes.md +++ b/.gitlab/merge_request_templates/Database changes.md @@ -1,7 +1,7 @@ Add a description of your merge request here. Merge requests without an adequate description will not be reviewed until one is added. -## Database Checklist +## Database checklist When adding migrations: @@ -31,18 +31,20 @@ When removing columns, tables, indexes or other structures: - [ ] Removed these in a post-deployment migration - [ ] Made sure the application no longer uses (or ignores) these structures -## General Checklist +## General checklist - [ ] [Changelog entry](https://docs.gitlab.com/ee/development/changelog.html) added, if necessary - [ ] [Documentation created/updated](https://docs.gitlab.com/ee/development/doc_styleguide.html) - [ ] API support added - [ ] Tests added for this feature/bug -- Review - - [ ] Has been reviewed by Backend - - [ ] Has been reviewed by Database +- Conform by the [code review guidelines](https://docs.gitlab.com/ee/development/code_review.html) + - [ ] Has been reviewed by a Backend maintainer + - [ ] Has been reviewed by a Database specialist - [ ] Conform by the [merge request performance guides](https://docs.gitlab.com/ee/development/merge_request_performance_guidelines.html) - [ ] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ee/blob/master/CONTRIBUTING.md#style-guides) -- [ ] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits) +- [ ] If you have multiple commits, please combine them into a few logically organized commits by [squashing them](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits) - [ ] Internationalization required/considered - [ ] If paid feature, have we considered GitLab.com plan and how it works for groups and is there a design for promoting it to users who aren't on the correct plan - [ ] End-to-end tests pass (`package-and-qa` manual pipeline job) + +/label ~database diff --git a/.nvmrc b/.nvmrc index f7ee06693c..dba04c1e17 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -9.0.0 +8.11.3 diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 16b0b5c95e..3e1713f845 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -10,10 +10,6 @@ Capybara/CurrentPathExpectation: Enabled: false -# Offense count: 956 -Capybara/FeatureMethods: - Enabled: false - # Offense count: 23 FactoryBot/DynamicAttributeDefinedStatically: Exclude: @@ -173,7 +169,6 @@ Lint/UriEscapeUnescape: - 'spec/requests/api/files_spec.rb' - 'spec/requests/api/internal_spec.rb' - 'spec/requests/api/issues_spec.rb' - - 'spec/requests/api/v3/issues_spec.rb' # Offense count: 1 # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns. @@ -333,8 +328,6 @@ RSpec/ScatteredSetup: - 'spec/lib/gitlab/bitbucket_import/importer_spec.rb' - 'spec/lib/gitlab/git/env_spec.rb' - 'spec/requests/api/jobs_spec.rb' - - 'spec/requests/api/v3/builds_spec.rb' - - 'spec/requests/api/v3/projects_spec.rb' - 'spec/services/projects/create_service_spec.rb' # Offense count: 1 @@ -490,7 +483,7 @@ Style/EmptyLiteral: - 'lib/gitlab/fogbugz_import/importer.rb' - 'lib/gitlab/git/diff_collection.rb' - 'lib/gitlab/gitaly_client.rb' - - 'scripts/trigger-build-omnibus' + - 'scripts/trigger-build' - 'spec/features/merge_requests/versions_spec.rb' - 'spec/helpers/merge_requests_helper_spec.rb' - 'spec/lib/gitlab/request_context_spec.rb' @@ -618,7 +611,6 @@ Style/OrAssignment: Exclude: - 'app/models/concerns/token_authenticatable.rb' - 'lib/api/commit_statuses.rb' - - 'lib/api/v3/members.rb' - 'lib/gitlab/project_transfer.rb' # Offense count: 50 @@ -781,7 +773,6 @@ Style/TernaryParentheses: - 'app/finders/projects_finder.rb' - 'app/helpers/namespaces_helper.rb' - 'features/support/capybara.rb' - - 'lib/api/v3/projects.rb' - 'lib/gitlab/ci/build/artifacts/metadata/entry.rb' - 'spec/requests/api/pipeline_schedules_spec.rb' - 'spec/support/capybara.rb' diff --git a/.ruby-version b/.ruby-version index 00355e29d1..79a614418f 100644 --- a/.ruby-version +++ b/.ruby-version @@ -1 +1 @@ -2.3.7 +2.4.4 diff --git a/.scss-lint.yml b/.scss-lint.yml index 180d377d6f..3df66033fa 100644 --- a/.scss-lint.yml +++ b/.scss-lint.yml @@ -46,8 +46,9 @@ linters: # - properties # - @include declarations with inner @content # - nested rule sets. + # Disabled to minimize Bootstrap migration footprint DeclarationOrder: - enabled: true + enabled: false # `scss-lint:disable` control comments should be preceded by a comment # explaining why these linters are being disabled for this file. diff --git a/CHANGELOG.md b/CHANGELOG.md index 7d48a173de..7aef16f162 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,26 +2,626 @@ documentation](doc/development/changelog.md) for instructions on adding your own entry. -## 10.8.7 (2018-07-26) +## 11.1.8 (2018-10-05) + +### Security (3 changes) + +- Filter user sensitive data from discussions JSON. !2539 +- Properly filter private references from system notes. +- Markdown API no longer displays confidential title references unless authorized. + + +## 11.1.7 (2018-09-26) + +### Security (6 changes) + +- Redact confidential events in the API. +- Set timeout for syntax highlighting. +- Sanitize JSON data properly to fix XSS on Issue details page. +- Fix stored XSS in merge requests from imported repository. +- Fix xss vulnerability sourced from package.json. +- Block loopback addresses in UrlBlocker. + + +## 11.1.6 (2018-08-28) + +- No changes. + +## 11.1.5 (2018-08-27) + +### Security (3 changes) + +- Fixed persistent XSS rendering/escaping of diff location lines. +- Adding CSRF protection to Hooks resend action. +- Block link-local addresses in URLBlocker. + +### Fixed (1 change, 1 of them is from the community) + +- Sanitize git URL in import errors. (Jamie Schembri) + + +## 11.1.4 (2018-07-30) + +- No changes. + +## 11.1.3 (2018-07-27) + +### Fixed (8 changes, 1 of them is from the community) + +- Rework some projects table indexes around repository_storage field. !20377 +- Fix navigation to First and Next discussion on MR Changes tab. !20434 +- Fix showing outdated discussions on Changes tab. !20445 +- Fix autosave and ESC confirmation issues for MR discussions. !20569 +- Fix rendering of the context lines in MR diffs page. !20642 +- Don't overflow project/group dropdown results. !20704 (gfyoung) +- Fixed IDE not opening JSON files. !20798 +- Disable Gitaly timeouts when creating or restoring backups. !20810 + +### Performance (1 change) + +- Reduces the client side memory footprint on merge requests. !20744 + + +## 11.1.2 (2018-07-26) ### Security (4 changes) -- Don't expose project names in various counters. -- Don't expose project names in GitHub counters. - Adding CSRF protection to Hooks test action. +- Don't expose project names in GitHub counters. +- Don't expose project names in various counters. - Fixed XSS in branch name in Web IDE. ### Fixed (1 change) - Escapes milestone and label's names on flash notice when promoting them. +### Performance (1 change) -## 10.8.6 (2018-07-17) +- Fix slow Markdown rendering. !20820 -### Security (2 changes) +## 11.1.1 (2018-07-23) + +### Fixed (2 changes) + +- Add missing Gitaly branch_update nil checks. !20711 +- Fix filename for accelerated uploads. + +### Added (1 change) + +- Add uploader support to Import/Export uploads. !20484 + + +## 11.1.0 (2018-07-22) + +### Security (6 changes) + +- Fix XSS vulnerability for table of content generation. +- Update sanitize gem to 4.6.5 to fix HTML injection vulnerability. +- HTML escape branch name in project graphs page. +- HTML escape the name of the user in ProjectsHelper#link_to_member. +- Don't show events from internal projects for anonymous users in public feed. - Fix symlink vulnerability in project import. -- Merge branch 'fix-mr-widget-border' into 'master'. + +### Removed (1 change) + +- Remove deprecated object_storage_upload queue. + +### Fixed (98 changes, 52 of them are from the community) + +- Keep lists ordered when copying only list items. !18522 (Jan Beckmann) +- Fix bug where maintainer would not be allowed to push to forks with merge requests that have `Allow maintainer edits` enabled. !18968 +- mergeError message has been binded using v-html directive. !19058 (Murat Dogan) +- Set MR target branch to default branch if target branch is not valid. !19067 +- Fix CSS for buttons not to be hidden on issues/MR title. !19176 (Takuya Noguchi) +- Use same gem versions for rails5 as for rails4 where possible. !19498 (Jasper Maes) +- Fix extra blank line at start of rendered reStructuredText code block. !19596 +- Fix username validation order on signup, resolves #45575. !19610 (Jan Beckmann) +- Make quick commands case insensitive. !19614 (Jan Beckmann) +- Remove incorrect CI doc re: PowerShell. !19622 (gfyoung) +- Fixes Microsoft Teams notifications for pipeline events. !19632 (Jeff Brown) +- Fix branch name encoding for dropdown on issue page. !19634 +- Rails5 fix expected `issuable.reload.updated_at` to have changed. !19733 (Jasper Maes) +- Rails5 fix stack level too deep. !19762 (Jasper Maes) +- Rails5 ActionController::ParameterMissing: param is missing or the value is empty: application_setting. !19763 (Jasper Maes) +- Invalidate cache with project details when repository is updated. !19774 +- Rails5 fix no implicit conversion of Hash into String. ActionController::Parameters no longer returns an hash in Rails 5. !19792 (Jasper Maes) +- [Rails5] Fix snippets_finder arel queries. !19796 (@blackst0ne) +- Fix fields for author & assignee in MR API docs. !19798 (gfyoung) +- Remove scrollbar in Safari in repo settings page. !19809 (gfyoung) +- Omits operartions and kubernetes item from project sidebar when repository or builds are disabled. !19835 +- Rails5 fix passing Group objects array into for_projects_and_groups milestone scope. !19863 (Jasper Maes) +- Fix chat service tag notifications not sending when only default branch enabled. !19864 +- Only show new issue / new merge request on group page when issues / merge requests are enabled. !19869 (Jan Beckmann) +- [Rails5] Explicitly set request.format for blob_controller. !19876 (@blackst0ne) +- [Rails5] Fix optimistic lock value. !19878 (@blackst0ne) +- Rails5 fix update_attribute usage not causing a save. !19881 (Jasper Maes) +- Rails5 fix connection execute return integer instead of string. !19901 (Jasper Maes) +- Rails5 fix format in uploads actions. !19907 (Jasper Maes) +- [Rails5] Fix "-1 is not a valid data_store". !19917 (@blackst0ne) +- [Rails5] Invalid single-table inheritance type: Group is not a subclass of Namespace. !19918 (@blackst0ne) +- [Rails5] Fix pipeline_schedules_controller_spec. !19919 (@blackst0ne) +- Rails5 fix passing Group objects array into for_projects_and_groups milestone scope. !19920 (Jasper Maes) +- Rails5 update Gemfile.rails5.lock. !19921 (Jasper Maes) +- [Rails5] Fix sessions_controller_spec. !19936 (@blackst0ne) +- [Rails5] Set request.format for artifacts_controller. !19937 (@blackst0ne) +- Fix webhook error when password is not present. !19945 (Jan Beckmann) +- Fix label and milestone duplicated records and IID errors. !19961 +- Rails5 fix expected: 1 time with arguments: (97, anything, {"squash"=>false}) received: 0 times. !20004 (Jasper Maes) +- Rails5 fix Projects::PagesController spec. !20007 (Jasper Maes) +- [Rails5] Fix ActionCable '/cable' mountpoint conflict. !20015 (@blackst0ne) +- Fix branches are not shown in Merge Request dropdown when preferred language is not English. !20016 (Hiroyuki Sato) +- Rails5 fix Admin::HooksController. !20017 (Jasper Maes) +- Rails5 fix expected: 0 times with any arguments received: 1 time with arguments: DashboardController. !20018 (Jasper Maes) +- [Rails5] Set request.format in commits_controller. !20023 (@blackst0ne) +- Keeps the label on an issue when the issue is moved. !20036 +- Cleanup Prometheus ruby metrics. !20039 (Ben Kochie) +- Rails 5 fix Capybara::ElementNotFound: Unable to find visible css #modal-revert-commit and expected: "/bar" got: "/foo". !20044 (Jasper Maes) +- [Rails5] Force the callback run first. !20055 (@blackst0ne) +- Add readme button to non-empty project page. !20104 +- Fixed bug when editing a comment in an issue,the preview mode is toggled in the main textarea. !20112 (Constance Okoghenun) +- Ignore unknown OAuth sources in ApplicationSetting. !20129 +- Fix paragraph line height for emoji. !20137 (George Tsiolis) +- Fixes issue with uploading same image to Profile Avatar twice. !20161 (Chirag Bhatia) +- Rails5 fix arel from in mysql_median_datetime_sql. !20167 (Jasper Maes) +- Adds the `locked` state to the merge request API so that it can be used as a search filter. !20186 +- Enable Doorkeeper option to avoid generating new tokens when users login via oauth. !20200 +- Fix OAuth Application Authorization screen to appear with each access. !20216 +- Rails5 fix MySQL milliseconds problem in specs. !20221 (Jasper Maes) +- Rails5 fix Mysql comparison failure caused by milliseconds problem. !20222 (Jasper Maes) +- Updated last commit link color. !20234 (Constance Okoghenun) +- Fixed Merge request changes dropdown displays incorrectly. !20237 (Constance Okoghenun) +- Show jobs from same pipeline in sidebar in job details view. !20243 +- [Rails5] Fix milestone GROUP BY query. !20256 (@blackst0ne) +- Line separator to the left of the 'Admin area' wrench icon had vanished. !20282 (bitsapien) +- Check if archived trace exist before archive it. !20297 +- Load Devise with Omniauth when auto_sign_in_with_provider is configured. !20302 +- Fix link to job when creating a new issue from a failed job. !20328 +- Fix double "in" in time to artifact deletion message. !20357 (@bbodenmiller) +- Fix wrong role badge displayed in projects dashboard. !20374 +- Stop relying on migrations in the CacheableAttributes cache key and cache attributes for 1 minute instead. !20389 +- Fixes toggle discussion button not expanding collapsed discussions. !20452 +- Resolve compatibility issues with node 6. !20461 +- Fixes base command used in Helm installations. !20471 +- Fix RSS button interaction on Dashboard, Project and Group activities. !20549 +- Use appropriate timeout on Gitaly server info checks, avoid error on timeout. !20552 +- Remove healthchecks from prometheus endpoint. !20565 +- Render MR page when diffs cannot be fetched from the database or the git repository. !20680 +- Expire correct method caches after HEAD changed. +- Ensure MR diffs always exist in the PR importer. +- Fix overlapping file title and file actions in MR changes tag. +- Mark MR as merged regardless of errors when closing issues. +- Fix performance bar modal visibility in Safari. +- Prevent browser autocomplete for milestone date fields. +- Limit the action suffixes in transaction metrics. +- Add /uploads subdirectory to allowed upload paths. +- Fix cross-project label references. +- Invalidate merge request diffs cache if diff data change. +- Don't show context button for diffs of deleted files. +- Structure getters for diff Store properly and adds specs. +- Bump rugged to 0.27.2. +- Fix Bamboo CI status not showing for branch plans. +- Fixed bug that allowed to remove other wiki pages if the title had wildcard characters. +- Disabled Web IDE autocomplete suggestions for Markdown files. (Isaac Smith) +- Fix merge request diffs when created with gitaly_diff_between enabled. +- Properly detect label reference if followed by period or question mark. +- Deactivate new KubernetesService created from active template to prevent project creation from failing. +- Allow trailing whitespace on blockquote fence lines. + +### Deprecated (1 change) + +- Removes unused bootstrap 4 scss files. !19423 + +### Changed (33 changes, 16 of them are from the community) + +- Change label link vertical alignment property. !18777 (George Tsiolis) +- Updated the icon for expand buttons to ellipsis. !18793 (Constance Okoghenun) +- Create new or add existing Kubernetes cluster from a single page. !18963 +- Use object storage as the first class persistable store for new live trace architecture. !19515 +- Hide project name if searching against a project. !19595 +- Allows you to create another deploy token dimmediately after creating one. !19639 +- Removes the environment scope field for users that cannot edit it. !19643 +- Don't hash user ID in OIDC subject claim. !19784 (Markus Koller) +- Milestone page list redesign. !19832 (Constance Okoghenun) +- Add environment dropdown for the metrics page. !19833 +- Allow querying a single merge request within a project. !19853 +- Update WebIDE to show file in tree on load. !19887 +- Remove small container width. !19893 (George Tsiolis) +- Improve U2F workflow when using unsupported browsers. !19938 (Jan Beckmann) +- Update Web IDE file tree styles. !19969 +- Highlight cluster settings message. !19996 (George Tsiolis) +- Fade uneditable area in Web IDE. !20008 +- Update pipeline icon in web ide sidebar. !20058 (George Tsiolis) +- Revert merge request discussion buttons padding. !20060 (George Tsiolis) +- Fix boards issue highlight. !20063 (George Tsiolis) +- Update external link icon in header user dropdown. !20150 (George Tsiolis) +- Update external link icon in merge request widget. !20154 (George Tsiolis) +- Update environments nav controls icons. !20199 (George Tsiolis) +- Update integrations external link icons. !20205 (George Tsiolis) +- Fixes an issue where migrations instead of schema loading were run. !20227 +- Add title placeholder for new issues. !20271 (George Tsiolis) +- Close revoke deploy token modal on escape keypress. !20347 (George Tsiolis) +- Change environment scope text depending on number of project clusters. Update form to only include form-groups. +- Improve Web IDE commit flow. +- Add machine type and pricing documentation links, add class to labels to make bold. +- Remove remaining traces of the Allocations Gem. +- Use one column form layout on Admin Area Settings page. +- Add back copy for existing gcp accounts within offer banner. + +### Performance (16 changes, 4 of them are from the community) + +- Fully migrate pipeline stages position. !19369 +- Use Tooltip component in MrWidgetAuthorTime vue comonent. !19635 (George Tsiolis) +- Move boards modal EmptyState vue component. !20068 (George Tsiolis) +- Bump carrierwave gem verion to 1.2.3. !20287 +- Remove redundant query when removing trace. !20324 +- Improves performance of mr code, by fixing the state being mutated outside of the store in the util function trimFirstCharOfLineContent and in map operations. Avoids map operation in an empty array. Adds specs to the trimFirstCharOfLineContent function. !20380 (filipa) +- Reduce the number of queries when searching for groups. !20398 +- Improve render performance of large wiki pages. !20465 (Peter Leitzen) +- Improves performance on Merge Request diff tab by removing the scroll event listeners being added to every file. +- Remove the ci_job_request_with_tags_matcher. +- Updated Gitaly fail-fast timeout values. +- Add index on deployable_type/id for deployments. +- Eliminate N+1 queries in LFS file locks checks during a push. +- Fix performance problem of accessing tag list for projects api endpoints. +- Improve performance of listing users without projects. +- Fixed pagination of web hook logs. + +### Added (29 changes, 9 of them are from the community) + +- Add dropdown to Groups link in top bar. !18280 +- Web IDE supports now Image + Download Diff Viewing. !18768 +- Use CommonMark syntax and rendering for new Markdown content. !19331 +- Add SHA256 and HEAD on File API. !19439 (ahmet2mir) +- Add filename filtering to code search. !19509 +- Add CI_PIPELINE_URL and CI_JOB_URL. !19618 +- Expose visibility via Snippets API. !19620 (Jan Beckmann) +- Fixed pagination of groups API. !19665 (Marko, Peter) +- Added id sorting option to GET groups and subgroups API. !19665 (Marko, Peter) +- Add a link to the contributing page in the user dropdown. !19708 +- Add Object Storage to project export. !20105 +- Change avatar image in the header when user updates their avatar. !20119 (Jamie Schembri) +- Allow straight diff in Compare API. !20120 (Maciej Nowak) +- Add transfer project API endpoint. !20122 (Aram Visser) +- Expose permissions of the current user on resources in GraphQL. !20152 +- Run repository checks in parallel for each shard. !20179 +- Add pipeline lists to GraphQL. !20249 +- Add option to add README when creating a project. !20335 +- Add option to hide third party offers in admin application settings. !20379 +- Add /confidential quick action. (Jan Beckmann) +- Support direct_upload for generic uploads. +- Display merge request title & description in Web IDE. +- Prune web hook logs older than 90 days. +- Add Web Terminal for Ci Builds. (Vicky Chijwani) +- Expose whether current user can push into a branch on branches API. +- Present state indication on GFM preview. +- migrate backup rake task to gitaly. +- Add Gitlab::SQL:CTE for easily building CTE statements. +- Added with_statsoption for GET /projects/:id/repository/commits. + +### Other (28 changes, 11 of them are from the community) + +- Move some Gitaly RPC's to opt-out. !19591 +- Bump grape-path-helpers to 1.0.5. !19604 (@blackst0ne) +- Add CI job to check Gemfile.rails5.lock. !19605 (@blackst0ne) +- Move Gitaly branch/tag/ref RPC's to opt-out. !19644 +- CE port gitlab-ee!6112. !19714 +- Enable no-multi-assignment in JS files. !19808 (gfyoung) +- Enable no-restricted globals in JS files. !19877 (gfyoung) +- Improve no-multi-assignment fixes after enabling rule. !19915 (gfyoung) +- Enable prefer-structuring in JS files. !19943 (gfyoung) +- Enable frozen string in app/workers/*.rb. !19944 (gfyoung) +- Uses long sha version of the merged commit in MR widget copy to clipboard button. !19955 +- Update new group page to better explain what groups are. !19991 +- Update new SSH key page to improve copy. !19994 +- Update new SSH key page to improve key input validation. !19997 +- Gitaly metrics check for read/writeability. !20022 +- Add ellispsis to web ide commit button. !20030 +- Minor style changes to personal access token form and scope checkboxes. !20052 +- Finish enabling frozen string for app/workers/*.rb. !20197 (gfyoung) +- Allows settings sections to expand by default when linking to them. !20211 +- Enable frozen string in apps/validators/*.rb. !20220 (gfyoung) +- update bcrypt to also support libxcrypt. !20260 (muhammadn) +- Enable frozen string in apps/validators/*.rb. !20382 (gfyoung) +- Removes unused vuex code in mr refactor and removes unneeded dependencies. !20499 +- Delete non-latest merge request diff files upon merge. +- Schedule workers to delete non-latest diffs in post-migration. +- Remove the use of `is_shared` of `Ci::Runner`. +- Add more detailed logging to githost.log when rebasing. +- Use monospaced font for MR diff commit link ref on GFM. + + +## 11.0.3 (2018-07-05) + +### Fixed (14 changes, 1 of them is from the community) + +- Revert merge request widget button max height. !20175 (George Tsiolis) +- Implement upload copy when moving an issue with upload on object storage. !20191 +- Fix broken '!' support to autocomplete MRs in GFM fields. !20204 +- Restore showing Elasticsearch and Geo status on dashboard. !20276 +- Fix merge request page rendering error when its target/source branch is missing. !20280 +- Fix sidebar collapse breapoints for job and wiki pages. +- fix size of code blocks in headings. +- Fix loading screen for search autocomplete dropdown. +- Fix ambiguous due_date column for Issue scopes. +- Always serve favicon from main GitLab domain so that CI badge can be drawn over it. +- Fix tooltip flickering bug. +- Fix refreshing cache keys for open issues count. +- Replace deprecated bs.affix in merge request tabs with sticky polyfill. +- Prevent pipeline job tooltip from scrolling off dropdown container. + + +## 11.0.2 (2018-06-26) + +### Fixed (8 changes, 1 of them is from the community) + +- Serve favicon image always from the main GitLab domain to avoid issues with CORS. !19810 (Alexis Reigel) +- Specify chart version when installing applications on Clusters. !20010 +- Fix invalid fuzzy translations being generated during installation. !20048 +- Fix incremental rollouts for Auto DevOps. !20061 +- Notify conflict for only open merge request. !20125 +- Only load Omniauth if enabled. !20132 +- Fix sorting by name on explore projects page. !20162 +- Fix alert button styling so that they don't show up white. + +### Performance (1 change) + +- Remove performance bottleneck preventing large wiki pages from displaying. !20174 + +### Added (1 change) + +- Add support for verifying remote uploads, artifacts, and LFS objects in check rake tasks. !19501 + + +## 11.0.1 (2018-06-21) + +### Security (5 changes) + +- Fix XSS vulnerability for table of content generation. +- Update sanitize gem to 4.6.5 to fix HTML injection vulnerability. +- HTML escape branch name in project graphs page. +- HTML escape the name of the user in ProjectsHelper#link_to_member. +- Don't show events from internal projects for anonymous users in public feed. + + +## 11.0.0 (2018-06-22) + +### Security (3 changes) + +- Fix API to remove deploy key from project instead of deleting it entirely. +- Fixed bug that allowed importing arbitrary project attributes. +- Prevent user passwords from being changed without providing the previous password. + +### Removed (2 changes) + +- Removed API v3 from the codebase. !18970 +- Removes outdated `g t` shortcut for TODO in favor of `Shift+T`. !19002 + +### Fixed (69 changes, 23 of them are from the community) + +- Optimize the upload migration proces. !15947 +- Import bitbucket issues that are reported by an anonymous user. !18199 (bartl) +- Fix an issue where the notification email address would be set to an unconfirmed email address. !18474 +- Stop logging email information when emails are disabled. !18521 (Marc Shaw) +- Fix double-brackets being linkified in wiki markdown. !18524 (brewingcode) +- Use case in-sensitive ordering by name for dashboard. !18553 (@vedharish) +- Fix width of contributors graphs. !18639 (Paul Vorbach) +- Fix modal width of shorcuts help page. !18766 (Lars Greiss) +- Add missing tooltip to creation date on container registry overview. !18767 (Lars Greiss) +- Add missing migration for minimal Project build_timeout. !18775 +- Update commit status from external CI services less aggressively. !18802 +- Fix Runner contacted at tooltip cache. !18810 +- Added support for LFS Download in the importing process. !18871 +- Fix issue board bug with long strings in titles. !18924 +- Does not log failed sign-in attempts when the database is in read-only mode. !18957 +- Fixes 500 error on /estimate BIG_VALUE. !18964 (Jacopo Beschi @jacopo-beschi) +- Forbid to patch traces for finished jobs. !18969 +- Do not allow to trigger manual actions that were skipped. !18985 +- Renamed 'Overview' to 'Project' in collapsed contextual navigation at a project level. !18996 (Constance Okoghenun) +- Fixed bug where generated api urls didn't add the base url if set. !19003 +- Fixed badge api endpoint route when relative url is set. !19004 +- Fixes: Runners search input placeholder is cut off. !19015 (Jacopo Beschi @jacopo-beschi) +- Exclude CI_PIPELINE_ID from variables supported in dynamic environment name. !19032 +- Updates updated_at on label changes. !19065 (Jacopo Beschi @jacopo-beschi) +- Disallow updating job status if the job is not running. !19101 +- Fix FreeBSD can not upload artifacts due to wrong tmp path. !19148 +- Check for nil AutoDevOps when saving project CI/CD settings. !19190 +- Missing timeout value in object storage pre-authorization. !19201 +- Use strings as properties key in kubernetes service spec. !19265 (Jasper Maes) +- Fixed HTTP_PROXY environment not honored when reading remote traces. !19282 (NLR) +- Updates ReactiveCaching clear_reactive_caching method to clear both data and alive caching. !19311 +- Fixes the styling on the modal headers. !19312 (samdbeckham) +- Fixes a spelling error on the new label page. !19316 (samdbeckham) +- Rails5 fix arel from. !19340 (Jasper Maes) +- Support rails5 in postgres indexes function and fix some migrations. !19400 (Jasper Maes) +- Fix repository archive generation when hashed storage is enabled. !19441 +- Rails 5 fix unknown keywords: changes, key_id, project, gl_repository, action, secret_token, protocol. !19466 (Jasper Maes) +- Rails 5 fix glob spec. !19469 (Jasper Maes) +- Showing project import_status in a humanized form no longer gives an error. !19470 +- Make avatars/icons hidden on mobile. !19585 (Takuya Noguchi) +- Fix active tab highlight when creating new merge request. !19781 (Jan Beckmann) +- Fixes Web IDE button on merge requests when GitLab is installed with relative URL. +- Unverified hover state color changed to black. +- Fix   after sign-in with Google button. +- Don't trim incoming emails that create new issues. (Cameron Crockett) +- Wrapping problem on the issues page has been fixed. +- Fix resolvable check if note's commit could not be found. +- Fix filename matching when processing file or blob search results. +- Allow maintainers to retry pipelines on forked projects (if allowed in merge request). +- Fix deletion of Object Store uploads. +- Fix overflowing Failed Jobs table in sm viewports on IE11. +- Adjust insufficient diff hunks being persisted on NoteDiffFile. +- Render calendar feed inline when accessed from GitLab. +- Line height fixed. (Murat Dogan) +- Use upload ID for creating lease key for file uploaders. +- Use Github repo visibility during import while respecting restricted visibility levels. +- Adjust permitted params filtering on merge scheduling. +- Fix unscrollable Markdown preview of WebIDE on Firefox. +- Enforce UTF-8 encoding on user input in LogrageWithTimestamp formatter and filter out file content from logs. +- Fix project destruction failing due to idle in transaction timeouts. +- Add a unique and not null constraint on the project_features.project_id column. +- Expire Wiki content cache after importing a repository. +- Fix admin counters not working when PostgreSQL has secondaries. +- Fix backup creation and restore for specific Rake tasks. +- Fix cross-origin errors when attempting to download JavaScript attachments. +- Fix api_json.log not always reporting the right HTTP status code. +- Fix attr_encryption key settings. +- Remove gray button styles. +- Fix print styles for markdown pages. + +### Deprecated (4 changes) + +- Deprecate Gemnasium project service. !18954 +- Rephrasing Merge Request's 'allow edits from maintainer' functionality. !19061 +- Rename issue scope created-by-me to created_by_me, and assigned-to-me to assigned_to_me. !44799 +- Migrate any remaining jobs from deprecated `object_storage_upload` queue. + +### Changed (42 changes, 11 of them are from the community) + +- Add support for smarter system notes. !17164 +- Automatically accepts project/group invite by email after user signup. !17634 (Jacopo Beschi @jacopo-beschi) +- Dynamically fetch GCP cluster creation parameters. !17806 +- Label list page redesign. !18466 +- Move discussion actions to the right for small viewports. !18476 (George Tsiolis) +- Add 2FA filter to the group members page. !18483 +- made listing and showing public issue apis available without authentication. !18638 (haseebeqx) +- Refactoring UrlValidators to include url blocking. !18686 +- Removed "(Beta)" from "Auto DevOps" messages. !18759 +- Expose runner ip address to runners API. !18799 (Lars Greiss) +- Moves MR widget external link icon to the right. !18828 (Jacopo Beschi @jacopo-beschi) +- Add support for 'active' setting on Runner Registration API endpoint. !18848 +- Add dot to separate system notes content. !18864 +- Remove modalbox confirmation when retrying a pipeline. !18879 +- Remove docker pull prefix from registry clipboard feature. !18933 (Lars Greiss) +- Move project sidebar sub-entries 'Environments' and 'Kubernetes' from 'CI/CD' to a new entry 'Operations'. !18941 +- Updated icons for branch and tag names in commit details. !18953 (Constance Okoghenun) +- Expose readme url in Project API. !18960 (Imre Farkas) +- Changes keyboard shortcut of Activity feed to `g v`. !19002 +- Updated Mattermost integration to use API v4 and only allow creation of Mattermost slash commands in the current user's teams. !19043 (Harrison Healey) +- Add shortcuts to Web IDE docs and modal. !19044 +- Rename merge request widget author component. !19079 (George Tsiolis) +- Rename the Master role to Maintainer. !19080 +- Use "right now" for short time periods. !19095 +- Update 404 and 403 pages with helpful actions. !19096 +- Add username to terms message in git and API calls. !19126 +- Change the IDE file buttons for an "Open in file view" button. !19129 (Sam Beckham) +- Removes redundant script failure message from Job page. !19138 +- Add flash notice if user has already accepted terms and allow users to continue to root path. !19156 +- Redesign group settings page into expandable sections. !19184 +- Hashed Storage: migration rake task now can be executed to specific project. !19268 +- Make CI job update entrypoint to work as keep-alive endpoint. !19543 +- Avoid checking the user format in every url validation. !19575 +- Apply notification settings level of groups to all child objects. +- Support restoring repositories into gitaly. +- Bump omniauth-gitlab to 1.0.3. +- Move API group deletion to Sidekiq. +- Improve Failed Jobs tab in the Pipeline detail page. +- Add additional theme color options. +- Include milestones from parent groups when assigning a milestone to an issue or merge request. +- Restore API v3 user endpoint. +- Hide merge request option in IDE when disabled. + +### Performance (28 changes, 1 of them is from the community) + +- Add backgound migration for filling nullfied file_store columns. !18557 +- Add a cronworker to rescue stale live traces. !18680 +- Move SquashBeforeMerge vue component. !18813 (George Tsiolis) +- Add index on runner_type for ci_runners. !18897 +- Fix CarrierWave reads local files into memoery when migrates to ObjectStorage. !19102 +- Remove double-checked internal id generation. !19181 +- Throttle updates to Project#last_repository_updated_at. !19183 +- Add background migrations for archiving legacy job traces. !19194 +- Use NPM provided version of SortableJS. !19274 +- Improve performance of group issues filtering on GitLab.com. !19429 +- Improve performance of LFS integrity check. !19494 +- Fix an N+1 when loading user avatars. +- Only preload member records for the relevant projects/groups/user in projects API. +- Fix some sources of excessive query counts when calculating notification recipients. +- Optimise PagesWorker usage. +- Optimise paused runners to reduce amount of used requests. +- Update runner cached informations without performing validations. +- Improve performance of project pipelines pages. +- Persist truncated note diffs on a new table. +- Remove unused running_or_pending_build_count. +- Remove N+1 query for author in issues API. +- Eliminate N+1 queries with authors and push_data_payload in Events API. +- Eliminate cached N+1 queries for projects in Issue API. +- Eliminate N+1 queries for CI job artifacts in /api/prjoects/:id/pipelines/:pipeline_id/jobs. +- Fix N+1 with source_projects in merge requests API. +- Replace grape-route-helpers with our own grape-path-helpers. +- Move PR IO operations out of a transaction. +- Improve performance of GroupsController#show. + +### Added (25 changes, 10 of them are from the community) + +- Closes MR check out branch modal with escape. (19050) +- Allow changing the default favicon to a custom icon. !14497 (Alexis Reigel) +- Export assigned issues in iCalendar feed. !17783 (Imre Farkas) +- When MR becomes unmergeable, notify and create todo for author and merge user. !18042 +- Display help text below auto devops domain with nip.io domain name (#45561). !18496 +- Add per-project pipeline id. !18558 +- New design for wiki page deletion confirmation. !18712 (Constance Okoghenun) +- Updates updated_at on issuable when setting time spent. !18757 (Jacopo Beschi @jacopo-beschi) +- Expose artifacts_expire_at field for job entity in api. !18872 (Semyon Pupkov) +- Add support for variables expression pattern matching syntax. !18902 +- Add API endpoint to render markdown text. !18926 (@blackst0ne) +- Add `Squash and merge` to GitLab Core (CE). !18956 (@blackst0ne) +- Adds keyboard shortcut `g k` for Kubernetes on Project pages. !19002 +- Adds keyboard shortcut `g e` for Environments on Project pages. !19002 +- Setup graphql with initial project & merge request query. !19008 +- Adds JupyterHub to cluster applications. !19019 +- Added ability to search by wiki titles. !19112 +- Add Avatar API. !19121 (Imre Farkas) +- Add variables to POST api/v4/projects/:id/pipeline. !19124 (Jacopo Beschi @jacopo-beschi) +- Add deploy strategies to the Auto DevOps settings. !19172 +- Automatize Deploy Token creation for Auto Devops. !19507 +- Add anchor for incoming email regex. +- Support direct_upload with S3 Multipart uploads. +- Add Open in Xcode link for xcode repositories. +- Add pipeline status to the status bar of the Web IDE. + +### Other (40 changes, 17 of them are from the community) + +- Expand documentation for Runners API. !16484 +- Order UsersController#projects.json by updated_at. !18227 (Takuya Noguchi) +- Replace the `project/issues/references.feature` spinach test with an rspec analog. !18769 (@blackst0ne) +- Replace the `project/merge_requests/references.feature` spinach test with an rspec analog. !18794 (@blackst0ne) +- Replace the `project/deploy_keys.feature` spinach test with an rspec analog. !18796 (@blackst0ne) +- Replace the `project/ff_merge_requests.feature` spinach test with an rspec analog. !18800 (@blackst0ne) +- Apply NestingDepth (level 5) (pages/pipelines.scss). !18830 (Takuya Noguchi) +- Replace the `project/forked_merge_requests.feature` spinach test with an rspec analog. !18867 (@blackst0ne) +- Remove Spinach. !18869 (@blackst0ne) +- Add NOT NULL constraints to project_authorizations. !18980 +- Add helpful messages to empty wiki view. !19007 +- Increase text limit for GPG keys (mysql only). !19069 +- Take two for MR metrics population background migration. !19097 +- Remove Gemnasium badge from project README.md. !19136 (Takuya Noguchi) +- Update awesome_print to 1.8.0. !19163 (Takuya Noguchi) +- Update email_spec to 2.2.0. !19164 (Takuya Noguchi) +- Update redis-namespace to 1.6.0. !19166 (Takuya Noguchi) +- Update rdoc to 6.0.4. !19167 (Takuya Noguchi) +- Updates the version of kubeclient from 3.0 to 3.1.0. !19199 +- Fix UI broken in line profiling modal due to Bootstrap 4. !19253 (Takuya Noguchi) +- Add migration to disable the usage of DSA keys. !19299 +- Use the default strings of timeago.js for timeago. !19350 (Takuya Noguchi) +- Update selenium-webdriver to 3.12.0. !19351 (Takuya Noguchi) +- Include username in output when testing SSH to GitLab. !19358 +- Update screenshot in Gitlab.com integration documentation. !19433 (Tuğçe Nur Taş) +- Users can accept terms during registration. !19583 +- Fix issue count on sidebar. +- Add merge requests list endpoint for groups. +- Upgrade GitLab from Bootstrap 3 to 4. +- Make ActiveRecordSubscriber rails 5 compatible. +- Show a more helpful error for import status. +- Log response body to production_json.log when a controller responds with a 422 status. +- Log Workhorse queue duration for Grape API calls. +- Adjust SQL and transaction Prometheus buckets. +- Adding branches through the WebUI is handled by Gitaly. +- Remove shellout implementation for Repository checksums. +- Refs containting sha checks are done by Gitaly. +- Finding a wiki page is done by Gitaly by default. +- Workhorse will use Gitaly to create archives. +- Workhorse to send raw diff and patch for commits. ## 10.8.5 (2018-06-21) @@ -253,6 +853,38 @@ entry. - Gitaly handles repository forks by default. +## 10.7.6 (2018-06-21) + +### Security (6 changes) + +- Fix XSS vulnerability for table of content generation. +- Update sanitize gem to 4.6.5 to fix HTML injection vulnerability. +- HTML escape branch name in project graphs page. +- HTML escape the name of the user in ProjectsHelper#link_to_member. +- Don't show events from internal projects for anonymous users in public feed. +- XSS fix to use safe_params instead of params in url_for helpers. + +### Other (1 change) + +- Replacing gollum libraries for gitlab custom libs. !18343 + + +## 10.7.5 (2018-05-28) + +### Security (3 changes) + +- Prevent user passwords from being changed without providing the previous password. +- Fix API to remove deploy key from project instead of deleting it entirely. +- Fixed bug that allowed importing arbitrary project attributes. + + +## 10.7.4 (2018-05-21) + +### Fixed (1 change) + +- Fix error when deleting an empty list of refs. + + ## 10.7.3 (2018-05-02) ### Fixed (8 changes) @@ -510,6 +1142,16 @@ entry. - Upgrade Gitaly to upgrade its charlock_holmes. +## 10.6.6 (2018-05-28) + +### Security (4 changes) + +- Do not allow non-members to create MRs via forked projects when MRs are private. +- Prevent user passwords from being changed without providing the previous password. +- Fix API to remove deploy key from project instead of deleting it entirely. +- Fixed bug that allowed importing arbitrary project attributes. + + ## 10.6.5 (2018-04-24) ### Security (1 change) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 4f5d19ce2c..fd4e769ece 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -27,25 +27,26 @@ _This notice should stay as the first item in the CONTRIBUTING.md file._ - [Helping others](#helping-others) - [I want to contribute!](#i-want-to-contribute) - [Workflow labels](#workflow-labels) - - [Type labels (~"feature proposal", ~bug, ~customer, etc.)](#type-labels-feature-proposal-bug-customer-etc) - - [Subject labels (~wiki, ~"container registry", ~ldap, ~api, etc.)](#subject-labels-wiki-container-registry-ldap-api-etc) - - [Team labels (~"CI/CD", ~Discussion, ~Quality, ~Platform, etc.)](#team-labels-cicd-discussion-quality-platform-etc) - - [Milestone labels (~Deliverable, ~Stretch, ~"Next Patch Release")](#milestone-labels-deliverable-stretch-next-patch-release) - - [Priority labels (~Deliverable, ~Stretch, ~"Next Patch Release")](#bug-priority-labels-p1-p2-p3-etc) - - [Severity labels (~Deliverable, ~Stretch, ~"Next Patch Release")](#bug-severity-labels-s1-s2-s3-etc) - - [Label for community contributors (~"Accepting Merge Requests")](#label-for-community-contributors-accepting-merge-requests) -- [Implement design & UI elements](#implement-design--ui-elements) + - [Type labels](#type-labels) + - [Subject labels](#subject-labels) + - [Team labels](#team-labels) + - [Release Scoping labels](#release-scoping-labels) + - [Bug Priority labels](#bug-priority-labels) + - [Bug Severity labels](#bug-severity-labels) + - [Severity impact guidance](#severity-impact-guidance) + - [Label for community contributors](#label-for-community-contributors) +- [Implement design & UI elements](#implement-design-ui-elements) - [Issue tracker](#issue-tracker) - - [Issue triaging](#issue-triaging) - - [Feature proposals](#feature-proposals) - - [Issue tracker guidelines](#issue-tracker-guidelines) - - [Issue weight](#issue-weight) - - [Regression issues](#regression-issues) - - [Technical and UX debt](#technical-and-ux-debt) - - [Stewardship](#stewardship) + - [Issue triaging](#issue-triaging) + - [Feature proposals](#feature-proposals) + - [Issue tracker guidelines](#issue-tracker-guidelines) + - [Issue weight](#issue-weight) + - [Regression issues](#regression-issues) + - [Technical and UX debt](#technical-and-ux-debt) + - [Stewardship](#stewardship) - [Merge requests](#merge-requests) - - [Merge request guidelines](#merge-request-guidelines) - - [Contribution acceptance criteria](#contribution-acceptance-criteria) + - [Merge request guidelines](#merge-request-guidelines) + - [Contribution acceptance criteria](#contribution-acceptance-criteria) - [Definition of done](#definition-of-done) - [Style guides](#style-guides) - [Code of conduct](#code-of-conduct) @@ -132,7 +133,7 @@ Most issues will have labels for at least one of the following: - Type: ~"feature proposal", ~bug, ~customer, etc. - Subject: ~wiki, ~"container registry", ~ldap, ~api, ~frontend, etc. - Team: ~"CI/CD", ~Discussion, ~Quality, ~Platform, etc. -- Milestone: ~Deliverable, ~Stretch, ~"Next Patch Release" +- Release Scoping: ~Deliverable, ~Stretch, ~"Next Patch Release" - Priority: ~P1, ~P2, ~P3, ~P4 - Severity: ~S1, ~S2, ~S3, ~S4 @@ -145,7 +146,7 @@ labels, you can _always_ add the team and type, and often also the subject. [milestones-page]: https://gitlab.com/gitlab-org/gitlab-ce/milestones [labels-page]: https://gitlab.com/gitlab-org/gitlab-ce/labels -### Type labels (~"feature proposal", ~bug, ~customer, etc.) +### Type labels Type labels are very important. They define what kind of issue this is. Every issue should have one or more. @@ -161,28 +162,41 @@ already reserved for subject labels). The descriptions on the [labels page][labels-page] explain what falls under each type label. -### Subject labels (~wiki, ~"container registry", ~ldap, ~api, etc.) +### Subject labels Subject labels are labels that define what area or feature of GitLab this issue hits. They are not always necessary, but very convenient. +Examples of subject labels are ~wiki, ~ldap, ~api, +~issues, ~"merge requests", ~labels, and ~"container registry". + If you are an expert in a particular area, it makes it easier to find issues to work on. You can also subscribe to those labels to receive an email each time an -issue is labelled with a subject label corresponding to your expertise. - -Examples of subject labels are ~wiki, ~"container registry", ~ldap, ~api, -~issues, ~"merge requests", ~labels, and ~"container registry". +issue is labeled with a subject label corresponding to your expertise. Subject labels are always all-lowercase. -### Team labels (~"CI/CD", ~Discussion, ~Quality, ~Platform, etc.) +### Team labels Team labels specify what team is responsible for this issue. Assigning a team label makes sure issues get the attention of the appropriate people. -The current team labels are ~Build, ~"CI/CD", ~Discussion, ~Documentation, ~Quality, -~Geo, ~Gitaly, ~Monitoring, ~Platform, ~Release, ~"Security Products" and ~"UX". +The current team labels are: + +- ~Configuration +- ~"CI/CD" +- ~Discussion +- ~Distribution +- ~Documentation +- ~Geo +- ~Gitaly +- ~Monitoring +- ~Platform +- ~Quality +- ~Release +- ~"Security Products" +- ~UX The descriptions on the [labels page][labels-page] explain what falls under the responsibility of each team. @@ -193,10 +207,10 @@ indicate if an issue needs backend work, frontend work, or both. Team labels are always capitalized so that they show up as the first label for any issue. -### Milestone labels (~Deliverable, ~Stretch, ~"Next Patch Release") +### Release Scoping labels -Milestone labels help us clearly communicate expectations of the work for the -release. There are three levels of Milestone labels: +Release Scoping labels help us clearly communicate expectations of the work for the +release. There are three levels of Release Scoping labels: - ~Deliverable: Issues that are expected to be delivered in the current milestone. @@ -211,9 +225,10 @@ Each issue scheduled for the current milestone should be labeled ~Deliverable or ~"Stretch". Any open issue for a previous milestone should be labeled ~"Next Patch Release", or otherwise rescheduled to a different milestone. -### Bug Priority labels (~P1, ~P2, ~P3 & etc.) +### Bug Priority labels -Bug Priority labels help us define the time a ~bug fix should be completed. Priority determines how quickly the defect turnaround time must be. If there are multiple defects, the priority decides which defect has to be fixed immediately versus later. +Bug Priority labels help us define the time a ~bug fix should be completed. Priority determines how quickly the defect turnaround time must be. +If there are multiple defects, the priority decides which defect has to be fixed immediately versus later. This label documents the planned timeline & urgency which is used to measure against our actual SLA on delivering ~bug fixes. | Label | Meaning | Estimate time to fix | Guidance | @@ -223,16 +238,7 @@ This label documents the planned timeline & urgency which is used to measure aga | ~P3 | Medium Priority | Within the next 3 releases (approx one quarter) | | | ~P4 | Low Priority | Anything outside the next 3 releases (approx beyond one quarter) | The issue is prominent but does not impact user workflow and a workaround is documented | -#### Specific Priority guidance - -| Label | Availability / Performance | -|-------|--------------------------------------------------------------| -| ~P1 | | -| ~P2 | The issue is (almost) guaranteed to occur in the near future | -| ~P3 | The issue is likely to occur in the near future | -| ~P4 | The issue _may_ occur but it's not likely | - -### Bug Severity labels (~S1, ~S2, ~S3 & etc.) +### Bug Severity labels Severity labels help us clearly communicate the impact of a ~bug on users. @@ -243,16 +249,16 @@ Severity labels help us clearly communicate the impact of a ~bug on users. | ~S3 | Major Severity | Broken Feature, workaround acceptable | Can create merge requests only from the Merge Requests page, not through the Issue. | | ~S4 | Low Severity | Functionality inconvenience or cosmetic issue | Label colors are incorrect / not being displayed. | -#### Specific Severity guidance +#### Severity impact guidance -| Label | Security Impact | -|-------|-------------------------------------------------------------------| -| ~S1 | >50% customers impacted (possible company extinction level event) | -| ~S2 | Multiple customers impacted (but not apocalyptic) | -| ~S3 | A single customer impacted | -| ~S4 | No customer impact, or expected impact within 30 days | +| Label | Security Impact | Availability / Performance Impact | +|-------|---------------------------------------------------------------------|--------------------------------------------------------------| +| ~S1 | >50% users impacted (possible company extinction level event) | | +| ~S2 | Many users or multiple paid customers impacted (but not apocalyptic)| The issue is (almost) guaranteed to occur in the near future | +| ~S3 | A few users or a single paid customer impacted | The issue is likely to occur in the near future | +| ~S4 | No paid users/customer impacted, or expected impact within 30 days | The issue _may_ occur but it's not likely | -### Label for community contributors (~"Accepting Merge Requests") +### Label for community contributors Issues that are beneficial to our users, 'nice to haves', that we currently do not have the capacity for or want to give the priority to, are labeled as @@ -304,7 +310,33 @@ any potential community contributor to @-mention per above. ## Implement design & UI elements -Please see the [UX Guide for GitLab]. +For guidance on UX implementation at GitLab, please refer to our [Design System](https://design.gitlab.com/). + +The UX team uses labels to manage their workflow. + +The ~"UX" label on an issue is a signal to the UX team that it will need UX attention. +To better understand the priority by which UX tackles issues, see the [UX section](https://about.gitlab.com/handbook/engineering/ux) of the handbook. + +Once an issue has been worked on and is ready for development, a UXer removes the ~"UX" label and applies the ~"UX ready" label to that issue. + +The UX team has a special type label called ~"design artifact". This label indicates that the final output +for an issue is a UX solution/design. The solution will be developed by frontend and/or backend in a subsequent milestone. +Any issue labeled ~"design artifact" should not also be labeled ~"frontend" or ~"backend" since no development is +needed until the solution has been decided. + +~"design artifact" issues are like any other issue and should contain a milestone label, ~"Deliverable" or ~"Stretch", when scheduled in the current milestone. + +To prevent the misunderstanding that a feature will be be delivered in the +assigned milestone, when only UX design is planned for that milestone, the +Product Manager should create a separate issue for the ~"design artifact", +assign the ~UX, ~"design artifact" and ~"Deliverable" labels, add a milestone +and use a title that makes it clear that the scheduled issue is design only +(e.g. `Design exploration for XYZ`). + +When the ~"design artifact" issue has been completed, the UXer removes the ~UX +label, adds the ~"UX ready" label and closes the issue. This indicates the +design artifact is complete. The UXer will also copy the designs to related +issues for implementation in an upcoming milestone. ## Issue tracker @@ -340,7 +372,7 @@ on those issues. Please select someone with relevant experience from the [GitLab team][team]. If there is nobody mentioned with that expertise look in the commit history for the affected files to find someone. -[described in our handbook]: https://about.gitlab.com/handbook/engineering/issues/issue-triage-policies/ +[described in our handbook]: https://about.gitlab.com/handbook/engineering/issue-triage/ [issue bash events]: https://gitlab.com/gitlab-org/gitlab-ce/issues/17815 ### Feature proposals @@ -503,7 +535,7 @@ request is as follows: 1. Write [tests](https://docs.gitlab.com/ee/development/rake_tasks.html#run-tests) and code 1. [Generate a changelog entry with `bin/changelog`][changelog] 1. If you are writing documentation, make sure to follow the - [documentation styleguide][doc-styleguide] + [documentation guidelines][doc-guidelines] 1. If you have multiple commits please combine them into a few logically organized commits by [squashing them][git-squash] 1. Push the commit(s) to your fork @@ -618,7 +650,7 @@ the feature you contribute through all of these steps. 1. Working and clean code that is commented where needed 1. [Unit, integration, and system tests][testing] that pass on the CI server 1. Performance/scalability implications have been considered, addressed, and tested -1. [Documented][doc-styleguide] in the `/doc` directory +1. [Documented][doc-guidelines] in the `/doc` directory 1. [Changelog entry added][changelog], if necessary 1. Reviewed and any concerns are addressed 1. Merged by a project maintainer @@ -655,7 +687,7 @@ merge request: contributors to enhance security 1. [Database Migrations](doc/development/migration_style_guide.md) 1. [Markdown](http://www.cirosantilli.com/markdown-styleguide) -1. [Documentation styleguide][doc-styleguide] +1. [Documentation styleguide](https://docs.gitlab.com/ee/development/documentation/styleguide.html) 1. Interface text should be written subjectively instead of objectively. It should be the GitLab core team addressing a person. It should be written in present time and never use past tense (has been/was). For example instead @@ -718,7 +750,7 @@ available at [http://contributor-covenant.org/version/1/1/0/](http://contributor [rss-source]: https://github.com/bbatsov/ruby-style-guide/blob/master/README.md#source-code-layout [rss-naming]: https://github.com/bbatsov/ruby-style-guide/blob/master/README.md#naming [changelog]: doc/development/changelog.md "Generate a changelog entry" -[doc-styleguide]: doc/development/doc_styleguide.md "Documentation styleguide" +[doc-guidelines]: doc/development/documentation/index.md "Documentation guidelines" [js-styleguide]: doc/development/fe_guide/style_guide_js.md "JavaScript styleguide" [scss-styleguide]: doc/development/fe_guide/style_guide_scss.md "SCSS styleguide" [newlines-styleguide]: doc/development/newlines_styleguide.md "Newlines styleguide" @@ -728,6 +760,3 @@ available at [http://contributor-covenant.org/version/1/1/0/](http://contributor [polling-etag]: https://docs.gitlab.com/ce/development/polling.html [testing]: doc/development/testing_guide/index.md [us-english]: https://en.wikipedia.org/wiki/American_English - -[^1]: Please note that specs other than JavaScript specs are considered backend - code. diff --git a/GITALY_SERVER_VERSION b/GITALY_SERVER_VERSION index a39178a633..e11e94c5da 100644 --- a/GITALY_SERVER_VERSION +++ b/GITALY_SERVER_VERSION @@ -1 +1 @@ -0.100.1 +0.111.4 diff --git a/GITLAB_PAGES_VERSION b/GITLAB_PAGES_VERSION index f374f6662e..3eefcb9dd5 100644 --- a/GITLAB_PAGES_VERSION +++ b/GITLAB_PAGES_VERSION @@ -1 +1 @@ -0.9.1 +1.0.0 diff --git a/GITLAB_SHELL_VERSION b/GITLAB_SHELL_VERSION index a8a1887568..b7f8ee41e6 100644 --- a/GITLAB_SHELL_VERSION +++ b/GITLAB_SHELL_VERSION @@ -1 +1 @@ -7.1.2 +7.1.4 diff --git a/GITLAB_WORKHORSE_VERSION b/GITLAB_WORKHORSE_VERSION index fae6e3d04b..0062ac9718 100644 --- a/GITLAB_WORKHORSE_VERSION +++ b/GITLAB_WORKHORSE_VERSION @@ -1 +1 @@ -4.2.1 +5.0.0 diff --git a/Gemfile b/Gemfile index a18180fd98..1fbc240bf6 100644 --- a/Gemfile +++ b/Gemfile @@ -6,7 +6,7 @@ end gem_versions = {} gem_versions['activerecord_sane_schema_dumper'] = rails5? ? '1.0' : '0.2' gem_versions['default_value_for'] = rails5? ? '~> 3.0.5' : '~> 3.0.0' -gem_versions['rails'] = rails5? ? '5.0.6' : '4.2.10' +gem_versions['rails'] = rails5? ? '5.0.7' : '4.2.10' gem_versions['rails-i18n'] = rails5? ? '~> 5.1' : '~> 4.0.9' # --- The end of special code for migrating to Rails 5.0 --- @@ -28,14 +28,14 @@ gem 'mysql2', '~> 0.4.10', group: :mysql gem 'pg', '~> 0.18.2', group: :postgres gem 'rugged', '~> 0.27' -gem 'grape-route-helpers', '~> 2.1.0' +gem 'grape-path-helpers', '~> 1.0' gem 'faraday', '~> 0.12' # Authentication libraries gem 'devise', '~> 4.4' gem 'doorkeeper', '~> 4.3' -gem 'doorkeeper-openid_connect', '~> 1.3' +gem 'doorkeeper-openid_connect', '~> 1.5' gem 'omniauth', '~> 1.8' gem 'omniauth-auth0', '~> 2.0.0' gem 'omniauth-azure-oauth2', '~> 0.0.9' @@ -47,10 +47,10 @@ gem 'omniauth-google-oauth2', '~> 0.5.3' gem 'omniauth-kerberos', '~> 0.3.0', group: :kerberos gem 'omniauth-oauth2-generic', '~> 0.2.2' gem 'omniauth-saml', '~> 1.10' -gem 'omniauth-shibboleth', '~> 1.2.0' +gem 'omniauth-shibboleth', '~> 1.3.0' gem 'omniauth-twitter', '~> 1.4' gem 'omniauth_crowd', '~> 2.2.0' -gem 'omniauth-authentiq', '~> 0.3.1' +gem 'omniauth-authentiq', '~> 0.3.3' gem 'rack-oauth2', '~> 1.2.1' gem 'jwt', '~> 1.5.6' @@ -93,6 +93,10 @@ gem 'grape', '~> 1.0' gem 'grape-entity', '~> 0.7.1' gem 'rack-cors', '~> 1.0.0', require: 'rack/cors' +# GraphQL API +gem 'graphql', '~> 1.8.0' +gem 'graphiql-rails', '~> 1.4.10' + # Disable strong_params so that Mash does not respond to :permitted? gem 'hashie-forbidden_attributes' @@ -104,6 +108,7 @@ gem 'hamlit', '~> 2.6.1' # Files attachments gem 'carrierwave', '~> 1.2' +gem 'mini_magick' # Drag and Drop UI gem 'dropzonejs-rails', '~> 0.7.1' @@ -127,13 +132,13 @@ gem 'unf', '~> 0.1.4' gem 'seed-fu', '~> 2.3.7' # Markdown and HTML processing -gem 'html-pipeline', '~> 2.7.1' +gem 'html-pipeline', '~> 2.8' gem 'deckar01-task_list', '2.0.0' -gem 'gitlab-markup', '~> 1.6.2' +gem 'gitlab-markup', '~> 1.6.4' gem 'redcarpet', '~> 3.4' gem 'commonmarker', '~> 0.17' gem 'RedCloth', '~> 4.3.2' -gem 'rdoc', '~> 4.2' +gem 'rdoc', '~> 6.0' gem 'org-ruby', '~> 0.9.12' gem 'creole', '~> 0.5.0' gem 'wikicloth', '0.8.1' @@ -144,6 +149,9 @@ gem 'truncato', '~> 0.7.9' gem 'bootstrap_form', '~> 2.7.0' gem 'nokogiri', '~> 1.8.2' +# Calendar rendering +gem 'icalendar' + # Diffs gem 'diffy', '~> 3.1.0' @@ -160,9 +168,9 @@ gem 'state_machines-activerecord', '~> 0.5.1' gem 'acts-as-taggable-on', '~> 5.0' # Background jobs -gem 'sidekiq', '~> 5.0' +gem 'sidekiq', '~> 5.1' gem 'sidekiq-cron', '~> 0.6.0' -gem 'redis-namespace', '~> 1.5.2' +gem 'redis-namespace', '~> 1.6.0' gem 'sidekiq-limit_fetch', '~> 3.4', require: false # Cron Parser @@ -174,6 +182,9 @@ gem 'httparty', '~> 0.13.3' # Colored output to console gem 'rainbow', '~> 2.2' +# Progress bar +gem 'ruby-progressbar' + # GitLab settings gem 'settingslogic', '~> 2.0.9' @@ -216,10 +227,7 @@ gem 'asana', '~> 0.6.0' gem 'ruby-fogbugz', '~> 0.2.1' # Kubernetes integration -gem 'kubeclient', '~> 3.0' - -# d3 -gem 'd3_rails', '~> 3.5.0' +gem 'kubeclient', '~> 3.1.0' # Sanitize user input gem 'sanitize', '~> 4.6.5' @@ -257,10 +265,9 @@ gem 'sass-rails', '~> 5.0.6' gem 'uglifier', '~> 2.7.2' gem 'addressable', '~> 2.5.2' -gem 'bootstrap-sass', '~> 3.3.0' gem 'font-awesome-rails', '~> 4.7' gem 'gemojione', '~> 3.3' -gem 'gon', '~> 6.1.0' +gem 'gon', '~> 6.2' gem 'jquery-atwho-rails', '~> 1.3.2' gem 'request_store', '~> 1.3' gem 'select2-rails', '~> 3.5.9' @@ -292,7 +299,6 @@ gem 'peek-sidekiq', '~> 1.0.3' # Metrics group :metrics do - gem 'allocations', '~> 1.0', require: false, platform: :mri gem 'method_source', '~> 0.8', require: false gem 'influxdb', '~> 0.2', require: false @@ -321,15 +327,13 @@ group :development, :test do gem 'pry-byebug', '~> 3.4.1', platform: :mri gem 'pry-rails', '~> 0.3.4' - gem 'awesome_print', '~> 1.2.0', require: false + gem 'awesome_print', require: false gem 'fuubar', '~> 2.2.0' gem 'database_cleaner', '~> 1.5.0' gem 'factory_bot_rails', '~> 4.8.2' - gem 'rspec-rails', '~> 3.6.0' + gem 'rspec-rails', '~> 3.7.0' gem 'rspec-retry', '~> 0.4.5' - gem 'spinach-rails', '~> 0.2.1' - gem 'spinach-rerun-reporter', '~> 0.0.2' gem 'rspec_profiling', '~> 0.0.5' gem 'rspec-set', '~> 0.1.3' gem 'rspec-parameterized', require: false @@ -342,11 +346,10 @@ group :development, :test do gem 'capybara', '~> 2.15' gem 'capybara-screenshot', '~> 1.0.0' - gem 'selenium-webdriver', '~> 3.5' + gem 'selenium-webdriver', '~> 3.12' gem 'spring', '~> 2.0.0' gem 'spring-commands-rspec', '~> 1.0.4' - gem 'spring-commands-spinach', '~> 1.1.0' gem 'gitlab-styles', '~> 2.3', require: false # Pin these dependencies, otherwise a new rule could break the CI pipelines @@ -375,7 +378,7 @@ end group :test do gem 'shoulda-matchers', '~> 3.1.2', require: false - gem 'email_spec', '~> 1.6.0' + gem 'email_spec', '~> 2.2.0' gem 'json-schema', '~> 2.8.0' gem 'webmock', '~> 2.3.2' gem 'rails-controller-testing' if rails5? # Rails5 only gem. @@ -385,7 +388,7 @@ group :test do gem 'test-prof', '~> 0.2.5' end -gem 'octokit', '~> 4.8' +gem 'octokit', '~> 4.9' gem 'mail_room', '~> 0.9.1' @@ -405,18 +408,17 @@ gem 'vmstat', '~> 2.3.0' gem 'sys-filesystem', '~> 1.1.6' # SSH host key support -gem 'net-ssh', '~> 4.2.0' +gem 'net-ssh', '~> 5.0' gem 'sshkey', '~> 1.9.0' # Required for ED25519 SSH host key support group :ed25519 do - gem 'rbnacl-libsodium' - gem 'rbnacl', '~> 4.0' + gem 'ed25519', '~> 1.2' gem 'bcrypt_pbkdf', '~> 1.0' end # Gitaly GRPC client -gem 'gitaly-proto', '~> 0.99.0', require: 'gitaly' +gem 'gitaly-proto', '~> 0.105.0', require: 'gitaly' gem 'grpc', '~> 1.11.0' # Locked until https://github.com/google/protobuf/issues/4210 is closed @@ -434,4 +436,4 @@ gem 'lograge', '~> 0.5' gem 'grape_logging', '~> 1.7' # Asset synchronization -gem 'asset_sync', '~> 2.2.0' +gem 'asset_sync', '~> 2.4' diff --git a/Gemfile.lock b/Gemfile.lock index 16233e9e51..a889c4dc3a 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -49,7 +49,6 @@ GEM public_suffix (>= 2.0.2, < 4.0) aes_key_wrap (1.0.1) akismet (2.0.0) - allocations (1.0.5) arel (6.0.4) asana (0.6.0) faraday (~> 0.9) @@ -59,7 +58,7 @@ GEM asciidoctor (1.5.6.2) asciidoctor-plantuml (0.0.8) asciidoctor (~> 1.5) - asset_sync (2.2.0) + asset_sync (2.4.0) activemodel (>= 4.1.0) fog-core mime-types (>= 2.99) @@ -69,10 +68,7 @@ GEM attr_encrypted (3.1.0) encryptor (~> 3.0.0) attr_required (1.0.0) - autoprefixer-rails (6.2.3) - execjs - json - awesome_print (1.2.0) + awesome_print (1.8.0) axiom-types (0.1.1) descendants_tracker (~> 0.0.4) ice_nine (~> 0.11.0) @@ -80,7 +76,7 @@ GEM babosa (1.0.2) base32 (0.3.2) batch-loader (1.2.1) - bcrypt (3.1.11) + bcrypt (3.1.12) bcrypt_pbkdf (1.0.0) benchmark-ips (2.3.0) better_errors (2.1.1) @@ -91,9 +87,6 @@ GEM binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) blankslate (2.1.2.4) - bootstrap-sass (3.3.6) - autoprefixer-rails (>= 5.2.1) - sass (>= 3.3.4) bootstrap_form (2.7.0) brakeman (4.2.1) browser (2.2.0) @@ -115,13 +108,13 @@ GEM capybara-screenshot (1.0.14) capybara (>= 1.0, < 3) launchy - carrierwave (1.2.1) + carrierwave (1.2.3) activemodel (>= 4.0.0) activesupport (>= 4.0.0) mime-types (>= 1.16) cause (0.1) charlock_holmes (0.7.6) - childprocess (0.7.0) + childprocess (0.9.0) ffi (~> 1.0, >= 1.0.11) chronic (0.10.2) chronic_duration (0.10.6) @@ -131,7 +124,6 @@ GEM coderay (1.1.1) coercible (1.0.0) descendants_tracker (~> 0.0.1) - colorize (0.7.7) commonmarker (0.17.8) ruby-enum (~> 0.5) concord (0.1.5) @@ -147,8 +139,6 @@ GEM creole (0.5.0) css_parser (1.5.0) addressable - d3_rails (3.5.11) - railties (>= 3.1.0) daemons (1.2.3) database_cleaner (1.5.3) debug_inspector (0.0.2) @@ -177,19 +167,21 @@ GEM diff-lcs (1.3) diffy (3.1.0) docile (1.1.5) - domain_name (0.5.20170404) + domain_name (0.5.20180417) unf (>= 0.0.5, < 1.0.0) doorkeeper (4.3.2) railties (>= 4.2) - doorkeeper-openid_connect (1.3.0) + doorkeeper-openid_connect (1.5.0) doorkeeper (~> 4.3) json-jwt (~> 1.6) dropzonejs-rails (0.7.2) rails (> 3.1) + ed25519 (1.2.4) email_reply_trimmer (0.1.6) - email_spec (1.6.0) + email_spec (2.2.0) + htmlentities (~> 4.3.3) launchy (~> 2.1) - mail (~> 2.2) + mail (~> 2.7) encryptor (3.0.0) equalizer (0.0.11) erubis (2.7.0) @@ -197,7 +189,7 @@ GEM et-orbi (1.0.3) tzinfo eventmachine (1.0.8) - excon (0.60.0) + excon (0.62.0) execjs (2.6.0) expression_parser (0.9.0) factory_bot (4.8.2) @@ -290,8 +282,7 @@ GEM gettext_i18n_rails (>= 0.7.1) po_to_json (>= 1.0.0) rails (>= 3.2.0) - gherkin-ruby (0.3.2) - gitaly-proto (0.99.0) + gitaly-proto (0.105.0) google-protobuf (~> 3.1) grpc (~> 1.10) github-linguist (5.3.3) @@ -312,7 +303,7 @@ GEM rouge (~> 3.1) sanitize (~> 4.6.4) stringex (~> 2.6) - gitlab-gollum-rugged_adapter (0.4.4) + gitlab-gollum-rugged_adapter (0.4.4.1) mime-types (>= 1.15) rugged (~> 0.25) gitlab-grit (2.8.2) @@ -320,7 +311,7 @@ GEM diff-lcs (~> 1.1) mime-types (>= 1.16) posix-spawn (~> 0.3) - gitlab-markup (1.6.3) + gitlab-markup (1.6.4) gitlab-styles (2.3.2) rubocop (~> 0.51) rubocop-gitlab-security (~> 0.1.0) @@ -334,9 +325,8 @@ GEM activesupport (>= 4.2.0) gollum-grit_adapter (1.0.1) gitlab-grit (~> 2.7, >= 2.7.1) - gon (6.1.0) + gon (6.2.0) actionpack (>= 3.0) - json multi_json request_store (>= 1.0) google-api-client (0.19.8) @@ -359,7 +349,7 @@ GEM signet (~> 0.7) gpgme (2.0.13) mini_portile2 (~> 2.1) - grape (1.0.2) + grape (1.0.3) activesupport builder mustermann-grape (~> 1.0.0) @@ -369,12 +359,16 @@ GEM grape-entity (0.7.1) activesupport (>= 4.0) multi_json (>= 1.3.2) - grape-route-helpers (2.1.0) - activesupport - grape (>= 0.16.0) - rake + grape-path-helpers (1.0.5) + activesupport (>= 4, < 5.1) + grape (~> 1.0) + rake (~> 12) grape_logging (1.7.0) grape + graphiql-rails (1.4.10) + railties + sprockets-rails + graphql (1.8.1) grpc (1.11.0) google-protobuf (~> 3.1) googleapis-common-protos-types (~> 1.0.0) @@ -400,7 +394,7 @@ GEM hipchat (1.5.2) httparty mimemagic - html-pipeline (2.7.1) + html-pipeline (2.8.3) activesupport (>= 2) nokogiri (>= 1.4) html2text (0.2.0) @@ -421,6 +415,7 @@ GEM httpclient (2.8.3) i18n (0.9.5) concurrent-ruby (~> 1.0) + icalendar (2.4.1) ice_nine (0.11.2) influxdb (0.2.3) cause @@ -432,12 +427,10 @@ GEM oauth (~> 0.5, >= 0.5.0) jquery-atwho-rails (1.3.2) json (1.8.6) - json-jwt (1.9.2) + json-jwt (1.9.4) activesupport aes_key_wrap bindata - securecompare - url_safe_base64 json-schema (2.8.0) addressable (>= 2.4) jwt (1.5.6) @@ -456,10 +449,9 @@ GEM kgio (2.10.0) knapsack (1.16.0) rake - timecop (>= 0.1.0) - kubeclient (3.0.0) + kubeclient (3.1.0) http (~> 2.2.2) - recursive-open-struct (~> 1.0.4) + recursive-open-struct (~> 1.0, >= 1.0.4) rest-client (~> 2.0) launchy (2.4.3) addressable (~> 2.3) @@ -503,6 +495,7 @@ GEM mime-types-data (~> 3.2015) mime-types-data (3.2016.0521) mimemagic (0.3.0) + mini_magick (4.8.0) mini_mime (1.0.0) mini_portile2 (2.3.0) minitest (5.7.0) @@ -515,9 +508,9 @@ GEM mustermann (~> 1.0.0) mysql2 (0.4.10) net-ldap (0.16.0) - net-ssh (4.2.0) + net-ssh (5.0.1) netrc (0.11.0) - nokogiri (1.8.2) + nokogiri (1.8.3) mini_portile2 (~> 2.3.0) nokogumbo (1.5.0) nokogiri @@ -529,15 +522,16 @@ GEM multi_json (~> 1.3) multi_xml (~> 0.5) rack (>= 1.2, < 3) - octokit (4.8.0) + octokit (4.9.0) sawyer (~> 0.8.0, >= 0.5.3) omniauth (1.8.1) hashie (>= 3.4.6, < 3.6.0) rack (>= 1.6.2, < 3) omniauth-auth0 (2.0.0) omniauth-oauth2 (~> 1.4) - omniauth-authentiq (0.3.1) - omniauth-oauth2 (~> 1.3, >= 1.3.1) + omniauth-authentiq (0.3.3) + jwt (>= 1.5) + omniauth-oauth2 (>= 1.5) omniauth-azure-oauth2 (0.0.9) jwt (~> 1.0) omniauth (~> 1.0) @@ -551,7 +545,7 @@ GEM omniauth-github (1.3.0) omniauth (~> 1.5) omniauth-oauth2 (>= 1.4.0, < 2.0) - omniauth-gitlab (1.0.2) + omniauth-gitlab (1.0.3) omniauth (~> 1.0) omniauth-oauth2 (~> 1.0) omniauth-google-oauth2 (0.5.3) @@ -574,7 +568,7 @@ GEM omniauth-saml (1.10.0) omniauth (~> 1.3, >= 1.3.2) ruby-saml (~> 1.7) - omniauth-shibboleth (1.2.1) + omniauth-shibboleth (1.3.0) omniauth (>= 1.0.0) omniauth-twitter (1.4.0) omniauth-oauth (~> 1.1) @@ -702,16 +696,11 @@ GEM ffi (>= 0.5.0, < 2) rblineprof (0.3.6) debugger-ruby_core_source (~> 1.3) - rbnacl (4.0.2) - ffi - rbnacl-libsodium (1.0.11) - rbnacl (>= 3.0.1) - rdoc (4.2.2) - json (~> 1.4) + rdoc (6.0.4) re2 (1.1.1) recaptcha (3.0.0) json - recursive-open-struct (1.0.5) + recursive-open-struct (1.1.0) redcarpet (3.4.0) redis (3.3.5) redis-actionpack (5.0.2) @@ -721,8 +710,8 @@ GEM redis-activesupport (5.0.4) activesupport (>= 3, < 6) redis-store (>= 1.3, < 2) - redis-namespace (1.5.2) - redis (~> 3.0, >= 3.0.4) + redis-namespace (1.6.0) + redis (>= 3.0.4) redis-rack (2.0.4) rack (>= 1.5, < 3) redis-store (>= 1.2, < 2) @@ -752,36 +741,36 @@ GEM chunky_png rqrcode-rails3 (0.1.7) rqrcode (>= 0.4.2) - rspec (3.6.0) - rspec-core (~> 3.6.0) - rspec-expectations (~> 3.6.0) - rspec-mocks (~> 3.6.0) - rspec-core (3.6.0) - rspec-support (~> 3.6.0) - rspec-expectations (3.6.0) + rspec (3.7.0) + rspec-core (~> 3.7.0) + rspec-expectations (~> 3.7.0) + rspec-mocks (~> 3.7.0) + rspec-core (3.7.1) + rspec-support (~> 3.7.0) + rspec-expectations (3.7.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.6.0) - rspec-mocks (3.6.0) + rspec-support (~> 3.7.0) + rspec-mocks (3.7.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.6.0) + rspec-support (~> 3.7.0) rspec-parameterized (0.4.0) binding_of_caller parser proc_to_ast rspec (>= 2.13, < 4) unparser - rspec-rails (3.6.0) + rspec-rails (3.7.2) actionpack (>= 3.0) activesupport (>= 3.0) railties (>= 3.0) - rspec-core (~> 3.6.0) - rspec-expectations (~> 3.6.0) - rspec-mocks (~> 3.6.0) - rspec-support (~> 3.6.0) + rspec-core (~> 3.7.0) + rspec-expectations (~> 3.7.0) + rspec-mocks (~> 3.7.0) + rspec-support (~> 3.7.0) rspec-retry (0.4.5) rspec-core rspec-set (0.1.3) - rspec-support (3.6.0) + rspec-support (3.7.1) rspec_profiling (0.0.5) activerecord pg @@ -813,7 +802,7 @@ GEM rubyzip (1.2.1) rufus-scheduler (3.4.0) et-orbi (~> 1.0) - rugged (0.27.1) + rugged (0.27.2) safe_yaml (1.0.4) sanitize (4.6.5) crass (~> 1.0.2) @@ -836,15 +825,14 @@ GEM scss_lint (0.56.0) rake (>= 0.9, < 13) sass (~> 3.5.3) - securecompare (1.0.0) seed-fu (2.3.7) activerecord (>= 3.1) activesupport (>= 3.1) select2-rails (3.5.9.3) thor (~> 0.14) - selenium-webdriver (3.5.0) + selenium-webdriver (3.12.0) childprocess (~> 0.5) - rubyzip (~> 1.0) + rubyzip (~> 1.2) sentry-raven (2.7.2) faraday (>= 0.7.6, < 1.0) settingslogic (2.0.9) @@ -853,11 +841,11 @@ GEM rack shoulda-matchers (3.1.2) activesupport (>= 4.0.0) - sidekiq (5.0.5) + sidekiq (5.1.3) concurrent-ruby (~> 1.0) connection_pool (~> 2.2, >= 2.2.0) rack-protection (>= 1.5.0) - redis (>= 3.3.4, < 5) + redis (>= 3.3.5, < 5) sidekiq-cron (0.6.0) rufus-scheduler (>= 3.3.0) sidekiq (>= 4.2.1) @@ -876,23 +864,11 @@ GEM simplecov-html (0.10.0) slack-notifier (1.5.1) slop (3.6.0) - spinach (0.8.10) - colorize - gherkin-ruby (>= 0.3.2) - json - spinach-rails (0.2.1) - capybara (>= 2.0.0) - railties (>= 3) - spinach (>= 0.4) - spinach-rerun-reporter (0.0.2) - spinach (~> 0.8) spring (2.0.1) activesupport (>= 4.2) spring-commands-rspec (1.0.4) spring (>= 0.9.1) - spring-commands-spinach (1.1.0) - spring (>= 0.9.1) - sprockets (3.7.1) + sprockets (3.7.2) concurrent-ruby (~> 1.0) rack (> 1, < 3) sprockets-rails (3.2.1) @@ -960,7 +936,6 @@ GEM equalizer (~> 0.0.9) parser (>= 2.3.1.2, < 2.6) procto (~> 0.0.2) - url_safe_base64 (0.2.2) validates_hostname (1.0.6) activerecord (>= 3.0) activesupport (>= 3.0) @@ -998,13 +973,12 @@ DEPENDENCIES acts-as-taggable-on (~> 5.0) addressable (~> 2.5.2) akismet (~> 2.0) - allocations (~> 1.0) asana (~> 0.6.0) asciidoctor (~> 1.5.6) asciidoctor-plantuml (= 0.0.8) - asset_sync (~> 2.2.0) + asset_sync (~> 2.4) attr_encrypted (~> 3.1.0) - awesome_print (~> 1.2.0) + awesome_print babosa (~> 1.0.2) base32 (~> 0.3.0) batch-loader (~> 1.2.1) @@ -1012,7 +986,6 @@ DEPENDENCIES benchmark-ips (~> 2.3.0) better_errors (~> 2.1.0) binding_of_caller (~> 0.7.2) - bootstrap-sass (~> 3.3.0) bootstrap_form (~> 2.7.0) brakeman (~> 4.2) browser (~> 2.2) @@ -1028,7 +1001,6 @@ DEPENDENCIES concurrent-ruby (~> 1.0.5) connection_pool (~> 2.0) creole (~> 0.5.0) - d3_rails (~> 3.5.0) database_cleaner (~> 1.5.0) deckar01-task_list (= 2.0.0) default_value_for (~> 3.0.0) @@ -1037,10 +1009,11 @@ DEPENDENCIES devise-two-factor (~> 3.0.0) diffy (~> 3.1.0) doorkeeper (~> 4.3) - doorkeeper-openid_connect (~> 1.3) + doorkeeper-openid_connect (~> 1.5) dropzonejs-rails (~> 0.7.1) + ed25519 (~> 1.2) email_reply_trimmer (~> 0.1) - email_spec (~> 1.6.0) + email_spec (~> 2.2.0) factory_bot_rails (~> 4.8.2) faraday (~> 0.12) fast_blank @@ -1064,31 +1037,34 @@ DEPENDENCIES gettext (~> 3.2.2) gettext_i18n_rails (~> 1.8.0) gettext_i18n_rails_js (~> 1.3) - gitaly-proto (~> 0.99.0) + gitaly-proto (~> 0.105.0) github-linguist (~> 5.3.3) gitlab-flowdock-git-hook (~> 1.0.1) gitlab-gollum-lib (~> 4.2) gitlab-gollum-rugged_adapter (~> 0.4.4) - gitlab-markup (~> 1.6.2) + gitlab-markup (~> 1.6.4) gitlab-styles (~> 2.3) gitlab_omniauth-ldap (~> 2.0.4) - gon (~> 6.1.0) + gon (~> 6.2) google-api-client (~> 0.19.8) google-protobuf (= 3.5.1) gpgme grape (~> 1.0) grape-entity (~> 0.7.1) - grape-route-helpers (~> 2.1.0) + grape-path-helpers (~> 1.0) grape_logging (~> 1.7) + graphiql-rails (~> 1.4.10) + graphql (~> 1.8.0) grpc (~> 1.11.0) haml_lint (~> 0.26.0) hamlit (~> 2.6.1) hashie-forbidden_attributes health_check (~> 2.6.0) hipchat (~> 1.5.0) - html-pipeline (~> 2.7.1) + html-pipeline (~> 2.8) html2text httparty (~> 0.13.3) + icalendar influxdb (~> 0.2) jira-ruby (~> 1.4) jquery-atwho-rails (~> 1.3.2) @@ -1096,7 +1072,7 @@ DEPENDENCIES jwt (~> 1.5.6) kaminari (~> 1.0) knapsack (~> 1.16) - kubeclient (~> 3.0) + kubeclient (~> 3.1.0) letter_opener_web (~> 1.3.0) license_finder (~> 3.1) licensee (~> 8.9) @@ -1104,17 +1080,18 @@ DEPENDENCIES loofah (~> 2.2) mail_room (~> 0.9.1) method_source (~> 0.8) + mini_magick minitest (~> 5.7.0) mousetrap-rails (~> 1.4.6) mysql2 (~> 0.4.10) net-ldap - net-ssh (~> 4.2.0) + net-ssh (~> 5.0) nokogiri (~> 1.8.2) oauth2 (~> 1.4) - octokit (~> 4.8) + octokit (~> 4.9) omniauth (~> 1.8) omniauth-auth0 (~> 2.0.0) - omniauth-authentiq (~> 0.3.1) + omniauth-authentiq (~> 0.3.3) omniauth-azure-oauth2 (~> 0.0.9) omniauth-cas3 (~> 1.1.4) omniauth-facebook (~> 4.0.0) @@ -1124,7 +1101,7 @@ DEPENDENCIES omniauth-kerberos (~> 0.3.0) omniauth-oauth2-generic (~> 0.2.2) omniauth-saml (~> 1.10) - omniauth-shibboleth (~> 1.2.0) + omniauth-shibboleth (~> 1.3.0) omniauth-twitter (~> 1.4) omniauth_crowd (~> 2.2.0) org-ruby (~> 0.9.12) @@ -1150,21 +1127,19 @@ DEPENDENCIES rainbow (~> 2.2) raindrops (~> 0.18) rblineprof (~> 0.3.6) - rbnacl (~> 4.0) - rbnacl-libsodium - rdoc (~> 4.2) + rdoc (~> 6.0) re2 (~> 1.1.1) recaptcha (~> 3.0) redcarpet (~> 3.4) redis (~> 3.2) - redis-namespace (~> 1.5.2) + redis-namespace (~> 1.6.0) redis-rails (~> 5.0.2) request_store (~> 1.3) responders (~> 2.0) rouge (~> 3.1) rqrcode-rails3 (~> 0.1.7) rspec-parameterized - rspec-rails (~> 3.6.0) + rspec-rails (~> 3.7.0) rspec-retry (~> 0.4.5) rspec-set (~> 0.1.3) rspec_profiling (~> 0.0.5) @@ -1172,6 +1147,7 @@ DEPENDENCIES rubocop-rspec (~> 1.22.1) ruby-fogbugz (~> 0.2.1) ruby-prof (~> 0.17.0) + ruby-progressbar ruby_parser (~> 3.8) rufus-scheduler (~> 3.4) rugged (~> 0.27) @@ -1180,22 +1156,19 @@ DEPENDENCIES scss_lint (~> 0.56.0) seed-fu (~> 2.3.7) select2-rails (~> 3.5.9) - selenium-webdriver (~> 3.5) + selenium-webdriver (~> 3.12) sentry-raven (~> 2.7) settingslogic (~> 2.0.9) sham_rack (~> 1.3.6) shoulda-matchers (~> 3.1.2) - sidekiq (~> 5.0) + sidekiq (~> 5.1) sidekiq-cron (~> 0.6.0) sidekiq-limit_fetch (~> 3.4) simple_po_parser (~> 1.1.2) simplecov (~> 0.14.0) slack-notifier (~> 1.5.1) - spinach-rails (~> 0.2.1) - spinach-rerun-reporter (~> 0.0.2) spring (~> 2.0.0) spring-commands-rspec (~> 1.0.4) - spring-commands-spinach (~> 1.1.0) sprockets (~> 3.7.0) sshkey (~> 1.9.0) stackprof (~> 0.2.10) @@ -1221,4 +1194,4 @@ DEPENDENCIES wikicloth (= 0.8.1) BUNDLED WITH - 1.16.1 + 1.16.2 diff --git a/Gemfile.rails5.lock b/Gemfile.rails5.lock index 3056b97ccd..8c46b8c591 100644 --- a/Gemfile.rails5.lock +++ b/Gemfile.rails5.lock @@ -3,44 +3,44 @@ GEM specs: RedCloth (4.3.2) abstract_type (0.0.7) - ace-rails-ap (4.1.4) - actioncable (5.0.6) - actionpack (= 5.0.6) + ace-rails-ap (4.1.2) + actioncable (5.0.7) + actionpack (= 5.0.7) nio4r (>= 1.2, < 3.0) websocket-driver (~> 0.6.1) - actionmailer (5.0.6) - actionpack (= 5.0.6) - actionview (= 5.0.6) - activejob (= 5.0.6) + actionmailer (5.0.7) + actionpack (= 5.0.7) + actionview (= 5.0.7) + activejob (= 5.0.7) mail (~> 2.5, >= 2.5.4) rails-dom-testing (~> 2.0) - actionpack (5.0.6) - actionview (= 5.0.6) - activesupport (= 5.0.6) + actionpack (5.0.7) + actionview (= 5.0.7) + activesupport (= 5.0.7) rack (~> 2.0) rack-test (~> 0.6.3) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.2) - actionview (5.0.6) - activesupport (= 5.0.6) + actionview (5.0.7) + activesupport (= 5.0.7) builder (~> 3.1) erubis (~> 2.7.0) rails-dom-testing (~> 2.0) rails-html-sanitizer (~> 1.0, >= 1.0.3) - activejob (5.0.6) - activesupport (= 5.0.6) + activejob (5.0.7) + activesupport (= 5.0.7) globalid (>= 0.3.6) - activemodel (5.0.6) - activesupport (= 5.0.6) - activerecord (5.0.6) - activemodel (= 5.0.6) - activesupport (= 5.0.6) + activemodel (5.0.7) + activesupport (= 5.0.7) + activerecord (5.0.7) + activemodel (= 5.0.7) + activesupport (= 5.0.7) arel (~> 7.0) activerecord_sane_schema_dumper (1.0) rails (>= 5, < 6) - activesupport (5.0.6) + activesupport (5.0.7) concurrent-ruby (~> 1.0, >= 1.0.2) - i18n (~> 0.7) + i18n (>= 0.7, < 2) minitest (~> 5.1) tzinfo (~> 1.1) acts-as-taggable-on (5.0.0) @@ -52,29 +52,26 @@ GEM public_suffix (>= 2.0.2, < 4.0) aes_key_wrap (1.0.1) akismet (2.0.0) - allocations (1.0.5) arel (7.1.4) - asana (0.6.3) + asana (0.6.0) faraday (~> 0.9) faraday_middleware (~> 0.9) faraday_middleware-multi_json (~> 0.0) oauth2 (~> 1.0) - asciidoctor (1.5.6.1) + asciidoctor (1.5.6.2) asciidoctor-plantuml (0.0.8) asciidoctor (~> 1.5) - asset_sync (2.2.0) + asset_sync (2.4.0) activemodel (>= 4.1.0) fog-core mime-types (>= 2.99) unf ast (2.4.0) - atomic (1.1.100) + atomic (1.1.99) attr_encrypted (3.1.0) encryptor (~> 3.0.0) - attr_required (1.0.1) - autoprefixer-rails (8.1.0.1) - execjs - awesome_print (1.2.0) + attr_required (1.0.0) + awesome_print (1.8.0) axiom-types (0.1.1) descendants_tracker (~> 0.0.4) ice_nine (~> 0.11.0) @@ -90,15 +87,12 @@ GEM erubis (>= 2.6.6) rack (>= 0.9.0) bindata (2.4.3) - binding_of_caller (0.7.3) + binding_of_caller (0.7.2) debug_inspector (>= 0.0.1) blankslate (2.1.2.4) - bootstrap-sass (3.3.7) - autoprefixer-rails (>= 5.2.1) - sass (>= 3.3.4) bootstrap_form (2.7.0) brakeman (4.2.1) - browser (2.5.3) + browser (2.2.0) builder (3.2.3) bullet (5.5.1) activesupport (>= 3.0.0) @@ -107,33 +101,33 @@ GEM bundler (~> 1.2) thor (~> 0.18) byebug (9.0.6) - capybara (2.18.0) + capybara (2.15.1) addressable mini_mime (>= 0.1.3) nokogiri (>= 1.3.3) rack (>= 1.0.0) rack-test (>= 0.5.4) - xpath (>= 2.0, < 4.0) - capybara-screenshot (1.0.18) + xpath (~> 2.0) + capybara-screenshot (1.0.14) capybara (>= 1.0, < 3) launchy - carrierwave (1.2.2) + carrierwave (1.2.1) activemodel (>= 4.0.0) activesupport (>= 4.0.0) mime-types (>= 1.16) - charlock_holmes (0.7.5) + cause (0.1) + charlock_holmes (0.7.6) childprocess (0.9.0) ffi (~> 1.0, >= 1.0.11) chronic (0.10.2) chronic_duration (0.10.6) numerizer (~> 0.1.1) - chunky_png (1.3.10) + chunky_png (1.3.5) citrus (3.0.2) - coderay (1.1.2) + coderay (1.1.1) coercible (1.0.0) descendants_tracker (~> 0.0.1) - colorize (0.8.1) - commonmarker (0.17.9) + commonmarker (0.17.8) ruby-enum (~> 0.5) concord (0.1.5) adamantium (~> 0.2.0) @@ -144,15 +138,13 @@ GEM connection_pool (2.2.1) crack (0.4.3) safe_yaml (~> 1.0.0) - crass (1.0.3) + crass (1.0.4) creole (0.5.0) - css_parser (1.6.0) + css_parser (1.5.0) addressable - d3_rails (3.5.17) - railties (>= 3.1.0) - daemons (1.2.6) + daemons (1.2.3) database_cleaner (1.5.3) - debug_inspector (0.0.3) + debug_inspector (0.0.2) debugger-ruby_core_source (1.3.8) deckar01-task_list (2.0.0) html-pipeline @@ -162,44 +154,46 @@ GEM activerecord (>= 3.2.0, < 5.2) descendants_tracker (0.0.4) thread_safe (~> 0.3, >= 0.3.1) - device_detector (1.0.1) - devise (4.4.1) + device_detector (1.0.0) + devise (4.4.3) bcrypt (~> 3.0) orm_adapter (~> 0.1) - railties (>= 4.1.0, < 5.2) + railties (>= 4.1.0, < 6.0) responders warden (~> 1.2.3) - devise-two-factor (3.0.2) - activesupport (< 5.2) + devise-two-factor (3.0.0) + activesupport attr_encrypted (>= 1.3, < 4, != 2) devise (~> 4.0) - railties (< 5.2) + railties rotp (~> 2.0) diff-lcs (1.3) diffy (3.1.0) docile (1.1.5) - domain_name (0.5.20170404) + domain_name (0.5.20180417) unf (>= 0.0.5, < 1.0.0) - doorkeeper (4.3.1) + doorkeeper (4.3.2) railties (>= 4.2) - doorkeeper-openid_connect (1.3.0) + doorkeeper-openid_connect (1.5.0) doorkeeper (~> 4.3) json-jwt (~> 1.6) - dropzonejs-rails (0.7.4) + dropzonejs-rails (0.7.2) rails (> 3.1) - email_reply_trimmer (0.1.10) - email_spec (1.6.0) + ed25519 (1.2.4) + email_reply_trimmer (0.1.6) + email_spec (2.2.0) + htmlentities (~> 4.3.3) launchy (~> 2.1) - mail (~> 2.2) + mail (~> 2.7) encryptor (3.0.0) equalizer (0.0.11) erubis (2.7.0) escape_utils (1.1.1) - et-orbi (1.0.9) + et-orbi (1.0.3) tzinfo - eventmachine (1.2.5) - excon (0.60.0) - execjs (2.7.0) + eventmachine (1.0.8) + excon (0.62.0) + execjs (2.6.0) expression_parser (0.9.0) factory_bot (4.8.2) activesupport (>= 3.0.0) @@ -215,8 +209,8 @@ GEM multi_json fast_blank (1.0.0) fast_gettext (1.6.0) - ffaker (2.8.1) - ffi (1.9.23) + ffaker (2.4.0) + ffi (1.9.18) flay (2.10.0) erubis (~> 2.7.0) path_expander (~> 1.0) @@ -254,13 +248,13 @@ GEM fog-json (1.0.2) fog-core (~> 1.0) multi_json (~> 1.10) - fog-local (0.5.0) - fog-core (>= 1.27, < 3.0) - fog-openstack (0.1.24) - fog-core (~> 1.40) + fog-local (0.3.1) + fog-core (~> 1.27) + fog-openstack (0.1.21) + fog-core (>= 1.40) fog-json (>= 1.0) ipaddress (>= 0.8) - fog-rackspace (0.1.5) + fog-rackspace (0.1.1) fog-core (>= 1.35) fog-json (>= 1.0) fog-xml (>= 0.1) @@ -268,8 +262,8 @@ GEM fog-xml (0.1.3) fog-core nokogiri (>= 1.5.11, < 2.0.0) - font-awesome-rails (4.7.0.3) - railties (>= 3.2, < 5.2) + font-awesome-rails (4.7.0.1) + railties (>= 3.2, < 5.1) foreman (0.84.0) thor (~> 0.19.1) formatador (0.2.5) @@ -280,7 +274,7 @@ GEM rugged (~> 0.21) gemojione (3.3.0) json - get_process_mem (0.2.1) + get_process_mem (0.2.0) gettext (3.2.9) locale (>= 2.0.5) text (>= 1.3.0) @@ -291,8 +285,7 @@ GEM gettext_i18n_rails (>= 0.7.1) po_to_json (>= 1.0.0) rails (>= 3.2.0) - gherkin-ruby (0.3.2) - gitaly-proto (0.97.0) + gitaly-proto (0.105.0) google-protobuf (~> 3.1) grpc (~> 1.10) github-linguist (5.3.3) @@ -305,15 +298,15 @@ GEM flowdock (~> 0.7) gitlab-grit (>= 2.4.1) multi_json - gitlab-gollum-lib (4.2.7.2) + gitlab-gollum-lib (4.2.7.5) gemojione (~> 3.2) github-markup (~> 1.6) gollum-grit_adapter (~> 1.0) nokogiri (>= 1.6.1, < 2.0) rouge (~> 3.1) - sanitize (~> 2.1) + sanitize (~> 4.6.4) stringex (~> 2.6) - gitlab-gollum-rugged_adapter (0.4.4) + gitlab-gollum-rugged_adapter (0.4.4.1) mime-types (>= 1.15) rugged (~> 0.25) gitlab-grit (2.8.2) @@ -321,7 +314,7 @@ GEM diff-lcs (~> 1.1) mime-types (>= 1.16) posix-spawn (~> 0.3) - gitlab-markup (1.6.3) + gitlab-markup (1.6.4) gitlab-styles (2.3.2) rubocop (~> 0.51) rubocop-gitlab-security (~> 0.1.0) @@ -335,9 +328,8 @@ GEM activesupport (>= 4.2.0) gollum-grit_adapter (1.0.1) gitlab-grit (~> 2.7, >= 2.7.1) - gon (6.1.0) + gon (6.2.0) actionpack (>= 3.0) - json multi_json request_store (>= 1.0) google-api-client (0.19.8) @@ -358,24 +350,28 @@ GEM multi_json (~> 1.11) os (~> 0.9) signet (~> 0.7) - gpgme (2.0.16) - mini_portile2 (~> 2.3) - grape (1.0.2) + gpgme (2.0.13) + mini_portile2 (~> 2.1) + grape (1.0.3) activesupport builder mustermann-grape (~> 1.0.0) rack (>= 1.3.0) rack-accept virtus (>= 1.0.0) - grape-entity (0.6.1) - activesupport (>= 5.0.0) + grape-entity (0.7.1) + activesupport (>= 4.0) multi_json (>= 1.3.2) - grape-route-helpers (2.1.0) - activesupport - grape (>= 0.16.0) - rake + grape-path-helpers (1.0.5) + activesupport (>= 4, < 5.1) + grape (~> 1.0) + rake (~> 12) grape_logging (1.7.0) grape + graphiql-rails (1.4.10) + railties + sprockets-rails + graphql (1.8.1) grpc (1.11.0) google-protobuf (~> 3.1) googleapis-common-protos-types (~> 1.0.0) @@ -388,23 +384,23 @@ GEM rake (>= 10, < 13) rubocop (>= 0.49.0) sysexits (~> 1.1) - hamlit (2.6.2) + hamlit (2.6.1) temple (~> 0.7.6) thor tilt - hashdiff (0.3.7) + hashdiff (0.3.4) hashie (3.5.7) hashie-forbidden_attributes (0.1.1) hashie (>= 3.0) health_check (2.6.0) rails (>= 4.0) - hipchat (1.5.4) + hipchat (1.5.2) httparty mimemagic - html-pipeline (2.7.1) + html-pipeline (2.8.3) activesupport (>= 2) nokogiri (>= 1.4) - html2text (0.2.1) + html2text (0.2.0) nokogiri (~> 1.6) htmlentities (4.3.4) http (2.2.2) @@ -420,50 +416,51 @@ GEM json (~> 1.8) multi_xml (>= 0.5.2) httpclient (2.8.3) - i18n (0.9.5) + i18n (1.0.1) concurrent-ruby (~> 1.0) + icalendar (2.4.1) ice_nine (0.11.2) - influxdb (0.5.3) + influxdb (0.2.3) + cause + json ipaddress (0.8.3) - jira-ruby (1.5.0) + jira-ruby (1.4.1) activesupport multipart-post oauth (~> 0.5, >= 0.5.0) jquery-atwho-rails (1.3.2) json (1.8.6) - json-jwt (1.9.2) + json-jwt (1.9.4) activesupport aes_key_wrap bindata - securecompare - url_safe_base64 json-schema (2.8.0) addressable (>= 2.4) jwt (1.5.6) - kaminari (1.1.1) + kaminari (1.0.1) activesupport (>= 4.1.0) - kaminari-actionview (= 1.1.1) - kaminari-activerecord (= 1.1.1) - kaminari-core (= 1.1.1) - kaminari-actionview (1.1.1) + kaminari-actionview (= 1.0.1) + kaminari-activerecord (= 1.0.1) + kaminari-core (= 1.0.1) + kaminari-actionview (1.0.1) actionview - kaminari-core (= 1.1.1) - kaminari-activerecord (1.1.1) + kaminari-core (= 1.0.1) + kaminari-activerecord (1.0.1) activerecord - kaminari-core (= 1.1.1) - kaminari-core (1.1.1) - kgio (2.11.2) + kaminari-core (= 1.0.1) + kaminari-core (1.0.1) + kgio (2.10.0) knapsack (1.16.0) rake - kubeclient (3.0.0) + kubeclient (3.1.0) http (~> 2.2.2) - recursive-open-struct (~> 1.0.4) + recursive-open-struct (~> 1.0, >= 1.0.4) rest-client (~> 2.0) launchy (2.4.3) addressable (~> 2.3) - letter_opener (1.6.0) + letter_opener (1.4.1) launchy (~> 2.2) - letter_opener_web (1.3.3) + letter_opener_web (1.3.0) actionmailer (>= 3.2) letter_opener (~> 1.0) railties (>= 3.2) @@ -482,7 +479,7 @@ GEM logging (2.2.2) little-plugger (~> 1.1) multi_json (~> 1.10) - lograge (0.9.0) + lograge (0.10.0) actionpack (>= 4) activesupport (>= 4) railties (>= 4) @@ -496,11 +493,12 @@ GEM memoist (0.16.0) memoizable (0.4.2) thread_safe (~> 0.3, >= 0.3.1) - method_source (0.9.0) + method_source (0.8.2) mime-types (3.1) mime-types-data (~> 3.2015) mime-types-data (3.2016.0521) - mimemagic (0.3.2) + mimemagic (0.3.0) + mini_magick (4.8.0) mini_mime (1.0.0) mini_portile2 (2.3.0) minitest (5.7.0) @@ -512,12 +510,14 @@ GEM mustermann-grape (1.0.0) mustermann (~> 1.0.0) mysql2 (0.4.10) - net-ldap (0.16.1) - net-ssh (4.2.0) + net-ldap (0.16.0) + net-ssh (5.0.1) netrc (0.11.0) - nio4r (2.2.0) + nio4r (2.3.1) nokogiri (1.8.2) mini_portile2 (~> 2.3.0) + nokogumbo (1.5.0) + nokogiri numerizer (0.1.1) oauth (0.5.4) oauth2 (1.4.0) @@ -526,15 +526,16 @@ GEM multi_json (~> 1.3) multi_xml (~> 0.5) rack (>= 1.2, < 3) - octokit (4.8.0) + octokit (4.9.0) sawyer (~> 0.8.0, >= 0.5.3) omniauth (1.8.1) hashie (>= 3.4.6, < 3.6.0) rack (>= 1.6.2, < 3) omniauth-auth0 (2.0.0) omniauth-oauth2 (~> 1.4) - omniauth-authentiq (0.3.1) - omniauth-oauth2 (~> 1.3, >= 1.3.1) + omniauth-authentiq (0.3.3) + jwt (>= 1.5) + omniauth-oauth2 (>= 1.5) omniauth-azure-oauth2 (0.0.9) jwt (~> 1.0) omniauth (~> 1.0) @@ -545,9 +546,9 @@ GEM omniauth (~> 1.2) omniauth-facebook (4.0.0) omniauth-oauth2 (~> 1.2) - omniauth-github (1.1.2) - omniauth (~> 1.0) - omniauth-oauth2 (~> 1.1) + omniauth-github (1.3.0) + omniauth (~> 1.5) + omniauth-oauth2 (>= 1.4.0, < 2.0) omniauth-gitlab (1.0.3) omniauth (~> 1.0) omniauth-oauth2 (~> 1.0) @@ -566,12 +567,12 @@ GEM omniauth-oauth2 (1.5.0) oauth2 (~> 1.1) omniauth (~> 1.2) - omniauth-oauth2-generic (0.2.4) + omniauth-oauth2-generic (0.2.2) omniauth-oauth2 (~> 1.0) omniauth-saml (1.10.0) omniauth (~> 1.3, >= 1.3.2) ruby-saml (~> 1.7) - omniauth-shibboleth (1.2.1) + omniauth-shibboleth (1.3.0) omniauth (>= 1.0.0) omniauth-twitter (1.4.0) omniauth-oauth (~> 1.1) @@ -585,7 +586,7 @@ GEM orm_adapter (0.5.0) os (0.9.6) parallel (1.12.1) - parser (2.5.0.5) + parser (2.5.1.0) ast (~> 2.4.0) parslet (1.5.0) blankslate (~> 2.0) @@ -621,9 +622,9 @@ GEM json (>= 1.6.0) posix-spawn (0.3.13) powerpack (0.1.1) - premailer (1.11.1) + premailer (1.10.4) addressable - css_parser (>= 1.6.0) + css_parser (>= 1.4.10) htmlentities (>= 4.0.0) premailer-rails (1.9.7) actionmailer (>= 3, < 6) @@ -633,18 +634,19 @@ GEM parser unparser procto (0.0.3) - prometheus-client-mmap (0.9.1) - pry (0.11.3) + prometheus-client-mmap (0.9.3) + pry (0.10.4) coderay (~> 1.1.0) - method_source (~> 0.9.0) - pry-byebug (3.4.3) - byebug (>= 9.0, < 9.1) + method_source (~> 0.8.1) + slop (~> 3.4) + pry-byebug (3.4.2) + byebug (~> 9.0) pry (~> 0.10) - pry-rails (0.3.6) - pry (>= 0.10.4) + pry-rails (0.3.5) + pry (>= 0.9.10) public_suffix (3.0.2) pyu-ruby-sasl (0.0.3.3) - rack (2.0.4) + rack (2.0.5) rack-accept (0.4.5) rack (>= 0.4) rack-attack (4.4.1) @@ -658,21 +660,21 @@ GEM rack (>= 1.1) rack-protection (2.0.1) rack - rack-proxy (0.6.4) + rack-proxy (0.6.0) rack rack-test (0.6.3) rack (>= 1.0) - rails (5.0.6) - actioncable (= 5.0.6) - actionmailer (= 5.0.6) - actionpack (= 5.0.6) - actionview (= 5.0.6) - activejob (= 5.0.6) - activemodel (= 5.0.6) - activerecord (= 5.0.6) - activesupport (= 5.0.6) + rails (5.0.7) + actioncable (= 5.0.7) + actionmailer (= 5.0.7) + actionpack (= 5.0.7) + actionview (= 5.0.7) + activejob (= 5.0.7) + activemodel (= 5.0.7) + activerecord (= 5.0.7) + activesupport (= 5.0.7) bundler (>= 1.3.0) - railties (= 5.0.6) + railties (= 5.0.7) sprockets-rails (>= 2.0.0) rails-controller-testing (1.0.2) actionpack (~> 5.x, >= 5.0.1) @@ -683,35 +685,31 @@ GEM rails-dom-testing (2.0.3) activesupport (>= 4.2.0) nokogiri (>= 1.6) - rails-html-sanitizer (1.0.3) - loofah (~> 2.0) + rails-html-sanitizer (1.0.4) + loofah (~> 2.2, >= 2.2.2) rails-i18n (5.1.1) i18n (>= 0.7, < 2) railties (>= 5.0, < 6) - railties (5.0.6) - actionpack (= 5.0.6) - activesupport (= 5.0.6) + railties (5.0.7) + actionpack (= 5.0.7) + activesupport (= 5.0.7) method_source rake (>= 0.8.7) thor (>= 0.18.1, < 2.0) rainbow (2.2.2) rake - raindrops (0.19.0) - rake (12.3.0) - rb-fsevent (0.10.3) + raindrops (0.18.0) + rake (12.3.1) + rb-fsevent (0.10.2) rb-inotify (0.9.10) ffi (>= 0.5.0, < 2) - rblineprof (0.3.7) + rblineprof (0.3.6) debugger-ruby_core_source (~> 1.3) - rbnacl (4.0.2) - ffi - rbnacl-libsodium (1.0.16) - rbnacl (>= 3.0.1) - rdoc (4.3.0) + rdoc (6.0.4) re2 (1.1.1) - recaptcha (3.4.0) + recaptcha (3.0.0) json - recursive-open-struct (1.0.5) + recursive-open-struct (1.1.0) redcarpet (3.4.0) redis (3.3.5) redis-actionpack (5.0.2) @@ -721,8 +719,8 @@ GEM redis-activesupport (5.0.4) activesupport (>= 3, < 6) redis-store (>= 1.3, < 2) - redis-namespace (1.5.3) - redis (~> 3.0, >= 3.0.4) + redis-namespace (1.6.0) + redis (>= 3.0.4) redis-rack (2.0.4) rack (>= 1.5, < 3) redis-store (>= 1.2, < 2) @@ -736,8 +734,7 @@ GEM declarative (< 0.1.0) declarative-option (< 0.2.0) uber (< 0.2.0) - request_store (1.4.0) - rack (>= 1.4) + request_store (1.3.1) responders (2.4.0) actionpack (>= 4.2.0, < 5.3) railties (>= 4.2.0, < 5.3) @@ -746,43 +743,43 @@ GEM mime-types (>= 1.16, < 4.0) netrc (~> 0.8) retriable (3.1.1) - rinku (2.0.4) + rinku (2.0.0) rotp (2.1.2) rouge (3.1.1) - rqrcode (0.10.1) - chunky_png (~> 1.0) + rqrcode (0.7.0) + chunky_png rqrcode-rails3 (0.1.7) rqrcode (>= 0.4.2) - rspec (3.6.0) - rspec-core (~> 3.6.0) - rspec-expectations (~> 3.6.0) - rspec-mocks (~> 3.6.0) - rspec-core (3.6.0) - rspec-support (~> 3.6.0) - rspec-expectations (3.6.0) + rspec (3.7.0) + rspec-core (~> 3.7.0) + rspec-expectations (~> 3.7.0) + rspec-mocks (~> 3.7.0) + rspec-core (3.7.1) + rspec-support (~> 3.7.0) + rspec-expectations (3.7.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.6.0) - rspec-mocks (3.6.0) + rspec-support (~> 3.7.0) + rspec-mocks (3.7.0) diff-lcs (>= 1.2.0, < 2.0) - rspec-support (~> 3.6.0) + rspec-support (~> 3.7.0) rspec-parameterized (0.4.0) binding_of_caller parser proc_to_ast rspec (>= 2.13, < 4) unparser - rspec-rails (3.6.1) + rspec-rails (3.7.2) actionpack (>= 3.0) activesupport (>= 3.0) railties (>= 3.0) - rspec-core (~> 3.6.0) - rspec-expectations (~> 3.6.0) - rspec-mocks (~> 3.6.0) - rspec-support (~> 3.6.0) - rspec-retry (0.4.6) + rspec-core (~> 3.7.0) + rspec-expectations (~> 3.7.0) + rspec-mocks (~> 3.7.0) + rspec-support (~> 3.7.0) + rspec-retry (0.4.5) rspec-core rspec-set (0.1.3) - rspec-support (3.6.0) + rspec-support (3.7.1) rspec_profiling (0.0.5) activerecord pg @@ -797,7 +794,7 @@ GEM unicode-display_width (~> 1.0, >= 1.0.1) rubocop-gitlab-security (0.1.1) rubocop (>= 0.51) - rubocop-rspec (1.22.2) + rubocop-rspec (1.22.1) rubocop (>= 0.52.1) ruby-enum (0.7.2) i18n @@ -807,23 +804,25 @@ GEM ruby-progressbar (1.9.0) ruby-saml (1.7.2) nokogiri (>= 1.5.10) - ruby_parser (3.11.0) - sexp_processor (~> 4.9) + ruby_parser (3.9.0) + sexp_processor (~> 4.1) rubyntlm (0.6.2) - rubypants (0.7.0) + rubypants (0.2.0) rubyzip (1.2.1) - rufus-scheduler (3.4.2) + rufus-scheduler (3.4.0) et-orbi (~> 1.0) - rugged (0.27.0) + rugged (0.27.1) safe_yaml (1.0.4) - sanitize (2.1.0) + sanitize (4.6.5) + crass (~> 1.0.2) nokogiri (>= 1.4.4) + nokogumbo (~> 1.4) sass (3.5.5) sass-listen (~> 4.0.0) sass-listen (4.0.0) rb-fsevent (~> 0.9, >= 0.9.4) rb-inotify (~> 0.9, >= 0.9.7) - sass-rails (5.0.7) + sass-rails (5.0.6) railties (>= 4.0.0, < 6) sass (~> 3.1) sprockets (>= 2.8, < 4.0) @@ -835,29 +834,28 @@ GEM scss_lint (0.56.0) rake (>= 0.9, < 13) sass (~> 3.5.3) - securecompare (1.0.0) seed-fu (2.3.7) activerecord (>= 3.1) activesupport (>= 3.1) - select2-rails (3.5.10) + select2-rails (3.5.9.3) thor (~> 0.14) - selenium-webdriver (3.11.0) + selenium-webdriver (3.12.0) childprocess (~> 0.5) rubyzip (~> 1.2) sentry-raven (2.7.2) faraday (>= 0.7.6, < 1.0) settingslogic (2.0.9) - sexp_processor (4.10.1) + sexp_processor (4.9.0) sham_rack (1.3.6) rack shoulda-matchers (3.1.2) activesupport (>= 4.0.0) - sidekiq (5.1.1) + sidekiq (5.1.3) concurrent-ruby (~> 1.0) connection_pool (~> 2.2, >= 2.2.0) rack-protection (>= 1.5.0) redis (>= 3.3.5, < 5) - sidekiq-cron (0.6.3) + sidekiq-cron (0.6.0) rufus-scheduler (>= 3.3.0) sidekiq (>= 4.2.1) sidekiq-limit_fetch (3.4.0) @@ -867,29 +865,18 @@ GEM faraday (~> 0.9) jwt (>= 1.5, < 3.0) multi_json (~> 1.10) - simple_po_parser (1.1.3) + simple_po_parser (1.1.2) simplecov (0.14.1) docile (~> 1.1.0) json (>= 1.8, < 3) simplecov-html (~> 0.10.0) - simplecov-html (0.10.2) + simplecov-html (0.10.0) slack-notifier (1.5.1) - spinach (0.8.10) - colorize - gherkin-ruby (>= 0.3.2) - json - spinach-rails (0.2.1) - capybara (>= 2.0.0) - railties (>= 3) - spinach (>= 0.4) - spinach-rerun-reporter (0.0.2) - spinach (~> 0.8) - spring (2.0.2) + slop (3.6.0) + spring (2.0.1) activesupport (>= 4.2) spring-commands-rspec (1.0.4) spring (>= 0.9.1) - spring-commands-spinach (1.1.0) - spring (>= 0.9.1) sprockets (3.7.1) concurrent-ruby (~> 1.0) rack (> 1, < 3) @@ -899,7 +886,7 @@ GEM sprockets (>= 3.0.0) sqlite3 (1.3.13) sshkey (1.9.0) - stackprof (0.2.11) + stackprof (0.2.10) state_machines (0.5.0) state_machines-activemodel (0.5.1) activemodel (>= 4.1, < 6.0) @@ -908,19 +895,19 @@ GEM activerecord (>= 4.1, < 6.0) state_machines-activemodel (>= 0.5.0) stringex (2.8.4) - sys-filesystem (1.1.9) + sys-filesystem (1.1.6) ffi sysexits (1.2.0) temple (0.7.7) test-prof (0.2.5) text (1.3.1) - thin (1.7.2) + thin (1.7.0) daemons (~> 1.0, >= 1.0.9) eventmachine (~> 1.0, >= 1.0.4) rack (>= 1, < 3) thor (0.19.4) thread_safe (0.3.6) - tilt (2.0.8) + tilt (2.0.6) timecop (0.8.1) timfel-krb5-auth (0.8.3) toml (0.1.2) @@ -940,7 +927,7 @@ GEM unf (0.1.4) unf_ext unf_ext (0.0.7.5) - unicode-display_width (1.3.0) + unicode-display_width (1.3.2) unicorn (5.1.0) kgio (~> 2.6) raindrops (~> 0.7) @@ -956,8 +943,7 @@ GEM equalizer (~> 0.0.9) parser (>= 2.3.1.2, < 2.6) procto (~> 0.0.2) - url_safe_base64 (0.2.2) - validates_hostname (1.0.8) + validates_hostname (1.0.6) activerecord (>= 3.0) activesupport (>= 3.0) version_sorter (2.1.0) @@ -973,7 +959,7 @@ GEM addressable (>= 2.3.6) crack (>= 0.3.2) hashdiff - webpack-rails (0.9.11) + webpack-rails (0.9.10) railties (>= 3.2.0) websocket-driver (0.6.5) websocket-extensions (>= 0.1.0) @@ -984,8 +970,8 @@ GEM rinku with_env (1.1.0) xml-simple (1.1.5) - xpath (3.0.0) - nokogiri (~> 1.8) + xpath (2.1.0) + nokogiri (~> 1.3) PLATFORMS ruby @@ -997,13 +983,12 @@ DEPENDENCIES acts-as-taggable-on (~> 5.0) addressable (~> 2.5.2) akismet (~> 2.0) - allocations (~> 1.0) asana (~> 0.6.0) asciidoctor (~> 1.5.6) asciidoctor-plantuml (= 0.0.8) - asset_sync (~> 2.2.0) + asset_sync (~> 2.4) attr_encrypted (~> 3.1.0) - awesome_print (~> 1.2.0) + awesome_print babosa (~> 1.0.2) base32 (~> 0.3.0) batch-loader (~> 1.2.1) @@ -1011,7 +996,6 @@ DEPENDENCIES benchmark-ips (~> 2.3.0) better_errors (~> 2.1.0) binding_of_caller (~> 0.7.2) - bootstrap-sass (~> 3.3.0) bootstrap_form (~> 2.7.0) brakeman (~> 4.2) browser (~> 2.2) @@ -1027,19 +1011,19 @@ DEPENDENCIES concurrent-ruby (~> 1.0.5) connection_pool (~> 2.0) creole (~> 0.5.0) - d3_rails (~> 3.5.0) database_cleaner (~> 1.5.0) deckar01-task_list (= 2.0.0) default_value_for (~> 3.0.5) device_detector - devise (~> 4.2) + devise (~> 4.4) devise-two-factor (~> 3.0.0) diffy (~> 3.1.0) doorkeeper (~> 4.3) - doorkeeper-openid_connect (~> 1.3) + doorkeeper-openid_connect (~> 1.5) dropzonejs-rails (~> 0.7.1) + ed25519 (~> 1.2) email_reply_trimmer (~> 0.1) - email_spec (~> 1.6.0) + email_spec (~> 2.2.0) factory_bot_rails (~> 4.8.2) faraday (~> 0.12) fast_blank @@ -1063,31 +1047,34 @@ DEPENDENCIES gettext (~> 3.2.2) gettext_i18n_rails (~> 1.8.0) gettext_i18n_rails_js (~> 1.3) - gitaly-proto (~> 0.97.0) + gitaly-proto (~> 0.105.0) github-linguist (~> 5.3.3) gitlab-flowdock-git-hook (~> 1.0.1) gitlab-gollum-lib (~> 4.2) gitlab-gollum-rugged_adapter (~> 0.4.4) - gitlab-markup (~> 1.6.2) + gitlab-markup (~> 1.6.4) gitlab-styles (~> 2.3) gitlab_omniauth-ldap (~> 2.0.4) - gon (~> 6.1.0) + gon (~> 6.2) google-api-client (~> 0.19.8) google-protobuf (= 3.5.1) gpgme grape (~> 1.0) - grape-entity (~> 0.6.0) - grape-route-helpers (~> 2.1.0) + grape-entity (~> 0.7.1) + grape-path-helpers (~> 1.0) grape_logging (~> 1.7) + graphiql-rails (~> 1.4.10) + graphql (~> 1.8.0) grpc (~> 1.11.0) haml_lint (~> 0.26.0) hamlit (~> 2.6.1) hashie-forbidden_attributes health_check (~> 2.6.0) hipchat (~> 1.5.0) - html-pipeline (~> 2.7.1) + html-pipeline (~> 2.8) html2text httparty (~> 0.13.3) + icalendar influxdb (~> 0.2) jira-ruby (~> 1.4) jquery-atwho-rails (~> 1.3.2) @@ -1095,7 +1082,7 @@ DEPENDENCIES jwt (~> 1.5.6) kaminari (~> 1.0) knapsack (~> 1.16) - kubeclient (~> 3.0) + kubeclient (~> 3.1.0) letter_opener_web (~> 1.3.0) license_finder (~> 3.1) licensee (~> 8.9) @@ -1103,27 +1090,28 @@ DEPENDENCIES loofah (~> 2.2) mail_room (~> 0.9.1) method_source (~> 0.8) + mini_magick minitest (~> 5.7.0) mousetrap-rails (~> 1.4.6) mysql2 (~> 0.4.10) net-ldap - net-ssh (~> 4.2.0) + net-ssh (~> 5.0) nokogiri (~> 1.8.2) oauth2 (~> 1.4) - octokit (~> 4.8) + octokit (~> 4.9) omniauth (~> 1.8) omniauth-auth0 (~> 2.0.0) - omniauth-authentiq (~> 0.3.1) + omniauth-authentiq (~> 0.3.3) omniauth-azure-oauth2 (~> 0.0.9) omniauth-cas3 (~> 1.1.4) omniauth-facebook (~> 4.0.0) - omniauth-github (~> 1.1.1) + omniauth-github (~> 1.3) omniauth-gitlab (~> 1.0.2) omniauth-google-oauth2 (~> 0.5.3) omniauth-kerberos (~> 0.3.0) omniauth-oauth2-generic (~> 0.2.2) omniauth-saml (~> 1.10) - omniauth-shibboleth (~> 1.2.0) + omniauth-shibboleth (~> 1.3.0) omniauth-twitter (~> 1.4) omniauth_crowd (~> 2.2.0) org-ruby (~> 0.9.12) @@ -1136,35 +1124,33 @@ DEPENDENCIES peek-sidekiq (~> 1.0.3) pg (~> 0.18.2) premailer-rails (~> 1.9.7) - prometheus-client-mmap (~> 0.9.1) + prometheus-client-mmap (~> 0.9.3) pry-byebug (~> 3.4.1) pry-rails (~> 0.3.4) rack-attack (~> 4.4.1) rack-cors (~> 1.0.0) rack-oauth2 (~> 1.2.1) rack-proxy (~> 0.6.0) - rails (= 5.0.6) + rails (= 5.0.7) rails-controller-testing rails-deprecated_sanitizer (~> 1.0.3) rails-i18n (~> 5.1) rainbow (~> 2.2) raindrops (~> 0.18) rblineprof (~> 0.3.6) - rbnacl (~> 4.0) - rbnacl-libsodium - rdoc (~> 4.2) + rdoc (~> 6.0) re2 (~> 1.1.1) recaptcha (~> 3.0) redcarpet (~> 3.4) redis (~> 3.2) - redis-namespace (~> 1.5.2) + redis-namespace (~> 1.6.0) redis-rails (~> 5.0.2) request_store (~> 1.3) responders (~> 2.0) rouge (~> 3.1) rqrcode-rails3 (~> 0.1.7) rspec-parameterized - rspec-rails (~> 3.6.0) + rspec-rails (~> 3.7.0) rspec-retry (~> 0.4.5) rspec-set (~> 0.1.3) rspec_profiling (~> 0.0.5) @@ -1172,30 +1158,28 @@ DEPENDENCIES rubocop-rspec (~> 1.22.1) ruby-fogbugz (~> 0.2.1) ruby-prof (~> 0.17.0) + ruby-progressbar ruby_parser (~> 3.8) rufus-scheduler (~> 3.4) rugged (~> 0.27) - sanitize (~> 2.0) + sanitize (~> 4.6.5) sass-rails (~> 5.0.6) scss_lint (~> 0.56.0) seed-fu (~> 2.3.7) select2-rails (~> 3.5.9) - selenium-webdriver (~> 3.5) + selenium-webdriver (~> 3.12) sentry-raven (~> 2.7) settingslogic (~> 2.0.9) sham_rack (~> 1.3.6) shoulda-matchers (~> 3.1.2) - sidekiq (~> 5.0) + sidekiq (~> 5.1) sidekiq-cron (~> 0.6.0) sidekiq-limit_fetch (~> 3.4) simple_po_parser (~> 1.1.2) simplecov (~> 0.14.0) slack-notifier (~> 1.5.1) - spinach-rails (~> 0.2.1) - spinach-rerun-reporter (~> 0.0.2) spring (~> 2.0.0) spring-commands-rspec (~> 1.0.4) - spring-commands-spinach (~> 1.1.0) sprockets (~> 3.7.0) sshkey (~> 1.9.0) stackprof (~> 0.2.10) @@ -1220,4 +1204,4 @@ DEPENDENCIES wikicloth (= 0.8.1) BUNDLED WITH - 1.16.1 + 1.16.2 diff --git a/INSTALLATION_TYPE b/INSTALLATION_TYPE new file mode 100644 index 0000000000..5a18cd2fbf --- /dev/null +++ b/INSTALLATION_TYPE @@ -0,0 +1 @@ +source diff --git a/LICENSE b/LICENSE index a42e07dfe9..a76372fad2 100644 --- a/LICENSE +++ b/LICENSE @@ -4,9 +4,4 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - ---- - -All Documentation content that resides under the doc/ directory of this -repository is licensed under Creative Commons: CC BY-SA 4.0. +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/PROCESS.md b/PROCESS.md index f206506f7c..a06ddb68b7 100644 --- a/PROCESS.md +++ b/PROCESS.md @@ -15,6 +15,8 @@ - [Between the 1st and the 7th](#between-the-1st-and-the-7th) - [On the 7th](#on-the-7th) - [After the 7th](#after-the-7th) +- [Regressions](#regressions) + - [How to manage a regression](#how-to-manage-a-regression) - [Release retrospective and kickoff](#release-retrospective-and-kickoff) - [Retrospective](#retrospective) - [Kickoff](#kickoff) @@ -168,6 +170,8 @@ the stable branch are: * Fixes for [regressions](#regressions) * Fixes for security issues +* Fixes or improvements to automated QA scenarios +* Documentation updates for changes in the same release * New or updated translations (as long as they do not touch application code) During the feature freeze all merge requests that are meant to go into the @@ -184,11 +188,7 @@ next patch release. If a merge request is to be picked into more than one release it will need one `Pick into X.Y` label per release where the merge request should be back-ported -to. - -For example, if the current patch release is `10.1.1` and a regression fix needs -to be backported down to the `9.5` release, you will need to assign it the -`10.1` milestone and the following labels: +to. For example: - `Pick into 10.1` - `Pick into 10.0` @@ -199,26 +199,9 @@ to be backported down to the `9.5` release, you will need to assign it the If you think a merge request should go into an RC or patch even though it does not meet these requirements, you can ask for an exception to be made. -Go to [Release tasks issue tracker](https://gitlab.com/gitlab-org/release/tasks/issues/new) and create an issue -using the `Exception-request` issue template. +Check [this guide](https://gitlab.com/gitlab-org/release/docs/blob/master/general/exception-request/process.md) about how to open an exception request before opening one. -**Do not** set the relevant `Pick into X.Y` label (see above) before request an -exception; this should be done after the exception is approved. - -You can find who is who on the [team page](https://about.gitlab.com/team/). - -Whether an exception is made is determined by weighing the benefit and urgency of the change -(how important it is to the company that this is released _right now_ instead of in a month) -against the potential negative impact -(things breaking without enough time to comfortably find and fix them before the release on the 22nd). -When in doubt, we err on the side of _not_ cherry-picking. - -For example, it is likely that an exception will be made for a trivial 1-5 line performance improvement -(e.g. adding a database index or adding `includes` to a query), but not for a new feature, no matter how relatively small or thoroughly tested. - -All MRs which have had exceptions granted must be merged by the 15th. - -### Regressions +## Regressions A regression for a particular monthly release is a bug that exists in that release, but wasn't present in the release before. This includes bugs in @@ -236,10 +219,30 @@ month. When we say 'the most recent monthly release', this can refer to either the version currently running on GitLab.com, or the most recent version available in the package repositories. -A regression issue should be labeled with the appropriate [subject label](../CONTRIBUTING.md#subject-labels-wiki-container-registry-ldap-api-etc) -and [team label](../CONTRIBUTING.md#team-labels-ci-discussion-edge-platform-etc), -just like any other issue, to help GitLab team members focus on issues that are -relevant to [their area of responsibility](https://about.gitlab.com/handbook/engineering/workflow/#choosing-something-to-work-on). +### How to manage a regression + +Regressions are very important, and they should be considered high priority +issues that should be solved as soon as possible, especially if they affect +users. Despite that, ~regression label itself does not imply when the issue +will be scheduled. + +When a regression is found: +1. Create an issue describing the problem in the most detailed way possible +1. If possible, provide links to real examples and how to reproduce the problem +1. Label the issue properly, using the [team label](../CONTRIBUTING.md#team-labels), + the [subject label](../CONTRIBUTING.md#subject-labels) + and any other label that may apply in the specific case +1. Add the ~bug and ~regression labels +1. Notify the respective Engineering Manager to evaluate the Severity of the regression and add a [Severity label](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#bug-severity-labels). The counterpart Product Manager is included to weigh-in on prioritization as needed to set the [Priority label](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#bug-priority-labels). +1. If the regression is either an ~S1, ~S2 or ~S3 severity, label the regression with the current milestone as it should be fixed in the current milestone. + 1. If the regression was introduced in an RC of the current release, label with ~Deliverable + 1. If the regression was introduced in the previous release, label with ~"Next Patch Release" +1. If the regression is an ~S4 severity, the regression may be scheduled for later milestones at the discretion of Engineering Manager and Product Manager. + +When a new issue is found, the fix should start as soon as possible. You can +ping the Engineering Manager or the Product Manager for the relative area to +make them aware of the issue earlier. They will analyze the priority and change +it if needed. ## Release retrospective and kickoff diff --git a/README.md b/README.md index 9c1aad6530..77f03b791f 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,6 @@ [![Build status](https://gitlab.com/gitlab-org/gitlab-ce/badges/master/build.svg)](https://gitlab.com/gitlab-org/gitlab-ce/commits/master) [![Overall test coverage](https://gitlab.com/gitlab-org/gitlab-ce/badges/master/coverage.svg)](https://gitlab.com/gitlab-org/gitlab-ce/pipelines) -[![Dependency Status](https://gemnasium.com/gitlabhq/gitlabhq.svg)](https://gemnasium.com/gitlabhq/gitlabhq) [![Code Climate](https://codeclimate.com/github/gitlabhq/gitlabhq.svg)](https://codeclimate.com/github/gitlabhq/gitlabhq) [![Core Infrastructure Initiative Best Practices](https://bestpractices.coreinfrastructure.org/projects/42/badge)](https://bestpractices.coreinfrastructure.org/projects/42) [![Gitter](https://badges.gitter.im/gitlabhq/gitlabhq.svg)](https://gitter.im/gitlabhq/gitlabhq?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge) @@ -36,7 +35,7 @@ We're hiring developers, support people, and production engineers all the time, There are two editions of GitLab: - GitLab Community Edition (CE) is available freely under the MIT Expat license. -- GitLab Enterprise Edition (EE) includes [extra features](https://about.gitlab.com/products/#compare-options) that are more useful for organizations with more than 100 users. To use EE and get official support please [become a subscriber](https://about.gitlab.com/products/). +- GitLab Enterprise Edition (EE) includes [extra features](https://about.gitlab.com/pricing/#compare-options) that are more useful for organizations with more than 100 users. To use EE and get official support please [become a subscriber](https://about.gitlab.com/pricing/). ## Website @@ -73,6 +72,8 @@ GitLab Community Edition (CE) is available freely under the MIT Expat license. All third party components incorporated into the GitLab Software are licensed under the original license provided by the owner of the applicable component. +All Documentation content that resides under the doc/ directory of this repository is licensed under Creative Commons: CC BY-SA 4.0. + ## Install a development environment To work on GitLab itself, we recommend setting up your development environment with [the GitLab Development Kit](https://gitlab.com/gitlab-org/gitlab-development-kit). @@ -119,11 +120,15 @@ All documentation can be found on [docs.gitlab.com/ce/](https://docs.gitlab.com/ Please see [Getting help for GitLab](https://about.gitlab.com/getting-help/) on our website for the many options to get help. +## Why? + +[Read here](https://about.gitlab.com/why/) + ## Is it any good? [Yes](https://news.ycombinator.com/item?id=3067434) ## Is it awesome? -Thanks for [asking this question](https://twitter.com/supersloth/status/489462789384056832) Joshua. [These people](https://twitter.com/gitlab/likes) seem to like it. + diff --git a/VERSION b/VERSION index 30ba6e768c..52fdd1cddd 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -10.8.7 +11.1.8 diff --git a/app/assets/images/ci_favicons/dev/favicon_status_canceled.ico b/app/assets/images/ci_favicons/dev/favicon_status_canceled.ico deleted file mode 100644 index 4af3582b60d2fa40201791f2865491fb84e0ae76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmb_fYfM~K5WY<{8l$Pk#z$hc{<+VEZi8qDO}ZFM(%MGK?qX?wD5W&Men6EU2(eUa zV%w~VA;i)))Ln|DBsF3}h)EOsTO0U6tnsmSVS#Lmr9dd$ecf@seRa89c7gV6hI7xH znfd0--e{Mvw*)s&y#}ij35Xy6SD*d6Znb2dk=cJ-R|{@qU;hyu|t;SVg8FKcZ>ciw_zX_84zBV_atpve|6$nwlDFZf>UI$B$EeeLaveT?Mn0_celQqJ ze?CBt)pne=mlH*srTeW%w}e0%%&3S)nG#bcNA(l7ry_zy?DIa_SeW?AWn%EhlEwnpM8Dm2g+% zz2JK4$j0}3x4tpft^GN9Nu$v&g@WIywBV5`{*_3vlOk0XNmRaL2gT#@j5+ip>JqdP zY$)QrfIP>47x1~p9=_o#_-wpe)kEK_H0o1m#HZ5iH%bOO`ng1XJEVkOZ*Ok~KO7Dd zd_WxXof}GcFYsn@?On$^_D^T=reK#gFxkWL<})X-dA{AQCb3WO*-wcS`B*Ko`~N#kbE0dIi^cg&r(RK2CKF(dYemg1*<`RVm! zU%(G5dc`hN^-g&hZ+A9k_V*uMcE{9N&4_cK1202-cH>K#sG7+o5xFf0{CzTonk5?e zP$b{GBAq@U(&ajlemx@6WQRt7abIWSnZGAm_dKQ_QvNn-Wr`l;T&E~rCzD>Q{H#}~ zJ9SqM!hWsV5Ban%W}{Yu{*7C$j>pZI=Cxj-wBvl}u{7b#^A)x#v#iy6{w>>Ha;5T= zvH^SgUgeCHyqTxFY~=>I~Dd7|JS2Cm2*_ZF@!$P3r_8w zTzKZa1-G{Uo_@lAuURJ7`mR&kgB+w{KYhD$`JS<|Gg(>mJfHbC^pX2{m#xxDZaLoc z{(`5XmC`u9EmPR3^e-oui_bax5&BV=9Gc*o$R%sF$GBZot&r~24qNT#<1M(<8tAi~ zo_w-a`}0nuz_^p5vKJtEv%zJf&{uM+#~kIV2UwKGXdt%C3p({|9+ Uqp2SSjs__C8=+~M$^63fKe{^4Q2+n{ diff --git a/app/assets/images/ci_favicons/dev/favicon_status_created.ico b/app/assets/images/ci_favicons/dev/favicon_status_created.ico deleted file mode 100644 index 13639da2e8a343576006037c7ca2345beee1fd20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmb_fZERCj7`_CJ#%Rz;{76Lc&)R$2!3>%F7zz7fOhAZZ?Iy*jVM7xmKNRE##>k>E z5y*&!5E(2$*G+~AhQtsfU?dUt;fA_^9sB6$+I8txx0Qyqx1X=?b9Xzgx3}#koaXK6 zIp=-f=lwh<6@(@HS-Dccx6uB$AUq`qf|-f8gi0ptD}&GO_aLIBSFT*yc=hVlCZ_95 z)4Y~>9%Z`3w5zwb_xbyc3w<3O9h+FcoAIc#von3;#tj-88lsVr5xRNvCSALBErm1Y zN%DNSySw|z`(X!sW}S`D-P6;Pnw*@ZbUMx3xg#2lDmF2HhRM%1tiD$pSWgSEhlhtL zlgZ?Q8tg7Y=<3-N4fhzu#XF8#1s@-zT^q7=N@Fes9y7WxiJH5%-U~6&!s&`}_Ng;==~i zq;}wr;(fUgzUO3Fd7#bO6Z+mlBWFHPaN_Z}RtEg}zt7gg(HV#lE|FxpeqM`3k?w@>8gt;@Xv+oB>D6!j2sVyb+*V$I;WWS7bD@GLg!kdL!;n-|~?;dCAuE<%df}6z-9+N1! z-$W^3gE;nyx;gyWx(e$0Eo76n)@8No+tJ_ z^QD={!DKfP)ff==x0*>lxRxeQI4IzHpL}f}Qt;Gv3Lo7>)6J`Bko#JTr~f_Pu=x>r zhd7j}H&e2XbFEVPUDjJK{w!BX8)SO{!g;-P9{gEZ%$a%<kvYS8F_DFQKH(^v@l~+Nbrr zM(c=U&2r|SfZV(e);C*Yea(npzZa^jcr0Nvdr6fi?zgyI{6WuGXq~W$XCMcB=wW-t zW~#~-{I5s0iOp2YF@!wNF`MO`LU{VKSdC@dU3tZRr=F+Kde&yyj2x)34^LIE%G)zW zdP3D}o@Jk>AdlQf?bd1|zI=P(ZKY2nt4#rV!%T6Tcs?Irp?%KTImjpN=HNKjL?K?I zGsbn1LnPT|dC%y)*j~&oZHGMTX)nfWbRM-ywQ0L49eE%_}l(JN6=oecVdBkOC+qPjIfMk;UT7_6c(0{S0RBe3wMca$uOmu p!c1PK1|}Y`6Ym*lS%V;ZheMTuvx92}``WJpq)k6RP diff --git a/app/assets/images/ci_favicons/dev/favicon_status_failed.ico b/app/assets/images/ci_favicons/dev/favicon_status_failed.ico deleted file mode 100644 index 5f0e711b104b2e4bf88a3c726cdb9b7f17a09844..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmb_fdu&r>6u$(G#%Rz;d?cdK;o9DIJc5hSwWA0zK?iK>-C&p~Zh)GgW)oC28AGCB zkP!$$8L!!m$?ydU8HR*J{x$eYPzC|u&xZ|-RV(LK~r_b?w4j+T+MkF*M&T* zYe;8x$vk)KEUvRUi?dE=aX)#daiNd(mgHHT7iSeYNx#S)d$qQYKHT0}ASZ98E^Ics zi*3I8Hs`f^^z=o@V)xLNU4aSK^Z;52#Jt50k}zqx#?%(C6}``yO@x7krRmkxQ9@4L@iN+z;%} z?p*jkH!qmhbJV=Av94axIXn{6Qm3rdZuS4q2KXV(!hR^I^SKR;Qw-AOs$HX zU1258z=Y3J{gBB9+|}q8YWzQ23LoofGau_eW+HF9k$i_l3h&U9Z`*SU{+=U4Y4}G^ z3@g0Ucqj7#brDjf4DM?53)FKezS}W>iMQQ!DRA6GJ#9wn{Zgc{CIiK`=Tme?J}qB- znqFAhMKO&OfDQ0N>Ofue`qD3G^b7b3eG~YcV|RD87S#8(i?aVKk$PH<)ZHr5$R6Va zcH|R1ohVta$aS0=PKCLt_b{7-o`t@NKIS@7IHR}C^h2P7{mo}quz4QbCyrw`^4WLh zQ}{gtMa%MOh3zyIEXiDlxr{;2QqIo38)tVr3hG9_Gb^}BZ2tj~B8_^A0vp7>4_A-l zdrFIGe(`T)DR*bQ3o_Y&o|V9E0yc)bb*{zRCdPW%=ZLxYh)AKGdWxlBN4DuHQpxt% z*%qer%aLpRz9TKfPR6V1#I+g_m0G3AU=Ei zQv*>IlcXoA&>*a@GLXOidFrfPLoILC(dX+vrf)X9ML&H|MuFxzbeZcq6;J){Ygl%l zyw>Q9*BB^L&9P2UY@LDR8sizcR9q@cSqS_Zu@n1~vY6vFddPPTG}!J}W2(R9QsX|H z4>gt~oO!g=T&dox^*y@6Tt-qNP6-{*CzlxyXzf?8$&&fSIPeoW9+&bdV%Pt3t?JoF z)qAzRN2(S~=l%VVo6y1fu2+~}*4nRL3se_95VjjUl#nN`w~%D~UcE2dci3(`4msdM z58LCtS~_pizj|c5@eozA44_jS8z8Dfy|eQ>aR zPR5$i(i13O@Hn4&5b}uqsAMkJ+Lvi9xVqq>NV&d`RvIW|H+E*)mu;P6b`tUt$>8^K zPGsAw#bewysxp#nH?7y==UN++#MdFudOC9L)#8uZ#mbnZ4+Sgc%+liLS{q$eI3p_Q zWwzs$Tzj?nBUQHP{>q|{2tV6zarmX8&HaThrJyi{JPHYPPPjpA tOPndn6lC%+H8Amjo#%*_*Yr)5D4)?qF zo^yWZd2e8tMfh93oT0yr^JRv4jbRuL3AY#{6799&)LG^(ChaRObj7H-#h<&f2p&>=zNE3{Ub+?fY<9yh{-eE4|GS(hkvPEzhvaJ_V9sEWByD{ zO(peEjm6_A&lfLVOrFt4adC0-oN7`z=#HXV&W7(gr8A5{`Fv1P zQj(0dGS7iP01O6062GOTMF}t8lj#3sCj9^GIrZbGg(IHMTbD0iPSHaP ziaW(2FE0-q4hIYj3_xXNWfD6*E+j*DHP*QYrv#up=iSfh(sbvb zV~ss~t0Sj*%ppkLp9L7{;9bbkSJ4GKY5_MTxS}N=A?d_G{ zhV1k7v9MC7 zOX)+UF%uIL^4**1U7|OOe8=3Eknb*g&d%wxS{XNi?L8(yXdeq1>Ghz*q;GmJ=*=Q*jC%*gJ%-LO1E-A7yY1qQamu@0fcxLa>n(v#vELQ* zJ%LX%#es4`I;ke9FQ_-^exO>Qdy?*IdM^ZlkJ4R(G5<1wtDN2T92?y+_uAt1mcXW& zVqY^CKVeI6VXQC64mHZtaZpjrU8A>KiK+blvr}iBJT68f*yn_oB=kM{EeBA6WMKiU zDn$F6Iq){I&|jy4j!F$2-Kv4JwHo++rv`lOBK(bgt;9?J9&asuL8{^ZiB@wE+J?D~ zQ>2yysha;yDiew&OBSN@YN3z#6S6c%t67r2b*I(%VmfB}S}NlYlYi7>2_m0o%CzO_ zylU&2kF=Y>63G!Qbg6Zb3Le?6U7Z9QF~UyA&< zNiL}a^*yj^KUCvS-}7zDe<^6@+z^)s?6+A9|4TYwwsp|Vcaa?7lOD9kbFWOd;Qx9g zGk*fgF@_|MbHFTqk_|8YEMOJ4Jd~I1x2N-DTR$+1rIdqs?EQC5nR`Y}kI$rk6Meo* z@|61-i`JyZmub(xCFhlpi5-KFIhZx`eVO>O?PJbiiCsg hr1y+yNh`y=gS3uluqFNjcZ(ZhzhUshRPr|q{{t;Pg#`cr diff --git a/app/assets/images/ci_favicons/dev/favicon_status_not_found.ico b/app/assets/images/ci_favicons/dev/favicon_status_not_found.ico deleted file mode 100644 index ed19b69e1c5bef5fc97b8d8273886f6fbbd028f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmb_fZERCz6ux8{jnSZy_>qX>pSAb40}Pq`7zz7fOhAZZ?Iy*jVM7xmKNRE##>k>E z5y*&!5E(2$*G+~AhQtuVhml0sSBEnhZp^Kt>po~#w{~S~Z$FRcxx2U2_O=_sdvp5U zd){--bKdjuzNsKA;b+AP0lz})lY;P!AP7b#W(nm?;46dI9`qohqN`W0ZoGEwS_4xr z(=>m}JdZG4X4=)=-TmT&#)ZAMwzf@dzmM^#y}dnoY{i&p0h5?vf_gphkMRNM@PpC zj4k)|_2q7w(GrOSaZM2Xo12@aoy3O(I52pDZ>89Q$?9@%#OGO``|2_!o*144^l8 zKbIGa|Hs8c-vb}M=NqUwbze#z^2vdZ^MUb47Q*jtShLjAY(CQW^KQj9YAoN##77?# z@)c(k`zja0cb!~aI^JS-`hPUh@R^Sk{Ae_q4_@K-_xGn`fIf`HV!HBb4Nm97AGVk5 zoM@J2ysZ*V9%X8@DR$963k}quRtNdc37pj&|K4o;zfP7u=W&=%`%ar^tVN`WMu}nv z3>5zMRR!PU@#wpcaXugh$PdnH)L&bha^J}u^G`M0%-L-(smB=;IIPy2hONbZ zM=rkRi*N5cN?*VaJ!=2`5_MlX-iy0C6EpL@-?6%U`nV~TZu4XE4skG5YovG$ z=US!Y`)s#XydYOd8)Rz%!g{TA9`c$l=2Wc#`nM+Q${)|h%>I@u#3R@rdQ2niIb30` z&X(2t4!>#MLRK|Tstwqaw}{8|7>2V;`KVT$#6L^z8U6*F4XA zo`ODdAGVq+_2lyLg4;@-idP!O=`ABgE#mona)tPuvvbgoTaDfcu8BgjdTWg9Ae%_C z#q@#R`a-;jRoV`Hw$r+htloOqB2_1?hG?*A<;!~O3-Q8ROP43C2ATbMdm&l9^^mQ6 znYX&^Gs55Y|2e$Yvc0}V_AQaHo>Ib6l7&Z@iYO>7A-6&TT@mgQ`;uZxFa??1Om$2= i;3w`g(9$|Vc!_B}=*m9zA@@Ev%|9a)q?z;+rGEjuZ13y< diff --git a/app/assets/images/ci_favicons/dev/favicon_status_pending.ico b/app/assets/images/ci_favicons/dev/favicon_status_pending.ico deleted file mode 100644 index 5dfefd4cc5a284aa507915ee8dd8efb3ab2a34b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmb_fdu$YC5MP4jsDa=EMU5yXq<6b_Eof6QX${pF6Hv76Z3_n`#uj{_e+b$?G(;MR zK?(hhU_Nb-Z-hR8|%-(K$x!YbJ^t()V z_nZ0VH?MCd<+yqHTd{(pzg)vz9Cts*aW*8};?j|5Ut7qV>y>>1=37eG`nVESVR6f? z3*BsBftyJSOIb&pn>ATVm7Vbw@W@=_l0Hirdl4}&#g)jgsEjG=zE-;ob(}!^drn6n&E7~6U zYPPhyiTz=^_+sU$GQz(+5UuTOM+l$zvJSWLOb9=($sC{h1NEq>@PDgFUea0TaPK-= zr1>)_%?&>FD5~XH_-)mzQ+nzhzxJK5Ls7{d4ZqtYpR@6w`Xu%0$?*U7B)-#IC*1Tm z2ymlZfRhKeYxw8GYRrhlZ1Aa9)4Yhp|D!tPfzDdT@$1L!&|S|%?@1)7vqt6;PKKtE5 z2zx*JejovY@7aK5CcsnsF2X(KLDPE}8#%YXzkXV@^5mt`cDEfEAQ5 zYifZ<}j z-VA(-eSXMy1D~E02g(KMq?+7wK>@m()E}rvQJwH^Rl$2s zxgICr-e{coDVGrUC>vV1b^YZ4#$gp z?=9GHr?i#7s^-~1&c$5oq-?W+l*gZyGK6)K7=wtPC!8jE<19VZJS&}Vzfq9BC=xUB zTgu?w=Dd^D5!%HLi*YAUm!9 z4!hPYiEYAn1+-e|Uc^Tc`0eov%KtnXV+`v%H^ z9{WIlR??(*#!OFNR`P@Bb3dJ@+>eNkEHk;u_5zy|@0PQyJ+RRRV^03`WOA|gF=waf zye!)My;u{mWX*VpTMI58B&Yp#GyYV2qoVK{oku+lQ^}g~N1Q^AB3j1+*-4L?@u%7w z*_5)JiB<{i*fN!@8Gp!?zSN(S`XSK2?Xz5dG4+G%)4aC;+*(k%B_MGYr1=ow=7CQm z4$g5Cgtn+i3@L!*Ln=VRMRw9WBU)0xagQRcB|5iT|AB9}4?@2V2*Azp-x&N4kZ+6h diff --git a/app/assets/images/ci_favicons/dev/favicon_status_running.ico b/app/assets/images/ci_favicons/dev/favicon_status_running.ico deleted file mode 100644 index a41539c0e3e8fe178f3ea88fbce6c66b00df3c2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmb_fYfM{p6u-+f8lyqu;v;c7ztG;>!dM9L10(}VG@C90EjTufIyUu#A9Qnx`oST~ zj04JKlfA%grDKDsi^<${KDNari;2b$;wCMx0;LuTv_PS^-1Z*Nx!m4eF1Lj}ZgaT* zd;aHte&>Ilfnk>6Z`CS>{xWS3Gt6TQ!x)i}#pELqUwUxwZa;9QY`M!`u-;WyaHP{- z*wJY(8h6;(VCS{S}` z0DR}Fq4%rTVzh^L324&+@0XTG?}i=no$aK%x2YmFapPwYg(&Df(Xj#e@5dTIe9={J z8AP9~zEc}qb%ia2?f=OR5Et}d7w{s!>(G6$B!<2S--!+G`huN=9k|-O03$X%4&mP4 zf&4M!?Enzt^JIiczhndX;dWxtwSV1Hlw01jABt+lvG6Dio%4vVx;(54g8)!ZJYl9+B3(5z|$y=!lxLkD) z`Yq`DzIvXnP{#$z{gn7*gW3<2lf-k?7rehzAGqp@^61QD=cRf0^bsBH15eAglr~T- z)cHWQN&R7|`0j(bhX_A9*1rH>VqhHvt~Oz8ElKT=a#B7`{egPaV)%a^$xa(MX>RO0 zoFnOt^HcixGM6y0&U9^{x=1|KqbQeC;rATR${A`k{}DK20$)S6q*Is*Bvd4Q5469h zi$B$MRXIa_l6rMA{9Z@KyS|g$guji0k;5E>YBD9Ak)eMS9my7Y_;^=P+fKcj=7kpj z`th762At;8!>3K)ZDqmN%)xAp0iw06gg<)CkqlPh>*1^GhI%#43#w-|eve~Kk+;?4 z3bdPGz{$ek2@WE5Bg8*XhgeNI^zF`rp5|BQ<*@>)T4?bp_v4WXMS}7`sz02YgpWCP zZ(mEsCqu0q??1)CKnn}~EgVcXunM+NZGhlAS<<=C-{%!wdJ8qa$N9EYpNbsT3C%2; zn>5F|kL9c!beet$w4uN8&Js4h#~Qgg?7evR+H{!RVT4#oI(Vw`z}>Juc^x8<@4_A! z{CWoj|2n(CS2VNe?limU?mdo-?UUb{CENtI|0oB-UIWAkn+SbByJZePvY7+-UhM5h z%2V2)+*h@rnI-$(PT2JHw5-naI=T2D`kZ3!J;q_K86d907IqszC`Ws&XbV#K4YOne z`9X?>X3nV~r6tV^npqMy&TjJi96G~XKAwNS$6>nRqqsXb2-nN`mcS?9@0`1P0-xUG z2Z{yhq?{bRb^@q2sm7>BQJByiPlk0ZlQJtlZS&bI`1!uMMj z;wNkgZCfqX1=*oTu6+g2wLiCmX15wsz5dskl|SBO6609s6l;a>?&2OJKn0S`08pkw z#NTKH;WO+}b(t_$y9NTa*$}MFf^ba+j5lGdu&&j3+O@B0!vp+Qwo9x;JzFr=GR3zU zfv;pQ^2OXb-j;%Bzmhvo@`wX%BO zGcTJX;4 z>YFYzzo;j#U-A8w$nMnCp~D7H&~pt?}*j(dMZ5aUZl*l>E?OKeuq{j)%Ud3w1HwE`#v;Qnwhj_^z;Nuv!BE}kI{LG z{fy0AswbC>7uuBZh)`-6f>(?XwX)}v$))0B%)X=Zg3ajnVNRry)!Rc{CseS&TTO52 z?JvfQ*tj?8JnCs%Ojd7y#>$n)ZH8#5Ec02t{l$1Q8*^61Yz7|f*u0pm-u`4o{tAD2 z?#Dp?w%_LCx8;5`yu`W%VAg`jqyf*|hqN3*%rfvu#K0BiCZR1NQVc1C*wDnt2L<_nF|ue( z1Tvx_L$=gdZta?_ef@hpzqhv3*Vk?X?#tQj zJ@=gRJAdxEHxq;v{HrWov8ewwpI^)-&}o z&G1^{d5q~g)BeuR&KDmvF6`NCw(V@+!Fbfx)|Tk&>!ZQJK^hquq1(4_)2&;#;@D%E z7|$m+Pme8m9-UPfCILl1ifX`>_ z;nBw8FD9Br$@7Cqu0|b=HHsAcPM5)seW@YO=kLmT==XaaxSQ~1aqJGZv2y5a$(nJi z{uf^h=bK}ev3Z_8DK20i;nOt1St;yB(%9+T@6E+e`{F(Hj@%dULyg-0xJI4V&h+B#&c@9C-EZAcHgiUw zOmLs0)*0g1lV59z%uFT?QKbrjze`Kfu}w5})=U%D56RX1F?r7Kp}?u_G}Ew-{^7pP z##8>DtljaLv{yHntkF`enroe+#QSWwM)#{!E^d`f1qk~!;uXlJbulMvG|(TNsx5n5 ziK$#m<+_uI4?UJ9#2hL&R4HZE)}c2IJIR!)Q_2SHNjr6?)#Q~t$z*sv3H;OUW?9 zsoV#qE7s-h88th;ijB{6%+t_E?L#I*g_>MGUSN0eQ?Uxo1ihuDh*5VXpIjk6*X%O% zV)czZEfwf&&EY_+GV^fSW0?e{o5rqV;+CH5_mu!WMsDw2dpm{w9iSV2yi z1iB&ICH5uB6lV%BIhksic)(A*XP{NJg76a47SN5usgIn8owV?cQGjMMUxfYxQ*!et diff --git a/app/assets/images/ci_favicons/dev/favicon_status_success.ico b/app/assets/images/ci_favicons/dev/favicon_status_success.ico deleted file mode 100644 index 70f0ca61eca731f254935c0babc2d4002b0c7518..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmb_fe@qj16hFh3Ez1_S%F`9EX(GP3~BEGNpuLhWSZ#wF{eu= z*SSyHFj{dl}_pU!I?a|gBcX{01 z`@Zk{ykFn`*$-<2V%HLO&2L-5CwY}%V|ZPzKVa2~EFZ>e!l9mTasW}qIZ zCX+uG1JgJ;Si=hs99R!ok(SOJTm!3)Lj$P&lsoAlVr3mehH) z=jXnYF)9gr>*+M+Bn7)s6JMMIk!;i!+Je~?=CuYfZB(j0} z1NEpx_#M^RlY5UCs?0}c$akwSDp9=Gnv4Q#|_3DZ6ubMO0I*zcn`x{uev7d$WmFcoi zU9R85IPqR0ZCKYfKSq>#HO-4?{L6=PUh1tg92+>sfxTW2j)N?Cc4@)6cczTr)cIwM zu8A0A!^+LkO8hgB_HuIC~^{m)`l!e|}JzT40VYosc#`b=yg`YMC zYM{NR@qyuKUeL@6%uPP!-$OZ?zB;bW*?{pzpJi-(x~kX!_D=MDcLsPi>cF=&13ucX zffdaeG3PK@gJ@=v?=-u~_il6MhT$fIj2pu4Kfr=_rxtvKO@y)ctPJ2gmd}KedJU}o zcFujx2a&AAw!q{#t_#?2rpJ~A>pgl&k1*voO4A};X zLwip{!g`>2K{G3ejkB9i37|7f`{CRtZDy|1L3uZ`FtRsTZy|h&{pNu0A$)pL94Hs0 zlWLOA1)WXm57eWmPg1X@d4au&{`U|C>(osl+{mZRoVka3%wT1(-a^=+*q6oPhio~! zJ{`6kOby1BVmqEzSTyi)!?a5@yCX3p->=kV<=(2{BtM>W%5|8~cWH+Xpa{vN1>hBk z_=P%fp{?hu(xG)<8Z=j@!H-|1!R3lq;ARa6|KPcf#EX7+lrMQoEYo*Mr8@Ag#9Rl- zze)#Uss1}Lk9}J-#UWZRWm`!;w3nVzsh0Nl+$hg|IvO+jTg=l}k$-f?LPS2h^9(|? ztkSpp9m7&E1@jctLHfj{`U6Vx(LB*)cvB+$V2w+r4DcGYH%E%*ycjL3^gUdZJq6_l zXkSbuJu7AeU`^PDT^KI1X!Y!KWJc;3cL`sQf4c;6nQzLEA3KIuVw?1On(N&o5* zjrxNiU<_$LK1Yq*ig;`epZ^&dLo{?Fh}DvX+^Z7IFYQ<`fyS1 zlzw6EHlUyF4|w&P=58HG^4tP23qWEfgUCFAlmbJ{B(TZEz!~Nqp)C@U4`~R=hE$G( j7uiYkjA(K>!%Rb3Ky+q%@CMs<8wBoaFa)>5_Za*Ssj5h) diff --git a/app/assets/images/ci_favicons/dev/favicon_status_warning.ico b/app/assets/images/ci_favicons/dev/favicon_status_warning.ico deleted file mode 100644 index db289e03eb15e0b5d799c1e58864e5941ca66da0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmb_fYitx%6rNHH#z;WLR{|Cj?e5HOAEq|`C`x10M3mTew+n?INDCweV?q@Z{2^5$ zfj*#HXrzFJ-EE;Xk>C#`CKW@k&C&Q7<`GdX*A z&OP^h=W*{nyMmBF&+63ze+muD1>p%n5Uj)`60(U|t`f~HI5i?saATct7&Qr%Xj$aO zFpV;e9YQ6pki3}YpILBRHdu+b39FSbu%rs%*Utk*-vb{s0j`U{bEgsFInoJ|?h)ZA z9$OGUA~9F6?WC^|^0fiuAsABIFtGJI)dz)g(j`AEzXD8#4Pj>qf9eGu zuR(}%F?L@*RAM({?`fU|p$h8%0QUY2@Te#MXv7CK5BE}wDy-zaweA8GMQ>btPjmz9 zACE@Fc_15#x*z6S2-@RhH+(Z-WH}-u+bTYfu}Iqw!FipFt603K5+fVFjb$|=KX47$ zav9(;7V)0s98nH-#hn5-*6^CMH)2_xpIkkgd_TlVxyQcwlJQ%I%y9}X0cmvrk7mU8 zgL+5Jf&Xhw#jd-a~l>1hJ`q*E!nX9^dwo8Kzly8bz z#intnT8dyFq}a=nG4-Jp!Q5oLxbHfa9u3DlhoUzU8;?fBJxleGdN;@3?nx;g{o1bL zMzQ;jO9&pcAjH_rl>4bdD?)^SbMvcsv^;>MlcAVC7~yisxMyj3uV8GZc5m96Zl4tH zqMUQhyK5y(mRS&JNTCh#tliYLpZ1VlUcNE`~d{=Y7SX`wj z>Rsc;M^W6Fqu-NK!FSBa5pBOkv7@=)HXEOP2ol%r*rlEeKAT#6{~MRPZ{wBf<`(+R zv2rHn%_#Xe{3ecll@7UtWgV z@{jRDSpf!4q~cFH*E8|--+N2eKO}DxZz@H!#|x>}8i%)AAs304t(Xj{)WQ%R8wZf$@R7TGgk1@lX_jF_tAok6{O$K>!xjxy*v5#w~X}lvcbZvrBe>8 zAKH4*d7E^K=kTdai+%`@m3MYRofZWM?oh<7tX{h}U!N$DQ^(BfVI%z^0T(f_au6 zY_MX|AzqB7XC|kbUEuXWr?sz__JowUY6PFMZv7g+}n3t6ZLK5*>=BB;c1OHw> NB2NbbxIO($;y(%}fBgUe diff --git a/app/assets/images/ci_favicons/favicon_status_canceled.ico b/app/assets/images/ci_favicons/favicon_status_canceled.ico deleted file mode 100644 index 23adcffff5082fb84b1dc17f547875d7d3792251..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmb`IUrbwd6vr>Y#K)N!eKJb2aqsW8jG=KRn3#eS*jU}%SW(AfhDvc|2gCFM6QU1G#1|7@K(lNQCM49ZT^$Im-CSGl?eTms+~)T7mbM$e=JfZw z=l473bAIRdPm;>`S5YD1U;6F|NqSn6B*DTesg4DDqj2AD7oX2puBvLYEX(6Uh#TBq zR}>||b%5*ZtpC{Uc0aq@T=-+2ml?O1K~+^%dV702`Tc$x92}&st}be9Y}C-l<2Jb- z<@(9phy!zGUqkR+Uth1y&dyRIksznCyu3`ky}iV7rr9RQxj68sF|e;Gu>1P@D3wY% zVRLj#OG{K+TdQ#l_Z}q%X7_+SG&GdMD5MC5LS_uXhgpm2>gs2hpXli5NEc$6{lQ?+ zY#KH4fVIGWD0Lm!W}Nr69tZ@od^&xk(`oAI=^^B5Vqzj|2=)Wdf3uWxQCC;@7_&FJ zySuY|Iel2!;6to=z@FUJcNd$3y)V4{Ds1NF=A4ijof8{*uos+7UWe<&@b`aC9=Y?{ z1Mm@hzLJj(y}jUmz#UbHFNXDz%1J#fw~rY)i^XDgSH^cKY#88gP;Q;p}&wt&C@A`s#$~RilU{5i-m!HXPut z<}+}^&R2%DYw{H58}o)-U^&Oq5jOavqoY~;fq?--zrCN0Gv~D4RwLZicrVyy+~n{5 zlJ+TM+MNs+>`U8h@L81VW7N>lNV=|P+~GWy!iFK<3)pb}o52?s>0IT6re(3OFtf|T z|1d?OcG9q$nVHG(lgT6@2IQg8ykUg*0&f=Yy<2$4luO!=^0$_JW8PO;KC`ef|99e~ z9{P*K{@1Cd=J_4ZVJ0|-2Hq^po!8!rxyx5|J!{_J_uJUWy*IqY_biZb9VAa(eaSK4 z&Dv%UfsK;0<`;9>GUpz1H$}Yivk?RGfVHsh2Zt#W-V3~0U~}H5koPS*ul=w#o|*q; zW_RZDmG*lXb|wbof!6{)8yXr3=K^OF_XF-I+>^Mgu{TtgixlC;+yAM_HES_U74kH% zKkk@Ma@oedKNiX1XX4;JsT??N#DQ4sB5Dqj{H8x$>AO&4GVQfIrr(wQ&TRRk&AeR)3T-L&NruAEVaQ|!3vPzC}CjN)ox^bnDh_-)k zI@+^ex#Rwbm1l3e+u| z%MSbfNGR|7WVJQh>fzfdyAR=wteX8h)uLtX`yAVo|NOd>jlEAjvASUQp|-3|+s8S5 zSG^T|(Y^+*x1+62WAo`;tsC!V^Mh%uZNBk#y?XRcJY#=2oU->9`sTZ*Ol=Bpnm%0K zzc&imSo@Wh)j87^xwQ5b+ZJ!!{oV9|H7(W-iy>Z!FEaboS4V#hm;WBcFKQ|psX zeRds@F1gaH5Ob5QI>g@eikms6W%k(9+v0&CCOvR Y`FYPgt(-R{Kr0lWs39?mQJj+WKX(M>%>V!Z diff --git a/app/assets/images/ci_favicons/favicon_status_canceled.png b/app/assets/images/ci_favicons/favicon_status_canceled.png new file mode 100644 index 0000000000000000000000000000000000000000..8adaa9c600bb4ee553c874000c3a448d44109521 GIT binary patch literal 864 zcmV-m1E2hfP)Px&8c9S!R9Fe^R=;Z+aTNcal0?%IGGsEP(#1pqX@&%9UCfXQCB!L^PEPp)96|^f zXy}wur!MW{kWsogv^ZqQSlU4ll|V5hRcwW{lv1ca?!10Jf_gc<>s`{VJ~-}s-|zdr z&*#1G_q}&QjARsnQ3OU2_}?QS{i^`X&CPivNqPW#9#vIuVf?k-ZkIeB&-;^;6WIvo zMg#yP`ThPaykmHl0Wx6E>2&^36eZ&*=tgu`JmK0e-tBayzPVVasbq!5dY#8lJD{{Fs*L?XQ@Dy!u5r~tZ>7`E(zL!&6;Hb zU|S+E%d3%?kH_OSGMT)hzPGo>a@<;2Shza?Vm7h3xOfNkpw7l}#iGeaxm>=on$2d} zkl2`B63bRss?};gXJ%#^2;ZYtt0e+~fEnM;+SJrkPp4X~ifA;d)a&&sj%o`R@po_0 z&Hx@9F|=$ftnF5Wo`bNA(Emc{@7uu}&}9>Wp#({=v9PwotD!vDHF@R?JNA_I;Me{m zA}bhN2kLV?e%5xDSM47WQ;oMB`7Yy9zQX${()gR!qZ<*RAx0yg&xbpW1+^V#I}5N$ q78&L_$h{jI8+%hI6h3Q#yW>CN9Q^kJVh#EL0000ATn~AeCvyaf+aQ4o9 zobx;9+*bslfd7h$1pEr$KOzW^3xXiAaF_5R3;MOfV>?}lsIa@cyUgu&H?!PfS>kq_ z>p7NAmJbI92cO(&F6{O6^tjmmDD$Ydw^tn*8KJ4EDVm*~rSb7`8X6i>FvfE>xNhw4 z?|*bB{6NfX^8#!S3=Am2V31T*}=h5WkBq@qwnTtKjwl=nNF4)LJtP`G? zn6TLM`~6#7ov+utKP^6BPi~H%&Nl}?yN6zePAC*gR`@?b7Fn;cJPKKy4c zQpxf5z#43WXDmLSFDn~5@Xvfsa6d4AE*D>_R~z=+P?M)Syc);6o?~NUIr;Dbd(v2N zM{$2V6MuIDJ?3asC&gBU#A^zjxSU$!_4Re58Jd}y$%~J3VJw?_aLJDE{F;1Gv86Kw2LijQez|bFIY}0RD3qIXT4sp z*%S>A4`=1$Y#IyhYP=WBZ`S!wU#8uTE6TksF4&h+Z15p%?E`$@TVuh!X6FO;9nPk? z7;;tyzI2{W?zyHYY3!@atTpi8Pte=7<64}7K)`HLYr`(~1NJ1&h54*t63zkMERKDY zn}v=`%8z23A>WAmI?KlfHsXIPO7ea$eRuOVpQm11+nN(Oe(+{tuW)W$h+Vv{s%de9 zUuR-7-{G3q_%Bq>(yyJp)PH+m+dkmU0-IyM05*zc&CgreBIh2l>r#GnO7j7E$g~#5 zG~m6!o3+VqLEckzUi*5bc`N=VW}mY19mno(v2`Di2do8bVo%~+;B4Z4z#WCP$6by0 zqTB7JKX17e&iNUgtJhLJ6^X69{(Q%XA6ePh_l{Qs7QXHW_GDYf|L-3BG0JbZ`smAF zrjm6({PUd7G}q!4H7I^+&lW$}$jH`xKwW$$rrl8|8vIn-Aj@!eR1k!SwiTN8E4`+Z4cJo>k@X8E9b zzFpgSBvPg8q}8wZlG4$&B0C*ppX>^R)AX?45Bf8{Pext+TRw0%VYVT;0wH}oTP;;A zbXas>U;HDRj(JQz6zVtIkSi8i&GYQq``(B=Z(alE;YhXJ+)RDW>hL@1d|wi4n`yqe zUoO8F-O@iWpD>T-YV*BPAeYW>=r)|Lf5W+SjN^`q&`-K9a%mjP_gi``_?K=2Ynrbf z=IyPHzNG8!tBM@oj;=nJ*Wgsj2Iv0BaHp-LM-o_YnytloWPRTzHtJkRn0>c{CBIOGrr_ z*Q}_p;6jM7bg|U2a6z8%oPx&Gf6~2R9Fe^RZVLeQ51dS7)`7Rq9GBp5VI3k)&Z^lfG!%ywwqG=6Pj*YC}dYk z*IBnaX_ra=fF`xjMOVRu5K@#j1~niOzwJ2_Q=a43XuGQyMrZDO@1A?l{dhvmWzN8y zfjI;JI|ItUA|RDY`BYVnb-P_3o_iLH<(Hx;XVGZ%3;tW9aQ?~x04YaDN00IU8~_@> zjX(guhAs)`c4M(vZeZQ0F#Da!WCE>LD+y3-adEM|wzj6aTrOd^+XcWxqtOu6YE_g< zB~dIEJCG(=c^Qw#-^v&R9?OfP-qY#y1FY@C;7TA6P}kSjM{U*hwOUP_pPzT(3!0Z*y^K2YQizv)ODbp-@O&T3Q+lE-zkOT!>sQCjkB~kx0DYnnm6)>76+y?Tma{ zaN73!{le?@3fS2>JUrZ@&dMLN(knO(w2NVpUtL{^N~NOb-|2J;kH<5xZ*y}~l*{Ed zYUB+Z`8-t$ko&JFvip%pM3tSc*Xtsi&FbK?9!%*``+PoGE$HaU$q99jOs9Z-jsqI2 zz0VpxhJkYrDxbxtcY=I|%%D>`sD*9Q4)lhM!d8>zj&@mRe5Vt#keTJ>Wn#xoJAi!Y zJhIPaVa_KB+pyVe_HFCg*)Z(@PCIFVLq--395Z5cfOZg+!?Xj)*G~c&0a@*ngp?b* zhIU}{avBHD2*mL!3k!+><79Ppm0*2aV26|Nbo@!_Nbgp==4_XRk#WF`66Tt{FU!r% zjliQK1^cEQKm@!}le}11RI;$ogTbJ{rSwNlR?xB{91aiEO+KF|BQ5OzG}R>LUTa6dXFj-hw5Dtf9 zC^#qP@$oTppU1w}Jl_`u6=nn@`8^_d!i$CZ9Tut44kITx*r@?LftvcxJu^7~a22;1 zFOwY|`vX^W#Kuy4EDKg_%R zw|I{~=J5De*&K4X{Wl$M-@6WX;OWiAg*+zL%X@r(Z{Ou3u|A+4>6)VtK3$-*15rBp zQH1Ibg%q6eZeNz^b3tmHeS9&4LkfPOej_gJtl%eiV7Kr&G=dAJ1 z2=1w8A65tE>v3S8`D~FgSvyqg-fw@d&`$5P;_&$HJ&X>_kM9Hf^WkMHNQs@fNLJGU ze)vDJaMsN}h1@!JI&AOk68JcV9}o-V!$#wP9Cv#BYH&7VK}y@i-);|#$Oq))M&3nT z9X-Nyj(4)WHjg`VS#mcAspot&e{_2)P0xF$sc*y@C*&kz=WZ3ko>I}izH5M5#Ze`#VUIKXGYUBmCpG+EZ>^X` zk#9Pq#Tl6JxzP{BbU>{}zcAyA{mM7OxSG?jVf)97IvKs4*6;_%Vix?X*VlA2##_$^ zyo#sxd_=z#d_k?-=k;WJstBYJAsjB#kf|T4$I#=vnBS=wsrb@||$i;BVM{ znNha^8}=Vbk=%HPSpB2w-TtEQu#__BS(@#vcf)q!vZ@x?4g6jcHp3UaVGUnu2qACj z#e>ru)&V_h9lHH~;rBIk7W;l> zIB)+&hJDJ4FTQ>+kFDzfKOh#6iJTl5T_(Iu)Cbfk)JfE8^b2Q=mTL;X%YRzO)n}=n zDuoFae^z6J_pI2+d-3In1z*<#Imy>fX?ke(!A1k|jRE4{T*y@(jX$SjnrGpXx+r{T zk1d?c7RAa{E*o5QfiKpEgeq%A-Bax zN|DrY_b*$1CRcdt{*V#Ryx!4~a>O2MW?wOo)bfwac z$G9hZBk=-0FZ{36G>3n(D$3Q5r1Cv%=r2qf` diff --git a/app/assets/images/ci_favicons/favicon_status_failed.png b/app/assets/images/ci_favicons/favicon_status_failed.png new file mode 100644 index 0000000000000000000000000000000000000000..93f1e2772fd24cbce25e85406d9d78d7bb9b691f GIT binary patch literal 1015 zcmVPx&u}MThR9Fe^R$WLGQ4~IRW_MbDkRqW_3wPI&Ajk*H(%mA`f>G4aup!CfVsZa~LUz zfX8*zY}eA7+hnrG{g^UO*SQhTr-M6JK;@)Hok zkrkSAv)BuZAn#=3NDzkei8bpXcT2tbxW2ZL9R~T91K{wQO*aW-l8NM;p=WOFQIo#ui(hwI?S{j0H44vvO)-#OuCQPkCdI9^LOXZu@0i`{$$60*RaCdD^ltRn~?g;?idHQ>6R-% zkrAa5t975)%b7P`%vsWIGTqS2XE1QH8F}`n-S>kXX$3IM=WO@4hpnvlZ2GLKggfEm zj!h~E!Uu(U&;xRgU9CB;4Y%kZ4~Sc=o)9-EQA2Nm3Ed^8=zN-p2K+ zAP7O6ojBjX{ZFk{>+8=Om-Hc?4KeN_1|%jXhAS&8p}DykE?l?(_4W0TpPw(&8S;g2 z?!o!x=V1rk8Fh7#?(FPrd17J$g25n|jr;fSLsL@|pq&wvSwdeNepVY$*AQX1w6wtH z=B62J)ZVRIw;(+|T}B%oKZ^~B{RLrnbaX^v?6l!>xl|jL{!c8Dl9FCS{9sj8RU{Tx zS63G_Ha5cY^0Fxl`GI0V`LNqKpv(Z~b=c{2>U7_`cMp1ddtrWl9*!J20_2~bo*uY! z=MIdGjp=ylgYp6IAKJ~k$jZuk0kPK_8X9!^R##UcEiFyKBwRBZ9UaxlP)=_1HN@+K z{cpXKLo!oSQ#xJrQC(fF>Vu4o3@9lnq5Elji;Ig3N z2j#xQ;eec+90jYUrUpWxka9dbJ4riXHj_4nM|oOVWw!oouBoN|&KRHG=DW8oj@hF651@E`oJ4E$B3k|9MGdk>Gt z12&sY^EDgi_4Rc~O->oYRr+_Mtq@DzRnM!zv~*Rj(-e=v}eH z=krlb(XiNfsB5av>>%GzzrgbW6@UNNa6ssnA8NRSeR&(3@R5Y16Ofme58-f_RR^uD zt#I_{QK+r0)nb8f8*+1V!D6w%^z^ijpX?#q(Emk*FJ6N42d~Pq4*LpX)-(7un;@nS zDstoF<2rrxq2^_Aak0WPIXS8H2IJeKH$y!ObMG$oG2ya2$$!uIo9=xL=}QKi?*Cx` zq})G2JX8$H$#3f3A#04+>s4xRtiD7&i|&rGx6$4CYvHi&-h|(7z$V|@R<`gnZ-Qt^ zh0Lt%m^QHXuxsjB+t?k1O(QDim!h$G^gZ2OB{Ab?#Rl>N#ln~mEGDg~Ur^5?Z1npO z`F#r=W8WzcX!q|!?7C=tq4KeYt=T|+z*vyZyu5s+-_YBn`arorb&_f|^$Q7eP!O%u z`#)E4)miL>1b!IfPc`PVXly0#Pq?G-H9IgTg~KNmJIEFziOE=l&NN33+Ak)nn8um! z4?p6Y&9V8~P)uyq2AcUQ*H(=>iFMNU4e+Hu0)Or%@XZ?_^vNqmO!iy+UsRvBy zTwqZuTf4FoiRJ(NZYqy@`RXU#ES_;~Ee}|v+@%P6A9Zah_ZJ%Z&Au&XeRfqwH@~|S z5i8ac%w*U-$>v_u$x*%+x?=VxR#sh0$CfvZIz*e>qnVCYlShVu5Sm2V$m+{K5e0DqRl?s-_(s6fy-H&%Io%W84r@S-q z@|*FY{IAmK)j_i};~oH)2@!4|1i2TH_JWVw0}mA9z`<=%JI*L5BT+%{AvuuRk#LZo ksGkw-Lwci~<1!U$b7VT;L7PfWcmPiDDdYz~1YiUH1L^sjfdBvi diff --git a/app/assets/images/ci_favicons/favicon_status_manual.png b/app/assets/images/ci_favicons/favicon_status_manual.png new file mode 100644 index 0000000000000000000000000000000000000000..c926062c80623ac012f3ad6459f32d170508635f GIT binary patch literal 1067 zcmV+`1l0S9P)Px&s^Ax__<^bme`ujZyAs;HOBcE*B8nEe zD-8&`Xk5BcLpKU7qAmnCr7pz3SR&dejc99y;x8|`J##V7_g;)XYj^cRl6&vWojG&v z+?f#Fj#~z98MtNOe`mn*uL#J>%CcK5mM5@h7ed^_+!qW6J$AeO^VHOo63Nev0KkzY zCnx6xep~S=hLbRRHk<8NAP{iJ#KgRrpP%0{0tq`{REV@j#E%fA8&MXgrKJTL8X9cn z<>iEkDK<8i_V)H@b#;{{CnsraYz%5aKlD4X_b!r6)BD-k*`nIn^q``Ad#~X*Z68g9Eu$UtcdBjE;^<5OZ^L zI#mW%RaK>c$>nQb1rB|wt*upzciz?2C6Iukxw)C?l>qYc@N)U(jTuG;K!2;Aa^ZomLK9x>HEgTMqO8d~zkSaSmIudXqspfM4rpkEI(a|CJ zHJN4r)ZS-YTx3GywM*($Ye$t*xPB@|W$v=FT16?j;ML^{|-BYkGRR z)QpOXqKb+N%E-tdynUIB)z#IMl$1ov%gY3&r5@)^N=k~HhrS>Wz~)!e3~*QD#=^B- zJNEbYX<=bO-P+mNp~b~T^;%f4va+JedBV(WY;4#7@S{#})dI=nLgECtwrdAi5q*7q zVrFJW6crW8#Ov+t6#ycJhljPQa^BwF&WY% lPpB6kmX?;jX&r~=e*o@XWgJ!fe^&qi002ovPDHLkV1hil04D$d literal 0 HcmV?d00001 diff --git a/app/assets/images/ci_favicons/favicon_status_not_found.ico b/app/assets/images/ci_favicons/favicon_status_not_found.ico deleted file mode 100644 index 49b9b232dd1a27e39b1d3c82cbf2292239402d09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmb`JYiJx*6vrn-@M8thPoe?a*_mxcKS;hw)Cy^nMXY&X8`0JxQnV%2RuI7kK|yF6 zo6wY4ENv1&nt&jvpaG-J`$3e%Jj}z*rb#y0B)glH9|{>2XPt6c$!VFS0;yG#=aQMnsv-&CPi&EiKh7eJqRo z9_4<5rIF>s?(Xg<_nHfTt*xyd_CLTpYHMrL`}_N8WMqWK$H!@CXoz}xdNhpjoH+ND z9UUEy?nN9}GyA*(-(6i@+T7e6>AKEpds|&yHDcoV36@EY;n@d`f&J8gJvur{iA2H% zb1Z2j)-g#8=AoiUW7_#Q6rF;TtuUs+svX2iwJp zJBnkCrsD6fpvPR5`oD6mM)EC<&Rm}|`0MNIsqlt=aBwi01DwNHEao_Wvj!KP`0lT% z$n~wZZm?^Z|A|J&znU}r;{5E?P=lflQr#1{t2zIDR=%rTtCwr^gu%wzzhF75QTD}+ zn)Ug7j`*3G8RKk=!LhM1BVN8MgeuviPVv29ezo8~eVz8ZZfG+}F4)&L*x*Cz>bv;9 z?@sy=58-gwV6jh{ot>rSIiHSyn%(c7g% zhMnK<7ignLO=7P_?Ten*w z8lIE6LFc_M*Q%52uVVH&JKuF`Ims3=AP?9J_(V_;$TgFyCOaeSP7N z?QE=L>ajqF)rVRzUu&J`^nU1#(DT+ka32p9JIzg{a~B8S*~*_xU~f~+x9ZjWnMl(9 z$aKs)zSBG3D;a9;bX@pwduD?>*_g*&1%aQ0EplldOZQoMZSF7O1ACgT9p)V@j=Usn z4;6(@@5WZlGn$A^s16Og@5ug(zP+qD=MN)HTS-*=KCXNeY($T z;rw0Y*!=J5&Uc!}_N{8+;vJ_ktBy#@p@g)LqSC`GnG}*T$ZLp1P11&xanFVt3oe8Z rOA|{O3peBm-!sTQmZ!=jDaVjYO*u{Ey(DCUyfi@}L&6lM2(8oqz|{oQ diff --git a/app/assets/images/ci_favicons/favicon_status_not_found.png b/app/assets/images/ci_favicons/favicon_status_not_found.png new file mode 100644 index 0000000000000000000000000000000000000000..df3049315a9be0e0271f4926450cc211348e40b6 GIT binary patch literal 945 zcmV;i15W&jP)Px&Ye_^wR9Fe^R!d78Q4~It@tM>h2BO4;#3#Xp76wd{AJC1(Z8u%?C)jRVD7Y)7 zYuD{g?5_3~_^5?0iim;+u_TxXh6GWg$(VlMG$ZqH?4)+r9Jo&IJ@=mP-0z%wjv_5- zG0hSY2I>sj8Z+*XuEiP#_SDZ_NwmUJd|A+1S{4itjuC zG|rts054%}3C=AflgX@0?_BUZ-`w1c*J`yTfNEV`U3xScReO7TrL(hB047&gS8{fC zCdFb=PEJm)Ayu&QDwRsTvtqbBwko}TudS^;f^G!{!|`}r?eFjR+G?y6g?u zxNuNLMnQlNdRjuEkYK+Y9Ua*m0R1vFG^9e8KrTIQvuW>`@SQ`gA=_PH3x~r7-30CF=`pNu zjgFBWr$izVI?IV3ASy)NYf3fq@(FQmG_`Lc!P;3

5r6I_cFH#c04D>t zX15iAamTwimY9gKm~qUy#rVy70U7k|05(713C7t=`20+8hGSx4LfYHgZ{1EixKz-0 z2#`ERHZj@!$mr;(SYL|s4DG;Xp&17Ujxo?iF|QOfHur{WUoG$+rVMjKo=B zS7T!_jak2DMcm%rmh z@ty!cMOS1qdBMiQ+RpN7z5wezOfTNIPh(llbZQ(EH}A;c(z`jrqdG%EfD z9+ci4rGfMVBcO>9HA+%#jR`1!VTkx0dt7@xx!SvOEiHF5`+RS=({6XS?Oo|K?`C#p z-uu0;c`ucuJp3yuk?2=CwN#SsmLy3*!Yye%67A~)&lY-k&p^JbnN<}uvldq%bGb0U zh86|bcwvx*3j(am738lKwZMG~jZ5-eAy$o;R|=XlP#j{s@^cP5zT?pF1BbeE9MqGH z(HZKKL0yh4ZihP;LJzVT?RA34rb2a?(LV-$V+I!b7*J!=fPT zAncdBIi$HGtZnnh7{EOz7(+cqZbb)IGk=q?_g=^n*rZALx}gL4VLq`aYK4`QTQy&D z%_KIbCHaA3LHUqt94N;zulZleoFHwNC-Nba%ez?L4Y#=hEK!enZ5`x{FaFWs{J_-7 z)fB*Ie{0Y`GPNgGl#>)gSAaKU>x04&JWf2P|FpZlE28Q0(67KIj<q9p94}J*cD_Zy%;r}{hmv$~};L~|#0`BRr4g76g&iGUxs7B3&ulRY>>UORzL)%Dx zVtirnsYX#Q&xBvr1b4ZQ@IT~E2J#68%Nq^+K8JYD$9}4lRI8ovJ%_;SKF)6H*d2(! zhrzvjGP?a2OgSbzF&})Y)zmMn_-;S@MDF04j!m}jN7~7tw860dy^HqzqxZP(G=r+M z9K`9NOBy`#F@u)NVn=8Tdab5@LGM}MmjYIeG9Dtpxu{KY`Zbi)9Cj3{@u=4r1&UgHZ-KHt)W?xaipq@p2llqwZFgq)s zH2ItCZbN#@giZE8mjZReRapG~DBOP3`5n%VY@AZh(rw4yO}5KzoKLfx@G;kg&&BMn zj_UYjHT_WJPs0Okx$8hZi?ERn5;hH6%n#VHW%NDSF6e$=OxJ<@K(UxBA1FVmXAw5_ zZt}Z?|yM)5?km%exO*8Ov=f3FLI!_N%eth6xB(p)zmKvgH-D& z=KKwTD`v$HC2}XmA8U;Kx*ePR@2-j2@P!_flf@s53BTIrBE-Jq7}J&p;9-Gjo#ha} zCco{BEx(HPnS4Lfx^#C&uTjh2VXzGIXT@Fyt0;%@+Z|+4E2jBd*)e)dsf~jpJ)8Pj z^(9*8BBlQNFOK{uSKdC_WX7|u*VLyx>V}BsWSggcxYByx>DyD6^g8jYPee53g|QMR z9`l}B9ZT5wEBj~cPi9`RRyX#gtumDASX`XXHY>G*pW1kz`tSSMc&umY=J-!m8EWld zr}duG_u6NYk6L5k*_!k@-JNOA<4e3W9Y3N`Y-hS}-B&jaq$c?{M$^{wxxTT&=BX9Y zjF91}{x>lfkNMnP8~;l1k}u6?*{+o*uU!%{D5lx+(Y-ak)MJ8otv9(X7hZ7}W3bDR zfxfRBUMKdmot3KS4W*)={+r9omdAY0>xF!^qK~VaVkz@}wrh3E;2CA}V0X6no$ew3 zd3DQByVIF<4?rphOLfvrWKbi{$jFeWAS97`kQ$M2ke{fZ5iLPl e)hJ2jI_>Kz?}6TZg2K=XVMyvU48xFuoA5sgl%aC~ diff --git a/app/assets/images/ci_favicons/favicon_status_pending.png b/app/assets/images/ci_favicons/favicon_status_pending.png new file mode 100644 index 0000000000000000000000000000000000000000..f7d67d4a23020a080974b14d192600512dbb98ef GIT binary patch literal 919 zcmV;I18Dq-P)Px&QAtEWR9Fe^R!vA$Q4~J+-5F={2V2y}FsNCWLbOP*ABu{iMWG-BrHg*(msYh_ zDB48@fn#H3V35R+1R6#J*&@jFDA^}`CpcED;d-!tCuuF_{@5D+U_u}`qF zIT%eBX*F zg-S*mi4CE6P%RTpZq%FeZewsCcO1-WX#8^u-nLrDu@7mY+P6e+0}=>zUAFpl^sHR6 zgg@^U{qszNn{Y(WDFcLl&9j$+W>f>ZKktBY)XsMVfR!I{1lndK6CmzX2#kOKT*Yu%k;$m)K`rVSfH7E9WTID_Xh~vYOqD5JBxa$SYf_u~RW&03#pje_p&RVk z=F{D5`GU2G3TN;xm!TvM|s_V z2E{(-2Q8NJ$#KBJHl4e;&+#iDA2d>Fs>x?(lg(~%?C3H2f`Y5_7+@!+!WjXedCrhE z%5M*u>}zxsZ;nws45GVM5rsC)3%%#&>}B#mBbBBa4HgtL=9^8wj`X2^t3+4xWC8>3 zb!NPbGGHF!%W4j*`z!L@&E#PD)D9q~&F#5s>?6=S7ady>rp6+i<7Rd;(Qg`MRD|Xs zbET1r5-!qUA#Nvn1;ubcB%}JAS`A}ET(zhACd2@xogIvin&)X<6aaESUpF+>Xs{5s t6TK3{5y?=Wt8c002ovPDHLkV1oKtr9c1x literal 0 HcmV?d00001 diff --git a/app/assets/images/ci_favicons/favicon_status_running.ico b/app/assets/images/ci_favicons/favicon_status_running.ico deleted file mode 100644 index 7fa3d4d48d43f7ad2a4d76dd51edda2a863904c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmb`IeN0|%ZtZ*BjQ(Lv_7_4ijDZA%l5K2$Y|a^V6WpdUMR3Uy zGg~@9Ajr1xF%xAUe{6u?fD(x&&P;I|Er@)ULJKV`jE}z8<2e`J%j@ea6vrcndwcIa z=XdV8=ib9{arl>zz|nv1%Lh2_VUFW?6ddB7MWJ!_;oL@l&}@l!*phZStVy-Kw&b2( zTgtSV9=2=x7| zUJ4Wkb{3cq>pcg`ab!qKzA?q-!el@6Rb_>7)jm*v;>U7jJ#{D_C@0r*FQB9JK8%~s z)p9b-mcOTsa(`7m`Jj#i1_|=(~m{(zcAQ%a8)1ZEY$fx zcaz?SSolwrLE;&!4kU}TQ zFEG2(LO`FtGD-}*XSzPny^ue8qbQf7@i$k%L&i$UX=oC`a9)JM;>*ltFyN6*L~Vz^ zD$wNz`nnVydMD|v*5jMbfW>%DTx9G<-ij8O;JwEOg)V|YOP4z;{ zH`>LEhDIsG*tGXkD2GMZUNFJ<-tLBISY=#~uf8|*R#Uy8`z-SxuY%3S8gX3V61#kv zO?;A;j}Acp*?nPotUy&AEuV5^fu?sQ7O#!E1Y) znV$czR>hWHN6jB>I>hd$vJUSF)hw!;RL6|v;#I>1RlI56^(gPE*tGu_10a}(p|yBF zILgzb-$Mks+D^g9#iQW+<4Q!VsAkdLsdm%e4fT=~wr}E>YS_p(X1EwX@%iiU`zM*; ztlhP$56XU39jaL?akmkhzKAooMzReUd)m7!S-I`Z2Z{qb3r(FP+r?UC|JBGo63I8dGOMslYgro1<1x+D0qAC!|VC9g6+$QP|#w`W2{l{IwQUiFmB z)V78iY0~h4KHKnCFe+R2f!ghFyV)C6c;Ye?efR~uUi39&9lHTS@e&xTMVFST{>>kn z`<&15fUfKf{3+!5>edoI|ISTaeY9&hI9H+OY5QCA117;d5>oF+?wj&w(zNUKew+6A zEwWBnn=%sOU!G6U(@~EJ8E#*g9_4%5Sk(HY)|LChj?pEp4L-x|k>^)y`5f=12;CQ^ zep*dOJ11m&e$(0za=cC2b$Y+I?eagZJpXa3NOc8e8>Wm2-Ad1H>JRo10gs^?)EDBg-~0_IqZYk;h|g`JJx2eCn7;v5Zwmz0P8Rcp-IE64KoP^?0m( zA=lf?XL~zhU9Yze^}B`K=?1+y?HB-;2qA70EO7Uu#DkxUgFz-7baKm5iY+RNDD)us sQ94mdQShTUQ9UEsgz{J^$0af;=}hc|!4g@9U=W7D&twK>0IL-I2d77AhX4Qo diff --git a/app/assets/images/ci_favicons/favicon_status_running.png b/app/assets/images/ci_favicons/favicon_status_running.png new file mode 100644 index 0000000000000000000000000000000000000000..ff4167c4b20a2a95106a92921c78fbd94308874f GIT binary patch literal 1077 zcmV-51j_q~P)Px&?@2^KR9Fe^Rb6ZpRTw>YW_P-EyIV_zlD47*DS;5wu!$mQfEM+E1QVl@7-Rf- z5G5rFzVQGt;h_NySs#q?!6+uAU^FIBg91v7@h8z}5Mc|3r7g?0Wm~#!8MiZYxu@G5 zCR;mBi*NROn9R(*-~G=0e$D}AZ8ih58JNw$|2+fZze>P{S$fuT@GZDL-~fO zz8_7VU1%3XyCY?yp~kRVmd5qOT~XA247-2pB+S{Axp`U$#BfF7;^vV7Ig3So5Hk%9_}5 zs0%};%D=LZiumH{T3uaaX@6JhvA_U0=Nz>Ss@we0N4kR`O z20)VGoUc@)HWT~iTpsT>pCwMW&<_^ z1^@?D^d`yp+3B9^NPC*jyVo2m_5uGz!a^M>ZVP-Jp&=ucKkHdlF?swr;~#$CkApwu z)aZF;&x2roJnViAjM$1lWHvYeB`owNy_Sz4$868h49@r7OtBkj;$==Wgk|-W?(fcC z({`lj^v|ce9iXaFSjg>O>o|Q4uN+AG2Iu~5Ep;wkcjXG`9w_J#I1(5DC6%g1VIjAd ztf?-7N>xukd*c2YJbcf13yp6(_;Zf*ZRvXG)4%}eNlB%uQCLa=7tO7}2hT6W+9ffR z69m(~ds72i*Uu|$$C-?YFaH=){^Gr_w=KHl58ZXU`Lgcq)SGaewr3xx1-ad81EV&` ze0kFb8;&*il2%qx^p*o@d&smiFrxPz-`aR}+5i}E{oZpQNyz6YEaZ05>%SRqzVq`Q z``UHOln|>=ZeQ{neWoqPbV|IO{DP9IZoBHMKl65VrLHyB7?VoCy==JmPxUEb>Xijs zURJ?dO2N54qYTiIR+LoPMqwehlU~ViBpJ>*M~&UihGWe|MRXU_Ui2{m)>sxe;<|w6wSpi00000NkvXXu0mjf8`chd literal 0 HcmV?d00001 diff --git a/app/assets/images/ci_favicons/favicon_status_skipped.ico b/app/assets/images/ci_favicons/favicon_status_skipped.ico deleted file mode 100644 index b0c26b62068063c7d9a343be7d5d2feef25a4c42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4286 zcmb_eZ%kWN6n_L0KhDJHC!-{8ukUp;`oZwcpw5I18sp?o+%USi7_-bROg9r_;)sbR zCfjh3vEbse0VZaUn3$-El86opT?~q4!fRgNdxh3<$*=d_ zKj-|;pL@@RPbHH{X2W(I3eLsAz`#?;opih1`8jQ34#k0TfqI$? z%>&A{;+c~-HZ}~J?1CMk!A3;D+2m%hPQNhTBu8FWgL1S2CO85>fm6buaw?PvqtO|-c? zAO7dALD}ifzy|S??Pje|8>l`Y|Lku3LZjSt;I6D(=<>0c5l^m0YnW5!cQ_mdiUXcm zHrAdGlBXJl{v>np?{9)9EY0%2e7gkvZ3)iYm}mT(o13}l!SDC8J;TGpkWQyzW@d(s zM@L5u^=bPIuA1>%zkwRdchV-~ZbSZ0B{=?dkm;iPW7Z1cCV8sW82?c{zok*?>mJt=iFI<6h2X0GJ7WXaWtk>|LO~JeM z6HJco`~PiJo9N9#-`%LA*m7O^iSN+FoBY0m_(a1^{=X9g@vslRzxM#__Wqpra5uZ? z%_86F?Iz#(JF=YRH}N;u1H~bqT+n+#Z`L+<8^wK#9dq9(wPyTpLGJTLe#@zNhFi6P;y}3|opdJY zUeMj7`apGv>Lk@_I)}aZHvDzJPr{gARC(22XoM2J9rKShhX2^eP3PY7dceT1+CgWs zqsztYAY1hK{r&)a^{Yo|_;Kb1l~dpIH{~GznK?KAVLB(bY6JD97Za>TooSkf`W7FY zx)uQ27hw=TNBdi(1wE&BEPRmoR;UVrDc+8ah_&HcyFsX1`^Qus_44m0nzVfS?}K$Q zt9W=$(fXr)TkE1n_501n))SE$RVJ%{ZB7wRZj_kGXy-&*Ae<#f=l$q>&i6?xtA2|| z{3*Q-!4?Rq>pS&A)pD0X_RW<)caqVsiN`_?y$-Qzxm~}{Y<%dg$cy?MSdT|)&GzP+ zv(|>+%jTa`D7U%x>*vMF#aKrE$U;iLzS|hEX7j0 zmhZRlM(}S{2jw(hIofxyHuj1td#EOIx)51)FXrIliD;=hpKmWzEUXLV^Yl+% zQNA+TeKj>uESCFau`&?T&gc6rRxjTZjxGO@?|!p=C~p_5SMQpw>E{5rGElgEkmMdk z6hnk70xtsxJ=_)=utz}&K?Na#=s`3fuu+`oJtOQxJk!8&Wek^l%6h4+XxT< diff --git a/app/assets/images/ci_favicons/favicon_status_skipped.png b/app/assets/images/ci_favicons/favicon_status_skipped.png new file mode 100644 index 0000000000000000000000000000000000000000..a9c36464b69a28c1af0634b03f4ce6dbc70b0c6a GIT binary patch literal 923 zcmV;M17!S(P)Px&RY^oaR9Fe^R!d78Q4~It@ez|MK|#d`8oNr{R7%<3k7$j zbZxioPP(=*E!#J&;9PX5oua8 z1I-LHGw{D>K>1e*SX^8jP*pWisZ<8=g#&>=K~a>Qcs%|Mzj{5K2N3{}va+)B48PL= z(Aaka0sI(a^B^~yNF;K1=G_Bc`{{H#rtA7VK($~nX!Q2>s*y-U+S}U&U~+SFBNrDJ za&&Yg#bWUmRz_A{CzHwdPK-N@os;$2OG`^nFt>n!U9nh9?d$8Sx6~Xjl}fU^yITPn zBt-cP5-;#;aMCvcYvxE4f@w0RADBO1^l2Q+xH3Hz^Seer_?WZpS)_eYjuNof~zea(sudnm$^R2C|Z|U#r278j%66;x*%AGQ)?3wVldmg>xGPm(Sfo*G>!YC zHnFuuAVMht1x$;(KnMi+Q5$Gu6dK#w*xIC|%5wn$cX4?$JE!-|I-A*o~9^@Aw*bI5+USEgY2#J;2c~uUvEs~9ENh$ zTyvjy8fP<{#$L{8xI*|xILEUwD~*f#GMokr?=alv9IL_B@QiTk7aNq{I0n@>?NHQt z5c1l#3Ao2Q4GUy0+1F@zawY6QpNU^zqwd_+1mS956U_T&L2nFs@4&Y=@`(*bkx+j| zqhaH6Z6Me+h+Xkp0SMxP9;}AfJ^lwAXx=1{cug+H27>zuVqf~}D-A|C#`v_$Zv%D&7!E7cKE?raL3}7#Y98>8XF6kiBa?l)>V2XB(+ghRJtfnBAMj2_ z{x0n8NssZ)HSVI$T&1eOdTRaw9RJAz*-i0q$9*fn*IVG7#2oVVhL0nS!7j(vLl=g zSRb%Pg~MkGeZ}jled5;h#gblie!B+RBtBwa>u&~(ZBEOJVQs(~g?Bj={@P-A%2eX} zm#!6nt`Z>Obfu)zJu?#IKYp}zS3%dnfYfWXsPyiRPi~QJ#k7Oy`0eP3Vfk=MK8Q3rU@6VWq z_{I-1u*rR}>s&It+sJ6%VWb9O&qCj^ccbt01)nd-Z^XB&unE4&;*#(;?Cu2XMKc_1 zNm#NC*s~BDdpBa^(B%A#7MmuqN8e@IoYgAXfN^NQTNm~|V86hg^$?r%ZZ6u7PI6x; zln4ATCD@0x_@?a10Jdxc#sPDII`K~8yTG@J^#N-X)=8|@*e^1ivE;4A3cPc5zKko+ zOd-V4wIu(f#?VK#*m&Bf9uKpVkMq>9dGlR+2npv>5sfN+a`9Z&+C1gvpk$E6EyGW z7n%Jtae6XJ9%~tP2g%`m-#HkvKPhG9HJdsxuhzj>hDYW7#b(AjR`Yx*-$()?|v^BzhA`MhB~k2v*|o8kJ+~H)D`zGsXt1OGLRPIH(W_I7ZDeJ(TMkW zp4U4^po8+0oyPx&&PhZ;R9Fe^R#`|?VH7_9{cnzr<5H=WgL^&XWVSC8jR|21L808qo$ zIXlimEz{80m_@6!R=3#3J3U80Vs4xwj-W4{|JE5CM_3;P#Pra zLJ!Q#rPlZ~9=dN+pL$ziU(I=T*HK0It&3)WT)WjSBM|C|M$0=!4n(Nnk%nGRKR{PT zrHttuZH5H|!-m)ugz*|xw$-NcIvAYx+PnBoz#pxGHOI7Lyp3Wy=Bjm*tguT*7jFe?{HjrIjDO@}GFZy;AFJU!fi-?>fy{e*;CcI7&tq6?Tmm{8 zATx!n*9>5gWPsqPX%TcTJt%@#T@A3K>eO#4I$;u+Ba<-@vt|G)!*Me>=iYLzt{lqv zyt~Eiyt%Iv!UGI&a#^1H)6f&`5JHUN(8>5O2E2kK<0(iqh1F+46eyfnx*g_(C#aFT zotLETRnI(i@Lewk@@Zgt%>bA{nn7VI!x;=gL-tlg&4Kw-WF(S z1NBZv1}+wJlxZ{^KF@G6tQGs^@A7~H#Go8!$;&>!0H9^Q#U6)BrX<{I9Rod(Ha!*i zYWC^W{Q)CK=WYEx{UDOnO<9*3@tfZOP-(4Xx`ivXrmKGWjSmmyh`=x*A!G)(JJK9B z+@aUSP*8n_4MvX6OJ1TK6u+8qP-Xa6U8#&6#>Il%j`TYCA5ow>=QwKE?VRykSaTu< z6*XmD=oq%}mjKX^WRoavHC!yn?MSc4a7Z#Z=e$+!aPGW{4d?0D{r(I7Xomj>W@SqN O0000PT|r5dphh5AB5{Grq*8YI}&#Kc5! zA4Qs4X-bRHpfSb-jY>lO0c!lCL5q(+txK0mOS@%x^f5D^=iJ%ZOlN0yr_$4$o|$v+ zIo~3$kizvEEVmP%VjtP>} zB!@)|$4LJYt>3ojxa=^72ErO73@lB+xc_rt+jl_Q0MK$2sP2W%YqV#M_I8N`M(*5OH~CxETr${0+lNm3-R_NrruqK~n+9|L9#PuM)=$rMo01)XYf z@v35oVJBnnI*|t<6(9WpwEqCGbkooUD+XDI|8o`z+`@OO{tK9<+j;iAG!AflEWL>9 zKt4=)9~OELbjQiB@pszGv!x^75}&0XW$(k>g1(F6C|eT4#fZ zdsGp8HEJYk4jJb14nx*#V!DvmY+bpw#D$1^6yIe(`04~ILLJ6mO1}=JM@PjQ7Jf2Q z$ZK$X?vs@Ngcp7|hUU;geMVyU5&kY6H@&9IoKDd9Q;6if3XnhdYRdnV8$T4)KUMk+ zQ(|-OZxip(vGN7RHxc=<5PGouxmWYNpjf+X{8jIxI@GD3&EYb3+`?vj=4Efrpt{F| z?$>-Mv>^HOypa2NZW5_`v7@F(*XLn(6DH+sV=K?j;^xQ4rCs-L{xv9u&+~$37S(=G z&>RcJ^)Hpfj(T(6y~M9NusQ!HGEmq3gKHwwxNg7c`yFb1R&Ff4h-a3Jk!CmNuJjtl zyu2Ad;=(5UP(unD;jemN1ZD3Uxb;K-7`$-#$arRD>%Nb%nextjZ$38Hp0RDNY#Nm@ za2@z83f%{eh35s&tnAtJaosI+I{T>JmCOGCVYlVuhqhkKVcRiq9r!HRC*Mh)x%_Q% zf8ZX)eUf`M&x_Ky37Q=`&6`(jTwAJ9R4M&*{?ucXm-Dgt{)HYK&BNz7_&)HRT=v#1 z#bH{t&3^mYTv0~Y<(;N^Z4`Idm~N?b8t0VV-q^}>bDr3C9c;Ps`8nC6Ds~%KzQ@3d z*XfSz)KRmC;y<9L+?dXH^_fc_sEuRr0t_kOSU@RoG5(=PXXU(!^cx>Dt3t;o@tsdjTl-mC ze`eP0Lv0uxv)2nrwQ>BjJlluQe_zPPy{2s%`^oJ?YaH))@AG@H&+0?xezAS^;n$z1BVr%cEGibAXQ0=!&-DT^8O0_<9S*;u4 z|K>`9+Bo+$H=|UmJ7Z`YM>9@+&}Xe_{D`_~{CLp)Ui--Yq}DWX$ZO55qls8clc}8k z5?xAMinJ)fkYs@YVR3{c8S2E`5Yog0#1Ud5t`pBQ=5pf7h!C}s+Xrd~Fw}1IForOU MwB#vFA%hwG2hr)3h5!Hn diff --git a/app/assets/images/ci_favicons/favicon_status_warning.png b/app/assets/images/ci_favicons/favicon_status_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..6db3b0280f5bc15e52f08995bd4cee8d8cbb91cd GIT binary patch literal 830 zcmV-E1Ht@>P)Px%_(?=TR9Fe^R!wLVQ4s##ZnbFq7cWLzq$*7hdg-C2p!A>>5qj{VplC&J(&AB6 z6!c>8C-Dbbico@h2t5?U9@K*utDp#?)IcnvsIh2lK}E&g9cSLUVz=44oAzdg>`vZ$ z^JeDFo0)Hc3RNOdi9jU+|9b?~Oa*{0VL2=`K`{qn%-=H~!8$xpExZyy({g}_&7`oC z--lU$BV_C+WsHNIEKHnI9e6Wo**_6>%qLz2TV+Aih(&ca>UW!{-2%+70cOR3uN;7n zPdEkxK)&B$Cw@ZFG1ZB)VQmD;(FJUvwDF0q#4LK&OXOHIC5`8a2DUl8kNC-u#G_o2 zlWXHwS6WmYp3?5bMTh9#5pjShjdNw$mpiAFdZQ9AL#p14<>sJK%OWx6XqU zN12y?p;SDI1M{?gX)-fGqK9a1RRmoHEh`$4vc7x z(q4l~Pz1JK*JA&CeRynhd(MZy0!B3mut;y8iXNQ-ZtVkv2hms#7<(b5baOI#1#RMa zZlgUg%mdh)Gq7-VX~{I7iCZRz7wB|K%iP`%4EI^wSL?z@KvXfLYE--1$rkumiqvnF z9{0->?u&8R-_6MQI+6n}p3`x>98?%O>R0WKTQfk@2|&1?KEDEPwAmb;x2VEN|8nTD zhEzc{0T%m5Dae^T_il)&XPL!d_JuBDy=N>^1iVd%qn%;wJf8LfeQRyxt^xM9Kg$#T zNW#gTXPXJ%iv<|e%#q|$aw$?0dYe2>8d6o41{Ue<(q8}mB9c;*Y*&iE38`Dct`4E- z?H4{R2SkDXx?xlkU|~Z^e&W*Mn2$=GbFL0@wE89CMBY!o0ECXKRt<{9 literal 0 HcmV?d00001 diff --git a/app/assets/images/favicon-blue.ico b/app/assets/images/favicon-blue.ico deleted file mode 100644 index 156fcf075881c121ea364095cef181e5cc7fd285..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5430 zcmb_gYfMx}6rQ~c%YutM1YDMdU18zwU9FYX9XQ}0pZd^^HPr{kkb}VNGRJgA)!17 z`Y%I{jno*=ZcMt+w1TH7=khF7hNz$fe{7`NLWf%d%W4h_&U+?)4GoZ z+E6ag=E4-}T*K2A;G#HJ^OElG0|G@%$>M}#A;3W!rtVtHw*{8VsINOB&}TbvYYgZE4cvq^vnBj_3^?R6pc=yoZO#iw* zbQIGo+l=m^nG82lADYSL138uE-ne9kBPY2rNbNaSG#saWkdyof1^bMT?Pmjw$4?E6 zKP}g}>mN@yo;(4foSSNjnEIAEVy05B98WWaPk+-KF@x!!Zz7~+C?QQILL6a)RH_Nd zSFu@FAIDp6xa87fLYPqMsxxMQ4+Ft^^nX8^K()4LQgZ2@NtQ!ejXLE2w(rfJAxdjJ zlgD3px)Snwxj?_p=d0plLj0;@-t77_m)>9JI170CuiZxff;zfjoMDwprE-_2opeh`h&DiH zUy}F<*0)>b;2Ua{xCUxsYaJF>L!AL#!vULA151}C9@B*cN_Du?PFsm)eMsVWTlls* z{&a_{7K`&_{^z=M&!CRi9kEF@^oK(JN}?eIkKj%}Bl>k4^;@ZMpPd5_b_;FifOB$t zEp|?VchPzdH~_=WfvaVLBQverxR(upgZH;=f^kFbQK1EWquegFNqdavfVi=J?QQR1 zy=xEfJ=_5-+LRvtN~FIe?K5RVp!H+hcJJ+`P5Kj;|eJ>W7sti4t)G`=x7 zW(tcz&2a(irp9k&zZr(Z_7>z5zRwQ+SG>4(7KgaJqkoo@a+}ykU->gkI|9_4rsUlu z>3*feNOva4C%JEF{jiSzyN-&zahJnTCQAtw)ZjA6>K=-H87gQ9AV*qj&x?mOmk|WyPC)RDO+)|Xa7=8mf7giT*C(DKP66Qd$JDh`taYzlbp#k ze{(WDuEHPrGQ)h%lO5DQeP5tG6GBs&e`vWs#_(--c;$NPv-t)*lVo_WUAUHVHCZXO zN;_z@xa9arMN8q(vOGFE@bU%Y0nP}-{)WUBDQpP3XrLy2FI9KFyJ-k1LEq^LPcdvh(( zb3O55v_UaqF5kj9&ABPmqzmr!{|ZBh*5Cvi%pUgRx&#|M`A7Zv5lQD6{!*spvNxT39!hufLhi*ZW&T3sa3- z?P&=fzn6IP=WcFCYFyE-e(^=_=IHZHl(r0|w8=!NBaG5YHKq9~{DeTC6Ed_3KBYMb s39BU}C?7v1$Q~RssU$=#$0u`S0nnrS-v9sr diff --git a/app/assets/images/favicon-blue.png b/app/assets/images/favicon-blue.png new file mode 100644 index 0000000000000000000000000000000000000000..2229fe79462352e45e86a52c6c969647db689596 GIT binary patch literal 1522 zcmZ`&X;4#F6ux;`2??@`AwUT6z5AXlVNqE`r3M5shyfL(rC}EpSw&Q&5m19-L0$OE8+^U0sh;gHe5c@)AZ2Z|D{c+EC&b{}$^UXQ;tB8(T&Smr1 z003@8xI|_`!MDYtnxdp>|1A^HGD4&w0GvN$ZcL(oJ4^|eNdee_0-z`dz+l=^=m6L% z2H>q6fWTS+X6MvjS-l7VBq@4jY^do1UtHnrSM4aSbn-bwp-|AsAxt_>p&$TIu$7~j z^rb21Sb1331#oSAEo}W}<3&8rJ#*Yk=D7dlwyZ}Kc3%|QCkpLnvg|P#X~uD3v3X|Z zj&^QxySbURZYg%6beF&u*Tt6vi_W(rs)h0jb?^Lf5M_CO^M|ki4}j9 zB`?B?7wPC-EX7Xg& zb4%LL(hjDDHK7?I8i&oS?d^hPc1z;~n`>Ni>hPL-?&^nbTWZ{L>kx$Mw0?(6q5`4P zZ2co~^<%vLiGA>Djx&ZG=z^*qjtfpVw-Dwxhzc9&oLT&s9K3PZY28)|g4p;h!)qVl zbq{U)!q^T1Y~K~E;u@PLq_Nn-tZHF)EuGEbMWzuahj7gcUR0*#ya1x+K7MS#+G{b( zmWP#eV2a<^_D)nfWA0j&XzdXygN4S-pfN^NHiOCx_>O68n*rahC)DF;#SB_ugjpoq zOcHhD_^DB%`aLWmVKGS@{eU-)z=Kn$at4btVCxL<;52dKCAOc08%UT=Vig9WVT`DK z1B*ylND{~2;D4SJ6_uALdItLM+8dpDyu^*E z>1R5%TE<5`hcz|DmPCiIsH(3%hCCl19z}@XwVmR^;v2oT2BX9J(ln#AVQEiIw; z{f9Rp$o5z|Ti_iEmz(vh4qKx^tYh|Q9}b4_xzg0_9$8hjD$m+q9@7|xUN%RNyjQNW zDo?3w?V<_O*~#jkm-*W(6)D3P%a!r*)PMzTS(frmOr}1%v5=`jZmaHjigjB`%bbKgnWhc$4WoHv!jN$T$!AvpvCZ-$lMZa9$DK64aPybm@x3A^K zh?#dAf@Z;2H;1{RnenoQ^PpMo8rLnXs+?8krL4Q^Ai9u>OG=*RS!Ul%t*Ue>TcUiM zaG5RY?cvpen+b{=2_fuGN^k%@b#np7U6=AwQ$lBs>)YGogA~XoGiC2c#LBnto;`hf z$-GIvZQX0*_3OcXIK<)nw(QBF_Lc|gI=%G6`bC$$f~moF8R^q)&tGf>wv}fs^l7i< z>6e~g?b~PJLSdw2+#WL`4EL^9txk6&?ar|;vyW?i@>Vf;Tl#Ex_8&r4c4}t&_Wvg&We;SS2p}RfO49zFy!2m?`$ob5 literal 0 HcmV?d00001 diff --git a/app/assets/images/favicon-yellow.ico b/app/assets/images/favicon-yellow.ico deleted file mode 100644 index b650f277fb66d6193e27e1f2bfe59f751159270b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5430 zcmb_geM}VT8GrRIB{5da#a7(eot^!faeIy0=I+uqHTp->f7)CvX^b_ExtJJeqvmSW zhW%g>?@J3xv3K>WD6onWRspw&7A(259-_!e!6;oR7^MwRZuvM4cLv`+&&Pc#Tw?{U6^#nzqX;)X|51 zd`+}5%eu;>=lGfL*ed7QksjfSNL}Y=sJ(iea({ZL#ap3{KI}t`vv%Z;Bk$OEkz?sw zht>Ug^ z=Y|%KbvyWw!vPqfCC+hCoDdqsTNv*QeJPI-F}A}aTCBPT+@FUPZk$JGS{Xxw*qyVj zqLBaVV=Wfr*#q~J;@Q&sN<7X3IQZ~mnzOy4c=?9HH|)noD0k$)npt*VyZMbR)d}X< z^^co+j16LP))juw?RFE!-#M&~lPT;RTd>4EU%x+CUjjbBjp}ftUuP7YX=le#&Ak`x# zseWUbwQS`=z#uO6HK^M6(GQ$ReceB|?hksl8B#Dz@JrRIF=~5Y;GE@(c%y1($--vl|oSKXO33i)0@Z8mlF?VP-;y5(MeHHFZF|N{~H-!t*knlHA za#TVdJvI)xpk2-f_9Kvgs-`G^S){@RamZ0Rl$(j~dHQW7kq?AsX&CdgE2!jQ+reQi z7ugO#4udst2EUYZIb!Xlk&@@pNQM2*-rj{=Nq1PdERJD*hx-b2lswM9_b*MKeK(%R zaUVjEg8>UMQCmrO^S6q66V7ugom4)XzjMW_A+a5JW-yP#T>^Pl(YBw!weQgMv5r2> z(N4S*F9IH8Al4m{+HFOh@|~1QCza1q@X02jQTj}15ha-i@3vDkUZU=1KfjhDHarGB&La@m@~)|6+|{B}5J%T?(#+`FS%9FD&+2Ip(?DL34=mOWib z`b=>bwO1;8Am7IjBQ!pp19HN?jJ{SkdnV_1;e_`LCco~7!g(poUyAQF>Y~AUa-M>- z2G138%68=QByIKXu^;~YDGu-sh((Ts`G5vrFEug0sauO{zbvnMqtGyW74|6+2l}qF z%30I2aqUb0lUAQA8A{N{al6jIv!KpLEm5ms_S&*7m79bRJZE@b)V_GhpNF$nrCay- z{4MX?Nvm&pr#Dd_*8rXy{+#YvP<2o~NGmDk`e#&f4U`|A3e zimp>TVD#&Sbw@S4n>8u#W_m5is`J~&~`681bk23z@P+PSM^u$7G@=_~sH z?{`@x<&7y}m01d#*cc`nj<0_h-~+--{&c|(yZl!^wqtiM;HIpe|#?XqvGMC>>nSb>>SrC0(oP2ZKRk_H{*#>!`LF|E&pkZZPHdoywsvb9009nP>8KO}w!!m~aoUo_j5- zp0Q*-cQd|!>-Dj2@!oAS@~Ca-OL|Xd3m$G(`;Dc|JFvsZpQ+9H2l9t10BZ^Sg7_&2u+d`mZ;dnHvo>$`K;h_`rq z`%_`(;xl`DBSt>6w diff --git a/app/assets/images/favicon-yellow.png b/app/assets/images/favicon-yellow.png new file mode 100644 index 0000000000000000000000000000000000000000..2d5289818b47e3da5d8902302d01024acd26c7d8 GIT binary patch literal 1667 zcmZ`&Yfuwc6kd^PQK?i#F`MTm*%c8D4;=+M6$eDBPz?AeDhd?QR*Pb^LJ|l8Q4tW) zBG6PN1c*X-iGWDZk*81+pdb>F0zz6T#Dr(uT_#SfC&zyVR&)3Ux z8EF{+0G8f+Jh%kY7uM&CiRd9qY9h!y+}+0=0LpGI$AdpxxD4IH^#Oor7yv{G0Duxl zqQ3#)A_oA*P5^*QCIGBEC#l)*1^{Nwe)|GEiGtbLS(!|xR4V(TX&OFN6TJYHkoEV;R`Q-BN*0#lhtudrWLFL8ynD5MWX z)80f=-|#5})B>_f2+Fv&GA>sw0M*3)>^9R&{&>8daG%wf*u#{w1J6OUN%Ya{bX`m#QUwmo+9!4*UaBX2;c<>RsiE=2v!c`3ItOix#8>Q%Mb!NVe5-dfp`gmJ%tGg zUJ4ie09KqM;|*b06@pd4^F_`T7i?;y$ap1;S0gpiWM$0P^-&bO9KmW4{4r85ptcJc zn8FULL2!j_yNJ;f@6eS@CsG1k$&4P+#{Ogmq3utBv?**tf;~g9$A~tCsk^xWFW*YI z!b;(Jg{|&3bLKt^Er8KHcmM-nInb*ZlKuf?e8|RX;F)~3K?dnEAl)yFnLO5lndb;v0Z&Vrh6j); z4s4GDr=(2uF>F+@C#BH9Rce1C)gXn4N6pDuhFoYoo$*f^V^+?_D&c7v%kUf2Dk4qi zGSNx|t3%KdcuESrPN4K8P$s3!PsQ+GDRgZzeNN8)m<4^zgl6)XXgM;K%T&iv)MC(( z17SqRl*p%t@X$5-&~@5mE;N_N(%pt8ZZoiIWKsqh?n9HgETZRVG5j`>+INMDDqy3G zJ$92Zmdcouv1W3ZhF_r;5y_AR{UIiIiphptruGJXG>L99nf7)jejr9UnaB0@Cm5)F zQB!Ng&5Wq;(SwIeYb&eA^*SBwylHb%W?K52f&Ts#M$~2%imnQYJawk&MT36Q+)O`d z=8`SR-kFW#(!mib4o3=FRg<$FU4acvL2eaBW93ep{PA%)DY<_j%`B(`?+V%6Vr+3- zQK8dUuedgr?5oAKT&e~|`{@-ZT77BOD6ng_Jwn)76tdULW1R8yF-Rm!dEP#rONY%Z zEZ5Q!GrLw1UySqp|J+7rQ$4VEIM^jFm zaO(wl6HS*l*t}85O$l=<{p)vggE)t;o|C9maH!1ev#hJjthZ%Bp31M5H74=bU$6l0 z@YH+z&g5D8FL}|d^jrHt65P5t;M|q~bNNWNo!8=qfHLiY(6j?>4n2zw)CbDFiw>qf z^vO?s;&=D(S6h1{cIF2&FAP*$l;yX}PJh9*|NTlv(v$QiudLVFU0|c8OH%TiRwSlwSQYWH z{_vl`d1rS`LufI6S!#~>CW&H-o?Ag5?wA)GyW-S!&*$YS0K8WCUb1_nw(wk>`5cfz^l0C2F}|GL_6@NSscp9D`KjJKT4vyN$~?){X?`Zx(A+PR|EEEf+Ty_PQ;P zaNc_3d6b=a-RAO`kQ;Xs{{HA_YRcEWxWB0uE8m&v}#)S literal 0 HcmV?d00001 diff --git a/app/assets/images/favicon.ico b/app/assets/images/favicon.ico deleted file mode 100644 index 3479cbbb46f60e2a0d1b830d07e4b9cdaf8180db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5430 zcmd5=-D_M$6u&Vpq4;1$B!p5-DVclM7ykfXl5SEgVq<6`NGWSS(%8m)HK46&O^a2j z!PpkmwIY(E}~_!o%yAbF4?!6zy0W{qL4^pQ+`x%oOJ5otkonvvk7WkZvS$Vy4$dv8>|L9)uON%rzhZuO8QX)H%d_vGH)uQTNX`mJW_Wl{ zlCz_$dB`lxIYK9Hy(Kv?u46GPftCxLhF+h|^{yq?9vpfn)<7|wfqhJHknSDe8DJV9 zUd}GUKWqVq;uij4Z|wb3aEiH$;CFqI%^$#zVtfU1@j&`)2RL?v4t`5|}UQ z^<+#ovDQR+M2_!;_fW0{re$u`7F@N^`z1&ZbE5zUC}+c}o!ZCT1x0T}&Ox>dAX`FM z%Ka_ob^zpuP@;$Nec*S$jekr!L3-gx@_ooDzFNPHI>!76Fs90=57|y&hhOd=L#IL2 z(=^T>2UKSofo4F~ne(DHL7@Ej0>Ko3@um8%U1ZR)n$`*h;-S+`s@1HtoY_x z!hWK0uu12dek7OEqbnv$SU<4qPsTs$LIb;PFR*j#R(RiErqMocvJXVfNTYV_#=OW) zwYjWD51b;mXnO(9KCzeC$wxfgn&RP>Bx?G)!!Fq?*aNCvC&b?Ti*bN61l$80)I^h= zu(*!eFKSLplIzjGbD~Cmi8-%+R+B8k8*R0?+fTtP92fk_pm;?M+UL?%@2!r3Eic=xC8oW4lyR6A4BWf zep=2?keqx2+kmuZPyRXk(DO}qXf$im{VUc_IlvyU?p0IVb99fLw=>>ZaBbuEEK5A1 zJuLf;V$S`h<95{Z>&8C`zH#vNqIK_JZnUTK;_S(qkNXL-48y(%9n!sAI14fcY7fzx zgW|wjf!2M)^X=aIbe6sakK&v7@dha7UdGV;5czlHJAuQ-!MlXcfa;(6-vcGzD8}`` z3Q(#```BN2dx*8^$JcV$`(o~;f3*7BS$7Y-Jh1`T-@rL=zX_E)17Gwes{;;se&u;_ z^(gPBv35FBl5cRGhxey*g?(3i(|#Bo3&r(I8{)X-TUWerHizLm=lL(jN4`J9p38TW zGXoD%X;A%}7d+tllBWeLV zzJ@oq_a>J1vOS9!-1Yuk@E@}evn!|_RKux;_<^+>9rLL5;(ZzT?G<96TGYA7+0gn% z9^xe*<4y+OL?659gp7`~sEOdWaF=HSumag~_|@4c{CC06fz4pFrXsLGO$_8CA9=47s_ZNc|b0GG=dnORVIu%24r9N+*!`R!BnH|v9= z4mezaugA{;-FhI%H&n$tzK|=wt$z$2S`WSZiBDaV>^}>6$sOSNNO?9g4yrd(e*S95 zu$}YqDMy4B2qi~g>pyp#XrW;W0n^K?mnOXog_8yuGuzBA}o+{>5t zCe@tL-=uXxyw%EJ|D59gW%M_kdp{R+rh$?g;n&&97+enkn3VsYnw*0keY?ZJW9ObY UJ-#T~Ug_ii)GGf9_)oh30I9}9&;S4c diff --git a/app/assets/images/favicon.png b/app/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..845e0ec34a513a2c35702b4a2390f33f1732d6e2 GIT binary patch literal 1611 zcmah|4^WJ082{R}Hjy~Gm9wc)@9tu?Wt7QvZfjE;rGFg4s%>+rt*}ZZDMXnq#juE^ zltaj$F|IResMA!}#Toh2X?M#?Y1Otq+xLET@7KwlnQm_8`QAUj_j#V*^ZefT%MJ|i zv9y?Jfnk`X*jE&cW;^OLr=w9+np20SahrwyLJX_Sn+U@h)S=Wj*dN1E0EX?^hhc*V z+Vcj(b_g)+?IsL!S78_{q44LRZ!wIP5V#`Ldw6(QC4lMWYdZ$q({c>4&%aefXoN59FS!ImH?Oza2fa*1>mlcEkcl$ z0=N|*Mj{r#Z6ioAfO7C|6}KyZ3yVfQkAe?U4j##Ys!;^R=1`u97w#PacY>|}UUv|e zO8d8+2QUsXat1bWVEiap0*G@X>q4OQ=8jpnGr=I7)k)`-}6u&m;g|}pQ+yla&^mj5H{SwY6Bnzm8ydlJ%J>qi# z45fkBVjfbD(ybI2BRG8$4uOcyQYsCpz`!mJJP(Ndj{2=!>W(}qXYw#WEs*h4CFn+w z8a<)hp{)QS%@MntDv#1Oj%t>oM$Mu+w@^8?NV;->ZWC2PWsU(vG#ErjDF8h-^VsGp z^eC??f&)U#=-cIzn8)3(m^RF*PK-m@$$H}56O)=v&Sp-NrAza*^}05eRa*GwdVE}IG11m;RW~U^zZF|75{52rP=?4- zrwON=X%93H=34f~)o#c;$DeL7PF|^*T$B5C62G_CCBtF*$(Z{N4!_&o%RbSxf7v?Q zKb>x0?P=_N$*vx*4laqhzWP$)q)Q=g$v=2pUjNi5_HaSFn~Yf0^_EC{ zBQ*BRj34u}_)X^*wMBWwT5k>un^U5!f8OtY>$Ky7mW?#_ibp}T)0!oUD1OEA$Tn+h zyRv^qk%tLi=Gx5?*DNzFTIJGG)b;%>?ko3z2Y#5cOo!zSYaGn>qez2mKHX4YQA z{TgO`7vWHS!D_+nYD48X|HVtwRu{w!s46k7-><2bHT$mL%gFBZJ5lOC{^1`tc_C?@ z9*u6APHgg?mDzRwoGe4Deh2TX~qpo?vl%|Y3v&=jEj`Sy&Nn9lw3G13vVt(kO zu%@CR*GmfrNV=t!S-YBlZhI(~iTqWM>pFQx3`VMVpf zvzFhu^<8j{w^!1_$imjL+-q%u#Ga!Ys%CAuJh`>$R%YtrO1B4ItvXjo$kJ`!yzVg4 z_ctDzq-{@nkmI#cuNJiAm!x!7wWw!AtF?96M-GcC{(Z_I7i+gJic z%Z{H^IZm8mX70S_Pl}!vT0d33tX5v!?Zl3IR3RyTk<^=|&!Arvy(XDfv&jX!)+_lt z`v;yGSWjNO|7zpiEVuVgzoZ?vgJwxWSKAY7Y4_3Faa4G(QACC-WbV>!GBjZ>0%teA zU=iP05bEsgzEI%4&}E*$#a$q1>@BbTB0wG=86B1U-vM`T%uYrDnAkf&bj5R1=3lz0 B24(;N literal 0 HcmV?d00001 diff --git a/app/assets/javascripts/activities.js b/app/assets/javascripts/activities.js index c117d080bd..de4566bb11 100644 --- a/app/assets/javascripts/activities.js +++ b/app/assets/javascripts/activities.js @@ -1,4 +1,4 @@ -/* eslint-disable no-param-reassign, class-methods-use-this */ +/* eslint-disable class-methods-use-this */ import $ from 'jquery'; import Cookies from 'js-cookie'; diff --git a/app/assets/javascripts/ajax_loading_spinner.js b/app/assets/javascripts/ajax_loading_spinner.js index bd08308904..54e86f329e 100644 --- a/app/assets/javascripts/ajax_loading_spinner.js +++ b/app/assets/javascripts/ajax_loading_spinner.js @@ -26,7 +26,7 @@ export default class AjaxLoadingSpinner { } static toggleLoadingIcon(iconElement) { - const classList = iconElement.classList; + const { classList } = iconElement; classList.toggle(iconElement.dataset.icon); classList.toggle('fa-spinner'); classList.toggle('fa-spin'); diff --git a/app/assets/javascripts/api.js b/app/assets/javascripts/api.js index 8ad3d18b30..422becb7db 100644 --- a/app/assets/javascripts/api.js +++ b/app/assets/javascripts/api.js @@ -11,6 +11,7 @@ const Api = { projectPath: '/api/:version/projects/:id', projectLabelsPath: '/:namespace_path/:project_path/labels', mergeRequestPath: '/api/:version/projects/:id/merge_requests/:mrid', + mergeRequestsPath: '/api/:version/merge_requests', mergeRequestChangesPath: '/api/:version/projects/:id/merge_requests/:mrid/changes', mergeRequestVersionsPath: '/api/:version/projects/:id/merge_requests/:mrid/versions', groupLabelsPath: '/groups/:namespace_path/-/labels', @@ -21,6 +22,7 @@ const Api = { issuableTemplatePath: '/:namespace_path/:project_path/templates/:type/:key', usersPath: '/api/:version/users.json', commitPath: '/api/:version/projects/:id/repository/commits', + commitPipelinesPath: '/:project_id/commit/:sha/pipelines', branchSinglePath: '/api/:version/projects/:id/repository/branches/:branch', createBranchPath: '/api/:version/projects/:id/repository/branches', @@ -98,12 +100,18 @@ const Api = { }, // Return Merge Request for project - mergeRequest(projectPath, mergeRequestId) { + mergeRequest(projectPath, mergeRequestId, params = {}) { const url = Api.buildUrl(Api.mergeRequestPath) .replace(':id', encodeURIComponent(projectPath)) .replace(':mrid', mergeRequestId); - return axios.get(url); + return axios.get(url, { params }); + }, + + mergeRequests(params = {}) { + const url = Api.buildUrl(Api.mergeRequestsPath); + + return axios.get(url, { params }); }, mergeRequestChanges(projectPath, mergeRequestId) { @@ -142,14 +150,15 @@ const Api = { }, // Return group projects list. Filtered by query - groupProjects(groupId, query, callback) { + groupProjects(groupId, query, options, callback) { const url = Api.buildUrl(Api.groupProjectsPath).replace(':id', groupId); + const defaults = { + search: query, + per_page: 20, + }; return axios .get(url, { - params: { - search: query, - per_page: 20, - }, + params: Object.assign({}, defaults, options), }) .then(({ data }) => callback(data)); }, @@ -164,6 +173,19 @@ const Api = { }); }, + commitPipelines(projectId, sha) { + const encodedProjectId = projectId + .split('/') + .map(fragment => encodeURIComponent(fragment)) + .join('/'); + + const url = Api.buildUrl(Api.commitPipelinesPath) + .replace(':project_id', encodedProjectId) + .replace(':sha', encodeURIComponent(sha)); + + return axios.get(url); + }, + branchSingle(id, branch) { const url = Api.buildUrl(Api.branchSinglePath) .replace(':id', encodeURIComponent(id)) @@ -222,6 +244,15 @@ const Api = { }); }, + createBranch(id, { ref, branch }) { + const url = Api.buildUrl(this.createBranchPath).replace(':id', encodeURIComponent(id)); + + return axios.post(url, { + ref, + branch, + }); + }, + buildUrl(url) { let urlRoot = ''; if (gon.relative_url_root != null) { diff --git a/app/assets/javascripts/autosave.js b/app/assets/javascripts/autosave.js index 0da872db7e..fa00a3cf38 100644 --- a/app/assets/javascripts/autosave.js +++ b/app/assets/javascripts/autosave.js @@ -1,4 +1,4 @@ -/* eslint-disable no-param-reassign, prefer-template, no-var, no-void, consistent-return */ +/* eslint-disable no-param-reassign, prefer-template, no-void, consistent-return */ import AccessorUtilities from './lib/utils/accessor'; @@ -31,7 +31,9 @@ export default class Autosave { // https://github.com/vuejs/vue/issues/2804#issuecomment-216968137 const event = new Event('change', { bubbles: true, cancelable: false }); const field = this.field.get(0); - field.dispatchEvent(event); + if (field) { + field.dispatchEvent(event); + } } save() { diff --git a/app/assets/javascripts/awards_handler.js b/app/assets/javascripts/awards_handler.js index 976d32abe9..70f20c5c7c 100644 --- a/app/assets/javascripts/awards_handler.js +++ b/app/assets/javascripts/awards_handler.js @@ -11,7 +11,8 @@ import axios from './lib/utils/axios_utils'; const animationEndEventString = 'animationend webkitAnimationEnd MSAnimationEnd oAnimationEnd'; const transitionEndEventString = 'transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd'; -const requestAnimationFrame = window.requestAnimationFrame || +const requestAnimationFrame = + window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.setTimeout; @@ -37,21 +38,28 @@ class AwardsHandler { this.emoji = emoji; this.eventListeners = []; // If the user shows intent let's pre-build the menu - this.registerEventListener('one', $(document), 'mouseenter focus', '.js-add-award', 'mouseenter focus', () => { - const $menu = $('.emoji-menu'); - if ($menu.length === 0) { - requestAnimationFrame(() => { - this.createEmojiMenu(); - }); - } - }); - this.registerEventListener('on', $(document), 'click', '.js-add-award', (e) => { + this.registerEventListener( + 'one', + $(document), + 'mouseenter focus', + '.js-add-award', + 'mouseenter focus', + () => { + const $menu = $('.emoji-menu'); + if ($menu.length === 0) { + requestAnimationFrame(() => { + this.createEmojiMenu(); + }); + } + }, + ); + this.registerEventListener('on', $(document), 'click', '.js-add-award', e => { e.stopPropagation(); e.preventDefault(); this.showEmojiMenu($(e.currentTarget)); }); - this.registerEventListener('on', $('html'), 'click', (e) => { + this.registerEventListener('on', $('html'), 'click', e => { const $target = $(e.target); if (!$target.closest('.emoji-menu').length) { $('.js-awards-block.current').removeClass('current'); @@ -61,12 +69,14 @@ class AwardsHandler { } } }); - this.registerEventListener('on', $(document), 'click', '.js-emoji-btn', (e) => { + this.registerEventListener('on', $(document), 'click', '.js-emoji-btn', e => { e.preventDefault(); const $target = $(e.currentTarget); const $glEmojiElement = $target.find('gl-emoji'); const $spriteIconElement = $target.find('.icon'); - const emojiName = ($glEmojiElement.length ? $glEmojiElement : $spriteIconElement).data('name'); + const emojiName = ($glEmojiElement.length ? $glEmojiElement : $spriteIconElement).data( + 'name', + ); $target.closest('.js-awards-block').addClass('current'); this.addAward(this.getVotesBlock(), this.getAwardUrl(), emojiName); @@ -83,7 +93,10 @@ class AwardsHandler { showEmojiMenu($addBtn) { if ($addBtn.hasClass('js-note-emoji')) { - $addBtn.closest('.note').find('.js-awards-block').addClass('current'); + $addBtn + .closest('.note') + .find('.js-awards-block') + .addClass('current'); } else { $addBtn.closest('.js-awards-block').addClass('current'); } @@ -177,32 +190,38 @@ class AwardsHandler { const remainingCategories = Object.keys(categoryMap).slice(1); const allCategoriesAddedPromise = remainingCategories.reduce( (promiseChain, categoryNameKey) => - promiseChain.then(() => - new Promise((resolve) => { - const emojisInCategory = categoryMap[categoryNameKey]; - const categoryMarkup = this.renderCategory( - categoryLabelMap[categoryNameKey], - emojisInCategory, - ); - requestAnimationFrame(() => { - emojiContentElement.insertAdjacentHTML('beforeend', categoryMarkup); - resolve(); - }); - }), - ), + promiseChain.then( + () => + new Promise(resolve => { + const emojisInCategory = categoryMap[categoryNameKey]; + const categoryMarkup = this.renderCategory( + categoryLabelMap[categoryNameKey], + emojisInCategory, + ); + requestAnimationFrame(() => { + emojiContentElement.insertAdjacentHTML('beforeend', categoryMarkup); + resolve(); + }); + }), + ), Promise.resolve(), ); - allCategoriesAddedPromise.then(() => { - // Used for tests - // We check for the menu in case it was destroyed in the meantime - if (menu) { - menu.dispatchEvent(new CustomEvent('build-emoji-menu-finish')); - } - }).catch((err) => { - emojiContentElement.insertAdjacentHTML('beforeend', '

We encountered an error while adding the remaining categories

'); - throw new Error(`Error occurred in addRemainingEmojiMenuCategories: ${err.message}`); - }); + allCategoriesAddedPromise + .then(() => { + // Used for tests + // We check for the menu in case it was destroyed in the meantime + if (menu) { + menu.dispatchEvent(new CustomEvent('build-emoji-menu-finish')); + } + }) + .catch(err => { + emojiContentElement.insertAdjacentHTML( + 'beforeend', + '

We encountered an error while adding the remaining categories

', + ); + throw new Error(`Error occurred in addRemainingEmojiMenuCategories: ${err.message}`); + }); } renderCategory(name, emojiList, opts = {}) { @@ -211,7 +230,9 @@ class AwardsHandler { ${name}

    - ${emojiList.map(emojiName => ` + ${emojiList + .map( + emojiName => `
  • - `).join('\n')} + `, + ) + .join('\n')}
`; } @@ -232,7 +255,7 @@ class AwardsHandler { top: `${$addBtn.offset().top + $addBtn.outerHeight()}px`, }; if (position === 'right') { - css.left = `${($addBtn.offset().left - $menu.outerWidth()) + 20}px`; + css.left = `${$addBtn.offset().left - $menu.outerWidth() + 20}px`; $menu.addClass('is-aligned-right'); } else { css.left = `${$addBtn.offset().left}px`; @@ -345,7 +368,7 @@ class AwardsHandler { counter.text(counterNumber - 1); this.removeYouFromUserList($emojiButton); } else if (emoji === 'thumbsup' || emoji === 'thumbsdown') { - $emojiButton.tooltip('destroy'); + $emojiButton.tooltip('dispose'); counter.text('0'); this.removeYouFromUserList($emojiButton); if ($emojiButton.parents('.note').length) { @@ -358,7 +381,7 @@ class AwardsHandler { } removeEmoji($emojiButton) { - $emojiButton.tooltip('destroy'); + $emojiButton.tooltip('dispose'); $emojiButton.remove(); const $votesBlock = this.getVotesBlock(); if ($votesBlock.find('.js-emoji-btn').length === 0) { @@ -392,7 +415,7 @@ class AwardsHandler { .removeAttr('data-title') .removeAttr('data-original-title') .attr('title', this.toSentence(authors)) - .tooltip('fixTitle'); + .tooltip('_fixTitle'); } addYouToUserList(votesBlock, emoji) { @@ -405,7 +428,7 @@ class AwardsHandler { users.unshift('You'); return awardBlock .attr('title', this.toSentence(users)) - .tooltip('fixTitle'); + .tooltip('_fixTitle'); } createAwardButtonForVotesBlock(votesBlock, emojiName) { @@ -416,7 +439,10 @@ class AwardsHandler { `; const $emojiButton = $(buttonHtml); - $emojiButton.insertBefore(votesBlock.find('.js-award-holder')).find('.emoji-icon').data('name', emojiName); + $emojiButton + .insertBefore(votesBlock.find('.js-award-holder')) + .find('.emoji-icon') + .data('name', emojiName); this.animateEmoji($emojiButton); $('.award-control').tooltip(); votesBlock.removeClass('current'); @@ -426,7 +452,7 @@ class AwardsHandler { const className = 'pulse animated once short'; $emoji.addClass(className); - this.registerEventListener('on', $emoji, animationEndEventString, (e) => { + this.registerEventListener('on', $emoji, animationEndEventString, e => { $(e.currentTarget).removeClass(className); }); } @@ -444,15 +470,16 @@ class AwardsHandler { if (this.isUserAuthored($emojiButton)) { this.userAuthored($emojiButton); } else { - axios.post(awardUrl, { - name: emoji, - }) - .then(({ data }) => { - if (data.ok) { - callback(); - } - }) - .catch(() => flash(__('Something went wrong on our end.'))); + axios + .post(awardUrl, { + name: emoji, + }) + .then(({ data }) => { + if (data.ok) { + callback(); + } + }) + .catch(() => flash(__('Something went wrong on our end.'))); } } @@ -486,26 +513,33 @@ class AwardsHandler { } getFrequentlyUsedEmojis() { - return this.frequentlyUsedEmojis || (() => { - const frequentlyUsedEmojis = _.uniq((Cookies.get('frequently_used_emojis') || '').split(',')); - this.frequentlyUsedEmojis = frequentlyUsedEmojis.filter( - inputName => this.emoji.isEmojiNameValid(inputName), - ); + return ( + this.frequentlyUsedEmojis || + (() => { + const frequentlyUsedEmojis = _.uniq( + (Cookies.get('frequently_used_emojis') || '').split(','), + ); + this.frequentlyUsedEmojis = frequentlyUsedEmojis.filter(inputName => + this.emoji.isEmojiNameValid(inputName), + ); - return this.frequentlyUsedEmojis; - })(); + return this.frequentlyUsedEmojis; + })() + ); } setupSearch() { const $search = $('.js-emoji-menu-search'); - this.registerEventListener('on', $search, 'input', (e) => { - const term = $(e.target).val().trim(); + this.registerEventListener('on', $search, 'input', e => { + const term = $(e.target) + .val() + .trim(); this.searchEmojis(term); }); const $menu = $('.emoji-menu'); - this.registerEventListener('on', $menu, transitionEndEventString, (e) => { + this.registerEventListener('on', $menu, transitionEndEventString, e => { if (e.target === e.currentTarget) { // Clear the search this.searchEmojis(''); @@ -523,19 +557,26 @@ class AwardsHandler { // Generate a search result block const h5 = $('
').text('Search results'); const foundEmojis = this.findMatchingEmojiElements(term).show(); - const ul = $('
    ').addClass('emoji-menu-list emoji-menu-search').append(foundEmojis); + const ul = $('
      ') + .addClass('emoji-menu-list emoji-menu-search') + .append(foundEmojis); $('.emoji-menu-content ul, .emoji-menu-content h5').hide(); - $('.emoji-menu-content').append(h5).append(ul); + $('.emoji-menu-content') + .append(h5) + .append(ul); } else { - $('.emoji-menu-content').children().show(); + $('.emoji-menu-content') + .children() + .show(); } } findMatchingEmojiElements(query) { const emojiMatches = this.emoji.filterEmojiNamesByAlias(query); const $emojiElements = $('.emoji-menu-list:not(.frequent-emojis) [data-name]'); - const $matchingElements = $emojiElements - .filter((i, elm) => emojiMatches.indexOf(elm.dataset.name) >= 0); + const $matchingElements = $emojiElements.filter( + (i, elm) => emojiMatches.indexOf(elm.dataset.name) >= 0, + ); return $matchingElements.closest('li').clone(); } @@ -550,16 +591,13 @@ class AwardsHandler { $emojiMenu.addClass(IS_RENDERED); // enqueues animation as a microtask, so it begins ASAP once IS_RENDERED added - return Promise.resolve() - .then(() => $emojiMenu.addClass(IS_VISIBLE)); + return Promise.resolve().then(() => $emojiMenu.addClass(IS_VISIBLE)); } hideMenuElement($emojiMenu) { - $emojiMenu.on(transitionEndEventString, (e) => { + $emojiMenu.on(transitionEndEventString, e => { if (e.currentTarget === e.target) { - $emojiMenu - .removeClass(IS_RENDERED) - .off(transitionEndEventString); + $emojiMenu.removeClass(IS_RENDERED).off(transitionEndEventString); } }); @@ -567,7 +605,7 @@ class AwardsHandler { } destroy() { - this.eventListeners.forEach((entry) => { + this.eventListeners.forEach(entry => { entry.element.off.call(entry.element, ...entry.args); }); $('.emoji-menu').remove(); @@ -577,8 +615,9 @@ class AwardsHandler { let awardsHandlerPromise = null; export default function loadAwardsHandler(reload = false) { if (!awardsHandlerPromise || reload) { - awardsHandlerPromise = import(/* webpackChunkName: 'emoji' */ './emoji') - .then(Emoji => new AwardsHandler(Emoji)); + awardsHandlerPromise = import(/* webpackChunkName: 'emoji' */ './emoji').then( + Emoji => new AwardsHandler(Emoji), + ); } return awardsHandlerPromise; } diff --git a/app/assets/javascripts/badges/components/badge.vue b/app/assets/javascripts/badges/components/badge.vue index 6e6cb31e3a..b4bfaee1d8 100644 --- a/app/assets/javascripts/badges/components/badge.vue +++ b/app/assets/javascripts/badges/components/badge.vue @@ -72,11 +72,11 @@ export default { rel="noopener noreferrer" > @@ -89,32 +89,32 @@ export default { v-show="hasError" class="btn-group" > -
      +
      {{ s__('Badges|No badge image') }}
      diff --git a/app/assets/javascripts/badges/components/badge_form.vue b/app/assets/javascripts/badges/components/badge_form.vue index ae942b2c1a..7a13f74c57 100644 --- a/app/assets/javascripts/badges/components/badge_form.vue +++ b/app/assets/javascripts/badges/components/badge_form.vue @@ -153,14 +153,14 @@ export default { @@ -169,14 +169,14 @@ export default { @@ -184,8 +184,8 @@ export default {
      @@ -202,16 +202,16 @@ export default {
      diff --git a/app/assets/javascripts/badges/components/badge_list.vue b/app/assets/javascripts/badges/components/badge_list.vue index ca7197e1e0..268968b63b 100644 --- a/app/assets/javascripts/badges/components/badge_list.vue +++ b/app/assets/javascripts/badges/components/badge_list.vue @@ -23,8 +23,8 @@ export default {