How to install and configure the Jira Git plugin with Gitlab

Introduction

Before I continue let me tell you that the Jira Git Plugin that I will talk about is not supported by Atlassian but Marcello Teodori added support for version 5 of Jira.  If you want a supported plugin you can see the Git Version Control Viewer supported by BigBrassBand, I will not talk about it because I didn’t try it.

Requirements

Let’s start

First of all, you should know that it can be done with two different environments:

  1. Having Jira in one server and Gitlab with git in other server
  2. Have both in the same server

Step 1 – Install the Jira Git Plugin

  1. Open Jira
  2. Go to: Administration > Plugins > Manage Plugins
  3. Click on “Upload Plugin”
  4. Add the url for the plugin: https://github.com/downloads/mteodori/jira-git-plugin/jira-git-plugin-0.6.1-SNAPSHOT.jar
  5. Click on upload

By now you should have Jira Git Plugin installed.

Step 2 – Configure the Git repositories

For every single repository you will need to clone it and add the configuration for it inside Jira. Since you can have two different environments let’s do it for both.

1. Jira and Gitlab on the same server

  1. git clone (with or without –bare) the source tree that you need (run as the same user that Jira runs as). Ex.: git clone –bare git@localhost:test /home/jira/repositories/test
  2. Go to: Open Jira > Administration section > Plugins > Git Repositories > click on Add
  3. Display Name: Your repository name. Ex.: Test
  4. Repository root: Directory where you cloned your repository. Ex.: /home/jira/repositories/test
  5. Repository Origin: The url you used to clone the repository. Ex.: git@localhost:teste.git
  6. Web Linking: For the current version of Jira Git Plugin does not exist the default Gitlab formats but you can add them manually:
    1. View format: http://<gitlab server>/<repository>/master/tree
    2. Changeset format: http://<gitlab server>/<repository>/commits/${rev}
    3. File added, modified and deleted are the same formar: http://<gitlab server>/<repository>/commits/${rev}#${path}

2. Jira and Gitlab on different servers

You have two choices here:

  1. Add the private ssh key of gitlab user to the user that Jira runs
  2. Create a new user on Gitlab for Jira and generate the ssh key for that user on the Jira server.
First one:
  1. Copy the ssh key of the gitlab user (on the Gitlab server) to the user that Jira runs as (on Jira server)
  2. Now you can follow the Jira and Gitlab on the same server steps

Second one:

  1. Generate the ssh key for the user that Jira runs as (on Jira server)
  2. Create the Jira user inside Gitlab
  3. Add the public ssh key for the user that you create on step 1
  4. Add the user to the repositories you want (at least with the reporter role)
  5. Now you can follow the Jira and Gitlab on the same server steps

