GitLab’s powerful Jira integration allows the customer to use Jira instead of GitLab for issues. That’s great for teams committed to using Jira, but bypasses all the power of GitLab Issues. One customer took the integration a step further. They created a service that listens for web hooks from Jira and GitLab, then acts as a go-between. So when an issue changes on either side, the other side is updated.

The sync tool lists all the user’s projects in GitLab, using the OAuth integration. To set up synchronization, the user selects a GitLab project, then selects a Jra project. There are a few other options, such as whether newly created issues go into the active sprint or into the backlog. The settings are saved in a database and a webhook is automatically added for the different events.

Once the synchronization is set up, issues created in GitLab appear in Jira automatically. The description is updated in GitLab with a link to the Jira issue. Assignments transfer and Issue Weights become Story Points. Changes and comments made in Jira propogate back to GitLab. The GitLab issue becomes an Issue Link in Jira. All the changes are bidirectional. So an issue created in Jira will automatically propogate to GitLab. Custom fields in Jira are ignored. Status syncs as Labels in GitLab and a Board is automatically created in GitLab to reflect the workflow.

Populating GitLab is happening via a service account. The service ignores any action taken by that account as a way of preventing infinite recursion. The database for the sync tool contains a row for each issue with the IDs on both sides, so the service doesn’t need to parse the description.

A feature that is often requested is that, when people make a tag in GitLab, that is automatically created as a Jira Version, and then all the Issues within that Tag are associated to that Jira Version.