summaryrefslogtreecommitdiff
path: root/doc/user/project/services
diff options
context:
space:
mode:
Diffstat (limited to 'doc/user/project/services')
-rw-r--r--doc/user/project/services/bamboo.md60
-rw-r--r--doc/user/project/services/bugzilla.md17
-rw-r--r--doc/user/project/services/builds_emails.md16
-rw-r--r--doc/user/project/services/emails_on_push.md17
-rw-r--r--doc/user/project/services/external_issue_tracker.md31
-rw-r--r--doc/user/project/services/hipchat.md54
-rw-r--r--doc/user/project/services/img/builds_emails_service.pngbin0 -> 33943 bytes
-rw-r--r--doc/user/project/services/img/emails_on_push_service.pngbin0 -> 98160 bytes
-rw-r--r--doc/user/project/services/img/jira_add_gitlab_commit_message.pngbin0 -> 46590 bytes
-rw-r--r--doc/user/project/services/img/jira_add_user_to_group.pngbin0 -> 41994 bytes
-rw-r--r--doc/user/project/services/img/jira_create_new_group.pngbin0 -> 32934 bytes
-rw-r--r--doc/user/project/services/img/jira_create_new_group_name.pngbin0 -> 9054 bytes
-rw-r--r--doc/user/project/services/img/jira_create_new_user.pngbin0 -> 21081 bytes
-rw-r--r--doc/user/project/services/img/jira_group_access.pngbin0 -> 32210 bytes
-rw-r--r--doc/user/project/services/img/jira_issue_closed.pngbin0 -> 77028 bytes
-rw-r--r--doc/user/project/services/img/jira_issue_reference.pngbin0 -> 36188 bytes
-rw-r--r--doc/user/project/services/img/jira_issues_workflow.pngbin0 -> 87067 bytes
-rw-r--r--doc/user/project/services/img/jira_merge_request_close.pngbin0 -> 102835 bytes
-rw-r--r--doc/user/project/services/img/jira_project_name.pngbin0 -> 41572 bytes
-rw-r--r--doc/user/project/services/img/jira_reference_commit_message_in_jira_issue.pngbin0 -> 33706 bytes
-rw-r--r--doc/user/project/services/img/jira_service.pngbin0 -> 56834 bytes
-rw-r--r--doc/user/project/services/img/jira_service_close_issue.pngbin0 -> 79569 bytes
-rw-r--r--doc/user/project/services/img/jira_service_page.pngbin0 -> 36280 bytes
-rw-r--r--doc/user/project/services/img/jira_submit_gitlab_merge_request.pngbin0 -> 51913 bytes
-rw-r--r--doc/user/project/services/img/jira_user_management_link.pngbin0 -> 43095 bytes
-rw-r--r--doc/user/project/services/img/jira_workflow_screenshot.pngbin0 -> 111093 bytes
-rw-r--r--doc/user/project/services/img/redmine_configuration.pngbin0 -> 16973 bytes
-rw-r--r--doc/user/project/services/img/slack_configuration.pngbin0 -> 75762 bytes
-rw-r--r--doc/user/project/services/irker.md51
-rw-r--r--doc/user/project/services/jira.md246
-rw-r--r--doc/user/project/services/redmine.md21
-rw-r--r--doc/user/project/services/slack.md50
32 files changed, 563 insertions, 0 deletions
diff --git a/doc/user/project/services/bamboo.md b/doc/user/project/services/bamboo.md
new file mode 100644
index 00000000000..51668128c62
--- /dev/null
+++ b/doc/user/project/services/bamboo.md
@@ -0,0 +1,60 @@
+# Atlassian Bamboo CI Service
+
+GitLab provides integration with Atlassian Bamboo for continuous integration.
+When configured, pushes to a project will trigger a build in Bamboo automatically.
+Merge requests will also display CI status showing whether the build is pending,
+failed, or completed successfully. It also provides a link to the Bamboo build
+page for more information.
+
+Bamboo doesn't quite provide the same features as a traditional build system when
+it comes to accepting webhooks and commit data. There are a few things that
+need to be configured in a Bamboo build plan before GitLab can integrate.
+
+## Setup
+
+### Complete these steps in Bamboo:
+
+1. Navigate to a Bamboo build plan and choose 'Configure plan' from the 'Actions'
+dropdown.
+1. Select the 'Triggers' tab.
+1. Click 'Add trigger'.
+1. Enter a description such as 'GitLab trigger'
+1. Choose 'Repository triggers the build when changes are committed'
+1. Check one or more repositories checkboxes
+1. Enter the GitLab IP address in the 'Trigger IP addresses' box. This is a
+whitelist of IP addresses that are allowed to trigger Bamboo builds.
+1. Save the trigger.
+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}'
+in the 'Labels' box.
+1. Save
+
+Bamboo is now ready to accept triggers from GitLab. Next, set up the Bamboo
+service in GitLab
+
+### Complete these steps in GitLab:
+
+1. Navigate to the project you want to configure to trigger builds.
+1. Select 'Settings' in the top navigation.
+1. Select 'Services' in the left navigation.
+1. Click 'Atlassian Bamboo CI'
+1. Select the 'Active' checkbox.
+1. Enter the base URL of your Bamboo server. 'https://bamboo.example.com'
+1. Enter the build key from your Bamboo build plan. Build keys are a short,
+all capital letter, identifier that is unique. It will be something like PR-BLD
+1. If necessary, enter username and password for a Bamboo user that has
+access to trigger the build plan. Leave these fields blank if you do not require
+authentication.
+1. Save or optionally click 'Test Settings'. Please note that 'Test Settings'
+will actually trigger a build in Bamboo.
+
+## Troubleshooting
+
+If builds are not triggered, these are a couple of things to keep in mind.
+
+1. Ensure you entered the right GitLab IP address in Bamboo under 'Trigger
+IP addresses'.
+1. Remember that GitLab only triggers builds on push events. A commit via the
+web interface will not trigger CI currently.
diff --git a/doc/user/project/services/bugzilla.md b/doc/user/project/services/bugzilla.md
new file mode 100644
index 00000000000..215ed6fe9cc
--- /dev/null
+++ b/doc/user/project/services/bugzilla.md
@@ -0,0 +1,17 @@
+# Bugzilla Service
+
+Go to your project's **Settings > Services > Bugzilla** and fill in the required
+details as described in the table below.
+
+| Field | Description |
+| ----- | ----------- |
+| `description` | A name for the issue tracker (to differentiate between instances, for example) |
+| `project_url` | The URL to the project in Bugzilla which is being linked to this GitLab project. Note that the `project_url` requires PRODUCT_NAME to be updated with the product/project name in Bugzilla. |
+| `issues_url` | The URL to the issue in Bugzilla project that is linked to this GitLab project. Note that the `issues_url` requires `:id` in the URL. This ID is used by GitLab as a placeholder to replace the issue number. |
+| `new_issue_url` | This is the URL to create a new issue in Bugzilla for the project linked to this GitLab project. Note that the `new_issue_url` requires PRODUCT_NAME to be updated with the product/project name in Bugzilla. |
+
+Once you have configured and enabled Bugzilla:
+
+- the **Issues** link on the GitLab project pages takes you to the appropriate
+ Bugzilla product page
+- clicking **New issue** on the project dashboard takes you to Bugzilla for entering a new issue
diff --git a/doc/user/project/services/builds_emails.md b/doc/user/project/services/builds_emails.md
new file mode 100644
index 00000000000..af0b1a287c7
--- /dev/null
+++ b/doc/user/project/services/builds_emails.md
@@ -0,0 +1,16 @@
+## Enabling build emails
+
+To receive e-mail notifications about the result status of your builds, visit
+your project's **Settings > Services > Builds emails** and activate the service.
+
+In the _Recipients_ area, provide a list of e-mails separated by comma.
+
+Check the _Add pusher_ checkbox if you want the committer to also receive
+e-mail notifications about each build's status.
+
+If you enable the _Notify only broken builds_ option, e-mail notifications will
+be sent only for failed builds.
+
+---
+
+![Builds emails service settings](img/builds_emails_service.png)
diff --git a/doc/user/project/services/emails_on_push.md b/doc/user/project/services/emails_on_push.md
new file mode 100644
index 00000000000..2f9f36f962e
--- /dev/null
+++ b/doc/user/project/services/emails_on_push.md
@@ -0,0 +1,17 @@
+## Enabling emails on push
+
+To receive email notifications for every change that is pushed to the project, visit
+your project's **Settings > Services > Emails on push** and activate the service.
+
+In the _Recipients_ area, provide a list of emails separated by commas.
+
+You can configure any of the following settings depending on your preference.
+
++ **Push events** - Email will be triggered when a push event is recieved
++ **Tag push events** - Email will be triggered when a tag is created and pushed
++ **Send from committer** - Send notifications from the committer's email address if the domain is part of the domain GitLab is running on (e.g. `user@gitlab.com`).
++ **Disable code diffs** - Don't include possibly sensitive code diffs in notification body.
+
+---
+
+![Email on push service settings](img/emails_on_push_service.png)
diff --git a/doc/user/project/services/external_issue_tracker.md b/doc/user/project/services/external_issue_tracker.md
new file mode 100644
index 00000000000..fcb9b639a8b
--- /dev/null
+++ b/doc/user/project/services/external_issue_tracker.md
@@ -0,0 +1,31 @@
+# External issue tracker
+
+GitLab has a great issue tracker but you can also use an external one such as
+Jira, Redmine, or Bugzilla. Issue trackers are configurable per GitLab project and allow
+you to do the following:
+
+- the **Issues** link on the GitLab project pages takes you to the appropriate
+ issue index of the external tracker
+- clicking **New issue** on the project dashboard creates a new issue on the
+ external tracker
+
+## Configuration
+
+The configuration is done via a project's **Services**.
+
+### Project Service
+
+To enable an external issue tracker you must configure the appropriate **Service**.
+Visit the links below for details:
+
+- [Redmine](redmine.md)
+- [Jira](jira.md)
+- [Bugzilla](bugzilla.md)
+
+### Service Template
+
+To save you the hassle from configuring each project's service individually,
+GitLab provides the ability to set Service Templates which can then be
+overridden in each project's settings.
+
+Read more on [Services Templates](../../admin_area/services_templates.md).
diff --git a/doc/user/project/services/hipchat.md b/doc/user/project/services/hipchat.md
new file mode 100644
index 00000000000..021a93a288f
--- /dev/null
+++ b/doc/user/project/services/hipchat.md
@@ -0,0 +1,54 @@
+# Atlassian HipChat
+
+GitLab provides a way to send HipChat notifications upon a number of events,
+such as when a user pushes code, creates a branch or tag, adds a comment, and
+creates a merge request.
+
+## Setup
+
+GitLab requires the use of a HipChat v2 API token to work. v1 tokens are
+not supported at this time. Note the differences between v1 and v2 tokens:
+
+HipChat v1 API (legacy) supports "API Auth Tokens" in the Group API menu. A v1
+token is allowed to send messages to *any* room.
+
+HipChat v2 API has tokens that are can be created using the Integrations tab
+in the Group or Room admin page. By design, these are lightweight tokens that
+allow GitLab to send messages only to *one* room.
+
+### Complete these steps in HipChat:
+
+1. Go to: https://admin.hipchat.com/admin
+1. Click on "Group Admin" -> "Integrations".
+1. Find "Build Your Own!" and click "Create".
+1. Select the desired room, name the integration "GitLab", and click "Create".
+1. In the "Send messages to this room by posting this URL" column, you should
+see a URL in the format:
+
+```
+ https://api.hipchat.com/v2/room/<room>/notification?auth_token=<token>
+```
+
+HipChat is now ready to accept messages from GitLab. Next, set up the HipChat
+service in GitLab.
+
+### Complete these steps in GitLab:
+
+1. Navigate to the project you want to configure for notifications.
+1. Select "Settings" in the top navigation.
+1. Select "Services" in the left navigation.
+1. Click "HipChat".
+1. Select the "Active" checkbox.
+1. Insert the `token` field from the URL into the `Token` field on the Web page.
+1. Insert the `room` field from the URL into the `Room` field on the Web page.
+1. Save or optionally click "Test Settings".
+
+## Troubleshooting
+
+If you do not see notifications, make sure you are using a HipChat v2 API
+token, not a v1 token.
+
+Note that the v2 token is tied to a specific room. If you want to be able to
+specify arbitrary rooms, you can create an API token for a specific user in
+HipChat under "Account settings" and "API access". Use the `XXX` value under
+`auth_token=XXX`.
diff --git a/doc/user/project/services/img/builds_emails_service.png b/doc/user/project/services/img/builds_emails_service.png
new file mode 100644
index 00000000000..88943dc410e
--- /dev/null
+++ b/doc/user/project/services/img/builds_emails_service.png
Binary files differ
diff --git a/doc/user/project/services/img/emails_on_push_service.png b/doc/user/project/services/img/emails_on_push_service.png
new file mode 100644
index 00000000000..cd6f79ad1eb
--- /dev/null
+++ b/doc/user/project/services/img/emails_on_push_service.png
Binary files differ
diff --git a/doc/user/project/services/img/jira_add_gitlab_commit_message.png b/doc/user/project/services/img/jira_add_gitlab_commit_message.png
new file mode 100644
index 00000000000..aec472b9118
--- /dev/null
+++ b/doc/user/project/services/img/jira_add_gitlab_commit_message.png
Binary files differ
diff --git a/doc/user/project/services/img/jira_add_user_to_group.png b/doc/user/project/services/img/jira_add_user_to_group.png
new file mode 100644
index 00000000000..0ba737bda9a
--- /dev/null
+++ b/doc/user/project/services/img/jira_add_user_to_group.png
Binary files differ
diff --git a/doc/user/project/services/img/jira_create_new_group.png b/doc/user/project/services/img/jira_create_new_group.png
new file mode 100644
index 00000000000..0609060cb05
--- /dev/null
+++ b/doc/user/project/services/img/jira_create_new_group.png
Binary files differ
diff --git a/doc/user/project/services/img/jira_create_new_group_name.png b/doc/user/project/services/img/jira_create_new_group_name.png
new file mode 100644
index 00000000000..53d77b17df0
--- /dev/null
+++ b/doc/user/project/services/img/jira_create_new_group_name.png
Binary files differ
diff --git a/doc/user/project/services/img/jira_create_new_user.png b/doc/user/project/services/img/jira_create_new_user.png
new file mode 100644
index 00000000000..9eaa444ed25
--- /dev/null
+++ b/doc/user/project/services/img/jira_create_new_user.png
Binary files differ
diff --git a/doc/user/project/services/img/jira_group_access.png b/doc/user/project/services/img/jira_group_access.png
new file mode 100644
index 00000000000..8d4657427ae
--- /dev/null
+++ b/doc/user/project/services/img/jira_group_access.png
Binary files differ
diff --git a/doc/user/project/services/img/jira_issue_closed.png b/doc/user/project/services/img/jira_issue_closed.png
new file mode 100644
index 00000000000..acdd83702d3
--- /dev/null
+++ b/doc/user/project/services/img/jira_issue_closed.png
Binary files differ
diff --git a/doc/user/project/services/img/jira_issue_reference.png b/doc/user/project/services/img/jira_issue_reference.png
new file mode 100644
index 00000000000..1a2d9f04a6c
--- /dev/null
+++ b/doc/user/project/services/img/jira_issue_reference.png
Binary files differ
diff --git a/doc/user/project/services/img/jira_issues_workflow.png b/doc/user/project/services/img/jira_issues_workflow.png
new file mode 100644
index 00000000000..0703081d77b
--- /dev/null
+++ b/doc/user/project/services/img/jira_issues_workflow.png
Binary files differ
diff --git a/doc/user/project/services/img/jira_merge_request_close.png b/doc/user/project/services/img/jira_merge_request_close.png
new file mode 100644
index 00000000000..47785e3ba27
--- /dev/null
+++ b/doc/user/project/services/img/jira_merge_request_close.png
Binary files differ
diff --git a/doc/user/project/services/img/jira_project_name.png b/doc/user/project/services/img/jira_project_name.png
new file mode 100644
index 00000000000..e785ec6140d
--- /dev/null
+++ b/doc/user/project/services/img/jira_project_name.png
Binary files differ
diff --git a/doc/user/project/services/img/jira_reference_commit_message_in_jira_issue.png b/doc/user/project/services/img/jira_reference_commit_message_in_jira_issue.png
new file mode 100644
index 00000000000..fb270d85e3c
--- /dev/null
+++ b/doc/user/project/services/img/jira_reference_commit_message_in_jira_issue.png
Binary files differ
diff --git a/doc/user/project/services/img/jira_service.png b/doc/user/project/services/img/jira_service.png
new file mode 100644
index 00000000000..13aefce6f84
--- /dev/null
+++ b/doc/user/project/services/img/jira_service.png
Binary files differ
diff --git a/doc/user/project/services/img/jira_service_close_issue.png b/doc/user/project/services/img/jira_service_close_issue.png
new file mode 100644
index 00000000000..eed69e80d2c
--- /dev/null
+++ b/doc/user/project/services/img/jira_service_close_issue.png
Binary files differ
diff --git a/doc/user/project/services/img/jira_service_page.png b/doc/user/project/services/img/jira_service_page.png
new file mode 100644
index 00000000000..a5b49c501ba
--- /dev/null
+++ b/doc/user/project/services/img/jira_service_page.png
Binary files differ
diff --git a/doc/user/project/services/img/jira_submit_gitlab_merge_request.png b/doc/user/project/services/img/jira_submit_gitlab_merge_request.png
new file mode 100644
index 00000000000..77630d39d39
--- /dev/null
+++ b/doc/user/project/services/img/jira_submit_gitlab_merge_request.png
Binary files differ
diff --git a/doc/user/project/services/img/jira_user_management_link.png b/doc/user/project/services/img/jira_user_management_link.png
new file mode 100644
index 00000000000..5f002b59bac
--- /dev/null
+++ b/doc/user/project/services/img/jira_user_management_link.png
Binary files differ
diff --git a/doc/user/project/services/img/jira_workflow_screenshot.png b/doc/user/project/services/img/jira_workflow_screenshot.png
new file mode 100644
index 00000000000..937a50a77d9
--- /dev/null
+++ b/doc/user/project/services/img/jira_workflow_screenshot.png
Binary files differ
diff --git a/doc/user/project/services/img/redmine_configuration.png b/doc/user/project/services/img/redmine_configuration.png
new file mode 100644
index 00000000000..e9d8c0d2da8
--- /dev/null
+++ b/doc/user/project/services/img/redmine_configuration.png
Binary files differ
diff --git a/doc/user/project/services/img/slack_configuration.png b/doc/user/project/services/img/slack_configuration.png
new file mode 100644
index 00000000000..b8de8a56db7
--- /dev/null
+++ b/doc/user/project/services/img/slack_configuration.png
Binary files differ
diff --git a/doc/user/project/services/irker.md b/doc/user/project/services/irker.md
new file mode 100644
index 00000000000..25c0c3ad2a6
--- /dev/null
+++ b/doc/user/project/services/irker.md
@@ -0,0 +1,51 @@
+# Irker IRC Gateway
+
+GitLab provides a way to push update messages to an Irker server. When
+configured, pushes to a project will trigger the service to send data directly
+to the Irker server.
+
+See the project homepage for further info: https://gitlab.com/esr/irker
+
+## Needed setup
+
+You will first need an Irker daemon. You can download the Irker code from its
+repository on https://gitlab.com/esr/irker:
+
+```
+git clone https://gitlab.com/esr/irker.git
+```
+
+Once you have downloaded the code, you can run the python script named `irkerd`.
+This script is the gateway script, it acts both as an IRC client, for sending
+messages to an IRC server obviously, and as a TCP server, for receiving messages
+from the GitLab service.
+
+If the Irker server runs on the same machine, you are done. If not, you will
+need to follow the firsts steps of the next section.
+
+## Complete these steps in GitLab:
+
+1. Navigate to the project you want to configure for notifications.
+1. Select "Settings" in the top navigation.
+1. Select "Services" in the left navigation.
+1. Click "Irker".
+1. Select the "Active" checkbox.
+1. Enter the server host address where `irkerd` runs (defaults to `localhost`)
+in the `Server host` field on the Web page
+1. Enter the server port of `irkerd` (e.g. defaults to 6659) in the
+`Server port` field on the Web page.
+1. Optional: if `Default IRC URI` is set, it has to be in the format
+`irc[s]://domain.name` and will be prepend to each and every channel provided
+by the user which is not a full URI.
+1. Specify the recipients (e.g. #channel1, user1, etc.)
+1. Save or optionally click "Test Settings".
+
+## Note on Irker recipients
+
+Irker accepts channel names of the form `chan` and `#chan`, both for the
+`#chan` channel. If you want to send messages in query, you will need to add
+`,isnick` after the channel name, in this form: `Aorimn,isnick`. In this latter
+case, `Aorimn` is treated as a nick and no more as a channel name.
+
+Irker can also join password-protected channels. Users need to append
+`?key=thesecretpassword` to the chan name.
diff --git a/doc/user/project/services/jira.md b/doc/user/project/services/jira.md
new file mode 100644
index 00000000000..58e84e6b139
--- /dev/null
+++ b/doc/user/project/services/jira.md
@@ -0,0 +1,246 @@
+# GitLab JIRA integration
+
+>**Note:**
+Full JIRA integration was previously exclusive to GitLab Enterprise Edition.
+With [GitLab 8.3 forward][8_3_post], this feature in now [backported][jira-ce]
+to GitLab Community Edition as well.
+
+---
+
+GitLab can be configured to interact with [JIRA Core] either using an
+on-premises instance or the SaaS solution that Atlassian offers. Configuration
+happens via username and password on a per-project basis. Connecting to a JIRA
+server via CAS is not possible.
+
+Each project can be configured to connect to a different JIRA instance or, in
+case you have a single JIRA instance, you can pre-fill the JIRA service
+settings page in GitLab with a default template. To configure the JIRA template,
+see the [Services Templates documentation][services-templates].
+
+Once the GitLab project is connected to JIRA, you can reference and close the
+issues in JIRA directly from GitLab's merge requests.
+
+## Configuration
+
+The configuration consists of two parts:
+
+- [JIRA configuration](#configuring-jira)
+- [GitLab configuration](#configuring-gitlab)
+
+### Configuring JIRA
+
+First things first, we need to create a user in JIRA which will have access to
+all projects that need to integrate with GitLab.
+
+We have split this stage in steps so it is easier to follow.
+
+---
+
+1. Login to your JIRA instance as an administrator and under **Administration**
+ go to **User Management** to create a new user.
+
+ ![JIRA user management link](img/jira_user_management_link.png)
+
+ ---
+
+1. The next step is to create a new user (e.g., `gitlab`) who has write access
+ to projects in JIRA. Enter the user's name and a _valid_ e-mail address
+ since JIRA sends a verification e-mail to set-up the password.
+ _**Note:** JIRA creates the username automatically by using the e-mail
+ prefix. You can change it later if you want._
+
+ ![JIRA create new user](img/jira_create_new_user.png)
+
+ ---
+
+1. Now, let's create a `gitlab-developers` group which will have write access
+ to projects in JIRA. Go to the **Groups** tab and select **Create group**.
+
+ ![JIRA create new user](img/jira_create_new_group.png)
+
+ ---
+
+ Give it an optional description and hit **Create group**.
+
+ ![JIRA create new group](img/jira_create_new_group_name.png)
+
+ ---
+
+1. Give the newly-created group write access by going to
+ **Application access > View configuration** and adding the `gitlab-developers`
+ group to JIRA Core.
+
+ ![JIRA group access](img/jira_group_access.png)
+
+ ---
+
+1. Add the `gitlab` user to the `gitlab-developers` group by going to
+ **Users > GitLab user > Add group** and selecting the `gitlab-developers`
+ group from the dropdown menu. Notice that the group says _Access_ which is
+ what we aim for.
+
+ ![JIRA add user to group](img/jira_add_user_to_group.png)
+
+---
+
+The JIRA configuration is over. Write down the new JIRA username and its
+password as they will be needed when configuring GitLab in the next section.
+
+### Configuring GitLab
+
+>**Note:**
+The currently supported JIRA versions are v6.x and v7.x. and GitLab
+7.8 or higher is required.
+
+---
+
+Assuming you [have already configured JIRA](#configuring-jira), now it's time
+to configure GitLab.
+
+JIRA configuration in GitLab is done via a project's
+[**Services**](../services.md).
+
+To enable JIRA integration in a project, navigate to the project's
+**Settings > Services > JIRA**.
+
+Fill in the required details on the page, as described in the table below.
+
+| Setting | Description |
+| ------- | ----------- |
+| `Description` | A name for the issue tracker (to differentiate between instances, for example). |
+| `Project url` | The URL to the JIRA project which is being linked to this GitLab project. It is of the form: `https://<jira_host_url>/issues/?jql=project=<jira_project>`. |
+| `Issues url` | The URL to the JIRA project issues overview for the project that is linked to this GitLab project. It is of the form: `https://<jira_host_url>/browse/:id`. Leave `:id` as-is, it gets replaced by GitLab at runtime. |
+| `New issue url` | This is the URL to create a new issue in JIRA for the project linked to this GitLab project, and it is of the form: `https://<jira_host_url>/secure/CreateIssue.jspa` |
+| `Api url` | The base URL of the JIRA API. It may be omitted, in which case GitLab will automatically use API version `2` based on the `project url`. It is of the form: `https://<jira_host_url>/rest/api/2`. |
+| `Username` | The username of the user created in [configuring JIRA step](#configuring-jira). |
+| `Password` |The password of the user created in [configuring JIRA step](#configuring-jira). |
+| `JIRA issue transition` | This setting is very important to set up correctly. It is the ID of a transition that moves issues to a closed state. You can find this number under the JIRA workflow administration (**Administration > Issues > Workflows**) by selecting **View** under **Operations** of the desired workflow of your project. The ID of each state can be found inside the parenthesis of each transition name under the **Transitions (id)** column ([see screenshot][trans]). By default, this ID is set to `2`. |
+
+After saving the configuration, your GitLab project will be able to interact
+with the linked JIRA project.
+
+For example, given the settings below:
+
+- the JIRA URL is `https://jira.example.com`
+- the project is named `GITLAB`
+- the user is named `gitlab`
+- the JIRA issue transition is 151 (based on the [JIRA issue transition][trans])
+
+the following screenshot shows how the JIRA service settings should look like.
+
+![JIRA service page](img/jira_service_page.png)
+
+[trans]: img/jira_issues_workflow.png
+
+---
+
+## JIRA issues
+
+By now you should have [configured JIRA](#configuring-jira) and enabled the
+[JIRA service in GitLab](#configuring-gitlab). If everything is set up correctly
+you should be able to reference and close JIRA issues by just mentioning their
+ID in GitLab commits and merge requests.
+
+### Referencing JIRA Issues
+
+If you reference a JIRA issue, e.g., `GITLAB-1`, in a commit comment, a link
+which points back to JIRA is created.
+
+The same works for comments in merge requests as well.
+
+![JIRA add GitLab commit message](img/jira_add_gitlab_commit_message.png)
+
+---
+
+The mentioning action is two-fold, so a comment with a JIRA issue in GitLab
+will automatically add a comment in that particular JIRA issue with the link
+back to GitLab.
+
+
+![JIRA reference commit message](img/jira_reference_commit_message_in_jira_issue.png)
+
+---
+
+The comment on the JIRA issue is of the form:
+
+> USER mentioned this issue in LINK_TO_THE_MENTION
+
+Where:
+
+| Format | Description |
+| ------ | ----------- |
+| `USER` | A user that mentioned the issue. This is the link to the user profile in GitLab. |
+| `LINK_TO_THE_MENTION` | Link to the origin of mention with a name of the entity where JIRA issue was mentioned. Can be commit or merge request. |
+
+### Closing JIRA issues
+
+JIRA issues can be closed directly from GitLab by using trigger words in
+commits and merge requests. When a commit which contains the trigger word
+followed by the JIRA issue ID in the commit message is pushed, GitLab will
+add a comment in the mentioned JIRA issue and immediately close it (provided
+the transition ID was set up correctly).
+
+There are currently three trigger words, and you can use either one to achieve
+the same goal:
+
+- `Resolves GITLAB-1`
+- `Closes GITLAB-1`
+- `Fixes GITLAB-1`
+
+where `GITLAB-1` the issue ID of the JIRA project.
+
+### JIRA issue closing example
+
+Let's say for example that we submitted a bug fix and created a merge request
+in GitLab. The workflow would be something like this:
+
+1. Create a new branch
+1. Fix the bug
+1. Commit the changes and push branch to GitLab
+1. Open a new merge request and reference the JIRA issue including one of the
+ trigger words, e.g.: `Fixes GITLAB-1`, in the description
+1. Submit the merge request
+1. Ask someone to review
+1. Merge the merge request
+1. The JIRA issue is automatically closed
+
+---
+
+In the following screenshot you can see what the link references to the JIRA
+issue look like.
+
+![JIRA - submit a GitLab merge request](img/jira_submit_gitlab_merge_request.png)
+
+---
+
+Once this merge request is merged, the JIRA issue will be automatically closed
+with a link to the commit that resolved the issue.
+
+![The GitLab integration user leaves a comment on JIRA](img/jira_issue_closed.png)
+
+---
+
+You can see from the above image that there are four references to GitLab:
+
+- The first is from a comment in a specific commit
+- The second is from the JIRA issue reference in the merge request description
+- The third is from the actual commit that solved the issue
+- And the fourth is from the commit that the merge request created
+
+[services-templates]: ../../admin_area/services_templates.md "Services templates admin documentation"
+[JIRA Core]: https://www.atlassian.com/software/jira/core "The JIRA Core website"
+[jira-ce]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/2146 "MR - Backport JIRA service"
+[8_3_post]: https://about.gitlab.com/2015/12/22/gitlab-8-3-released/ "GitLab 8.3 release post"
+
+## Troubleshooting
+
+### GitLab is unable to comment on a ticket
+
+Make sure that the user you set up for GitLab to communicate with JIRA has the
+correct access permission to post comments on a ticket and to also transition the
+ticket, if you'd like GitLab to also take care of closing them.
+
+### GitLab is unable to close a ticket
+
+Make sure the the `Transition ID` you set within the JIRA settings matches the
+one your project needs to close a ticket.
diff --git a/doc/user/project/services/redmine.md b/doc/user/project/services/redmine.md
new file mode 100644
index 00000000000..b9830ea7c38
--- /dev/null
+++ b/doc/user/project/services/redmine.md
@@ -0,0 +1,21 @@
+# Redmine Service
+
+Go to your project's **Settings > Services > Redmine** and fill in the required
+details as described in the table below.
+
+| Field | Description |
+| ----- | ----------- |
+| `description` | A name for the issue tracker (to differentiate between instances, for example) |
+| `project_url` | The URL to the project in Redmine which is being linked to this GitLab project |
+| `issues_url` | The URL to the issue in Redmine project that is linked to this GitLab project. Note that the `issues_url` requires `:id` in the URL. This ID is used by GitLab as a placeholder to replace the issue number. |
+| `new_issue_url` | This is the URL to create a new issue in Redmine for the project linked to this GitLab project |
+
+Once you have configured and enabled Redmine:
+
+- the **Issues** link on the GitLab project pages takes you to the appropriate
+ Redmine issue index
+- clicking **New issue** on the project dashboard creates a new Redmine issue
+
+As an example, below is a configuration for a project named gitlab-ci.
+
+![Redmine configuration](img/redmine_configuration.png)
diff --git a/doc/user/project/services/slack.md b/doc/user/project/services/slack.md
new file mode 100644
index 00000000000..3cfe77c9f85
--- /dev/null
+++ b/doc/user/project/services/slack.md
@@ -0,0 +1,50 @@
+# Slack Service
+
+## On Slack
+
+To enable Slack integration you must create an incoming webhook integration on
+Slack:
+
+1. [Sign in to Slack](https://slack.com/signin)
+1. Visit [Incoming WebHooks](https://my.slack.com/services/new/incoming-webhook/)
+1. Choose the channel name you want to send notifications to.
+1. Click **Add Incoming WebHooks Integration**
+1. Copy the **Webhook URL**, we'll need this later for GitLab.
+
+## On GitLab
+
+After you set up Slack, it's time to set up GitLab.
+
+Go to your project's **Settings > Services > Slack** and you will see a
+checkbox with the following events that can be triggered:
+
+- Push
+- Issue
+- Merge request
+- Note
+- Tag push
+- Build
+- Wiki page
+
+Bellow each of these event checkboxes, you will have an input field to insert
+which Slack channel you want to send that event message, with `#general`
+being the default. Enter your preferred channel **without** the hash sign (`#`).
+
+At the end, fill in your Slack details:
+
+| Field | Description |
+| ----- | ----------- |
+| **Webhook** | The [incoming webhook URL][slackhook] which you have to setup on Slack. |
+| **Username** | Optional username which can be on messages sent to slack. Fill this in if you want to change the username of the bot. |
+| **Notify only broken builds** | If you choose to enable the **Build** event and you want to be only notified about failed builds. |
+
+After you are all done, click **Save changes** for the changes to take effect.
+
+>**Note:**
+You can set "branch,pushed,Compare changes" as highlight words on your Slack
+profile settings, so that you can be aware of new commits when somebody pushes
+them.
+
+![Slack configuration](img/slack_configuration.png)
+
+[slackhook]: https://my.slack.com/services/new/incoming-webhook