Atlassian Plugins SDK
AMPS Now Goes To 11!




Jonathan Doklovic
Developer Relations, Atlassian
                                 2
AMPS (has always been good at)
Project Creation
• Easy project creation through prompts (atlas-create-jira-plugin)
• Generic plugin stub
• Generic unit test

Testing
• Easily run host product
• Automatically run functional tests
• Remote debug host product
                                                                     3
AMPS (has always been good at)
Project Creation
• Easy project creation through prompts (atlas-create-jira-plugin)
• Generic plugin stub
• Generic unit test

Testing
• Easily run host product
• Automatically run functional tests
• Remote debug host product
                                                                     4
AMPS (has always been good at)
Project Creation
• Easy project creation through prompts (atlas-create-jira-plugin)
• Generic plugin stub
• Generic unit test
              [Rock Out Your Plugin Here]
Testing
• Easily run host product
• Automatically run functional tests
• Remote debug host product
                                                                     4
“Rocking Out” Your Plugin (the old way)




                                          5
“Rocking Out” Your Plugin (the old way)




                                          5
“Rocking Out” Your Plugin (the old way)




                                          6
“Rocking Out” Your Plugin (the old way)




                                          6
“Rocking Out” Your Plugin (the old way)




                                          7
“Rocking Out” Your Plugin (the old way)




                                          7
“Rocking Out” Your Plugin (the old way)




                                          8
“Rocking Out” Your Plugin (the old way)




                                          8
“Rocking Out” Your Plugin (the old way)




                                          9
“Rocking Out” Your Plugin (the old way)




                                          9
“Rocking Out” Your Plugin (the old way)




                                          10
“Rocking Out” Your Plugin (the old way)




                                          10
“Rocking Out” Your Plugin (the old way)




                                          11
“Rocking Out” Your Plugin (the old way)




                                          11
“Rocking Out” Your Plugin (the old way)




                                          12
“Rocking Out” Your Plugin (the old way)




                                          12
“Rocking Out” Your Plugin (the old way)




                                          13
“Rocking Out” Your Plugin (the old way)




                                          13
“Rocking Out” Your Plugin (the old way)




                                          14
“Rocking Out” Your Plugin (the old way)




                                          14
“Rocking Out” Your Plugin (the old way)




                                          15
“Rocking Out” Your Plugin (the old way)




                                          15
“Rocking Out” Your Plugin (the old way)




                                          16
“Rocking Out” Your Plugin (the old way)




                                          16
“Rocking Out” Your Plugin (the old way)




                                          17
“Rocking Out” Your Plugin (the old way)




                                          17
“Rocking Out” Your Plugin (the old way)




                                          18
“Rocking Out” Your Plugin (the old way)




                                          18
“Rocking Out” Your Plugin (the old way)




                                          19
“Rocking Out” Your Plugin (the old way)




                                          19
“Rocking Out” Your Plugin (the old way)




                                          20
“Rocking Out” Your Plugin (the old way)




                                          20
“Rocking Out” Your Plugin (the old way)


           I’m Ready To Code!
           (what was I writing again?)




                                          21
“Rocking Out” Your Plugin (the old way)


           I’m Ready To Code!
           (what was I writing again?)




                                          21
22
SDK/AMPS 3.6
get it: http://developer.atlassian.com
• Easily Create Plugin Modules
 • atlas-create-jira-plugin-module
• Less Time Hunting in Docs
• Less Manual Setup
• Get To Coding Faster
• Get To Testing Faster
• Get To DRINKING BEER FASTER!
                                         23
What’s Next?
• All modules for ALL Products
 • currently common modules + JIRA modules
• Automated Testing of Generated Modules
• Product-Version Aware Generators
• YOUR Feedback


                                             24
Contribute!

  https://studio.atlassian.com/browse/AMPS




                                             25
One more thing...




                    26
Zach Davis
JavaScript Developer, Atlassian

                                  27
Faster plugin development.




Zach Davis
JavaScript Developer, Atlassian

                                    27
Faster plugin development.
            Greater sanity.



Zach Davis
JavaScript Developer, Atlassian

                                    27
Faster plugin development.
            Greater sanity.



