summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-04-15 15:42:17 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-04-15 15:42:17 +0000
commit44fdf983bd35328dd577d3d3650d14163ef3e2b6 (patch)
tree84ff300d056cfbabb5a0fe2a9cbaa80aaeab1cc5 /doc
parentbc9fa07b26184b5c94808f704db6ea1ac81bf4de (diff)
downloadgitlab-ce-44fdf983bd35328dd577d3d3650d14163ef3e2b6.tar.gz
Add latest changes from gitlab-org/gitlab@12-10-stable-ee
Diffstat (limited to 'doc')
-rw-r--r--doc/api/README.md2
-rw-r--r--doc/api/issues.md8
-rw-r--r--doc/development/README.md2
-rw-r--r--doc/development/changelog.md29
-rw-r--r--doc/development/code_review.md6
-rw-r--r--doc/development/contributing/issue_workflow.md11
-rw-r--r--doc/development/documentation/styleguide.md11
-rw-r--r--doc/development/ee_features.md9
-rw-r--r--doc/development/feature_flags/controls.md5
-rw-r--r--doc/development/file_storage.md15
-rw-r--r--doc/development/interacting_components.md4
-rw-r--r--doc/development/performance.md7
-rw-r--r--doc/install/aws/index.md2
-rw-r--r--doc/public_access/public_access.md10
-rw-r--r--doc/user/admin_area/settings/visibility_and_access_controls.md2
-rw-r--r--doc/user/project/import/img/jira/import_issues_from_jira_button_v12_10.pngbin0 -> 31779 bytes
-rw-r--r--doc/user/project/import/img/jira/import_issues_from_jira_form_v12_10.pngbin0 -> 89735 bytes
-rw-r--r--doc/user/project/import/img/jira/import_issues_from_jira_projects_v12_10.pngbin0 -> 230008 bytes
-rw-r--r--doc/user/project/import/index.md1
-rw-r--r--doc/user/project/import/jira.md57
20 files changed, 116 insertions, 65 deletions
diff --git a/doc/api/README.md b/doc/api/README.md
index 24b81852dc5..3c8d3dc4902 100644
--- a/doc/api/README.md
+++ b/doc/api/README.md
@@ -390,7 +390,7 @@ CAUTION: **Caution:**
For performance reasons since
[GitLab 11.8](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/23931)
and **behind the `api_kaminari_count_with_limit`
-[feature flag](../development/feature_flags.md)**, if the number of resources is
+[feature flag](../development/feature_flags/index.md)**, if the number of resources is
more than 10,000, the `X-Total` and `X-Total-Pages` headers as well as the
`rel="last"` `Link` are not present in the response headers.
diff --git a/doc/api/issues.md b/doc/api/issues.md
index 89b81c9ee97..14f81d7d327 100644
--- a/doc/api/issues.md
+++ b/doc/api/issues.md
@@ -740,6 +740,14 @@ the `weight` parameter:
**Note**: The `closed_by` attribute was [introduced in GitLab 10.6](https://gitlab.com/gitlab-org/gitlab-foss/-/merge_requests/17042). This value will only be present for issues which were closed after GitLab 10.6 and when the user account that closed the issue still exists.
+## Rate limits
+
+To help avoid abuse, users are limited to:
+
+| Request Type | Limit |
+| ---------------- | --------------------------- |
+| Create | 300 issues per minute |
+
## Edit issue
Updates an existing project issue. This call is also used to mark an issue as
diff --git a/doc/development/README.md b/doc/development/README.md
index b505fa38618..16858b0c58e 100644
--- a/doc/development/README.md
+++ b/doc/development/README.md
@@ -63,7 +63,7 @@ Complementary reads:
styleguide if you are contributing to the [GraphQL API](../api/graphql/index.md)
- [Sidekiq guidelines](sidekiq_style_guide.md) for working with Sidekiq workers
- [Working with Gitaly](gitaly.md)
-- [Manage feature flags](feature_flags.md)
+- [Manage feature flags](feature_flags/index.md)
- [Licensed feature availability](licensed_feature_availability.md)
- [View sent emails or preview mailers](emails.md)
- [Shell commands](shell_commands.md) in the GitLab codebase
diff --git a/doc/development/changelog.md b/doc/development/changelog.md
index bc1ba4eb50b..2007c26403c 100644
--- a/doc/development/changelog.md
+++ b/doc/development/changelog.md
@@ -5,9 +5,9 @@ file, as well as information and history about our changelog process.
## Overview
-Each bullet point, or **entry**, in our [`CHANGELOG.md`][changelog.md] file is
-generated from a single data file in the [`changelogs/unreleased/`][unreleased]
-(or corresponding EE) folder. The file is expected to be a [YAML] file in the
+Each bullet point, or **entry**, in our [`CHANGELOG.md`](https://gitlab.com/gitlab-org/gitlab/blob/master/CHANGELOG.md) file is
+generated from a single data file in the [`changelogs/unreleased/`](https://gitlab.com/gitlab-org/gitlab-foss/tree/master/changelogs/)
+(or corresponding EE) folder. The file is expected to be a [YAML](https://en.wikipedia.org/wiki/YAML) file in the
following format:
```yaml
@@ -27,15 +27,12 @@ valid options are: added, fixed, changed, deprecated, removed, security, perform
Community contributors and core team members are encouraged to add their name to
the `author` field. GitLab team members **should not**.
-[changelog.md]: https://gitlab.com/gitlab-org/gitlab/blob/master/CHANGELOG.md
-[unreleased]: https://gitlab.com/gitlab-org/gitlab-foss/tree/master/changelogs/
-[YAML]: https://en.wikipedia.org/wiki/YAML
-
## What warrants a changelog entry?
- Any change that introduces a database migration, whether it's regular, post,
or data migration, **must** have a changelog entry.
-- [Security fixes] **must** have a changelog entry, without `merge_request` value
+- [Security fixes](https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md)
+ **must** have a changelog entry, without `merge_request` value
and with `type` set to `security`.
- Any user-facing change **should** have a changelog entry. Example: "GitLab now
uses system fonts for all text."
@@ -269,13 +266,14 @@ as the other was merged. When we had dozens of merge requests fighting for the
same changelog entry location, this quickly became a major source of merge
conflicts and delays in development.
-This led us to a [boring solution] of "add your entry in a random location in
+This led us to a [boring solution](https://about.gitlab.com/handbook/values/#boring-solutions) of "add your entry in a random location in
the list." This actually worked pretty well as we got further along in each
monthly release cycle, but at the start of a new cycle, when a new version
section was added and there were fewer places to "randomly" add an entry, the
conflicts became a problem again until we had a sufficient number of entries.
-On top of all this, it created an entirely different headache for [release managers]
+On top of all this, it created an entirely different headache for
+[release managers](https://gitlab.com/gitlab-org/release/docs/blob/master/quickstart/release-manager.md)
when they cherry-picked a commit into a stable branch for a patch release. If
the commit included an entry in the `CHANGELOG`, it would include the entire
changelog for the latest version in `master`, so the release manager would have
@@ -283,16 +281,11 @@ to manually remove the later entries. They often would have had to do this
multiple times per patch release. This was compounded when we had to release
multiple patches at once due to a security issue.
-We needed to automate all of this manual work. So we [started brainstorming].
+We needed to automate all of this manual work. So we
+[started brainstorming](https://gitlab.com/gitlab-org/gitlab-foss/issues/17826).
After much discussion we settled on the current solution of one file per entry,
and then compiling the entries into the overall `CHANGELOG.md` file during the
-[release process].
-
-[boring solution]: https://about.gitlab.com/handbook/values/#boring-solutions
-[release managers]: https://gitlab.com/gitlab-org/release/docs/blob/master/quickstart/release-manager.md
-[started brainstorming]: https://gitlab.com/gitlab-org/gitlab-foss/issues/17826
-[release process]: https://gitlab.com/gitlab-org/release-tools
-[Security fixes]: https://gitlab.com/gitlab-org/release/docs/blob/master/general/security/developer.md
+[release process](https://gitlab.com/gitlab-org/release-tools).
---
diff --git a/doc/development/code_review.md b/doc/development/code_review.md
index 52a0672259f..5220f29bd60 100644
--- a/doc/development/code_review.md
+++ b/doc/development/code_review.md
@@ -490,15 +490,11 @@ A good example of collaboration on an MR touching multiple parts of the codebase
### Credits
-Largely based on the [thoughtbot code review guide].
-
-[thoughtbot code review guide]: https://github.com/thoughtbot/guides/tree/master/code-review
+Largely based on the [thoughtbot code review guide](https://github.com/thoughtbot/guides/tree/master/code-review).
---
[Return to Development documentation](README.md)
-[projects]: https://about.gitlab.com/handbook/engineering/projects/
-[build handbook]: https://about.gitlab.com/handbook/build/handbook/build#how-to-work-with-build
[^1]: Please note that specs other than JavaScript specs are considered backend code.
[^2]: We encourage you to seek guidance from a database maintainer if your merge request is potentially introducing expensive queries. It is most efficient to comment on the line of code in question with the SQL queries so they can give their advice.
diff --git a/doc/development/contributing/issue_workflow.md b/doc/development/contributing/issue_workflow.md
index 5df357eee9e..c8705a174af 100644
--- a/doc/development/contributing/issue_workflow.md
+++ b/doc/development/contributing/issue_workflow.md
@@ -402,7 +402,8 @@ below will make it easy to manage this, without unnecessary overhead.
Every monthly release has a corresponding issue on the CE issue tracker to keep
track of functionality broken by that release and any fixes that need to be
-included in a patch release (see [8.3 Regressions] as an example).
+included in a patch release (see
+[8.3 Regressions](https://gitlab.com/gitlab-org/gitlab-foss/issues/4127) as an example).
As outlined in the issue description, the intended workflow is to post one note
with a reference to an issue describing the regression, and then to update that
@@ -412,11 +413,9 @@ If you're a contributor who doesn't have the required permissions to update
other users' notes, please post a new note with a reference to both the issue
and the merge request.
-The release manager will [update the notes] in the regression issue as fixes are
-addressed.
-
-[8.3 Regressions]: https://gitlab.com/gitlab-org/gitlab-foss/issues/4127
-[update the notes]: https://gitlab.com/gitlab-org/release-tools/blob/master/doc/pro-tips.md#update-the-regression-issue
+The release manager will
+[update the notes](https://gitlab.com/gitlab-org/release-tools/blob/master/doc/pro-tips.md#update-the-regression-issue)
+in the regression issue as fixes are addressed.
## Technical and UX debt
diff --git a/doc/development/documentation/styleguide.md b/doc/development/documentation/styleguide.md
index deb86569879..0007f6d6e2f 100644
--- a/doc/development/documentation/styleguide.md
+++ b/doc/development/documentation/styleguide.md
@@ -1349,11 +1349,9 @@ Replace `reconfigure` with `restart` where appropriate.
In [step 2 of the installation guide](../../install/installation.md#2-ruby),
we install Ruby from source. Whenever there is a new version that needs to
be updated, remember to change it throughout the codeblock and also replace
-the sha256sum (it can be found in the [downloads page][ruby-dl] of the Ruby
+the sha256sum (it can be found in the [downloads page](https://www.ruby-lang.org/en/downloads/) of the Ruby
website).
-[ruby-dl]: https://www.ruby-lang.org/en/downloads/ "Ruby download website"
-
### Configuration documentation for source and Omnibus installations
GitLab currently officially supports two installation methods: installations
@@ -1380,7 +1378,7 @@ the style below as a guide:
external_url "https://gitlab.example.com"
```
-1. Save the file and [reconfigure] GitLab for the changes to take effect.
+1. Save the file and [reconfigure](path/to/administration/restart_gitlab.md#omnibus-gitlab-reconfigure) GitLab for the changes to take effect.
---
@@ -1393,10 +1391,7 @@ the style below as a guide:
host: "gitlab.example.com"
```
-1. Save the file and [restart] GitLab for the changes to take effect.
-
-[reconfigure]: path/to/administration/restart_gitlab.md#omnibus-gitlab-reconfigure
-[restart]: path/to/administration/restart_gitlab.md#installations-from-source
+1. Save the file and [restart](path/to/administration/restart_gitlab.md#installations-from-source) GitLab for the changes to take effect.
````
In this case:
diff --git a/doc/development/ee_features.md b/doc/development/ee_features.md
index b386d0e78ff..bd70d5b87ba 100644
--- a/doc/development/ee_features.md
+++ b/doc/development/ee_features.md
@@ -9,7 +9,8 @@
## Act as CE when unlicensed
-Since the implementation of [GitLab CE features to work with unlicensed EE instance][ee-as-ce]
+Since the implementation of
+[GitLab CE features to work with unlicensed EE instance](https://gitlab.com/gitlab-org/gitlab/issues/2500)
GitLab Enterprise Edition should work like GitLab Community Edition
when no license is active. So EE features always should be guarded by
`project.feature_available?` or `group.feature_available?` (or
@@ -24,8 +25,6 @@ setting the [`FOSS_ONLY` environment variable](https://gitlab.com/gitlab-org/git
to something that evaluates as `true`. The same works for running tests
(for example `FOSS_ONLY=1 yarn jest`).
-[ee-as-ce]: https://gitlab.com/gitlab-org/gitlab/issues/2500
-
## Separation of EE code
All EE code should be put inside the `ee/` top-level directory. The
@@ -53,11 +52,9 @@ is applied not only to models. Here's a list of other examples:
- `ee/app/views/foo/_bar.html.haml`
This works because for every path that is present in CE's eager-load/auto-load
-paths, we add the same `ee/`-prepended path in [`config/application.rb`].
+paths, we add the same `ee/`-prepended path in [`config/application.rb`](https://gitlab.com/gitlab-org/gitlab/blob/925d3d4ebc7a2c72964ce97623ae41b8af12538d/config/application.rb#L42-52).
This also applies to views.
-[`config/application.rb`]: https://gitlab.com/gitlab-org/gitlab/blob/925d3d4ebc7a2c72964ce97623ae41b8af12538d/config/application.rb#L42-52
-
### EE features based on CE features
For features that build on existing CE features, write a module in the `EE`
diff --git a/doc/development/feature_flags/controls.md b/doc/development/feature_flags/controls.md
index fa9942e8d81..aa32285b27b 100644
--- a/doc/development/feature_flags/controls.md
+++ b/doc/development/feature_flags/controls.md
@@ -29,6 +29,11 @@ Monitor stage, Health group.
For all production environment Chatops commands, use the `#production` channel.
+As per the template, where a feature would have a (potentially) significant user
+impact and the feature is being enabled instance wide prior to release, please copy
+the Slack message and repost in the `#support_gitlab-com` channel for added visibility
+and awareness, preferably with a link to the issue, MR, or docs.
+
Regardless of the channel in which the Chatops command is ran, any feature flag change that affects GitLab.com will automatically be logged in an issue.
The issue is created in the [gl-infra/feature-flag-log](https://gitlab.com/gitlab-com/gl-infra/feature-flag-log/issues?scope=all&utf8=%E2%9C%93&state=closed) project, and it will at minimum log the Slack handle of person enabling a feature flag, the time, and the name of the flag being changed.
diff --git a/doc/development/file_storage.md b/doc/development/file_storage.md
index e16fe7eba5b..230288844d7 100644
--- a/doc/development/file_storage.md
+++ b/doc/development/file_storage.md
@@ -1,6 +1,6 @@
# File Storage in GitLab
-We use the [CarrierWave] gem to handle file upload, store and retrieval.
+We use the [CarrierWave](https://github.com/carrierwaveuploader/carrierwave) gem to handle file upload, store and retrieval.
File uploads should be accelerated by workhorse, for details please refer to [uploads development documentation](uploads.md).
@@ -46,14 +46,14 @@ they are still not 100% standardized. You can see them below:
CI Artifacts and LFS Objects behave differently in CE and EE. In CE they inherit the `GitlabUploader`
while in EE they inherit the `ObjectStorage` and store files in and S3 API compatible object store.
-In the case of Issues/MR/Notes Markdown attachments, there is a different approach using the [Hashed Storage] layout,
+In the case of Issues/MR/Notes Markdown attachments, there is a different approach using the [Hashed Storage](../administration/repository_storage_types.md) layout,
instead of basing the path into a mutable variable `:project_path_with_namespace`, it's possible to use the
hash of the project ID instead, if project migrates to the new approach (introduced in 10.2).
-> Note: We provide an [all-in-one Rake task] to migrate all uploads to object
+> Note: We provide an [all-in-one Rake task](../administration/raketasks/uploads/migrate.md) to migrate all uploads to object
> storage in one go. If a new Uploader class or model type is introduced, make
-> sure you add a Rake task invocation corresponding to it to the [category
-> list].
+> sure you add a Rake task invocation corresponding to it to the
+> [category list](https://gitlab.com/gitlab-org/gitlab/blob/master/lib/tasks/gitlab/uploads/migrate.rake).
### Path segments
@@ -144,8 +144,3 @@ class Thing < ActiveRecord::Base
...
end
```
-
-[CarrierWave]: https://github.com/carrierwaveuploader/carrierwave
-[Hashed Storage]: ../administration/repository_storage_types.md
-[all-in-one rake task]: ../administration/raketasks/uploads/migrate.md
-[category list]: https://gitlab.com/gitlab-org/gitlab/blob/master/lib/tasks/gitlab/uploads/migrate.rake
diff --git a/doc/development/interacting_components.md b/doc/development/interacting_components.md
index 3db260d5f85..4639bd7cc20 100644
--- a/doc/development/interacting_components.md
+++ b/doc/development/interacting_components.md
@@ -9,7 +9,7 @@ when making _backend_ changes that might involve multiple features or [component
## Uploads
-GitLab supports uploads to [object storage]. That means every feature and
+GitLab supports uploads to [object storage](https://docs.gitlab.com/charts/advanced/external-object-storage/). That means every feature and
change that affects uploads should also be tested against [object storage],
which is _not_ enabled by default in [GDK](https://gitlab.com/gitlab-org/gitlab-development-kit).
@@ -25,5 +25,3 @@ See also [File Storage in GitLab](file_storage.md).
GitLab supports a great amount of features for [merge requests](../user/project/merge_requests/index.md). One
of them is the ability to create merge requests from and to [forks](../gitlab-basics/fork-project.md),
which should also be highly considered and tested upon development phase.
-
-[object storage]: https://docs.gitlab.com/charts/advanced/external-object-storage/
diff --git a/doc/development/performance.md b/doc/development/performance.md
index a7ae283432f..5068103ff16 100644
--- a/doc/development/performance.md
+++ b/doc/development/performance.md
@@ -8,7 +8,7 @@ consistent performance of GitLab.
The process of solving performance problems is roughly as follows:
1. Make sure there's an issue open somewhere (for example, on the GitLab CE issue
- tracker), and create one if there is not. See [#15607][#15607] for an example.
+ tracker), and create one if there is not. See [#15607](https://gitlab.com/gitlab-org/gitlab-foss/issues/15607) for an example.
1. Measure the performance of the code in a production environment such as
GitLab.com (see the [Tooling](#tooling) section below). Performance should be
measured over a period of _at least_ 24 hours.
@@ -495,7 +495,7 @@ just memory but also unnecessary time spent in CPU and I/O for processing lines
## Anti-Patterns
-This is a collection of [anti-patterns][anti-pattern] that should be avoided
+This is a collection of [anti-patterns](https://en.wikipedia.org/wiki/Anti-pattern) that should be avoided
unless these changes have a measurable, significant, and positive impact on
production environments.
@@ -539,6 +539,3 @@ Assuming you are working with ActiveRecord models, you might also find these lin
You may find some useful examples in this snippet:
<https://gitlab.com/gitlab-org/gitlab-foss/snippets/33946>
-
-[#15607]: https://gitlab.com/gitlab-org/gitlab-foss/issues/15607
-[anti-pattern]: https://en.wikipedia.org/wiki/Anti-pattern
diff --git a/doc/install/aws/index.md b/doc/install/aws/index.md
index 109cd635dc0..d510dff82dd 100644
--- a/doc/install/aws/index.md
+++ b/doc/install/aws/index.md
@@ -205,7 +205,7 @@ On the EC2 dashboard, look for Load Balancer in the left navigation bar:
1. Click **Configure Health Check** and set up a health check for your EC2 instances.
1. For **Ping Protocol**, select HTTP.
1. For **Ping Port**, enter 80.
- 1. For **Ping Path**, enter `/explore`. (We use `/explore` as it's a public endpoint that does
+ 1. For **Ping Path**, enter `/users/sign_in`. (We use `/users/sign_in` as it's a public endpoint that does
not require authorization.)
1. Keep the default **Advanced Details** or adjust them according to your needs.
1. Click **Add EC2 Instances** but, as we don't have any instances to add yet, come back
diff --git a/doc/public_access/public_access.md b/doc/public_access/public_access.md
index d7b2222fa06..0ca2da1db63 100644
--- a/doc/public_access/public_access.md
+++ b/doc/public_access/public_access.md
@@ -69,6 +69,16 @@ you are privileged to.
If the public level is restricted, user profiles are only visible to logged in users.
+## Visibility of pages
+
+By default, the following directories are visible to unauthenticated users:
+
+- Public access (`/public`).
+- Explore (`/explore`).
+- Help (`/help`).
+
+However, if the access level of the `/public` directory is restricted, these directories are visible only to logged in users.
+
## Restricting the use of public or internal projects
You can restrict the use of visibility levels for users when they create a project or a
diff --git a/doc/user/admin_area/settings/visibility_and_access_controls.md b/doc/user/admin_area/settings/visibility_and_access_controls.md
index 704dd89ede2..f827fed833b 100644
--- a/doc/user/admin_area/settings/visibility_and_access_controls.md
+++ b/doc/user/admin_area/settings/visibility_and_access_controls.md
@@ -91,7 +91,7 @@ For more details on group visibility, see [Public access](../../../public_access
## Restricted visibility levels
-To set the available visibility levels for new projects and snippets:
+To set the available visibility levels for projects, snippets, and selected pages:
1. Check the desired visibility levels.
1. Click **Save changes**.
diff --git a/doc/user/project/import/img/jira/import_issues_from_jira_button_v12_10.png b/doc/user/project/import/img/jira/import_issues_from_jira_button_v12_10.png
new file mode 100644
index 00000000000..8983d685a24
--- /dev/null
+++ b/doc/user/project/import/img/jira/import_issues_from_jira_button_v12_10.png
Binary files differ
diff --git a/doc/user/project/import/img/jira/import_issues_from_jira_form_v12_10.png b/doc/user/project/import/img/jira/import_issues_from_jira_form_v12_10.png
new file mode 100644
index 00000000000..0ac5e9bdb91
--- /dev/null
+++ b/doc/user/project/import/img/jira/import_issues_from_jira_form_v12_10.png
Binary files differ
diff --git a/doc/user/project/import/img/jira/import_issues_from_jira_projects_v12_10.png b/doc/user/project/import/img/jira/import_issues_from_jira_projects_v12_10.png
new file mode 100644
index 00000000000..cf5f0dd59cd
--- /dev/null
+++ b/doc/user/project/import/img/jira/import_issues_from_jira_projects_v12_10.png
Binary files differ
diff --git a/doc/user/project/import/index.md b/doc/user/project/import/index.md
index a114e23b3e2..a0da68eb513 100644
--- a/doc/user/project/import/index.md
+++ b/doc/user/project/import/index.md
@@ -15,6 +15,7 @@
1. [By uploading a manifest file (AOSP)](manifest.md)
1. [From Gemnasium](gemnasium.md)
1. [From Phabricator](phabricator.md)
+1. [From Jira (issues only)](jira.md)
In addition to the specific migration documentation above, you can import any
Git repository via HTTP from the New Project page. Be aware that if the
diff --git a/doc/user/project/import/jira.md b/doc/user/project/import/jira.md
new file mode 100644
index 00000000000..49224001fe6
--- /dev/null
+++ b/doc/user/project/import/jira.md
@@ -0,0 +1,57 @@
+# Import your Jira project issues to GitLab
+
+> [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/2766) in GitLab 12.10.
+
+Using GitLab Jira importer, you can import your Jira issues to GitLab.com or to
+your self-managed GitLab instance.
+
+Jira issues import is an MVC, project-level feature, meaning that issues from multiple
+Jira projects can be imported into a GitLab project. MVC version imports issue title and description
+as well as some other issue metadata as a section in the issue description.
+
+## Prerequisites
+
+### Permissions
+
+In order to be able to import issues from a Jira project you need to have read access on Jira
+issues and a [Maintainer or higher](../../permissions.md#project-members-permissions) role in the
+GitLab project that you wish to import into.
+
+### Jira integration
+
+This feature uses the existing GitLab [Jira integration](../integrations/jira.md).
+
+Make sure you have the integration set up before trying to import Jira issues.
+
+## Import Jira issues to GitLab
+
+To import Jira issues to a GitLab project, follow the steps below.
+
+NOTE: **Note:**
+Importing Jira issues is done as an asynchronous background job, which
+may result in delays based on import queues load, system load, or other factors.
+Importing large projects may take several minutes depending on the size of the import.
+
+1. On the **{issues}** **Issues** page, click the **Import Issues** (**{import}**) button.
+1. Select **Import from Jira**.
+
+ ![Import issues from Jira button](img/jira/import_issues_from_jira_button_v12_10.png)
+
+ The following form appears.
+
+ ![Import issues from Jira form](img/jira/import_issues_from_jira_form_v12_10.png)
+
+ If you've previously set up the [Jira integration](../integrations/jira.md), you now see the Jira
+ projects that you have access to in the dropdown.
+
+1. Select the Jira project that you wish to import issues from.
+
+ ![Import issues from Jira form](img/jira/import_issues_from_jira_projects_v12_10.png)
+
+1. Click **Import Issues**. You're presented with a confirmation that import has started.
+ While the import is running in the background, you can navigate away from the import status page
+ to the issues page, and you'll see the new issues appearing in the issues list.
+
+1. To check the status of your import, go back to the Jira import page.
+
+ ![Import issues from Jira button](img/jira/import_issues_from_jira_button_v12_10.png)