Commit 0fcf3ada authored by Achilleas Pipinellis's avatar Achilleas Pipinellis

JIRA doc clean-up [ci skip]

- Add GitLab configuration steps
- Add example workflow
- Replace old images with new ones
parent d5fc2e9d
# GitLab JIRA integration # GitLab JIRA integration
GitLab can be configured to interact with [JIRA]. Configuration happens via GitLab can be configured to interact with [JIRA Core] either using an
username and password. Connecting to a JIRA server via CAS is not possible. 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 Each project can be configured to connect to a different JIRA instance or, in
case you have one JIRA instance, you can pre-fill the JIRA service settings page case you have a single JIRA instance, you can pre-fill the JIRA service
with a default template. To configure the template, see the settings page in GitLab with a default template. To configure the JIRA template,
[Services Templates documentation][services-templates]. see the [Services Templates documentation][services-templates].
Once the project is connected to JIRA, you can reference and close the issues Once the GitLab project is connected to JIRA, you can reference and close the
in JIRA directly from GitLab's Merge requests. issues in JIRA directly from GitLab's Merge requests.
## Configuration ## Configuration
...@@ -28,17 +30,17 @@ We have split this stage in steps so it could be easier to follow. ...@@ -28,17 +30,17 @@ We have split this stage in steps so it could be easier to follow.
--- ---
1. Login to your JIRA instance as an administrator and under **Administration** 1. Login to your JIRA instance as an administrator and under **Administration**
go to **User Management** and create a new user. go to **User Management** to create a new user.
![JIRA user management link](img/jira_user_management_link.png) ![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 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 in to projects in JIRA. Enter the user's name and a _valid_ e-mail address
order to set-up their password. since JIRA sends a verification e-mail to set-up the password.
_**Note:** JIRA creates the username automatically by using the e-mail _**Note:** JIRA creates the username automatically by using the e-mail
prefix. You can change the username later if you want._ prefix. You can change it later if you want._
![JIRA create new user](img/jira_create_new_user.png) ![JIRA create new user](img/jira_create_new_user.png)
...@@ -74,33 +76,36 @@ We have split this stage in steps so it could be easier to follow. ...@@ -74,33 +76,36 @@ We have split this stage in steps so it could be easier to follow.
--- ---
The JIRA configuration is over. Note the new user `gitlab` and its password as The JIRA configuration is over. Write down the new JIRA username and its
they will be needed when configuring GitLab in the next section. password as they will be needed when configuring GitLab in the next section.
### Configuring GitLab ## Configuring GitLab
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 JIRA configuration in GitLab is done via a project's
[**Services**](../project_services/project_services.md). [**Services**](../project_services/project_services.md).
#### GitLab 7.8 and up #### GitLab 7.8 and up
_The currently supported JIRA versions are v6.x and v7.x._ _**Note:** The currently supported JIRA versions are v6.x and v7.x._
To enable JIRA integration in a project, navigate to the project's To enable JIRA integration in a project, navigate to the project's
**Settings > Services > JIRA**. **Settings > Services > JIRA**.
Fill in the required details on the page as described in the table below. Fill in the required details on the page, as described in the table below.
| Field | Description | | Setting | Description |
| ----- | ----------- | | ------- | ----------- |
| `description` | A name for the issue tracker (to differentiate between instances, for instance). | | `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. | | `Project url` | The URL to the JIRA project which is being linked to this GitLab project. It's 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. | | `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. | | `New issue url` | This is the URL to create a new issue in JIRA for the project linked to this GitLab project, and 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`, i.e. `https://jira.example.com/rest/api/2`. | | `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). | | `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). | | `Password` |The password of the user created in [configuring JIRA step](#configuring-jira). |
| `JIRA issue transition` | This is the ID of a transition that moves issues to a closed state. You can find this number under JIRA workflow administration ([see screenshot](img/jira_workflow_screenshot.png)). By default, this ID is `2` (in the example image, this is `2` as well) | | `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](img/jira_issues_workflow.png)). By default, this ID is set to `2` |
After saving the configuration, your GitLab project will be able to interact After saving the configuration, your GitLab project will be able to interact
with the linked JIRA project. with the linked JIRA project.
...@@ -119,17 +124,38 @@ In the unfortunate event that you are still using GitLab < 7.8, consult the ...@@ -119,17 +124,38 @@ In the unfortunate event that you are still using GitLab < 7.8, consult the
## JIRA issues ## 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 JIRA issues and
- close JIRA issues
by just mentioning their ID in GitLab commits and merge requests.
### Referencing JIRA Issues ### Referencing JIRA Issues
When GitLab project has JIRA issue tracker configured and enabled, mentioning If you reference a JIRA issue, e.g., `GITLAB-1`, in a commit comment, a link
JIRA issue in GitLab will automatically add a comment in JIRA issue with the which points back to JIRA is created.
link back to GitLab. This means that in comments in merge requests and commits
referencing an issue, eg. `PROJECT-7`, will add a comment in JIRA issue in the The same works for comments in merge requests as well.
format:
![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
USER mentioned this issue in LINK_TO_THE_MENTION
```
Where: Where:
...@@ -138,34 +164,52 @@ Where: ...@@ -138,34 +164,52 @@ Where:
| `USER` | A user that mentioned the issue. This is the link to the user profile in GitLab. | | `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. | | `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. |
![example of mentioning or closing the JIRA issue](img/jira_issue_reference.png) ### 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.
### Closing JIRA Issues There are currently three trigger words, and you can use either one to achieve
the same goal:
JIRA issues can be closed directly from GitLab by using trigger words, eg. - `Resolves GITLAB-1`
`Resolves PROJECT-1`, `Closes PROJECT-1` or `Fixes PROJECT-1`, in commits and - `Closes GITLAB-1`
merge requests. When a commit which contains the trigger word in the commit - `Fixes GITLAB-1`
message is pushed, GitLab will add a comment in the mentioned JIRA issue.
For example, for project named `PROJECT` in JIRA, we implemented a new feature where `GITLAB-1` the issue ID of the JIRA project.
and created a merge request in GitLab.
This feature was requested in JIRA issue `PROJECT-7`. Merge request in GitLab ### JIRA issue closing example
contains the improvement and in merge request description we say that this
merge request `Closes PROJECT-7` issue.
Once this merge request is merged, the JIRA issue will be automatically closed Let's say for example that we submitted a bug fix and created a merge request
with a link to the commit that resolved the issue. in GitLab. The workflow would be something like this:
1. Create a new branch
1. Fix the bug
1. Commit the changes and push back 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
![A Git commit that causes the JIRA issue to be closed](img/jira_merge_request_close.png) ---
In the following screenshot you can see how 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_service_close_issue.png) ![The GitLab integration user leaves a comment on JIRA](img/jira_service_close_issue.png)
--- ---
[services-templates]: ../project_services/services_templates.md "Services templates documentation" [services-templates]: ../project_services/services_templates.md "Services templates documentation"
[JIRA]: https://www.atlassian.com/software/jira/core "The JIRA Core website" [JIRA Core]: https://www.atlassian.com/software/jira/core "The JIRA Core website"
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment