Slide 1

Slide 1 text

RALPH WHITBECK • DEVELOPER EVANGELIST • ATLASSIAN • @REDWOLVES Equip Successful Teams with a NodeJS Micro-service

Slide 2

Slide 2 text

ATLASSIAN CONNECT WHAT? WHY? HOW? CODE UP A HIPCHAT ADD-ON REVIEW OTHER PRODUCTS Agenda

Slide 3

Slide 3 text

What? Why? How?

Slide 4

Slide 4 text

Unleash the power of teams … through the power of software ATLASSIAN MISSION STATEMENT “ ”

Slide 5

Slide 5 text

How many of you use…

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

50,000 Customers A Thriving Ecosystem

Slide 9

Slide 9 text

~$100M Revenue 50,000 Customers A Thriving Ecosystem

Slide 10

Slide 10 text

1,800+ Add-ons ~$100M Revenue 50,000 Customers A Thriving Ecosystem

Slide 11

Slide 11 text

A little history https://www.flickr.com/photos/jsjgeology/15340794381

Slide 12

Slide 12 text

In 2001 - Open[ish] Source Downloadable Source Modifying Directly

Slide 13

Slide 13 text

2004 - Atlassian Plugins Plugin Architecture written from scratch Service Provider Interface

Slide 14

Slide 14 text

2008 - Plugins 2 OSGi based Dependency Isolation Dynamic Loading

Slide 15

Slide 15 text

2014 - Atlassian Connect Language Agnostic Web APIs Cloud Integration

Slide 16

Slide 16 text

Atlassian Connect 101

Slide 17

Slide 17 text

Extending Atlassian Products

Slide 18

Slide 18 text

Extending Atlassian Products Ease of upgradability

Slide 19

Slide 19 text

Extending Atlassian Products Open Technology Stack Ease of upgradability

Slide 20

Slide 20 text

Extending Atlassian Products Atlassian SDK Open Technology Stack Ease of upgradability Only needed for JIRA and Confluence

Slide 21

Slide 21 text

Introducing Atlassian Connect

Slide 22

Slide 22 text

Introducing Atlassian Connect Insert Web Content

Slide 23

Slide 23 text

Introducing Atlassian Connect REST API’S Insert Web Content

Slide 24

Slide 24 text

Introducing Atlassian Connect Webhooks REST API’S Insert Web Content

Slide 25

Slide 25 text

A platform to build add-ons as micro-services

Slide 26

Slide 26 text

Platform Independent A platform to build add-ons as micro-services

Slide 27

Slide 27 text

Language Agnostic Platform Independent A platform to build add-ons as micro-services

Slide 28

Slide 28 text

Language Agnostic Platform Independent A platform to build add-ons as micro-services Public Contracts

Slide 29

Slide 29 text

Loosely coupled Language Agnostic Platform Independent A platform to build add-ons as micro-services Public Contracts

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

Register Add-on Descriptor

Slide 33

Slide 33 text

Register Add-on Descriptor API Requests Webhooks

Slide 34

Slide 34 text

Register Add-on Descriptor API Requests Webhooks

Slide 35

Slide 35 text

Atlassian Connect descriptor { "key": "weather-tutorial-addon", "name": "Weather", "description": "A simple add-on to get the weather.", "vendor": { "name": "Ralph Whitbeck", "url": "https://www.hipchat.com" }, "links": { "self": "{{localBaseUrl}}/atlassian-connect.json", "homepage": "{{localBaseUrl}}/atlassian-connect.json" }, "capabilities": { "hipchatApiConsumer": { "scopes": [ "send_notification" ] }, "installable": { "callbackUrl": "{{localBaseUrl}}/installable" }, "webhook": { "url": "{{localBaseUrl}}/webhook", "pattern": "^/weather", "event": "room_message", "name": "Get Weather" } } } { "name": "Hello World", "description": "Atlassian Connect add-on", "key": "com.example.myaddon", "baseUrl": "Your baseURL here", "vendor": { "name": "Example, Inc.", "url": "http://example.com" }, "authentication": { "type": "none" }, "version": "1.0", "modules": { "generalPages": [ { "url": "/helloworld.html", "key": "hello-world", "name": { "value": "Greeting" } } ] } }

Slide 36

Slide 36 text

Extensibility via web fragments

Slide 37

Slide 37 text

Extensibility via web fragments "modules": { "webPanels": [ { "location": ”alt.jira.view.issue.right.context”, "url": “/show-stats.html", "key": “show-stats", "name": { "value": "Statistics" } } ] }

Slide 38

Slide 38 text

Extensibility via web fragments

Slide 39

Slide 39 text

Choose your own technology stack

Slide 40

Slide 40 text

Choose your stack

Slide 41

Slide 41 text

Choose your stack

Slide 42

Slide 42 text

Choose your stack

Slide 43

Slide 43 text

Choose your stack

Slide 44

