50
#atlassian

Extending Stash - Jason Hinch

Embed Size (px)

DESCRIPTION

What's the easiest way to make Stash more useful for your team? Extend it. Get the details on how to hack Stash with merge conditions, pre- and post-receive hooks, and more from Stash full stack developer Jason Hinch.

Citation preview

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