Posts about Clojure BB add-on
In part 4 of this series we added the Bitbucket UI to our add-on. Although there's more tweaks we'll do in later installments, for now we have enough to do an initial test against Bitbucket. In this post we'll show how to do this running from our development machine, and how to build and run a standalone deployment image of our add-on.
In part 3 of this series we added REST and JSON capabilities to our add-on. However most Atlassian Connect add-ons will want to add some user-interface elements to the Bitbucket repository too, usually by working with data from the repository. To get this data, the add-on will need to talk to Bitbucket directly. In this installment, we'll look at a couple of ways to do this, including how to authenticate using the handshake information we received in the previous blog post.
In part 2 of this series we built upon the foundations we created in part 1 to generate a Connect descriptor. That descriptor specifies, among other things, the API that Bitbucket should call on key events in our repository and add-on lifecycle. In this installment we're going to look at how to specify and serve this API, and how to convert JSON sent to us by Bitbucket into Clojure data-structures.
In part 1 of this series we did the fundamental work of building a Twelve Factor HTTP-stack from the ground using Leiningen, Ring, Compojure, and Immutant. However, that was just the foundations, and now we're ready to start adding the necessary tooling to produce a full Atlassian Connect for Bitbucket application. This will include templating and introduce how to specify and authenticate our Connect add-on via its descriptor.
One the most exciting things about the Atlassian Connect add-on framework, for me at least, is that it removes the need to create add-ons in the language of the hosting application. With the recent release of Bitbucket support for Connect we now have the ability to not-only extend Bitbucket in any way we see fit, but to also do it in whatever language or framework we desire. This opens us up to developing for Atlassian products in Haskell, Scala, Node.js, or anything else that supports the basic protocols of the web.