Zach Davis
JavaScript Developer, Atlassian

                                    28
Faster plugin development.
            Greater sanity.



Zach Davis
JavaScript Developer, Atlassian
           Developer

                                    28
Faster plugin development.
            Greater sanity.



Zach Davis
JavaScript Developer, Atlassian
           Developer

                                    28
You should probably hate me.




                               29
You should probably hate me.
Seriously.




                               29
Edit.




        30
Edit. Save.




              30
Reload.




          31
This slide intentionally left blank.




                                       32
Edit. Save. Reload.




                      33
Edit. Save. Reload.




                      33
Edit. Save. Reload.




                      33
Edit. Save. Reload.




                      33
You should probably hate me.




                               34
You should probably hate me.
But hear me out.




                               34
We’re here to help




                     35
We’re here to help
• Maven CLI Plugin




                     35
We’re here to help
• Maven CLI Plugin
• Plugin SDK




                     35
We’re here to help
• Maven CLI Plugin
• Plugin SDK
• FastDev




                     36
Demo!




        37
How it works




               38
How it works
• Servlet filter that listens for shift + reload (ctl + reload in IE)




                                                                       38
How it works
• Servlet filter that listens for shift + reload (ctl + reload in IE)
  • Checks “Cache-Control” and “Pragma” headers




                                                                       38
How it works
• Servlet filter that listens for shift + reload (ctl + reload in IE)
  • Checks “Cache-Control” and “Pragma” headers

• If detected, scans plugin directories for changes




                                                                       38
How it works
• Servlet filter that listens for shift + reload (ctl + reload in IE)
  • Checks “Cache-Control” and “Pragma” headers

• If detected, scans plugin directories for changes
• If found, spins up a maven process to perform pi




                                                                       38
How to get it




                39
How to get it
• Bundled in the Plugin SDK 3.6, released yesterday




                                                      39
Configurability




                 40
Configurability
• Any single module plugin should work out of the box




                                                        40
Configurability
• Any single module plugin should work out of the box
 • For multi-module plugins, specify additional plugin root directories




                                                                          40
Configurability
• Any single module plugin should work out of the box
 • For multi-module plugins, specify additional plugin root directories

• Can ignore additional files, extensions or directories




                                                                          40
Configurability
• Any single module plugin should work out of the box
 • For multi-module plugins, specify additional plugin root directories

• Can ignore additional files, extensions or directories
• Can change the mvn command




                                                                          40
Configurability
• Any single module plugin should work out of the box
 • For multi-module plugins, specify additional plugin root directories

• Can ignore additional files, extensions or directories
• Can change the mvn command
• Can disable FastDev



                                                                          40
Configurability
• Any single module plugin should work out of the box
 • For multi-module plugins, specify additional plugin root directories

• Can ignore additional files, extensions or directories
• Can change the mvn command
• Can disable FastDev
• All from your plugin’s pom.xml file

                                                                          40
Future Work




              41
Future Work
• Maven 3




              41
Future Work
• Maven 3
 • Invoke maven programmatically so we don’t have to spin up a new vm




                                                                        41
Future Work
• Maven 3
 • Invoke maven programmatically so we don’t have to spin up a new vm

• Dependency Management




                                                                        41
Future Work
• Maven 3
 • Invoke maven programmatically so we don’t have to spin up a new vm

• Dependency Management
 • Currently unreliable for multiple plugins with cross-dependencies




                                                                        41
More information




                   42
More information
• Docs: https://studio.atlassian.com/wiki/display/FASTDEV
• Bugs: https://studio.atlassian.com/browse/FASTDEV




                                                            42
More information
• Docs: https://studio.atlassian.com/wiki/display/FASTDEV
• Bugs: https://studio.atlassian.com/browse/FASTDEV
• Plugin SDK: http://developer.atlassian.com/




                                                            42
More information
• Docs: https://studio.atlassian.com/wiki/display/FASTDEV
• Bugs: https://studio.atlassian.com/browse/FASTDEV
• Plugin SDK: http://developer.atlassian.com/
• Find me or email me: zach@atlassian.com




                                                            42
Thank you!

The Atlassian SDK Goes to 11