From cf37ae7acd7e3868f632c37a508fe9c5a220a9ba Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 7 Oct 2020 12:09:12 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .rubocop_todo.yml | 3 - .../commit/pipelines/pipelines_bundle.js | 7 +- .../commit/pipelines/pipelines_table.vue | 2 +- .../design_management/utils/cache_update.js | 13 +- .../javascripts/ide/lib/languages/hcl.js | 192 ++ .../javascripts/ide/lib/languages/index.js | 3 +- .../notes/components/discussion_actions.vue | 2 +- .../discussion_reply_placeholder.vue | 15 +- .../components/additional_metadata.vue | 6 +- .../packages/details/store/getters.js | 5 +- .../javascripts/packages/details/utils.js | 13 - .../projects/packages/packages/index/index.js | 6 +- .../pipelines_list/pipelines_table_row.vue | 6 +- .../components/pipelines_list/time_ago.vue | 2 +- app/assets/stylesheets/framework/buttons.scss | 9 +- .../stylesheets/page_bundles/pipelines.scss | 66 + app/assets/stylesheets/pages/pipelines.scss | 94 - .../feature_flags_clients_controller.rb | 27 + .../projects/feature_flags_controller.rb | 172 ++ .../feature_flags_user_lists_controller.rb | 21 + app/helpers/user_callouts_helper.rb | 5 + app/models/blob_viewer/markup.rb | 10 + .../packages/detail/package_presenter.rb | 6 +- .../ci/create_downstream_pipeline_service.rb | 2 +- app/services/ci/create_pipeline_service.rb | 2 +- .../notification_recipients/build_service.rb | 8 +- .../projects/blob/viewers/_markup.html.haml | 3 +- app/views/projects/commit/pipelines.html.haml | 1 + .../projects/feature_flags/edit.html.haml | 2 +- .../projects/feature_flags/new.html.haml | 2 +- .../merge_requests/creations/new.html.haml | 1 + .../projects/merge_requests/show.html.haml | 1 + app/views/projects/pipelines/index.html.haml | 1 + .../229727-drop-type-on-audit-events.yml | 5 + .../233627-fj-restore-snippets-in-backups.yml | 5 + .../239130-package-presenter-conan.yml | 5 + ...gitlab-ui-glbutton-in-app-assets-javas.yml | 6 - ...t-updated-after-uploading-an-image-wit.yml | 5 + .../42782-move-beforescript-into-script.yml | 5 + changelogs/unreleased/adding-hcl.yml | 5 + .../unreleased/id-required-sections.yml | 5 + config/application.rb | 1 + .../development/cached_markdown_blob.yml | 7 + .../development/ci_dynamic_child_pipeline.yml | 6 +- .../ci_lint_creates_pipeline_with_dry_run.yml | 6 +- ...b_rules_without_workflow_rules_warning.yml | 6 +- .../ci_store_pipeline_messages.yml | 6 +- .../development/ci_yaml_limit_size.yml | 6 +- .../efficient_counter_attribute.yml | 6 +- .../development/feature_flag_api.yml | 7 + .../development/feature_flag_permissions.yml | 7 + .../feature_flags_legacy_read_only.yml | 7 + ...eature_flags_legacy_read_only_override.yml | 7 + config/routes/project.rb | 4 +- ...34_create_required_code_owners_sections.rb | 26 + ...add_index_on_vulnerabilities_state_case.rb | 21 + ...929113254_remove_type_from_audit_events.rb | 125 ++ db/schema_migrations/20200928131934 | 1 + db/schema_migrations/20200928164807 | 1 + db/schema_migrations/20200929113254 | 1 + db/structure.sql | 35 +- .../geo/disaster_recovery/index.md | 2 +- doc/administration/raketasks/check.md | 4 +- .../graphql/reference/gitlab_schema.graphql | 17 +- doc/api/graphql/reference/gitlab_schema.json | 32 +- doc/api/graphql/reference/index.md | 5 +- doc/development/migration_style_guide.md | 12 +- doc/gitlab-basics/add-file.md | 12 +- lib/api/api.rb | 3 + lib/api/feature_flag_scopes.rb | 158 ++ lib/api/feature_flags.rb | 266 +++ lib/api/feature_flags_user_lists.rb | 100 + lib/backup/repositories.rb | 4 + .../templates/Jobs/Code-Quality.gitlab-ci.yml | 3 +- .../graphql/pagination/keyset/order_info.rb | 9 +- lib/google_api/cloud_platform/client.rb | 2 +- locale/gitlab.pot | 40 +- rubocop/migration_helpers.rb | 2 +- rubocop/rubocop-migrations.yml | 3 +- .../feature_flags_clients_controller_spec.rb | 57 + .../projects/feature_flags_controller_spec.rb | 1604 +++++++++++++++++ ...eature_flags_user_lists_controller_spec.rb | 113 ++ spec/features/issues/gfm_autocomplete_spec.rb | 2 +- .../merge_request/batch_comments_spec.rb | 2 +- .../user_posts_diff_notes_spec.rb | 2 +- ...diff_notes_and_discussions_resolve_spec.rb | 10 +- .../user_sees_avatar_on_diff_notes_spec.rb | 6 +- .../user_sees_discussions_spec.rb | 2 +- ...ser_sees_notes_from_forked_project_spec.rb | 2 +- spec/features/projects/commit/builds_spec.rb | 2 +- ...ser_deletes_feature_flag_user_list_spec.rb | 63 + .../user_edits_feature_flag_user_list_spec.rb | 21 + ...ees_feature_flag_user_list_details_spec.rb | 21 + .../user_creates_feature_flag_spec.rb | 200 ++ .../user_deletes_feature_flag_spec.rb | 31 + .../user_sees_feature_flag_list_spec.rb | 147 ++ .../user_updates_feature_flag_spec.rb | 195 ++ .../releases/user_views_edit_release_spec.rb | 2 +- spec/fixtures/api/schemas/feature_flag.json | 23 + .../api/schemas/feature_flag_scope.json | 18 + .../api/schemas/feature_flag_strategy.json | 13 + spec/fixtures/api/schemas/feature_flags.json | 13 + .../schemas/public_api/v4/feature_flag.json | 15 + .../v4/feature_flag_detailed_scopes.json | 22 + .../public_api/v4/feature_flag_scope.json | 17 + .../public_api/v4/feature_flag_scopes.json | 9 + .../public_api/v4/feature_flag_strategy.json | 13 + .../schemas/public_api/v4/feature_flags.json | 9 + .../public_api/v4/operations/scope.json | 9 + .../public_api/v4/operations/strategy.json | 14 + .../lib/backup/personal_snippet_repo.bundle | Bin 0 -> 686 bytes .../lib/backup/project_snippet_repo.bundle | Bin 0 -> 696 bytes spec/frontend/ide/lib/languages/hcl_spec.js | 290 +++ .../discussion_reply_placeholder_spec.js | 7 +- .../packages/details/store/getters_spec.js | 4 +- spec/frontend/packages/details/utils_spec.js | 24 - spec/frontend/packages/mock_data.js | 4 +- spec/helpers/user_callouts_helper_spec.rb | 22 + spec/lib/backup/repositories_spec.rb | 12 +- .../pagination/keyset/order_info_spec.rb | 14 +- spec/lib/gitlab/import_export/all_models.yml | 1 + spec/models/blob_viewer/markup_spec.rb | 38 + .../packages/detail/package_presenter_spec.rb | 2 +- spec/requests/api/feature_flag_scopes_spec.rb | 319 ++++ spec/requests/api/feature_flags_spec.rb | 1130 ++++++++++++ .../api/feature_flags_user_lists_spec.rb | 371 ++++ .../gcp/finalize_creation_service_spec.rb | 5 +- .../google_api/cloud_platform_helpers.rb | 14 +- 128 files changed, 6334 insertions(+), 289 deletions(-) create mode 100644 app/assets/javascripts/ide/lib/languages/hcl.js create mode 100644 app/assets/stylesheets/page_bundles/pipelines.scss create mode 100644 app/controllers/projects/feature_flags_clients_controller.rb create mode 100644 app/controllers/projects/feature_flags_controller.rb create mode 100644 app/controllers/projects/feature_flags_user_lists_controller.rb create mode 100644 changelogs/unreleased/229727-drop-type-on-audit-events.yml create mode 100644 changelogs/unreleased/233627-fj-restore-snippets-in-backups.yml create mode 100644 changelogs/unreleased/239130-package-presenter-conan.yml delete mode 100644 changelogs/unreleased/241058-migrate-bootstrap-button-to-gitlab-ui-glbutton-in-app-assets-javas.yml create mode 100644 changelogs/unreleased/262051-design-thumbnail-image-is-not-updated-after-uploading-an-image-wit.yml create mode 100644 changelogs/unreleased/42782-move-beforescript-into-script.yml create mode 100644 changelogs/unreleased/adding-hcl.yml create mode 100644 changelogs/unreleased/id-required-sections.yml create mode 100644 config/feature_flags/development/cached_markdown_blob.yml create mode 100644 config/feature_flags/development/feature_flag_api.yml create mode 100644 config/feature_flags/development/feature_flag_permissions.yml create mode 100644 config/feature_flags/development/feature_flags_legacy_read_only.yml create mode 100644 config/feature_flags/development/feature_flags_legacy_read_only_override.yml create mode 100644 db/migrate/20200928131934_create_required_code_owners_sections.rb create mode 100644 db/migrate/20200928164807_add_index_on_vulnerabilities_state_case.rb create mode 100644 db/post_migrate/20200929113254_remove_type_from_audit_events.rb create mode 100644 db/schema_migrations/20200928131934 create mode 100644 db/schema_migrations/20200928164807 create mode 100644 db/schema_migrations/20200929113254 create mode 100644 lib/api/feature_flag_scopes.rb create mode 100644 lib/api/feature_flags.rb create mode 100644 lib/api/feature_flags_user_lists.rb create mode 100644 spec/controllers/projects/feature_flags_clients_controller_spec.rb create mode 100644 spec/controllers/projects/feature_flags_controller_spec.rb create mode 100644 spec/controllers/projects/feature_flags_user_lists_controller_spec.rb create mode 100644 spec/features/projects/feature_flag_user_lists/user_deletes_feature_flag_user_list_spec.rb create mode 100644 spec/features/projects/feature_flag_user_lists/user_edits_feature_flag_user_list_spec.rb create mode 100644 spec/features/projects/feature_flag_user_lists/user_sees_feature_flag_user_list_details_spec.rb create mode 100644 spec/features/projects/feature_flags/user_creates_feature_flag_spec.rb create mode 100644 spec/features/projects/feature_flags/user_deletes_feature_flag_spec.rb create mode 100644 spec/features/projects/feature_flags/user_sees_feature_flag_list_spec.rb create mode 100644 spec/features/projects/feature_flags/user_updates_feature_flag_spec.rb create mode 100644 spec/fixtures/api/schemas/feature_flag.json create mode 100644 spec/fixtures/api/schemas/feature_flag_scope.json create mode 100644 spec/fixtures/api/schemas/feature_flag_strategy.json create mode 100644 spec/fixtures/api/schemas/feature_flags.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/feature_flag.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/feature_flag_detailed_scopes.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/feature_flag_scope.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/feature_flag_scopes.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/feature_flag_strategy.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/feature_flags.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/operations/scope.json create mode 100644 spec/fixtures/api/schemas/public_api/v4/operations/strategy.json create mode 100644 spec/fixtures/lib/backup/personal_snippet_repo.bundle create mode 100644 spec/fixtures/lib/backup/project_snippet_repo.bundle create mode 100644 spec/frontend/ide/lib/languages/hcl_spec.js delete mode 100644 spec/frontend/packages/details/utils_spec.js create mode 100644 spec/models/blob_viewer/markup_spec.rb create mode 100644 spec/requests/api/feature_flag_scopes_spec.rb create mode 100644 spec/requests/api/feature_flags_spec.rb create mode 100644 spec/requests/api/feature_flags_user_lists_spec.rb diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 062225a75ff..1d730d42ac0 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -154,8 +154,6 @@ Performance/Count: - 'app/helpers/groups_helper.rb' - 'app/services/merge_requests/add_context_service.rb' - 'ee/lib/gitlab/graphql/aggregations/epics/epic_node.rb' - - 'ee/spec/controllers/projects/feature_flags_controller_spec.rb' - - 'ee/spec/requests/api/feature_flags_spec.rb' - 'lib/gitlab/sidekiq_status.rb' - 'spec/lib/gitlab/conflict/file_spec.rb' - 'spec/lib/gitlab/git/tree_spec.rb' @@ -167,7 +165,6 @@ Performance/Count: Performance/Detect: Exclude: - 'ee/spec/controllers/projects/dependencies_controller_spec.rb' - - 'ee/spec/controllers/projects/feature_flags_controller_spec.rb' - 'spec/lib/gitlab/git/tree_spec.rb' - 'spec/lib/gitlab/import_export/project/tree_restorer_spec.rb' - 'spec/models/event_spec.rb' diff --git a/app/assets/javascripts/commit/pipelines/pipelines_bundle.js b/app/assets/javascripts/commit/pipelines/pipelines_bundle.js index 340a93e4e66..c8168afbcb0 100644 --- a/app/assets/javascripts/commit/pipelines/pipelines_bundle.js +++ b/app/assets/javascripts/commit/pipelines/pipelines_bundle.js @@ -3,9 +3,10 @@ import commitPipelinesTable from './pipelines_table.vue'; /** * Used in: - * - Commit details View > Pipelines Tab > Pipelines Table. - * - Merge Request details View > Pipelines Tab > Pipelines Table. - * - New Merge Request View > Pipelines Tab > Pipelines Table. + * - Project Pipelines List (projects:pipelines:index) + * - Commit details View > Pipelines Tab > Pipelines Table (projects:commit:pipelines) + * - Merge Request details View > Pipelines Tab > Pipelines Table (projects:merge_requests:show) + * - New Merge Request View > Pipelines Tab > Pipelines Table (projects:merge_requests:creations:new) */ const CommitPipelinesTable = Vue.extend(commitPipelinesTable); diff --git a/app/assets/javascripts/commit/pipelines/pipelines_table.vue b/app/assets/javascripts/commit/pipelines/pipelines_table.vue index 188d958ba86..fe32868e6d8 100644 --- a/app/assets/javascripts/commit/pipelines/pipelines_table.vue +++ b/app/assets/javascripts/commit/pipelines/pipelines_table.vue @@ -193,7 +193,7 @@ export default { " /> -
+
{ const data = produce(sourceData, draftData => { const currentDesigns = extractDesigns(draftData); - const existingDesigns = groupBy(currentDesigns, 'filename'); - const newDesigns = currentDesigns.concat( - designManagementUpload.designs.filter(d => !existingDesigns[d.filename]), - ); + const difference = differenceBy(designManagementUpload.designs, currentDesigns, 'filename'); + + const newDesigns = currentDesigns + .map(design => { + return designManagementUpload.designs[design.filename] || design; + }) + .concat(difference); let newVersionNode; const findNewVersions = designManagementUpload.designs.find(design => design.versions); diff --git a/app/assets/javascripts/ide/lib/languages/hcl.js b/app/assets/javascripts/ide/lib/languages/hcl.js new file mode 100644 index 00000000000..4539719b1f2 --- /dev/null +++ b/app/assets/javascripts/ide/lib/languages/hcl.js @@ -0,0 +1,192 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See https://github.com/microsoft/monaco-languages/blob/master/LICENSE.md + *--------------------------------------------------------------------------------------------*/ + +/* eslint-disable no-useless-escape */ +/* eslint-disable @gitlab/require-i18n-strings */ + +const conf = { + comments: { + lineComment: '//', + blockComment: ['/*', '*/'], + }, + brackets: [['{', '}'], ['[', ']'], ['(', ')']], + autoClosingPairs: [ + { open: '{', close: '}' }, + { open: '[', close: ']' }, + { open: '(', close: ')' }, + { open: '"', close: '"', notIn: ['string'] }, + ], + surroundingPairs: [ + { open: '{', close: '}' }, + { open: '[', close: ']' }, + { open: '(', close: ')' }, + { open: '"', close: '"' }, + ], +}; + +const language = { + defaultToken: '', + tokenPostfix: '.hcl', + + keywords: [ + 'var', + 'local', + 'path', + 'for_each', + 'any', + 'string', + 'number', + 'bool', + 'true', + 'false', + 'null', + 'if ', + 'else ', + 'endif ', + 'for ', + 'in', + 'endfor', + ], + + operators: [ + '=', + '>=', + '<=', + '==', + '!=', + '+', + '-', + '*', + '/', + '%', + '&&', + '||', + '!', + '<', + '>', + '?', + '...', + ':', + ], + + symbols: /[=>](?!@symbols)/, '@brackets'], + [ + /@symbols/, + { + cases: { + '@operators': 'operator', + '@default': '', + }, + }, + ], + // numbers + [/\d*\d+[eE]([\-+]?\d+)?/, 'number.float'], + [/\d*\.\d+([eE][\-+]?\d+)?/, 'number.float'], + [/\d[\d']*/, 'number'], + [/\d/, 'number'], + [/[;,.]/, 'delimiter'], // delimiter: after number because of .\d floats + // strings + [/"/, 'string', '@string'], // this will include expressions + [/'/, 'invalid'], + ], + heredoc: [ + [ + /<<[-]*\s*["]?([\w\-]+)["]?/, + { token: 'string.heredoc.delimiter', next: '@heredocBody.$1' }, + ], + ], + heredocBody: [ + [ + /^([\w\-]+)$/, + { + cases: { + '$1==$S2': [ + { + token: 'string.heredoc.delimiter', + next: '@popall', + }, + ], + '@default': 'string.heredoc', + }, + }, + ], + [/./, 'string.heredoc'], + ], + whitespace: [ + [/[ \t\r\n]+/, ''], + [/\/\*/, 'comment', '@comment'], + [/\/\/.*$/, 'comment'], + [/#.*$/, 'comment'], + ], + comment: [[/[^\/*]+/, 'comment'], [/\*\//, 'comment', '@pop'], [/[\/*]/, 'comment']], + string: [ + [/\$\{/, { token: 'delimiter', next: '@stringExpression' }], + [/[^\\"\$]+/, 'string'], + [/@escapes/, 'string.escape'], + [/\\./, 'string.escape.invalid'], + [/"/, 'string', '@popall'], + ], + stringInsideExpression: [ + [/[^\\"]+/, 'string'], + [/@escapes/, 'string.escape'], + [/\\./, 'string.escape.invalid'], + [/"/, 'string', '@pop'], + ], + stringExpression: [ + [/\}/, { token: 'delimiter', next: '@pop' }], + [/"/, 'string', '@stringInsideExpression'], + { include: '@terraform' }, + ], + }, +}; + +export default { + id: 'hcl', + extensions: ['.tf', '.tfvars', '.hcl'], + aliases: ['Terraform', 'tf', 'HCL', 'hcl'], + conf, + language, +}; diff --git a/app/assets/javascripts/ide/lib/languages/index.js b/app/assets/javascripts/ide/lib/languages/index.js index 0c85a1104fc..580ad820bf9 100644 --- a/app/assets/javascripts/ide/lib/languages/index.js +++ b/app/assets/javascripts/ide/lib/languages/index.js @@ -1,5 +1,6 @@ import vue from './vue'; +import hcl from './hcl'; -const languages = [vue]; +const languages = [vue, hcl]; export default languages; diff --git a/app/assets/javascripts/notes/components/discussion_actions.vue b/app/assets/javascripts/notes/components/discussion_actions.vue index 3d6c9e6b297..878a748e99a 100644 --- a/app/assets/javascripts/notes/components/discussion_actions.vue +++ b/app/assets/javascripts/notes/components/discussion_actions.vue @@ -55,7 +55,7 @@ export default {
diff --git a/app/assets/javascripts/notes/components/discussion_reply_placeholder.vue b/app/assets/javascripts/notes/components/discussion_reply_placeholder.vue index ab00ccdc09b..0204169214b 100644 --- a/app/assets/javascripts/notes/components/discussion_reply_placeholder.vue +++ b/app/assets/javascripts/notes/components/discussion_reply_placeholder.vue @@ -1,11 +1,6 @@ diff --git a/app/assets/javascripts/packages/details/components/additional_metadata.vue b/app/assets/javascripts/packages/details/components/additional_metadata.vue index 76e0976ac05..4e99099b0a1 100644 --- a/app/assets/javascripts/packages/details/components/additional_metadata.vue +++ b/app/assets/javascripts/packages/details/components/additional_metadata.vue @@ -2,7 +2,6 @@ import { GlLink, GlSprintf } from '@gitlab/ui'; import { s__ } from '~/locale'; import DetailsRow from '~/vue_shared/components/registry/details_row.vue'; -import { generateConanRecipe } from '../utils'; import { PackageType } from '../../shared/constants'; export default { @@ -25,9 +24,6 @@ export default { }, }, computed: { - conanRecipe() { - return generateConanRecipe(this.packageEntity); - }, showMetadata() { const visibilityConditions = { [PackageType.NUGET]: this.packageEntity.nuget_metadatum, @@ -73,7 +69,7 @@ export default { data-testid="conan-recipe" > - + diff --git a/app/assets/javascripts/packages/details/store/getters.js b/app/assets/javascripts/packages/details/store/getters.js index 04f75fc8333..bb0ae3e9ab7 100644 --- a/app/assets/javascripts/packages/details/store/getters.js +++ b/app/assets/javascripts/packages/details/store/getters.js @@ -1,4 +1,3 @@ -import { generateConanRecipe } from '../utils'; import { PackageType } from '../../shared/constants'; import { getPackageTypeLabel } from '../../shared/utils'; import { NpmManager } from '../constants'; @@ -20,10 +19,8 @@ export const packageIcon = ({ packageEntity }) => { }; export const conanInstallationCommand = ({ packageEntity }) => { - const recipe = generateConanRecipe(packageEntity); - // eslint-disable-next-line @gitlab/require-i18n-strings - return `conan install ${recipe} --remote=gitlab`; + return `conan install ${packageEntity.name} --remote=gitlab`; }; export const conanSetupCommand = ({ conanPath }) => diff --git a/app/assets/javascripts/packages/details/utils.js b/app/assets/javascripts/packages/details/utils.js index 454c83c9ccd..27cc95566d3 100644 --- a/app/assets/javascripts/packages/details/utils.js +++ b/app/assets/javascripts/packages/details/utils.js @@ -8,16 +8,3 @@ export const trackInstallationTabChange = { }, }, }; - -export function generateConanRecipe(packageEntity = {}) { - const { - name = '', - version = '', - conan_metadatum: { - package_username: packageUsername = '', - package_channel: packageChannel = '', - } = {}, - } = packageEntity; - - return `${name}/${version}@${packageUsername}/${packageChannel}`; -} diff --git a/app/assets/javascripts/pages/projects/packages/packages/index/index.js b/app/assets/javascripts/pages/projects/packages/packages/index/index.js index 4836900aa28..c94782fdf1b 100644 --- a/app/assets/javascripts/pages/projects/packages/packages/index/index.js +++ b/app/assets/javascripts/pages/projects/packages/packages/index/index.js @@ -1,7 +1,3 @@ import initPackageList from '~/packages/list/packages_list_app_bundle'; -document.addEventListener('DOMContentLoaded', () => { - if (document.getElementById('js-vue-packages-list')) { - initPackageList(); - } -}); +initPackageList(); diff --git a/app/assets/javascripts/pipelines/components/pipelines_list/pipelines_table_row.vue b/app/assets/javascripts/pipelines/components/pipelines_list/pipelines_table_row.vue index 1bdb7d18f04..423bf3b32bd 100644 --- a/app/assets/javascripts/pipelines/components/pipelines_list/pipelines_table_row.vue +++ b/app/assets/javascripts/pipelines/components/pipelines_list/pipelines_table_row.vue @@ -321,7 +321,11 @@ export default {
- +