Transcript
Page 1: Get Ready for JIRA 5 - AtlasCamp 2011

Thursday, 29 September 11

Page 2: Get Ready for JIRA 5 - AtlasCamp 2011

A killer platform for applications

Matt QuailJIRA Architect, Atlassian

JIRA 5.0

2

(Spuddy)

Thursday, 29 September 11

Page 3: Get Ready for JIRA 5 - AtlasCamp 2011

The Expanding JIRASphere

120

17,000

330,000 140

7,900 x 3

Thursday, 29 September 11

Page 4: Get Ready for JIRA 5 - AtlasCamp 2011

Developing & Integrating JIRA

4

Plugins Remote

Thursday, 29 September 11

Page 5: Get Ready for JIRA 5 - AtlasCamp 2011

JIRA Plugins

5

Easier to DevelopEasier to Consume

Thursday, 29 September 11

Page 6: Get Ready for JIRA 5 - AtlasCamp 2011

Easier to Consume: Adoption

UPM + PAC

Find Install

Thursday, 29 September 11

Page 7: Get Ready for JIRA 5 - AtlasCamp 2011

No Restart Required

Easier to Consume: Upgrades

Thursday, 29 September 11

Page 8: Get Ready for JIRA 5 - AtlasCamp 2011

8

Introducing the JIRA Stable API

atlassian-jira.jar

“Public classes used by plugin developers at their

own risk”

Implementation Classes

No promises of stability

jira-core.jarjira-api.jar

JIRA Stable API

Stable within one major release to

the next

Thursday, 29 September 11

Page 9: Get Ready for JIRA 5 - AtlasCamp 2011

9

Stability

• Forwards binary compatibility for minor releases• Deprecated methods removed at next major release

5.0 5.1 5.x 6.0

method deprecated method removedmajor release

At least 12 months

Thursday, 29 September 11

Page 10: Get Ready for JIRA 5 - AtlasCamp 2011

10

How to make your plugin as stable as possible1.Use jira-api.jar

2.Avoid jira-core.jiar

3.Give us feedback.

Thursday, 29 September 11

Page 11: Get Ready for JIRA 5 - AtlasCamp 2011

• See Jonathan and Zach’s talk from yesterday:“The Atlassian SDK goes to 11”

• Don’s talk up next:“Five Strategies to Accelerate Plugin Dev”

11

Easier to Develop: Get Started

Thursday, 29 September 11

Page 12: Get Ready for JIRA 5 - AtlasCamp 2011

12

New Plugin Points

Thursday, 29 September 11

Page 13: Get Ready for JIRA 5 - AtlasCamp 2011

In Action

13

<!-- Details panel --> <web-panel key="details-module" location="atl.jira.view.issue.left.context" weight="100"> <context-provider class="com.atlassian.jira.plugin.viewissue.DetailsBlockContextProvider"/> <resource name="view" type="velocity" location="viewissue/detailsblock.vm"/> <label key="viewissue.subheading.issuedetails"/> </web-panel> <!-- Description panel --> <web-panel key="descriptionmodule" location="atl.jira.view.issue.left.context" weight="200"> <context-provider class="com.atlassian.jira.plugin.viewissue.DescriptionBlockContextProvider"/> <resource name="view" type="velocity" location="viewissue/descriptionblock.vm"/> <label key="common.concepts.description"/> <condition class="com.atlassian.jira.plugin.webfragment.conditions.IsFieldHiddenCondition" invert="true"> <param name="field">description</param> </condition> </web-panel> <!-- Peopleweb panel --> <web-panel key="peoplemodule" location="atl.jira.view.issue.right.context" weight="10"> <context-provider class="com.atlassian.jira.plugin.webfragment.contextproviders.MultiContextProvider"> <param name="pluginKey">${project.groupId}.${project.artifactId}</param> <param name="ctxProvider-1">com.atlassian.jira.plugin.webfragment.contextproviders.I18nContextProvider</param> <param name="ctxProvider-2">com.atlassian.jira.plugin.viewissue.PeopleBlockContextProvider</param> <param name="ctxProvider-3">com.atlassian.jira.plugin.webfragment.contextproviders.DefaultVelocityContextProvider</param> </context-provider> <resource name="view" type="velocity" location="viewissue/peopleblock.vm"/> <label key="common.concepts.people" /> </web-panel> <!-- Dates web panel --> <web-panel key="datesmodule" location="atl.jira.view.issue.right.context" weight="40"> <context-provider class="com.atlassian.jira.plugin.viewissue.DateBlockContextProvider"/> <resource name="view" type="velocity" location="viewissue/datesblock.vm"/>

