Transcript
Page 1: Extending Stash - Jason Hinch

#atlassian

Page 2: Extending Stash - Jason Hinch

JASON HINCH • DEVELOPER • ATLASSIAN • @j_hinch

Extending Stash

Page 3: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

G E T T I N G S TA RT E D

Agenda

T O O M U C H T O H A N D L E

Q U E S T I O N S & R E F E R E N C E S

Page 4: Extending Stash - Jason Hinch

go.atlassian.com/stashdevdocs

Page 5: Extending Stash - Jason Hinch

G E T T I N G S TA RT E D

Stash plugin 101• In-process add-on (aka p2 plugins)• Shares host applications resources• OSGi bundle with

atlassian-plugin.xml

• Built on the Atlassian Platform• Web - Filters, Servlets, Web Resources, Web Fragments• Business - SAL, Atlassian Cache, Atlassian Scheduler• Data - PluginSettings (SAL), ActiveObjects

• Atlassian Connect coming soon

Page 6: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

G E T T I N G S TA RT E D

Hooked on Stash

T O O M U C H T O H A N D L E

Q U E S T I O N S & R E F E R E N C E S

Page 7: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

Repository Hooks• Configured per repository• Enabled/Disabled• Persisted settings (optional)

• Prevent pushes & merges• Notified on successful

change

Page 8: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

Repository Hooks• Examples• Prevent tag deletion• Commits without referenced

JIRA ticket• Branch naming conventions• Notify build server of new

changes• Notify mirror to synchronize

Page 9: Extending Stash - Jason Hinch

Example: Naming Convention Hook

Page 10: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

atlassian-plugin.xml

Page 11: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

atlassian-plugin.xml

Page 12: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

atlassian-plugin.xml

Page 13: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

atlassian-plugin.xml

Page 14: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

NamingConventionHook.java

Page 15: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

NamingConventionHook.java

Page 16: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

NamingConventionHook.java

Page 17: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

NamingConventionHook.java

Page 18: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

NamingConventionHook.java

Page 19: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

NamingConventionHook.java

Page 20: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

NamingConventionHook.java

Page 21: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

NamingConventionHook.java

Page 22: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

static/config.soy

Page 23: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

static/config.soy

Page 24: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

static/config.soy

Page 25: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

static/config.soy

Page 26: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

static/config.soy

Page 27: Extending Stash - Jason Hinch

Naming Convention Hook Demo

Page 28: Extending Stash - Jason Hinch

Naming Convention Hook Demo

Page 29: Extending Stash - Jason Hinch

Naming Convention Hook Demo

Page 30: Extending Stash - Jason Hinch

Naming Convention Hook Demo

Page 31: Extending Stash - Jason Hinch

Naming Convention Hook Demo

Page 32: Extending Stash - Jason Hinch

Naming Convention Hook Demo

Page 33: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

G E T T I N G S TA RT E D

Too much to handle

T O O M U C H T O H A N D L E

Q U E S T I O N S & R E F E R E N C E S

Page 34: Extending Stash - Jason Hinch

T O O M U C H T O H A N D L E

File & Diff Handlers• Front-end plugin point• Custom rendering for any

source and diff view• Including:• Pull request overview• Pull request diff• Changeset diff• File source & diff

Page 35: Extending Stash - Jason Hinch

T O O M U C H T O H A N D L E

File & Diff Handlers• Examples• 3D models• CSV• PDF• Adobe Photoshop

Page 36: Extending Stash - Jason Hinch

Example: STL Handler

Page 37: Extending Stash - Jason Hinch

T O O M U C H T O H A N D L E

atlassian-plugin.xml

Page 38: Extending Stash - Jason Hinch

T O O M U C H T O H A N D L E

atlassian-plugin.xml

Page 39: Extending Stash - Jason Hinch

T O O M U C H T O H A N D L E

atlassian-plugin.xml

Page 40: Extending Stash - Jason Hinch

T O O M U C H T O H A N D L E

atlassian-plugin.xml

Page 41: Extending Stash - Jason Hinch

T O O M U C H T O H A N D L E

stl-handler.js

Page 42: Extending Stash - Jason Hinch

T O O M U C H T O H A N D L E

stl-handler.js

Page 43: Extending Stash - Jason Hinch

T O O M U C H T O H A N D L E

stl-handler.js

Page 44: Extending Stash - Jason Hinch

T O O M U C H T O H A N D L E

stl-handler.js

Page 45: Extending Stash - Jason Hinch

T O O M U C H T O H A N D L E

stl-handler.js

Page 46: Extending Stash - Jason Hinch

STL Handler Demo

Page 47: Extending Stash - Jason Hinch

STL Handler Demo

Page 48: Extending Stash - Jason Hinch

H O O K E D O N S TA S H

G E T T I N G S TA RT E D

Questions?

T O O M U C H T O H A N D L E

Q U E S T I O N S & R E F E R E N C E S

Page 49: Extending Stash - Jason Hinch

Q U E S T I O N S & R E F E R E N C E S

References• Documentation - http://go.atlassian.com/stashdevdocs• Repository hook example - https://bitbucket.org/atlassianlabs/stash-naming-

convention-hook-plugin• File handler example - https://bitbucket.org/atlassian/stash-stl-plugin/

Page 50: Extending Stash - Jason Hinch

Thank you!

JASON HINCH • DEVELOPER • ATLASSIAN • @j_hinch