From ea99abb145ed193c2ac5d19efbff3b8990a54c9c Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 11 Feb 2020 03:09:13 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- .../boards/components/issue_card_inner.vue | 8 +++++ app/assets/javascripts/boards/models/issue.js | 1 + .../javascripts/lib/utils/http_status.js | 1 + app/assets/stylesheets/pages/boards.scss | 4 +++ app/controllers/groups/boards_controller.rb | 5 +++ app/policies/group_policy.rb | 1 + .../create_cross_project_pipeline_service.rb | 2 +- ...-visually-differentiate-blocked-issues.yml | 5 +++ .../35546-child-epic-error-messages.yml | 5 +++ .../drop-bridge-on-any-pipeline-errors.yml | 5 +++ .../raketasks/project_import_export.md | 7 ++-- .../graphql/reference/gitlab_schema.graphql | 23 +++++++++++- doc/api/graphql/reference/gitlab_schema.json | 10 +++--- doc/api/graphql/reference/index.md | 8 ++--- .../img/issue_boards_blocked_icon_v12_8.png | Bin 0 -> 66310 bytes doc/user/project/issue_board.md | 8 +++++ doc/user/project/settings/import_export.md | 34 ++++++++++-------- lib/api/group_boards.rb | 4 +++ locale/gitlab.pot | 3 ++ .../groups/boards_controller_spec.rb | 10 ++++-- spec/frontend/boards/issue_card_spec.js | 22 +++++++++++- spec/policies/group_policy_spec.rb | 4 +-- .../policies/group_policy_shared_context.rb | 2 +- 23 files changed, 136 insertions(+), 36 deletions(-) create mode 100644 changelogs/unreleased/34723-visually-differentiate-blocked-issues.yml create mode 100644 changelogs/unreleased/35546-child-epic-error-messages.yml create mode 100644 changelogs/unreleased/drop-bridge-on-any-pipeline-errors.yml create mode 100644 doc/user/project/img/issue_boards_blocked_icon_v12_8.png diff --git a/app/assets/javascripts/boards/components/issue_card_inner.vue b/app/assets/javascripts/boards/components/issue_card_inner.vue index 0e0d1e64f4a..bdaed17fd09 100644 --- a/app/assets/javascripts/boards/components/issue_card_inner.vue +++ b/app/assets/javascripts/boards/components/issue_card_inner.vue @@ -161,6 +161,14 @@ export default {

+ ** **{settings}** **Settings > Visibility and access controls**. - The exports are stored in a temporary [shared directory](../../development/shared_files.md) and are deleted every 24 hours by a specific worker. diff --git a/doc/api/graphql/reference/gitlab_schema.graphql b/doc/api/graphql/reference/gitlab_schema.graphql index 125009adc35..c8a91d830a0 100644 --- a/doc/api/graphql/reference/gitlab_schema.graphql +++ b/doc/api/graphql/reference/gitlab_schema.graphql @@ -1986,7 +1986,20 @@ type Epic implements Noteable { """ last: Int ): UserConnection - reference(full: Boolean = false): String! + + """ + Internal reference of the epic. Returned in shortened format by default + """ + reference( + """ + Indicates if the reference should be returned in full + """ + full: Boolean = false + ): String! + + """ + URI path of the epic-issue relationship + """ relationPath: String """ @@ -2043,7 +2056,15 @@ type Epic implements Noteable { Permissions for the current user on the resource """ userPermissions: EpicPermissions! + + """ + Web path of the epic + """ webPath: String! + + """ + Web URL of the epic + """ webUrl: String! } diff --git a/doc/api/graphql/reference/gitlab_schema.json b/doc/api/graphql/reference/gitlab_schema.json index 17a3d8eb2e2..08b84a1ca35 100644 --- a/doc/api/graphql/reference/gitlab_schema.json +++ b/doc/api/graphql/reference/gitlab_schema.json @@ -5013,11 +5013,11 @@ }, { "name": "reference", - "description": null, + "description": "Internal reference of the epic. Returned in shortened format by default", "args": [ { "name": "full", - "description": null, + "description": "Indicates if the reference should be returned in full", "type": { "kind": "SCALAR", "name": "Boolean", @@ -5040,7 +5040,7 @@ }, { "name": "relationPath", - "description": null, + "description": "URI path of the epic-issue relationship", "args": [ ], @@ -5224,7 +5224,7 @@ }, { "name": "webPath", - "description": null, + "description": "Web path of the epic", "args": [ ], @@ -5242,7 +5242,7 @@ }, { "name": "webUrl", - "description": null, + "description": "Web URL of the epic", "args": [ ], diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index beffd29d884..5e0b7465c20 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -295,8 +295,8 @@ Represents an epic. | `id` | ID! | ID of the epic | | `iid` | ID! | Internal ID of the epic | | `parent` | Epic | Parent epic of the epic | -| `reference` | String! | | -| `relationPath` | String | | +| `reference` | String! | Internal reference of the epic. Returned in shortened format by default | +| `relationPath` | String | URI path of the epic-issue relationship | | `relativePosition` | Int | The relative position of the epic in the epic tree | | `startDate` | Time | Start date of the epic | | `startDateFixed` | Time | Fixed start date of the epic | @@ -308,8 +308,8 @@ Represents an epic. | `updatedAt` | Time | Timestamp of the epic's last activity | | `upvotes` | Int! | Number of upvotes the epic has received | | `userPermissions` | EpicPermissions! | Permissions for the current user on the resource | -| `webPath` | String! | | -| `webUrl` | String! | | +| `webPath` | String! | Web path of the epic | +| `webUrl` | String! | Web URL of the epic | ## EpicDescendantCount diff --git a/doc/user/project/img/issue_boards_blocked_icon_v12_8.png b/doc/user/project/img/issue_boards_blocked_icon_v12_8.png new file mode 100644 index 0000000000000000000000000000000000000000..ede57b760edf4db75912cffc15527bf3f614c1a2 GIT binary patch literal 66310 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 literal 0 HcmV?d00001 diff --git a/doc/user/project/issue_board.md b/doc/user/project/issue_board.md index 06ecc224f5f..0a5d7805e41 100644 --- a/doc/user/project/issue_board.md +++ b/doc/user/project/issue_board.md @@ -303,6 +303,14 @@ Different issue board features are available in different [GitLab tiers](https:/ | Premium / Silver | Multiple | Multiple | Yes | Yes | | Ultimate / Gold | Multiple | Multiple | Yes | Yes | +## Blocked issues + +> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/34723) in GitLab 12.8. + +If an issue is blocked by another issue, an icon will display next to its title to differentiate it from unblocked issues. + +![Blocked issues](img/issue_boards_blocked_icon_v12_8.png) + ## Actions you can take on an Issue Board - [Create a new list](#creating-a-new-list). diff --git a/doc/user/project/settings/import_export.md b/doc/user/project/settings/import_export.md index 2266534dc8f..cdf6a789ec2 100644 --- a/doc/user/project/settings/import_export.md +++ b/doc/user/project/settings/import_export.md @@ -6,28 +6,30 @@ Existing projects running on any GitLab instance or GitLab.com can be exported with all their related data and be moved into a new GitLab instance. +The **GitLab import/export** button is displayed if the project import option is enabled. + See also: -- [Project import/export API](../../../api/project_import_export.md). -- [Project import/export administration rake tasks](../../../administration/raketasks/project_import_export.md). **(CORE ONLY)** +- [Project import/export API](../../../api/project_import_export.md) +- [Project import/export administration rake tasks](../../../administration/raketasks/project_import_export.md) **(CORE ONLY)** + +To set up a project import/export: + + 1. Navigate to **{admin}** **Admin Area >** **{settings}** **Settings > Visibility and access controls**. + 1. Scroll to **Import sources** + 1. Enable desired **Import sources** ## Important notes Note the following: -- Importing is not possible if the import instance version differs from - that of the exporter. -- The project import option must be enabled in application settings - (`/admin/application_settings/general`) under **Import sources**, which is - available under **{admin}** **Admin Area >** **{settings}** **Settings > Visibility and access controls**. - Ask your administrator if you don't see the **GitLab export** button when - creating a new project. -- The exports are stored in a temporary [shared directory](../../../development/shared_files.md) +- Imports will fail unless the import and export GitLab instances are + compatible as described in the [Version history](#version-history). +- Exports are stored in a temporary [shared directory](../../../development/shared_files.md) and are deleted every 24 hours by a specific worker. - Group members are exported as project members, as long as the user has - maintainer or admin access to the group where the exported project lives. An admin - in the import side is required to map the users, based on email. - Otherwise, a supplementary comment is left to mention the original author and + maintainer or admin access to the group where the exported project lives. Import admins should map users by email address. + Otherwise, a supplementary comment is left to mention that the original author and the MRs, notes, or issues will be owned by the importer. - Project members with owner access will be imported as maintainers. - If an imported project contains merge requests originating from forks, @@ -39,7 +41,7 @@ Note the following: The following table lists updates to Import/Export: -| GitLab version | Import/Export version | +| GitLab version | Import/Export schema version | | ---------------- | --------------------- | | 11.1 to current | 0.2.4 | | 10.8 | 0.2.3 | @@ -56,7 +58,9 @@ The following table lists updates to Import/Export: | 8.9.5 | 0.1.1 | | 8.9.0 | 0.1.0 | -For example, 8.10.3 and 8.11 will have the same Import/Export version (0.1.3) +Projects can be exported and imported only between versions of GitLab with matching Import/Export versions. + +For example, 8.10.3 and 8.11 have the same Import/Export version (0.1.3) and the exports between them will be compatible. ## Exported contents diff --git a/lib/api/group_boards.rb b/lib/api/group_boards.rb index f7ef0cfd0d8..88d04e70e11 100644 --- a/lib/api/group_boards.rb +++ b/lib/api/group_boards.rb @@ -28,6 +28,7 @@ module API success ::API::Entities::Board end get '/:board_id' do + authorize!(:read_board, user_group) present board, with: ::API::Entities::Board end @@ -39,6 +40,7 @@ module API use :pagination end get '/' do + authorize!(:read_board, user_group) present paginate(board_parent.boards.with_associations), with: Entities::Board end end @@ -55,6 +57,7 @@ module API use :pagination end get '/lists' do + authorize!(:read_board, user_group) present paginate(board_lists), with: Entities::List end @@ -66,6 +69,7 @@ module API requires :list_id, type: Integer, desc: 'The ID of a list' end get '/lists/:list_id' do + authorize!(:read_board, user_group) present board_lists.find(params[:list_id]), with: Entities::List end diff --git a/locale/gitlab.pot b/locale/gitlab.pot index b6ecd5e5926..c64785c7e44 100644 --- a/locale/gitlab.pot +++ b/locale/gitlab.pot @@ -2768,6 +2768,9 @@ msgstr "" msgid "Blocked" msgstr "" +msgid "Blocked issue" +msgstr "" + msgid "Blocks" msgstr "" diff --git a/spec/controllers/groups/boards_controller_spec.rb b/spec/controllers/groups/boards_controller_spec.rb index 79edfd69429..acfa8bc9354 100644 --- a/spec/controllers/groups/boards_controller_spec.rb +++ b/spec/controllers/groups/boards_controller_spec.rb @@ -27,7 +27,8 @@ describe Groups::BoardsController do context 'with unauthorized user' do before do allow(Ability).to receive(:allowed?).with(user, :read_cross_project, :global).and_return(true) - allow(Ability).to receive(:allowed?).with(user, :read_group, group).and_return(false) + allow(Ability).to receive(:allowed?).with(user, :read_group, group).and_return(true) + allow(Ability).to receive(:allowed?).with(user, :read_board, group).and_return(false) end it 'returns a not found 404 response' do @@ -70,7 +71,8 @@ describe Groups::BoardsController do context 'with unauthorized user' do before do allow(Ability).to receive(:allowed?).with(user, :read_cross_project, :global).and_return(true) - allow(Ability).to receive(:allowed?).with(user, :read_group, group).and_return(false) + allow(Ability).to receive(:allowed?).with(user, :read_group, group).and_return(true) + allow(Ability).to receive(:allowed?).with(user, :read_board, group).and_return(false) end it 'returns a not found 404 response' do @@ -105,7 +107,8 @@ describe Groups::BoardsController do context 'with unauthorized user' do before do allow(Ability).to receive(:allowed?).with(user, :read_cross_project, :global).and_return(true) - allow(Ability).to receive(:allowed?).with(user, :read_group, group).and_return(false) + allow(Ability).to receive(:allowed?).with(user, :read_group, group).and_return(true) + allow(Ability).to receive(:allowed?).with(user, :read_board, group).and_return(false) end it 'returns a not found 404 response' do @@ -142,6 +145,7 @@ describe Groups::BoardsController do context 'with unauthorized user' do before do allow(Ability).to receive(:allowed?).with(user, :read_cross_project, :global).and_return(true) + allow(Ability).to receive(:allowed?).with(user, :read_group, group).and_return(true) allow(Ability).to receive(:allowed?).with(user, :read_group, group).and_return(false) end diff --git a/spec/frontend/boards/issue_card_spec.js b/spec/frontend/boards/issue_card_spec.js index 526cdb81ac6..1fd2b417aba 100644 --- a/spec/frontend/boards/issue_card_spec.js +++ b/spec/frontend/boards/issue_card_spec.js @@ -66,7 +66,11 @@ describe('Issue card component', () => { }); it('does not render confidential icon', () => { - expect(wrapper.find('.fa-eye-flash').exists()).toBe(false); + expect(wrapper.find('.confidential-icon').exists()).toBe(false); + }); + + it('does not render blocked icon', () => { + expect(wrapper.find('.issue-blocked-icon').exists()).toBe(false); }); it('renders confidential icon', done => { @@ -324,4 +328,20 @@ describe('Issue card component', () => { .catch(done.fail); }); }); + + describe('blocked', () => { + beforeEach(done => { + wrapper.setProps({ + issue: { + ...wrapper.props('issue'), + blocked: true, + }, + }); + wrapper.vm.$nextTick(done); + }); + + it('renders blocked icon if issue is blocked', () => { + expect(wrapper.find('.issue-blocked-icon').exists()).toBe(true); + }); + }); }); diff --git a/spec/policies/group_policy_spec.rb b/spec/policies/group_policy_spec.rb index ae9d125f970..5a9ca9f7b7e 100644 --- a/spec/policies/group_policy_spec.rb +++ b/spec/policies/group_policy_spec.rb @@ -438,7 +438,7 @@ describe GroupPolicy do end end - context "create_projects" do + context 'create_projects' do context 'when group has no project creation level set' do before_all do group.update(project_creation_level: nil) @@ -560,7 +560,7 @@ describe GroupPolicy do end end - context "create_subgroup" do + context 'create_subgroup' do context 'when group has subgroup creation level set to owner' do before_all do group.update(subgroup_creation_level: ::Gitlab::Access::OWNER_SUBGROUP_ACCESS) diff --git a/spec/support/shared_contexts/policies/group_policy_shared_context.rb b/spec/support/shared_contexts/policies/group_policy_shared_context.rb index c503197a773..63ebbcb93f9 100644 --- a/spec/support/shared_contexts/policies/group_policy_shared_context.rb +++ b/spec/support/shared_contexts/policies/group_policy_shared_context.rb @@ -16,7 +16,7 @@ RSpec.shared_context 'GroupPolicy context' do read_group_merge_requests ] end - let(:read_group_permissions) { %i[read_label read_list read_milestone] } + let(:read_group_permissions) { %i[read_label read_list read_milestone read_board] } let(:reporter_permissions) { %i[admin_label read_container_image] } let(:developer_permissions) { [:admin_milestone] } let(:maintainer_permissions) do