edited:  added the Jira version supported by this plugin

 
  • Srirami Reddy Padala

    Got this when trying to configure the plugin:

    Error creating bean with name
    ‘com.xiplink.jira.git.action.ViewGitRepositoriesAction’: Unsatisfied
    dependency expressed through constructor argument with index 0 of type
    [com.xiplink.jira.git.MultipleGitRepositoryManager]: : No unique bean of
    type [com.xiplink.jira.git.MultipleGitRepositoryManager] is defined:
    Unsatisfied dependency of type [interface
    com.xiplink.jira.git.MultipleGitRepositoryManager]: expected at least 1
    matching bean; nested exception is
    org.springframework.beans.factory.NoSuchBeanDefinitionException: No
    unique bean of type [com.xiplink.jira.git.MultipleGitRepositoryManager]
    is defined: Unsatisfied dependency of type [interface
    com.xiplink.jira.git.MultipleGitRepositoryManager]: expected at least 1
    matching bean

    Could not find what you were looking for. Maybe you should raise an issue.

    • http://danielcsgomes.com/ Daniel Gomes

      In what step did this happen? When adding the repository?

      • Matthew Korich

        Yep… happened to me too. This occurs after installing the plugin and error shows in the page when navigating in Jira to configure the plugin. Conjecture: Incompatible Jira libs for the plugin? Jira version v5.1.2#773-sha1:b805b97

        • http://danielcsgomes.com/ Daniel Gomes

          The problem is the version of Jira (mine is v5.0.4) and works without problems, it needs to be reviewed for version >5.1.

          • cronius

            Was this ever solved? and can the plugin be used with jira 4.2?

          • http://danielcsgomes.com/ Daniel Gomes

            For jira 4.2 I don’t know, since I never used it. But for what I know the plugins systems are quite different from jira version 4.x to 5.x. Have you tried installed it on version 4.2?

            About the problem of Jira v5.1 I was able to solve it, I think my repository of the plugin on github reflects the change but I need to confirm first (github is down due to a large DDoS atack)

          • cronius

            sounds like it may not work with 4.2 after we installed it. Any ideas? Are there any other gitlab jira integration options?

          • http://danielcsgomes.com/ Daniel Gomes

            Cronius, this is not a gitlab jira integration. It is a Git jira integration, there is another integration but is paid.

  • Scratchyrat

    Thanks for the guide, great work. I’ve followed this, and it seems to have worked, but is there a hook required in Gitlab for it to talk to JIRA? Or is there a specific syntax I can use to test this out?

    • http://danielcsgomes.com/ Daniel Gomes

      No, you only need to clone the repository in your JIRA server and then add the correct paths on the repository configuration in JIRA.

      Also this is only valid for Gitlab 3.x since after this version Gitlab removed gitorious.

      • Scratchyrat

        Thanks for the reply. We’re running Gitlab 5.x now, I misread and thought it was Gitlab 3.x or above. Would explain it!

        • http://danielcsgomes.com/ Daniel Gomes

          No problem. You can still use it with Gitlab 5 you need to do a trick! Basically you need to create a fake user with permissions for clone the repository to be able to do it in the JIRA server. This users needs to be added to all projects on Github you want to add into JIRA.

  • Nicholas Albion

    I can’t find any documentation ont the supported syntax – is it possible to transition JIRA issues from a git commit?

    • http://danielcsgomes.com/ Daniel Gomes

      Hi Nicholas,

      I didn’t understood well what do you mean. But I think you are asking if you can show the git commits inside the JIRA tickets? If is this the question, yes you can. You only need to add the ticket id into the commit message like: [ticket_id].

      • Nicholas Albion

        From Stash it’s possible to mark JIRA issues as resolved (for example) by including the command #resolve after the issue ID. eg:

        git commit -m ‘MYPROJECT-123 #resolve Fixed the issue, ready for testing’

        https://confluence.atlassian.com/display/AOD/Processing+JIRA+issues+with+commit+messages

        Does this work with this plugin?

        • http://danielcsgomes.com/ Daniel Gomes

          I think no, but I am not sure. If it does I never used it and never tested.

  • Wagner Matos

    Hi Daniel. Thanks for the article. I got a question though: I’ve installed and all seemed fine, however on my issue I did not see any commit I’ve made. Using the command line, my commit was: git commit -am ‘MYPROJECT-21: My comment’. What have I done wrong? Secondly, what are the features this particular plugin brings? Thanks again!

    • http://danielcsgomes.com/ Daniel Gomes

      Hi Wagner. To be honest I don’t work with Jira anymore more (about 7 months now) but I will try to help you.

      Have you configured the repository in Jira? You need to configure it for every repository you want to add to Jira.

      To reference it should be the same way you do in a normal comment [ISSUE-NUMBER] or #ISSUE-NUMBER (I don’t remember now what is the correct way to do it) and it should work fine.

      The features is mainly show the code in Jira related to the issue and see some diff stats and be able to open it in the browser (if you use some tool that is supported like github, gitlab, etc).

      Hope this helps.

      • Wagner Matos

        Hi Daniel. Thanks for you your quick reply. Yes, the repositories are set in Jira (followed the steps below) and all seems to be fine. I think the problem is only how I commit. The commit I’ve done , I’ve added the issue id within the message of the commit which I believe is why the commit wasn’t picked up by Jira. I’ll try committing differently to see if I get any luck with it. I’ll post the result here in case it might help someone else as well. Thanks again for your help and your article.