Slide 44 text

Choose your stack

Slide 45

Slide 45 text

Choose your stack

Slide 46

Slide 46 text

Choose your stack

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

Choose your stack

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

Static add-on

Slide 52

Slide 52 text

Prepare for follow along live coding

Slide 53

Slide 53 text

• Node (You have this already, don’t you?!) • HipChat Account (http://hipchat.com) • nGrok (http://ngrok.com) • Sign up for an API key at Weather Underground (http://www.wunderground.com/ weather/api/) • Download source code incase you fall behind or don’t want to code along • https://bitbucket.org/rwhitbeck/hipchat-weather-addon Make sure you have the following

Slide 54

Slide 54 text

• Big cool statistic • 2,56 9 • Add-Ons in Marketplace Break

Slide 55

Slide 55 text

Code a HipChat Add-on

Slide 56

Slide 56 text

BYO INTEGRATIONS A SIMPLE NOTIFICATION PUBLISHABLE ADD-ON Code a HipChat Add-on

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

Sending a request with cURL curl \ -H "Content-Type: application/json" \ -X POST -d '{"message": "This is a test from cURL."}' \ https://api.hipchat.com/v2/room/1071697/notification?auth_token={Room Token}

Slide 59

Slide 59 text

Let’s write some Node

Slide 60

Slide 60 text

BYO Integration

Slide 61

Slide 61 text

No content

Slide 62

Slide 62 text

No content

Slide 63

Slide 63 text

No content

Slide 64

Slide 64 text

Creating a publishable add-on

Slide 65

Slide 65 text

Review Other Products

Slide 66

Slide 66 text

• Download the SDK at http://developer.atlassian.com • Find the commands for spinning up the cloud versions • http://connect.atlassian.com -> Local Development • Downloads the application • Takes about 15 minutes the first time. Atlassian SDK

Slide 67

Slide 67 text

JIRA

Slide 68

Slide 68 text

Use ngrok Connect Command Atlassian SDK Developing for JIRA Cloud Remember to use the long command found at connect.atlassian.com to start JIRA as it is in the cloud with Atlassian Connect Use the SDK to spin up a local version of JIRA Use ngrok to expose your add-on externally and allow JIRA to install it.

Slide 69

Slide 69 text

Add-on descriptor "generalPages": [ { "url": "/helloyou.html", "key": "hello-you", "location": "system.top.navigation.bar", "name": { "value": "Click me" } } ] • Products can be extended using Web fragments (web item, web section, web panel) in various parts of the UI • You specify the fragment location, a target URL, and options, through the add-on descriptor To find the list of available locations, install the Web Fragments Finder add-on from Wittified: https://marketplace.atlassian.com/plugins/com.wittified.webfragment-finder W E B F R A G M E N T S - E X T E N D I N G T H E U I

Slide 70

Slide 70 text

Atlassian Connect only works in cloud

Slide 71

Slide 71 text

Confluence

Slide 72

Slide 72 text

Use ngrok Connect Command Atlassian SDK Developing for Confluence Cloud Remember to use the long command found at connect.atlassian.com to start Confluence as it is in the cloud with Atlassian Connect Use the SDK to spin up a local version of Confluence Use ngrok to expose your add-on externally and allow Confluence to install it.

Slide 73

Slide 73 text

Atlassian Connect only works in cloud

Slide 74

Slide 74 text

HipChat

Slide 75

Slide 75 text

Use ngrok Works in Server No SDK Developing for HipChat Cloud Unlike JIRA and Confluence Atlassian Connect works the same in HipChat Server. You can install directly into any room you have admin rights too. Don’t have admin rights to the group. Just create a room. Use ngrok to expose your add-on externally and allow HipChat to install it.

Slide 76

Slide 76 text

Bitbucket

Slide 77

Slide 77 text

Use ngrok No Server No SDK Developing for Bitbucket Cloud Currently not supported in the server version, Stash. You can install directly into Bitbucket. Just need a user account Use ngrok to expose your add-on externally and allow HipChat to install it.

Slide 78

Slide 78 text

API Reference Links to API references for all products can be found right on the home page http://developer.atlassian.com

Slide 79

Slide 79 text

No content

Slide 80

Slide 80 text

No content

Slide 81

Slide 81 text

Payment Processing Sell Share Atlassian Marketplace http://marketplace.atlassian.com

Slide 82

Slide 82 text

One more thing…

Slide 83

Slide 83 text

Awesome Judges $75 AWS Credit* $130,000 in prizes Codegeist: Atlassian Add-on Hack-a-thon Plus a t-shirt. Just for participating. *First 400 sign-ups 7 categories to win Robert Scoble Dion Almaer Emma Jane Hogbin Westby http://codegeist.atlassian.com

Slide 84

Slide 84 text

Thank you! RALPH WHITBECK • DEVELOPER EVANGELIST • ATLASSIAN • @REDWOLVES