diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-22 21:09:52 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-04-22 21:09:52 +0300 |
commit | db061f44328ca45f713eaf22d92aae8e76148fda (patch) | |
tree | 56f1297f970cb41a13e27cae12f5e9665957c885 /doc/user | |
parent | 7a7345366550f509c03595e0dada7cbd0d73103d (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'doc/user')
-rw-r--r-- | doc/user/analytics/value_stream_analytics.md | 2 | ||||
-rw-r--r-- | doc/user/application_security/container_scanning/index.md | 4 | ||||
-rw-r--r-- | doc/user/application_security/dependency_scanning/index.md | 6 | ||||
-rw-r--r-- | doc/user/application_security/sast/index.md | 4 | ||||
-rw-r--r-- | doc/user/compliance/license_compliance/index.md | 33 | ||||
-rw-r--r-- | doc/user/project/integrations/bamboo.md | 2 | ||||
-rw-r--r-- | doc/user/project/issue_board.md | 458 | ||||
-rw-r--r-- | doc/user/project/labels.md | 2 | ||||
-rw-r--r-- | doc/user/project/repository/index.md | 2 |
9 files changed, 296 insertions, 217 deletions
diff --git a/doc/user/analytics/value_stream_analytics.md b/doc/user/analytics/value_stream_analytics.md index 32f393d342b..bab836770f6 100644 --- a/doc/user/analytics/value_stream_analytics.md +++ b/doc/user/analytics/value_stream_analytics.md @@ -69,7 +69,7 @@ Each stage of Value Stream Analytics is further described in the table below. | **Stage** | **Description** | | --------- | --------------- | -| Issue | Measures the median time between creating an issue and taking action to solve it, by either labeling it or adding it to a milestone, whatever comes first. The label will be tracked only if it already has an [Issue Board list](../project/issue_board.md#creating-a-new-list) created for it. | +| Issue | Measures the median time between creating an issue and taking action to solve it, by either labeling it or adding it to a milestone, whatever comes first. The label will be tracked only if it already has an [Issue Board list](../project/issue_board.md) created for it. | | Plan | Measures the median time between the action you took for the previous stage, and pushing the first commit to the branch. The very first commit of the branch is the one that triggers the separation between **Plan** and **Code**, and at least one of the commits in the branch needs to contain the related issue number (e.g., `#42`). If none of the commits in the branch mention the related issue number, it is not considered to the measurement time of the stage. | | Code | Measures the median time between pushing a first commit (previous stage) and creating a merge request (MR) related to that commit. The key to keep the process tracked is to include the [issue closing pattern](../project/issues/managing_issues.md#closing-issues-automatically) to the description of the merge request (for example, `Closes #xxx`, where `xxx` is the number of the issue related to this merge request). If the issue closing pattern is not present in the merge request description, the MR is not considered to the measurement time of the stage. | | Test | Measures the median time to run the entire pipeline for that project. It's related to the time GitLab CI/CD takes to run every job for the commits pushed to that merge request defined in the previous stage. It is basically the start->finish time for all pipelines. | diff --git a/doc/user/application_security/container_scanning/index.md b/doc/user/application_security/container_scanning/index.md index 68ad2d427dd..c4959248f94 100644 --- a/doc/user/application_security/container_scanning/index.md +++ b/doc/user/application_security/container_scanning/index.md @@ -412,8 +412,8 @@ the report JSON unless stated otherwise. Presence of optional fields depends on | `vulnerabilities[].message` | A short text that describes the vulnerability, it may include occurrence's specific information. Optional. | | `vulnerabilities[].description` | A long text that describes the vulnerability. Optional. | | `vulnerabilities[].cve` | (**DEPRECATED - use `vulnerabilities[].id` instead**) A fingerprint string value that represents a concrete occurrence of the vulnerability. It's used to determine whether two vulnerability occurrences are same or different. May not be 100% accurate. **This is NOT a [CVE](https://cve.mitre.org/)**. | -| `vulnerabilities[].severity` | How much the vulnerability impacts the software. Possible values: `Undefined` (an analyzer has not provided this information), `Info`, `Unknown`, `Low`, `Medium`, `High`, `Critical`. **Note:** Our current container scanning tool based on [klar](https://github.com/optiopay/klar) only provides the following levels: `Unknown`, `Low`, `Medium`, `High`, `Critical`. | -| `vulnerabilities[].confidence` | How reliable the vulnerability's assessment is. Possible values: `Undefined` (an analyzer has not provided this information), `Ignore`, `Unknown`, `Experimental`, `Low`, `Medium`, `High`, `Confirmed`. **Note:** Our current container scanning tool based on [klar](https://github.com/optiopay/klar) does not provide a confidence level, so this value is currently hardcoded to `Unknown`. | +| `vulnerabilities[].severity` | How much the vulnerability impacts the software. Possible values: `Info`, `Unknown`, `Low`, `Medium`, `High`, `Critical`. **Note:** Our current container scanning tool based on [klar](https://github.com/optiopay/klar) only provides the following levels: `Unknown`, `Low`, `Medium`, `High`, `Critical`. | +| `vulnerabilities[].confidence` | How reliable the vulnerability's assessment is. Possible values: `Ignore`, `Unknown`, `Experimental`, `Low`, `Medium`, `High`, `Confirmed`. **Note:** Our current container scanning tool based on [klar](https://github.com/optiopay/klar) does not provide a confidence level, so this value is currently hardcoded to `Unknown`. | | `vulnerabilities[].solution` | Explanation of how to fix the vulnerability. Optional. | | `vulnerabilities[].scanner` | A node that describes the analyzer used to find this vulnerability. | | `vulnerabilities[].scanner.id` | Id of the scanner as a snake_case string. | diff --git a/doc/user/application_security/dependency_scanning/index.md b/doc/user/application_security/dependency_scanning/index.md index 96a7cff79fe..c6bd402f57c 100644 --- a/doc/user/application_security/dependency_scanning/index.md +++ b/doc/user/application_security/dependency_scanning/index.md @@ -384,8 +384,8 @@ the report JSON unless stated otherwise. Presence of optional fields depends on | `vulnerabilities[].message` | A short text that describes the vulnerability, it may include occurrence's specific information. Optional. | | `vulnerabilities[].description` | A long text that describes the vulnerability. Optional. | | `vulnerabilities[].cve` | (**DEPRECATED - use `vulnerabilities[].id` instead**) A fingerprint string value that represents a concrete occurrence of the vulnerability. It's used to determine whether two vulnerability occurrences are same or different. May not be 100% accurate. **This is NOT a [CVE](https://cve.mitre.org/)**. | -| `vulnerabilities[].severity` | How much the vulnerability impacts the software. Possible values: `Undefined` (an analyzer has not provided this information), `Info`, `Unknown`, `Low`, `Medium`, `High`, `Critical`. | -| `vulnerabilities[].confidence` | How reliable the vulnerability's assessment is. Possible values: `Undefined` (an analyzer has not provided this information), `Ignore`, `Unknown`, `Experimental`, `Low`, `Medium`, `High`, `Confirmed`. | +| `vulnerabilities[].severity` | How much the vulnerability impacts the software. Possible values: `Info`, `Unknown`, `Low`, `Medium`, `High`, `Critical`. | +| `vulnerabilities[].confidence` | How reliable the vulnerability's assessment is. Possible values: `Ignore`, `Unknown`, `Experimental`, `Low`, `Medium`, `High`, `Confirmed`. | | `vulnerabilities[].solution` | Explanation of how to fix the vulnerability. Optional. | | `vulnerabilities[].scanner` | A node that describes the analyzer used to find this vulnerability. | | `vulnerabilities[].scanner.id` | Id of the scanner as a snake_case string. | @@ -565,7 +565,7 @@ Add the following job section to `.gitlab-ci.yml`: ```yaml gemnasium-python-dependency_scanning: before_script: - - mkdir ~/.config/pip + - mkdir -p ~/.config/pip - cp pip.conf ~/.config/pip/pip.conf ``` diff --git a/doc/user/application_security/sast/index.md b/doc/user/application_security/sast/index.md index a6457d58fe2..be972cd7b8f 100644 --- a/doc/user/application_security/sast/index.md +++ b/doc/user/application_security/sast/index.md @@ -456,8 +456,8 @@ the report JSON unless stated otherwise. Presence of optional fields depends on | `vulnerabilities[].message` | A short text that describes the vulnerability, it may include the occurrence's specific information. Optional. | | `vulnerabilities[].description` | A long text that describes the vulnerability. Optional. | | `vulnerabilities[].cve` | (**DEPRECATED - use `vulnerabilities[].id` instead**) A fingerprint string value that represents a concrete occurrence of the vulnerability. It's used to determine whether two vulnerability occurrences are same or different. May not be 100% accurate. **This is NOT a [CVE](https://cve.mitre.org/)**. | -| `vulnerabilities[].severity` | How much the vulnerability impacts the software. Possible values: `Undefined` (an analyzer has not provided this information), `Info`, `Unknown`, `Low`, `Medium`, `High`, `Critical`. | -| `vulnerabilities[].confidence` | How reliable the vulnerability's assessment is. Possible values: `Undefined` (an analyzer has not provided this information), `Ignore`, `Unknown`, `Experimental`, `Low`, `Medium`, `High`, `Confirmed`. | +| `vulnerabilities[].severity` | How much the vulnerability impacts the software. Possible values: `Info`, `Unknown`, `Low`, `Medium`, `High`, `Critical`. | +| `vulnerabilities[].confidence` | How reliable the vulnerability's assessment is. Possible values: `Ignore`, `Unknown`, `Experimental`, `Low`, `Medium`, `High`, `Confirmed`. | | `vulnerabilities[].solution` | Explanation of how to fix the vulnerability. Optional. | | `vulnerabilities[].scanner` | A node that describes the analyzer used to find this vulnerability. | | `vulnerabilities[].scanner.id` | Id of the scanner as a snake_case string. | diff --git a/doc/user/compliance/license_compliance/index.md b/doc/user/compliance/license_compliance/index.md index b61129d9a6c..f9b5a1e8d3c 100644 --- a/doc/user/compliance/license_compliance/index.md +++ b/doc/user/compliance/license_compliance/index.md @@ -49,19 +49,30 @@ The following languages and package managers are supported. | Language | Package managers | Scan Tool | |------------|-------------------------------------------------------------------|----------------------------------------------------------| -| JavaScript | [Bower](https://bower.io/), [npm](https://www.npmjs.com/), [yarn](https://yarnpkg.com/) ([experimental support](https://github.com/pivotal/LicenseFinder#experimental-project-types)) |[License Finder](https://github.com/pivotal/LicenseFinder)| -| Go | [Godep](https://github.com/tools/godep), go get ([experimental support](https://github.com/pivotal/LicenseFinder#experimental-project-types)), gvt ([experimental support](https://github.com/pivotal/LicenseFinder#experimental-project-types)), glide ([experimental support](https://github.com/pivotal/LicenseFinder#experimental-project-types)), dep ([experimental support](https://github.com/pivotal/LicenseFinder#experimental-project-types)), trash ([experimental support](https://github.com/pivotal/LicenseFinder#experimental-project-types)) and govendor ([experimental support](https://github.com/pivotal/LicenseFinder#experimental-project-types)), [go mod](https://github.com/golang/go/wiki/Modules) ([experimental support](https://github.com/pivotal/LicenseFinder#experimental-project-types)) |[License Finder](https://github.com/pivotal/LicenseFinder)| +| JavaScript | [Bower](https://bower.io/), [npm](https://www.npmjs.com/) |[License Finder](https://github.com/pivotal/LicenseFinder)| +| Go | [Godep](https://github.com/tools/godep), [go mod](https://github.com/golang/go/wiki/Modules) |[License Finder](https://github.com/pivotal/LicenseFinder)| | Java | [Gradle](https://gradle.org/), [Maven](https://maven.apache.org/) |[License Finder](https://github.com/pivotal/LicenseFinder)| -| .NET | [Nuget](https://www.nuget.org/) (.NET Framework is supported via the [mono project](https://www.mono-project.com/). Windows specific dependencies are not supported at this time.) |[License Finder](https://github.com/pivotal/LicenseFinder)| +| .NET | [Nuget](https://www.nuget.org/) (.NET Framework is supported via the [mono project](https://www.mono-project.com/). Windows specific dependencies are not supported at this time.) |[License Finder](https://github.com/pivotal/LicenseFinder)| | Python | [pip](https://pip.pypa.io/en/stable/) (Python is supported through [requirements.txt](https://pip.readthedocs.io/en/1.1/requirements.html) and [Pipfile.lock](https://github.com/pypa/pipfile#pipfilelock).) |[License Finder](https://github.com/pivotal/LicenseFinder)| -| Ruby | [gem](https://rubygems.org/) |[License Finder](https://github.com/pivotal/LicenseFinder)| -| Erlang | [rebar](https://www.rebar3.org/) ([experimental support](https://github.com/pivotal/LicenseFinder#experimental-project-types))|[License Finder](https://github.com/pivotal/LicenseFinder)| -| Objective-C, Swift | [Carthage](https://github.com/Carthage/Carthage) , [CocoaPods v0.39 and below](https://cocoapods.org/) ([experimental support](https://github.com/pivotal/LicenseFinder#experimental-project-types)) |[License Finder](https://github.com/pivotal/LicenseFinder)| -| Elixir | [mix](https://elixir-lang.org/getting-started/mix-otp/introduction-to-mix.html) ([experimental support](https://github.com/pivotal/LicenseFinder#experimental-project-types)) |[License Finder](https://github.com/pivotal/LicenseFinder)| -| C++/C | [conan](https://conan.io/) ([experimental support](https://github.com/pivotal/LicenseFinder#experimental-project-types))|[License Finder](https://github.com/pivotal/LicenseFinder)| -| Scala | [sbt](https://www.scala-sbt.org/) ([experimental support](https://github.com/pivotal/LicenseFinder#experimental-project-types))|[License Finder](https://github.com/pivotal/LicenseFinder)| -| Rust | [cargo](https://crates.io/) ([experimental support](https://github.com/pivotal/LicenseFinder#experimental-project-types))|[License Finder](https://github.com/pivotal/LicenseFinder)| -| PHP | [composer](https://getcomposer.org/) ([experimental support](https://github.com/pivotal/LicenseFinder#experimental-project-types))|[License Finder](https://github.com/pivotal/LicenseFinder)| +| Ruby | [gem](https://rubygems.org/) |[License Finder](https://github.com/pivotal/LicenseFinder)| +| Objective-C, Swift | [Carthage](https://github.com/Carthage/Carthage) |[License Finder](https://github.com/pivotal/LicenseFinder)| + +### Experimental support + +The following languages and package managers are [supported experimentally](https://github.com/pivotal/LicenseFinder#experimental-project-types), +which means that the reported licenses might be incomplete or inaccurate. + +| Language | Package managers | Scan Tool | +|------------|-------------------------------------------------------------------|----------------------------------------------------------| +| JavaScript | [yarn](https://yarnpkg.com/)|[License Finder](https://github.com/pivotal/LicenseFinder)| +| Go | go get, gvt, glide, dep, trash, govendor |[License Finder](https://github.com/pivotal/LicenseFinder)| +| Erlang | [rebar](https://www.rebar3.org/) |[License Finder](https://github.com/pivotal/LicenseFinder)| +| Objective-C, Swift | [CocoaPods](https://cocoapods.org/) v0.39 and below |[License Finder](https://github.com/pivotal/LicenseFinder)| +| Elixir | [mix](https://elixir-lang.org/getting-started/mix-otp/introduction-to-mix.html) |[License Finder](https://github.com/pivotal/LicenseFinder)| +| C++/C | [conan](https://conan.io/) |[License Finder](https://github.com/pivotal/LicenseFinder)| +| Scala | [sbt](https://www.scala-sbt.org/) |[License Finder](https://github.com/pivotal/LicenseFinder)| +| Rust | [cargo](https://crates.io/) |[License Finder](https://github.com/pivotal/LicenseFinder)| +| PHP | [composer](https://getcomposer.org/) |[License Finder](https://github.com/pivotal/LicenseFinder)| ## Requirements diff --git a/doc/user/project/integrations/bamboo.md b/doc/user/project/integrations/bamboo.md index 8c7e6edbf38..db8f24fc1e1 100644 --- a/doc/user/project/integrations/bamboo.md +++ b/doc/user/project/integrations/bamboo.md @@ -27,7 +27,7 @@ need to be configured in a Bamboo build plan before GitLab can integrate. 1. In the left pane, select a build stage. If you have multiple build stages you want to select the last stage that contains the Git checkout task. 1. Select the 'Miscellaneous' tab. -1. Under 'Pattern Match Labelling' put `${bamboo.repository.revision.number}` +1. Under 'Pattern Match Labeling' put `${bamboo.repository.revision.number}` in the 'Labels' box. 1. Save diff --git a/doc/user/project/issue_board.md b/doc/user/project/issue_board.md index 5bc71337e44..a7ed3b864ca 100644 --- a/doc/user/project/issue_board.md +++ b/doc/user/project/issue_board.md @@ -9,220 +9,270 @@ organize, and visualize a workflow for a feature or product release. It can be used as a [Kanban](https://en.wikipedia.org/wiki/Kanban_(development)) or a [Scrum](https://en.wikipedia.org/wiki/Scrum_(software_development)) board. -It provides perfect pairing between issue tracking and project management, +It pairs issue tracking and project management, keeping everything in the same place, so that you don't need to jump between different platforms to organize your workflow. -With GitLab Issue Boards, you organize your issues in lists that correspond to +With issue boards, you organize your issues in lists that correspond to their assigned labels, visualizing issues designed as cards throughout those lists. -You define your process and GitLab organizes it for you. You add your labels +You define your process, and GitLab organizes it for you. You add your labels then create the corresponding list to pull in your existing issues. When you're ready, you can drag and drop your issue cards from one step to the next. -![GitLab Issue Board - Core](img/issue_boards_core.png) +![GitLab issue board - Core](img/issue_boards_core.png) -**<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> +<i class="fa fa-youtube-play youtube" aria-hidden="true"></i> Watch a [video presentation](https://youtu.be/UWsJ8tkHAa8) of -Issue Boards** (version introduced in GitLab 8.11 - August 2016). +the Issue Board feature (introduced in GitLab 8.11 - August 2016). -### Advanced features of Issue Boards +### Advanced features of issue boards - Create multiple issue boards per project. - Create multiple issue boards per group. **(PREMIUM)** - Add lists for [assignees](#assignee-lists-premium) and [milestones](#milestone-lists-premium). **(PREMIUM)** -Check all the [advanced features of Issue Boards](#gitlab-enterprise-features-for-issue-boards) -below. +Check all the [GitLab Enterprise features for issue boards](#gitlab-enterprise-features-for-issue-boards). -![GitLab Issue Boards - Premium](img/issue_boards_premium.png) +![GitLab issue boards - Premium](img/issue_boards_premium.png) + +--- ## How it works -The Issue Board builds on GitLab's existing +The Issue Board feature builds on GitLab's existing [issue tracking functionality](issues/index.md#issues-list) and -leverages the power of [labels](labels.md) by utilizing them as lists of the scrum board. +[labels](labels.md) by using them as lists of the Scrum board. -With the Issue Board you can have a different view of your issues while +With issue boards you can have a different view of your issues while maintaining the same filtering and sorting abilities you see across the -issue tracker. An Issue Board is based on its project's label structure, therefore, it +issue tracker. An issue board is based on its project's label structure, so it applies the same descriptive labels to indicate placement on the board, keeping consistency throughout the entire development lifecycle. -An Issue Board shows you what issues your team is working on, who is assigned to each, +An issue board shows you what issues your team is working on, who is assigned to each, and where in the workflow those issues are. You create issues, host code, perform reviews, build, test, -and deploy from one single platform. Issue Boards help you to visualize -and manage the entire process _in_ GitLab. +and deploy from one single platform. Issue boards help you to visualize +and manage the entire process in GitLab. -With [Multiple Issue Boards](#use-cases-for-multiple-issue-boards), +With [multiple issue boards](#use-cases-for-multiple-issue-boards), you go even further, as you can not only keep yourself and your project -organized from a broader perspective with one Issue Board per project, +organized from a broader perspective with one issue board per project, but also allow your team members to organize their own workflow by creating -multiple Issue Boards within the same project. +multiple issue boards within the same project. ## Use cases -There are many ways to use GitLab Issue Boards tailored to your own preferred workflow. -Here are some common use cases for Issue Boards. +There are many ways to use GitLab issue boards tailored to your own preferred workflow. +Here are some common use cases for issue boards. -### Use cases for a single Issue Board +### Use cases for a single issue board -GitLab Workflow allows you to discuss proposals in issues, categorize them -with labels, and from there organize and prioritize them with Issue Boards. +With the GitLab Workflow you can discuss proposals in issues, categorize them +with labels, and from there, organize and prioritize them with issue boards. For example, let's consider this simplified development workflow: -1. You have a repository hosting your app's codebase - and your team actively contributing to code -1. Your **backend** team starts working a new - implementation, gathers feedback and approval, and pass it over to **frontend** -1. When frontend is complete, the new feature is deployed to **staging** to be tested -1. When successful, it is deployed to **production** +1. You have a repository that hosts your application's codebase, and your team actively contributes code. +1. Your **backend** team starts working on a new implementation, gathers feedback and approval, and + passes it over to the **frontend** team. +1. When frontend is complete, the new feature is deployed to a **staging** environment to be tested. +1. When successful, it's deployed to **production**. -If we have the labels "**backend**", "**frontend**", "**staging**", and -"**production**", and an Issue Board with a list for each, we can: +If you have the labels "**backend**", "**frontend**", "**staging**", and +"**production**", and an issue board with a list for each, you can: -- Visualize the entire flow of implementations since the - beginning of the development life cycle until deployed to production -- Prioritize the issues in a list by moving them vertically -- Move issues between lists to organize them according to the labels you've set -- Add multiple issues to lists in the board by selecting one or more existing issues +- Visualize the entire flow of implementations since the beginning of the development life cycle + until deployed to production. +- Prioritize the issues in a list by moving them vertically. +- Move issues between lists to organize them according to the labels you've set. +- Add multiple issues to lists in the board by selecting one or more existing issues. ![issue card moving](img/issue_board_move_issue_card_list.png) -### Use cases for Multiple Issue Boards +--- + +### Use cases for multiple issue boards -With [Multiple Issue Boards](#multiple-issue-boards), +With [multiple issue boards](#multiple-issue-boards), each team can have their own board to organize their workflow individually. #### Scrum team -With Multiple Issue Boards, each team has one board. Now you can move issues through each +With multiple issue boards, each team has one board. Now you can move issues through each part of the process. For instance: **To Do**, **Doing**, and **Done**. #### Organization of topics -Create lists to order things by topic and quickly change them between topics or groups, -such as between **UX**, **Frontend**, and **Backend**. The changes will be reflected across boards, -as changing lists will update the label accordingly. +Create lists to order issues by topic and quickly change them between topics or groups, +such as between **UX**, **Frontend**, and **Backend**. The changes are reflected across boards, +as changing lists updates the labels on each issue accordingly. #### Advanced team handover -For example, suppose we have a UX team with an Issue Board that contains: +For example, suppose we have a UX team with an issue board that contains: - **To Do** - **Doing** - **Frontend** -When done with something, they move the card to **Frontend**. The Frontend team's board looks like: +When finished with something, they move the card to **Frontend**. The Frontend team's board looks like: - **Frontend** - **Doing** - **Done** -Cards finished by the UX team will automatically appear in the **Frontend** column when they're ready for them. +Cards finished by the UX team automatically appear in the **Frontend** column when they are ready +for them. NOTE: **Note:** For a broader use case, please see the blog post [GitLab Workflow, an Overview](https://about.gitlab.com/blog/2016/10/25/gitlab-workflow-an-overview/#gitlab-workflow-use-case-scenario). For a real use case example, you can read why -[Codepen decided to adopt Issue Boards](https://about.gitlab.com/blog/2017/01/27/codepen-welcome-to-gitlab/#project-management-everything-in-one-place) +[Codepen decided to adopt issue boards](https://about.gitlab.com/blog/2017/01/27/codepen-welcome-to-gitlab/#project-management-everything-in-one-place) to improve their workflow with multiple boards. #### Quick assignments -Create lists for each of your team members and quickly drag-and-drop issues onto each team member. +Create lists for each of your team members and quickly drag and drop issues onto each team member's +list. + +## Issue board terminology + +An **issue board** represents a unique view of your issues. It can have multiple lists with each +list consisting of issues represented by cards. + +A **list** is a column on the issue board that displays issues matching certain attributes. +In addition to the default "Open" and "Closed" lists, each additional list shows issues matching +your chosen label, assignee, or milestone. On the top of each list you can see the number of issues +that belong to it. Types of lists include: + +- **Open** (default): all open issues that do not belong to one of the other lists. + Always appears as the leftmost list. +- **Closed** (default): all closed issues. Always appears as the rightmost list. +- **Label list**: all open issues for a label. +- [**Assignee list**](#assignee-lists-premium): all open issues assigned to a user. +- [**Milestone list**](#milestone-lists-premium): all open issues for a milestone. -## Issue Board terminology +A **Card** is a box on a list, and it represents an issue. You can drag cards from one list to +another to change their label, assignee, or milestone. The information you can see on a +card includes: -- **Issue Board** - Each board represents a unique view for your issues. It can have multiple lists with each list consisting of issues represented by cards. -- **List** - A column on the issue board that displays issues matching certain attributes. In addition to the default lists of 'Open' and 'Closed' issue, each additional list will show issues matching your chosen label or assignee. On the top of that list you can see the number of issues that belong to it. - - **Label list**: a list based on a label. It shows all opened issues with that label. - - **Assignee list**: a list which includes all issues assigned to a user. - - **Open** (default): shows all open issues that do not belong to one of the other lists. Always appears as the leftmost list. - - **Closed** (default): shows all closed issues. Always appears as the rightmost list. -- **Card** - A box in the list that represents an individual issue. The information you can see on a card consists of the issue number, the issue title, the assignee, and the labels associated with the issue. You can drag cards from one list to another to change their label or assignee from that of the source list to that of the destination list. +- Issue title +- Associated labels +- Issue number +- Assignee ## Permissions -[Reporters and up](../permissions.md) can use all the functionality of the -Issue Board to create or delete lists, and drag issues from one list to another. +Users with the [Reporter and higher roles](../permissions.md) can use all the functionality of the +Issue Board feature to create or delete lists and drag issues from one list to another. -## GitLab Enterprise features for Issue Boards +## GitLab Enterprise features for issue boards -GitLab Issue Boards are available on GitLab Core and GitLab.com Free, but some -advanced functionalities are only present in higher tiers: GitLab.com Bronze, -Silver, or Gold, or GitLab self-managed Starter, Premium, and Ultimate, as described -in the following sections. +GitLab issue boards are available on GitLab Core and GitLab.com Free tiers, but some +advanced functionality is present in [higher tiers only](https://about.gitlab.com/pricing/). -For a collection of [features per tier](#summary-of-features-per-tier), check the summary below. +### Summary of features per tier + +Different issue board features are available in different [GitLab tiers](https://about.gitlab.com/pricing/), +as shown in the following table: -### Multiple Issue Boards +| Tier | Number of Project issue boards | Number of Group issue boards | Configurable issue boards | Assignee lists | +|------------------|--------------------------------|------------------------------|---------------------------|----------------| +| Core / Free | Multiple | 1 | No | No | +| Starter / Bronze | Multiple | 1 | Yes | No | +| Premium / Silver | Multiple | Multiple | Yes | Yes | +| Ultimate / Gold | Multiple | Multiple | Yes | Yes | -> - Multiple Issue Boards per project [moved](https://gitlab.com/gitlab-org/gitlab-foss/issues/53811) to [GitLab Core](https://about.gitlab.com/pricing/) in GitLab 12.1. -> - Multiple Issue Boards per group is available in [GitLab Premium Edition](https://about.gitlab.com/pricing/). +### Multiple issue boards -Multiple Issue Boards, as the name suggests, allow for more than one Issue Board -for a given project or group. This is great for large projects with more than one team -or in situations where a repository is used to host the code of multiple -products. +> - [Introduced](https://about.gitlab.com/releases/2016/10/22/gitlab-8-13-released/) in GitLab 8.13. +> - Multiple issue boards per project [moved](https://gitlab.com/gitlab-org/gitlab-foss/issues/53811) to [GitLab Core](https://about.gitlab.com/pricing/) in GitLab 12.1. +> - Multiple issue boards per group are available in [GitLab Premium](https://about.gitlab.com/pricing/). + +Multiple issue boards allow for more than one issue board for a given project or group. +This is great for large projects with more than one team or in situations where a repository is used +to host the code of multiple products. -Clicking on the current board name in the upper left corner will reveal a -menu from where you can create another Issue Board or delete the existing one. Using the search box at the top of the menu, you can filter the listed boards. -When you have 10 or more boards available, a "Recent" section is also shown in the menu. -These are shortcuts to your last 4 visited boards. +When you have ten or more boards available, a **Recent** section is also shown in the menu, with +shortcuts to your last four visited boards. -![Multiple Issue Boards](img/issue_boards_multiple.png) +![Multiple issue boards](img/issue_boards_multiple.png) When you're revisiting an issue board in a project or group with multiple boards, -GitLab will automatically load the last board you visited. +GitLab automatically loads the last board you visited. + +#### Create an issue board -### Configurable Issue Boards **(STARTER)** +To create a new issue board: -> Introduced in [GitLab Starter Edition 10.2](https://about.gitlab.com/releases/2017/11/22/gitlab-10-2-released/#issue-boards-configuration). +1. Click the dropdown with the current board name in the upper left corner of the Issue Boards page. +1. Click **Create new board**. +1. Enter the new board's name and select its scope: milestone, labels, assignee, or weight. -An Issue Board can be associated with a GitLab [Milestone](milestones/index.md#milestones), +#### Delete an issue board + +To delete the currently active issue board: + +1. Click the dropdown with the current board name in the upper left corner of the Issue Boards page. +1. Click **Delete board**. +1. Click **Delete** to confirm. + +### Configurable issue boards **(STARTER)** + +> [Introduced](https://about.gitlab.com/releases/2017/11/22/gitlab-10-2-released/#issue-boards-configuration) in [GitLab Starter](https://about.gitlab.com/pricing/) 10.2. + +An issue board can be associated with a GitLab [Milestone](milestones/index.md#milestones), [Labels](labels.md), Assignee and Weight which will automatically filter the Board issues according to these fields. This allows you to create unique boards according to your team's need. ![Create scoped board](img/issue_board_creation.png) -You can define the scope of your board when creating it or by clicking on the "Edit board" button. -Once a milestone, assignee or weight is assigned to an Issue Board, you will no longer be able to +You can define the scope of your board when creating it or by clicking the "Edit board" button. +Once a milestone, assignee or weight is assigned to an issue board, you will no longer be able to filter through these in the search bar. In order to do that, you need to remove the desired scope -(for example, milestone, assignee, or weight) from the Issue Board. +(for example, milestone, assignee, or weight) from the issue board. ![Edit board configuration](img/issue_board_edit_button.png) -If you don't have editing permission in a board, you're still able to see the configuration by clicking on "View scope". +If you don't have editing permission in a board, you're still able to see the configuration by +clicking **View scope**. ![Viewing board configuration](img/issue_board_view_scope.png) +--- + ### Focus mode -> - Introduced in [GitLab Starter 9.1](https://about.gitlab.com/releases/2017/04/22/gitlab-9-1-released/#issue-boards-focus-mode-ees-eep). +> - [Introduced]((https://about.gitlab.com/releases/2017/04/22/gitlab-9-1-released/#issue-boards-focus-mode-ees-eep)) in [GitLab Starter](https://about.gitlab.com/pricing/) 9.1. > - [Moved](https://gitlab.com/gitlab-org/gitlab/-/issues/212331) to GitLab Core in 12.10. -Click the button at the top right to toggle focus mode on and off. In focus mode, the navigation UI is hidden, allowing you to focus on issues in the board. +Click the button at the top right to toggle focus mode on and off. In focus mode, the navigation UI +is hidden, allowing you to focus on issues in the board. ![Board focus mode](img/issue_board_focus_mode.gif) -### Sum of Issue Weights **(STARTER)** +--- + +### Sum of issue weights **(STARTER)** The top of each list indicates the sum of issue weights for the issues that belong to that list. This is useful when using boards for capacity allocation, especially in combination with [assignee lists](#assignee-lists-premium). -![Issue Board summed weights](img/issue_board_summed_weights.png) +![issue board summed weights](img/issue_board_summed_weights.png) + +--- -### Group Issue Boards **(PREMIUM)** +### Group issue boards **(PREMIUM)** -> Introduced in [GitLab Premium 10.0](https://about.gitlab.com/releases/2017/09/22/gitlab-10-0-released/#group-issue-boards). +> [Introduced](https://about.gitlab.com/releases/2017/09/22/gitlab-10-0-released/#group-issue-boards) in [GitLab Premium](https://about.gitlab.com/pricing/) 10.0. Accessible at the group navigation level, a group issue board offers the same features as a project-level board, but it can display issues from all projects in that @@ -231,102 +281,114 @@ boards. When updating milestones and labels for an issue through the sidebar upd group-level objects are available. NOTE: **Note:** -Multiple group issue boards were originally introduced in [GitLab 10.0 Premium](https://about.gitlab.com/releases/2017/09/22/gitlab-10-0-released/#group-issue-boards) and -one group issue board per group was made available in GitLab 10.6 Core. +Multiple group issue boards were originally [introduced](https://about.gitlab.com/releases/2017/09/22/gitlab-10-0-released/#group-issue-boards) in [GitLab Premium](https://about.gitlab.com/pricing/) 10.0, and one group issue board per group was made available in GitLab Core 10.6. ![Group issue board](img/group_issue_board.png) +--- + ### Assignee lists **(PREMIUM)** -> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/5784) in GitLab 11.0 Premium. +> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/5784) in [GitLab Premium](https://about.gitlab.com/pricing/) 11.0. -Like a regular list that shows all issues that have the list label, you can add -an assignee list that shows all issues assigned to the given user. +Like in a regular list that shows all issues with a chosen label, you can add +an assignee list that shows all issues assigned to a user. You can have a board with both label lists and assignee lists. To add an assignee list: 1. Click **Add list**. 1. Select the **Assignee list** tab. -1. Search and click on the user you want to add as an assignee. +1. Search and click the user you want to add as an assignee. Now that the assignee list is added, you can assign or unassign issues to that user -by [dragging issues](#dragging-issues-between-lists) to and/or from an assignee list. +by [dragging issues](#drag-issues-between-lists) to and from an assignee list. To remove an assignee list, just as with a label list, click the trash icon. ![Assignee lists](img/issue_board_assignee_lists.png) +--- + ### Milestone lists **(PREMIUM)** -> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/6469) in GitLab 11.2 Premium. +> [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/6469) in [GitLab Premium](https://about.gitlab.com/pricing/) 11.2. -As of 11.2, you're also able to create lists of a milestone. As the name states, -these are lists that filter issues by the assigned milestone, giving you more -freedom and visibility on the Issue Board. To do so: +You're also able to create lists of a milestone. These are lists that filter issues by the assigned +milestone, giving you more freedom and visibility on the issue board. To add a milestone list: 1. Click **Add list**. 1. Select the **Milestone** tab. -1. Search and click on the milestone. +1. Search and click the milestone. -Similar to the assignee lists, you're now able to [drag issues](#dragging-issues-between-lists) -to and/or from a milestone list to manipulate the milestone of the dragged issues. -As on another list types, click on the trash icon to remove it. +Similar to the assignee lists, you're now able to [drag issues](#drag-issues-between-lists) +to and from a milestone list to manipulate the milestone of the dragged issues. +As in other list types, click the trash icon to remove a list. ![Milestone lists](img/issue_board_milestone_lists.png) +--- + ## Work In Progress limits **(STARTER)** > [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/11403) in GitLab 12.7 -You can set Work In Progress (WIP) limits per issues list. When a limit is set, the list's header shows the number of issues in the list and the soft limit of issues. For example, for a list with 4 issues, and a limit of 5, the header will show `4/5`. If you exceed the limit, the current number of issues is shown in red. For example, you have a list with 5 issues with a limit of 5. When you move another issue to that list, the list's header displays `6/5`, with the `6` shown in red. +You can set Work In Progress (WIP) limits per issues list. When a limit is set, the list's header +shows the number of issues in the list and the soft limit of issues. -To set a WIP limit for a list: +Examples: -1. Navigate to a Project or Group board for which you have membership and click on the Settings icon (gear) in a list's header. -1. Next to **Work In Progress Limit**, click **Edit** and enter the maximum number of issues. Press `Enter` to save. +- You have a list with four issues, and a limit of five, the header will show **4/5**. + If you exceed the limit, the current number of issues is shown in red. +- You have a list with five issues with a limit of five. When you move another issue to that list, + the list's header displays **6/5**, with the six shown in red. -### Summary of features per tier - -Different issue board features are available in different [GitLab tiers](https://about.gitlab.com/pricing/), as shown in the following table: +To set a WIP limit for a list: -| Tier | Number of Project Issue Boards | Number of Group Issue Boards | Configurable Issue Boards | Assignee Lists | -|----------|--------------------------------|------------------------------|---------------------------|----------------| -| Core / Free | Multiple | 1 | No | No | -| Starter / Bronze | Multiple | 1 | Yes | No | -| Premium / Silver | Multiple | Multiple | Yes | Yes | -| Ultimate / Gold | Multiple | Multiple | Yes | Yes | +1. Navigate to a Project or Group board of which you're a member. +1. Click the Settings icon (**{settings}**) in a list's header. +1. Next to **Work In Progress Limit**, click **Edit**. +1. Enter the maximum number of issues. +1. Press <kbd>Enter</kbd> to save. ## 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. +If an issue is blocked by another issue, an icon appears next to its title to indicate its blocked +status. ![Blocked issues](img/issue_boards_blocked_icon_v12_8.png) -## Actions you can take on an Issue Board +--- + +## Actions you can take on an issue board + +- [Create a new list](#create-a-new-list). +- [Delete an existing list](#delete-a-list). +- [Add issues to a list](#add-issues-to-a-list). +- [Remove an issue from a list](#remove-an-issue-from-a-list). +- [Filter issues](#filter-issues) that appear across your issue board. +- [Create workflows](#create-workflows). +- [Drag issues between lists](#drag-issues-between-lists). +- [Mulit-select issue cards](#multi-select-issue-cards). +- [Re-order issues in lists](#issue-ordering-in-a-list). +- Drag and reorder the lists. +- Change issue labels (by dragging an issue between lists). +- Close an issue (by dragging it to the **Done** list). -- [Create a new list](#creating-a-new-list). -- [Delete an existing list](#deleting-a-list). -- Drag issues between lists. -- Re-order issues in lists. -- Drag and reorder the lists themselves. -- Change issue labels on-the-fly while dragging issues between lists. -- Close an issue if you drag it to the **Done** list. -- Create a new list from a non-existing label by [creating the label on-the-fly](#creating-a-new-list) - within the Issue Board. -- [Filter issues](#filtering-issues) that appear across your Issue Board. +If you're not able to do some of the things above, make sure you have the right +[permissions](#permissions). -If you are not able to perform one or more of the things above, make sure you -have the right [permissions](#permissions). +### First time using an issue board -### First time using the Issue Board +The first time you open an issue board, you are presented with +the default lists (**Open** and **Closed**) and a welcome message that gives +you two options. You can either: -The first time you navigate to your Issue Board, you will be presented with -a default list (**Done**) and a welcoming message that gives -you two options. You can either create a predefined set of labels and create -their corresponding lists to the Issue Board or opt-out and use your own lists. +- Create a predefined set of labels (by default: **To Do** and **Doing**) and create their + corresponding lists to the issue board. +- Opt-out and use your own lists. -![Issue Board welcome message](img/issue_board_welcome_message.png) +![issue board welcome message](img/issue_board_welcome_message.png) If you choose to use and create the predefined lists, they will appear as empty because the labels associated to them will not exist up until that moment, @@ -334,99 +396,74 @@ which means the system has no way of populating them automatically. That's of course if the predefined labels don't already exist. If any of them does exist, the list will be created and filled with the issues that have that label. -### Creating a new list +### Create a new list -Create a new list by clicking on the **Add list** button at the upper -right corner of the Issue Board. +Create a new list by clicking the **Add list** button in the upper right corner of the issue board. -![Issue Board welcome message](img/issue_board_add_list.png) +![issue board welcome message](img/issue_board_add_list.png) -Simply choose the label or user to create the list from. The new list will be inserted +Then, choose the label or user to create the list from. The new list will be inserted at the end of the lists, before **Done**. Moving and reordering lists is as easy as dragging them around. -To create a list for a label that doesn't yet exist, simply create the label by -choosing **Create new label**. The label will be created on-the-fly and it will -be immediately added to the dropdown. You can now choose it to create a list. +To create a list for a label that doesn't yet exist, create the label by +choosing **Create new label**. This creates the label immediately and adds it to the dropdown. +You can now choose it to create a list. -### Deleting a list +### Delete a list -To delete a list from the Issue Board use the small trash icon that is present +To delete a list from the issue board, use the small trash icon present in the list's heading. A confirmation dialog will appear for you to confirm. Deleting a list doesn't have any effect in issues and labels, it's just the list view that is removed. You can always add it back later if you need. -### Adding issues to a list +### Add issues to a list -You can add issues to a list by clicking the **Add issues** button that is -present in the upper right corner of the Issue Board. This will open up a modal +You can add issues to a list by clicking the **Add issues** button +present in the upper right corner of the issue board. This will open up a modal window where you can see all the issues that do not belong to any list. -Select one or more issues by clicking on the cards and then click **Add issues** +Select one or more issues by clicking the cards and then click **Add issues** to add them to the selected list. You can limit the issues you want to add to the list by filtering by author, assignee, milestone, and label. ![Bulk adding issues to lists](img/issue_boards_add_issues_modal.png) -### Removing an issue from a list - -Removing an issue from a list can be done by clicking on the issue card and then -clicking the **Remove from board** button in the sidebar. Under the hood, the -respective label is removed, and as such it's also removed from the list and the -board itself. - -![Remove issue from list](img/issue_boards_remove_issue.png) - -### Issue ordering in a list +--- -When visiting a board, issues appear ordered in any list. You are able to change -that order simply by dragging and dropping the issues. The changed order will be saved -to the system so that anybody who visits the same board later will see the reordering, -with some exceptions. +### Remove an issue from a list -The first time a given issue appears in any board (that is, the first time a user -loads a board containing that issue), it is ordered with -respect to other issues in that list according to [Priority order](labels.md#label-priority). +Removing an issue from a list can be done by clicking the issue card and then +clicking the **Remove from board** button in the sidebar. The +respective label is removed. -At that point, that issue is assigned a relative order value by the system -representing its relative order with respect to the other issues in the list. Any time -you drag-and-drop reorder that issue, its relative order value changes accordingly. - -Also, any time that issue appears in any board when it's loaded by a user, -the updated relative order value is used for the ordering. (It's only the first -time an issue appears that it takes from the Priority order mentioned above.) This means that -if issue `A` is drag-and-drop reordered to be above issue `B` by any user in -a given board inside your GitLab instance, any time those two issues are subsequently -loaded in any board in the same instance (could be a different project board or a different group -board, for example), that ordering is maintained. +![Remove issue from list](img/issue_boards_remove_issue.png) -This ordering also affects [issue lists](issues/sorting_issue_lists.md). -Changing the order in an issue board changes the ordering in an issue list, -and vice versa. +--- -### Filtering issues +### Filter issues -You should be able to use the filters on top of your Issue Board to show only +You should be able to use the filters on top of your issue board to show only the results you want. This is similar to the filtering used in the issue tracker -since the metadata from the issues and labels are re-used in the Issue Board. +since the metadata from the issues and labels are re-used in the issue board. You can filter by author, assignee, milestone, and label. -### Creating workflows +### Create workflows -By reordering your lists, you can create workflows. As lists in Issue Boards are +By reordering your lists, you can create workflows. As lists in issue boards are based on labels, it works out of the box with your existing issues. So if you've already labeled things with 'Backend' and 'Frontend', the issue appears in the lists as you create them. In addition, this means you can easily move something between lists by changing a label. -A typical workflow of using the Issue Board would be: +A typical workflow of using an issue board would be: 1. You have [created](labels.md#label-management) and [prioritized](labels.md#label-priority) labels so that you can easily categorize your issues. 1. You have a bunch of issues (ideally labeled). -1. You visit the Issue Board and start [creating lists](#creating-a-new-list) to +1. You visit the issue board and start [creating lists](#create-a-new-list) to create a workflow. 1. You move issues around in lists so that your team knows who should be working on what issue. @@ -446,9 +483,11 @@ issue. This process can be seen clearly when visiting an issue since with every move to another list the label changes and a system not is recorded. -![Issue Board system notes](img/issue_board_system_notes.png) +![issue board system notes](img/issue_board_system_notes.png) -### Dragging issues between lists +--- + +### Drag issues between lists When dragging issues between lists, different behavior occurs depending on the source list and the target list. @@ -472,6 +511,35 @@ To select and move multiple cards: ![Multi-select Issue Cards](img/issue_boards_multi_select_v12_4.png) +--- + +### Issue ordering in a list + +When visiting a board, issues appear ordered in any list. You're able to change +that order by dragging and dropping the issues. The changed order will be saved +to the system so that anybody who visits the same board later will see the reordering, +with some exceptions. + +The first time a given issue appears in any board (that is, the first time a user +loads a board containing that issue), it is ordered with +respect to other issues in that list according to [Priority order](labels.md#label-priority). + +At that point, that issue is assigned a relative order value by the system +representing its relative order with respect to the other issues in the list. Any time +you drag-and-drop reorder that issue, its relative order value changes accordingly. + +Also, any time that issue appears in any board when it's loaded by a user, +the updated relative order value is used for the ordering. (It's only the first +time an issue appears that it takes from the Priority order mentioned above.) This means that +if issue `A` is drag-and-drop reordered to be above issue `B` by any user in +a given board inside your GitLab instance, any time those two issues are subsequently +loaded in any board in the same instance (could be a different project board or a different group +board, for example), that ordering is maintained. + +This ordering also affects [issue lists](issues/sorting_issue_lists.md). +Changing the order in an issue board changes the ordering in an issue list, +and vice versa. + ## Tips A few things to remember: @@ -480,8 +548,8 @@ A few things to remember: and adds the label from the list it goes to. - An issue can exist in multiple lists if it has more than one label. - Lists are populated with issues automatically if the issues are labeled. -- Clicking on the issue title inside a card takes you to that issue. -- Clicking on a label inside a card quickly filters the entire Issue Board +- Clicking the issue title inside a card takes you to that issue. +- Clicking a label inside a card quickly filters the entire issue board and show only the issues from all lists that have that label. - For performance and visibility reasons, each list shows the first 20 issues by default. If you have more than 20 issues, start scrolling down and the next diff --git a/doc/user/project/labels.md b/doc/user/project/labels.md index 9cf50d3aaed..618ef9cfc47 100644 --- a/doc/user/project/labels.md +++ b/doc/user/project/labels.md @@ -164,7 +164,7 @@ Suppose you have the labels `workflow::development`, `workflow::review`, and applied, and a developer wanted to advance the issue to `workflow::review`, they would simply apply that label, and the `workflow::development` label would automatically be removed. This behavior already exists when you move issues -across label lists in an [issue board](issue_board.md#creating-workflows), but +across label lists in an [issue board](issue_board.md#create-workflows), but now, team members who may not be working in an issue board directly would still be able to advance workflow states consistently in issues themselves. diff --git a/doc/user/project/repository/index.md b/doc/user/project/repository/index.md index 847397ebca9..bcdac86d2a0 100644 --- a/doc/user/project/repository/index.md +++ b/doc/user/project/repository/index.md @@ -215,7 +215,7 @@ minutes. ![Repository Languages bar](img/repository_languages_v12_2.gif) Not all files are detected, among others; documentation, -vendored code, and most markup languages are excluded. This behaviour can be +vendored code, and most markup languages are excluded. This behavior can be adjusted by overriding the default. For example, to enable `.proto` files to be detected, add the following to `.gitattributes` in the root of your repository. |