Which API should I use for developing a Jira plugin compatible with both Cloud and Server products?

Björn Wilmsmann January 9, 2020

The documentation for the various approaches for developing a Jira plugin (Jira Cloud, Atlassian SDK) isn't entirely clear on this: Are these approaches mutually exclusive in terms of compatibility with Jira Cloud and Jira Server products?

Technically, I suppose it should be possible to develop a Java-based plugin using the Atlassian SDK to be compatible with both Jira Cloud and Jira Server.

From reading the documentation it seems though that one would have to maintain separate codebases for Jira Cloud and Jira Server plugins.

1 answer

1 accepted

1 vote
Answer accepted
Nic Brough -Adaptavist-
Community Leader
Community Leader
Community Leaders are connectors, ambassadors, and mentors. On the online community, they serve as thought leaders, product experts, and moderators.
January 9, 2020

They are very very different architectures. 

  • An app for Jira Server is (probably) written in java and some supporting languages (velocity, javascript, etc), and has to be installed into the Jira system.
  • An app for Cloud is a package of instructions on providing hooks to the main app and UI and then a pointer to the machine that will be doing the work by poking the Cloud system over the REST API.   https://developer.atlassian.com/cloud/jira/platform/architecture-overview/

You simply can't install Server plugins on Cloud and Server does not have the "connect" framework that allows you to tell a Server to talk to your application.

While there's the possibility to share logic, and even some of the code if your Cloud app is written in the same language as your Server plugin.

But they're so different, you can't have one app for both.

However... If you were to stick with a more Cloud-like architecture where you wrote a system that talks to Jira over REST, you can get quite close.  The REST APIs for both Server and Cloud are very similar (not identical, the products are diverging, but because they're always going to do similar things, stuff like "get an issue" and "change a field" etc are not going to diverge far).  You could write a "Cloud app" that works much the same for Cloud and Server, maybe with the "server version" being a simple Jira plugin that talks to your Cloud app direct.

Suggest an answer

Log in or Sign up to answer