Thursday, 29 September 11

Page 14: Get Ready for JIRA 5 - AtlasCamp 2011

• Storage for Plugins• Jason’s talk yesterday: “Using AO

for Rapid Plugin Dev”

• Supported in JIRA 5.0!

• Schema management, SQL support

• Integrated into JIRA Backup/Restore

• Already used by GreenHopper, Activity Streams

ActiveObjects in JIRA

14Thursday, 29 September 11

Page 15: Get Ready for JIRA 5 - AtlasCamp 2011

JIRA UI

15

• Single DecoratorConsistent markup/CSS across JIRA pages

Better performance for client & server

More stability surrounding the markup/CSS

Improved markup structure/semantics

Default styles reflect Look & Feel

• AUIYesterday’s What’s New in AUI talk

Thursday, 29 September 11

Page 16: Get Ready for JIRA 5 - AtlasCamp 2011

Internalizing plugins

16

Remote Issue Links

Quick EditWorkflow Designer

ProjectConfiguration

Studio plugins migrating to stable APIs JIRA now develops more in plugins

Thursday, 29 September 11

Page 17: Get Ready for JIRA 5 - AtlasCamp 2011

17

JIRA API Guru Sessions @ AtlasCamp

Wednesday Noon-2 PM

Thursday 3-5 PM

Friday 3-5 PM

Getting 5.0 Compatible!

Thursday, 29 September 11

Page 18: Get Ready for JIRA 5 - AtlasCamp 2011

• Why Remote?

Remote Integration to JIRA

18

Zero Customer Install Integrates with JIRA Studio

And some new features specifically designed for remote integration!

InstallLightweight Web Standards

Thursday, 29 September 11

Page 19: Get Ready for JIRA 5 - AtlasCamp 2011

• Moved from Alpha to Stable • Now our primary Remote protocol• Easy to use with JS/HTML, Ruby, Python, PHP, etc.

19

What’s up with JIRA REST?

Thursday, 29 September 11

Page 20: Get Ready for JIRA 5 - AtlasCamp 2011

• See Rich’s talk tomorrow afternoon:“JIRA 5.0 REST API”

REST in 5.0 - full banquet

20Thursday, 29 September 11

Page 21: Get Ready for JIRA 5 - AtlasCamp 2011

• Get an issue:GET http://localhost:8080/rest/api/2/issue/TST-1

• Update Summary:PUT http://localhost:8080/rest/api/2/issue/TST-1

REST in 5.0 - quick taste

21

{ "id":"10000", "key":"TST-1", "fields":{ "summary":"Issue under test", "created":"2011-06-29T18:40:56.287+1000", "updated":"2011-09-26T14:30:06.871+1000", "description":"This is the issue under test.", "status":{ "iconUrl":"http://localhost:8080/images/icons/...", "name":"Open", "id":"1" }, "labels":["abc"], "assignee":{ "name":"admin", "emailAddress":"[email protected]", "avatarUrls":{ "16x16":"http://localhost:8080/secure/useravatar?size=small&avatarId=10062",

{ "fields":{ "summary":"new summary", }}

Thursday, 29 September 11

Page 22: Get Ready for JIRA 5 - AtlasCamp 2011

From SOAP to REST

22

<?xml version="1.0" encoding="UTF-8"?><wsdl:definitions targetNamespace="http://jira.atlassian.com/rpc/soap/jirasoapservice-v2" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:impl="http://jira.atlassian.com/rpc/soap/jirasoapservice-v2" xmlns:intf="http://jira.atlassian.com/rpc/soap/jirasoapservice-v2" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns1="http://exception.rpc.jira.atlassian.com" xmlns:tns2="http://beans.soap.rpc.jira.atlassian.com" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><!--WSDL created by Apache Axis version: 1.3Built on Oct 05, 2005 (05:23:37 EDT)--> <wsdl:types> <schema targetNamespace="http://exception.rpc.jira.atlassian.com" xmlns="http://www.w3.org/2001/XMLSchema"> <import namespace="http://beans.soap.rpc.jira.atlassian.com"/> <import namespace="http://jira.atlassian.com/rpc/soap/jirasoapservice-v2"/> <import namespace="http://schemas.xmlsoap.org/soap/encoding/"/> <complexType name="RemoteException"> <sequence/> </complexType> <complexType name="RemoteValidationException"> <complexContent> <extension base="tns1:RemoteException"> <sequence/> </extension> </complexContent> </complexType> <complexType name="RemotePermissionException"> <complexContent> <extension base="tns1:RemoteException"> <sequence/> </extension> </complexContent> </complexType> <complexType name="RemoteAuthenticationException"> <complexContent> <extension base="tns1:RemoteException">

{ "fields":{ "summary":"new summary", }}

Thursday, 29 September 11

Page 23: Get Ready for JIRA 5 - AtlasCamp 2011

Tell me more about REST!

23

Search IssuesGet Issue DetailsA few project APIs

In REST, not in SOAPCustom Fields (inc names), Labels, Attachments, Avatars, Icons, Move, Watch, Voting Issue, Screen Info, Rendered HTML, Autocomplete, “Non-chatty” Metadata, Query a subset of the fields, Set Securty Level, Manage Issue Links, Change Log

+Better Search+All Issue Details+Create Issue+Edit Issue+Full Metadata=Full Issue Support

REST in JIRA 5.0

Thursday, 29 September 11

Page 24: Get Ready for JIRA 5 - AtlasCamp 2011

Thursday, 29 September 11

Page 25: Get Ready for JIRA 5 - AtlasCamp 2011

Remote Issue Links

25Thursday, 29 September 11

Page 26: Get Ready for JIRA 5 - AtlasCamp 2011

POST to http://<JIRA Server>/rest/api/2/issue/<IssueKey>/remotelink

Add a Link easily via REST

26Thursday, 29 September 11

Page 27: Get Ready for JIRA 5 - AtlasCamp 2011

• RenderRender the link differently

Update the link data from the remote

source • Custom “Add Link” Dialogs

Add link via key vs URL

Add remote search

Custom Remote Link Plugins

27Thursday, 29 September 11

Page 28: Get Ready for JIRA 5 - AtlasCamp 2011

Activity Streams via REST

28

• Simple Add Activity API via REST (or Java)

• “Get in the Flow with Atlassian Streams”

• Ben Woskow, 1:30 PM Thursday (today!)

Thursday, 29 September 11

Page 29: Get Ready for JIRA 5 - AtlasCamp 2011

29

A couple of extra goodies....

Thursday, 29 September 11

Page 30: Get Ready for JIRA 5 - AtlasCamp 2011

30

JIRA Issue CollectorWith a small snippet of JS, get this widget on your website:

And the user’s feedback becomes a JIRA Issue

https://plugins.atlassian.com/plugin/details/583856

Thursday, 29 September 11

Page 31: Get Ready for JIRA 5 - AtlasCamp 2011

31

JIRA Mobile ConnectUser Feedback and Issue Tracking for Mobile App Developers

Contextual, Automated Crash Reporting. Interactive Feedback. Data Reporting Done Right.

Thursday, 29 September 11

Page 32: Get Ready for JIRA 5 - AtlasCamp 2011

32

Remote Issue Links

Activity Streams

JIRA Stable API

SAL

Application Links

Plugins 2.0

JIRA REST APIs

Gadgets

AUI

Decorators

Active Objects

Vertical Applications

on JIRA

Remote Integration

Rapid Development

Stable Development

JIRA Issue Collector

JIRA Mobile Connect

Thursday, 29 September 11

Page 33: Get Ready for JIRA 5 - AtlasCamp 2011

33

SEPTEMBER

28OCTOBER

31NOVEMBER

30

If you are 5.0 Compatible in time for JIRA’s launch:

then you launch with JIRA.

Contact Kyle Miller ([email protected]) for details!

RC1

final/launch

Thursday, 29 September 11

Page 34: Get Ready for JIRA 5 - AtlasCamp 2011

Thank you!

Thursday, 29 September 11

Page 35: Get Ready for JIRA 5 - AtlasCamp 2011

Active Objects - Resources

35

Projecthttps://studio.atlassian.com/browse/AO

Documentationhttps://developer.atlassian.com/display/AO/Active+Objects

Tutorialshttps://developer.atlassian.com/display/AO/Getting+Started+with+Active+Objects

Thursday, 29 September 11

Page 36: Get Ready for JIRA 5 - AtlasCamp 2011

JIRA UX - Resources

36

DocumentationAUIhttps://developer.atlassian.com/display/AUI/Atlassian+User+Interface+%28AUI%29+Developer+Documentation

Changes to markup in JIRA 5.0https://developer.atlassian.com/display/JIRADEV/Changes+to+markup%2C+CSS+and+Decorators+in+JIRA+5.0

Thursday, 29 September 11

Page 38: Get Ready for JIRA 5 - AtlasCamp 2011

REST API - Resources

38

Java REST Client for JIRA: Plugin: https://plugins.atlassian.com/plugin/details/39474Doc: https://studio.atlassian.com/wiki/display/JRJC/HomeTutorial: https://studio.atlassian.com/wiki/display/JRJC/Tutorial

DocumentationOverviewhttps://developer.atlassian.com/display/JIRADEV/JIRA+REST+API+in+JIRA+5.0

REST API Docshttp://docs.atlassian.com/jira/REST/latest/

Tutorialshttps://developer.atlassian.com/display/JIRADEV/JIRA+REST+API+Tutorials

Thursday, 29 September 11

Page 39: Get Ready for JIRA 5 - AtlasCamp 2011

Remote Issue Links - Resources

39

Documentationhttps://developer.atlassian.com/display/JIRADEV/JIRA+Remote+Issue+Links

Tutorialhttps://developer.atlassian.com/display/JIRADEV/JIRA+REST+API+for+Remote+Issue+Links

Thursday, 29 September 11

Page 40: Get Ready for JIRA 5 - AtlasCamp 2011

New Plugin Points - Resources

40

DocumentationAll JIRA plugin moduleshttps://developer.atlassian.com/display/JIRADEV/JIRA+Developer+Documentation

Web panelshttps://developer.atlassian.com/display/JIRADEV/Web+Panel+Plugin+Module

Java API Documentation http://docs.atlassian.com/software/jira/docs/api/

Tutorialshttps://developer.atlassian.com/display/JIRADEV/How+to+create+a+new+Custom+Field+Typehttps://developer.atlassian.com/display/DOCS/Plugin+Tutorial+-+Adding+your+own+Menu+Items+to+JIRAhttps://developer.atlassian.com/display/DOCS/Plugin+Tutorial+-+Creating+a+JIRA+Reporthttps://developer.atlassian.com/display/DOCS/Plugin+Tutorial+-+Writing+Integration+Tests+for+your+JIRA+pluginhttps://developer.atlassian.com/display/DOCS/Plugin+Tutorial+-+Adding+a+JQL+Function+to+JIRA

Thursday, 29 September 11

Page 41: Get Ready for JIRA 5 - AtlasCamp 2011

Goodies Resources

41

JIRA Mobile ConnectInfo:http://www.atlassian.com/en/jiramobileconnecthttps://plugins.atlassian.com/plugin/details/322837

Code: https://bitbucket.org/atlassian/jiraconnect-jiraplugin

JIRA Issue Collector:https://plugins.atlassian.com/plugin/details/583856

Thursday, 29 September 11

Page 42: Get Ready for JIRA 5 - AtlasCamp 2011

Thank you!

Thursday, 29 September 11