SlideShare une entreprise Scribd logo
1  sur  41
Télécharger pour lire hors ligne
The Atlassian Plugin
SDK For Fun & Profit
Ben Speakmon
Atlassian Developer Relations
Wednesday, November 3, 2010
Agenda
• Challenges in writing
plugins
• How the SDK fixes it
• SDK in action
• What’s new
• Getting involved
Wednesday, November 3, 2010
Plugin challenges
I am yours, you are mine
You are what you are
And you make it hard
--”Suite: Judy Blue Eyes”, Crosby, Stills & Nash
Wednesday, November 3, 2010
Effective plugin
development
• Different than product development
• Work within someone else’s sandbox
• Three things that MUST be easy:
• Starting the product
• Configuring the product
• Installing the plugin
Wednesday, November 3, 2010
Challenge #1: Starting
Product Startup method
JIRA
bin/startup.sh or .bat (standalone) or WAR install into
app. server
Confluence
bin/startup.sh or .bat (standalone) or WAR install into
app. server
Bamboo
bamboo.sh or Win32 service or WAR install into app.
server
Crowd
start_crowd.sh or .bat (standalone) or WAR install
into app. server
FishEye/Crucible run.sh or .bat – no WAR version available
Wednesday, November 3, 2010
Challenge #2: Config
Product Data/logs dir. Configuration
JIRA jira-home
WEB-INF/classes/jira-
application.properties
Confluence None by default
WEB-INF/classes/confluence-
init.properties
Bamboo None by default
WEB-INF/classes/bamboo-
init.properties
Crowd None by default
WEB-INF/classes/crowd-
init.properties, system / servlet
context property
FishEye/
Crucible
var FISHEYE_INST environment variable
Wednesday, November 3, 2010
Challenge #3: Plugin
install
Product Install methods
JIRA
Two plugin directories for different plugin
systems, web interface
Confluence
Two plugin directories for different plugin
systems, web interface, plugin repository
Bamboo
Two plugin directories for different plugin
systems, web interface
Crowd One plugin directory (plugins 2 only)
FishEye/Crucible One plugin directory (plugins 2 only)
Wednesday, November 3, 2010
And if that wasn’t
enough...
• Build systems
• Maven 1 or 2? Ant?
• Confusing dependencies
• Starting a plugin project
• Expert product knowledge
required just to get started
• Maven archetypes are too
hard to use
Wednesday, November 3, 2010
It all adds up to...
• Lots of small headaches
• Not your fault
• Not your job to fix
them
• Slow code/test/debug
cycle
• Frustration
Wednesday, November 3, 2010
How the SDK deals
with this
“What is happiness? The feeling that power is growing,
that resistance is overcome.”
--Friedrich Nietzsche, LISP user
Wednesday, November 3, 2010
Challenge #1: Starting
Product Startup method
JIRA
bin/startup.sh or .bat (standalone) or WAR install into
app. server
Confluence
bin/startup.sh or .bat (standalone) or WAR install into
app. server
Bamboo
bamboo.sh or Win32 service or WAR install into app.
server
Crowd
start_crowd.sh or .bat (standalone) or WAR install
into app. server
FishEye/Crucible run.sh or .bat – no WAR version available
Wednesday, November 3, 2010
Challenge #1: Starting
Product Startup method
JIRA
bin/startup.sh or .bat (standalone) or WAR install into
app. server
Confluence
bin/startup.sh or .bat (standalone) or WAR install into
app. server
Bamboo
bamboo.sh or Win32 service or WAR install into app.
server
Crowd
start_crowd.sh or .bat (standalone) or WAR install
into app. server
FishEye/Crucible run.sh or .bat – no WAR version available
atlas-run
Wednesday, November 3, 2010
Challenge #2: Config
Product Data/logs dir. Configuration
JIRA jira-home
WEB-INF/classes/jira-
application.properties
Confluence None by default
WEB-INF/classes/confluence-
init.properties
Bamboo None by default
WEB-INF/classes/bamboo-
init.properties
Crowd None by default
WEB-INF/classes/crowd-
init.properties, system / servlet
context property
FishEye/
Crucible
var FISHEYE_INST environment variable
Wednesday, November 3, 2010
Challenge #2: Config
Product Data/logs dir. Configuration
JIRA jira-home
WEB-INF/classes/jira-
application.properties
Confluence None by default
WEB-INF/classes/confluence-
init.properties
Bamboo None by default
WEB-INF/classes/bamboo-
init.properties
Crowd None by default
WEB-INF/classes/crowd-
init.properties, system / servlet
context property
FishEye/
Crucible
var FISHEYE_INST environment variable
Logs sent to console,
preconfigured data dirs
Wednesday, November 3, 2010
Challenge #3: Plugin
install
Product Install methods
JIRA
Two plugin directories for different plugin
systems, web interface
Confluence
Two plugin directories for different plugin
systems, web interface, plugin repository
Bamboo
Two plugin directories for different plugin
systems, web interface
Crowd One plugin directory (plugins 2 only)
FishEye/Crucible One plugin directory (plugins 2 only)
Wednesday, November 3, 2010
Challenge #3: Plugin
install
Product Install methods
JIRA
Two plugin directories for different plugin
systems, web interface
Confluence
Two plugin directories for different plugin
systems, web interface, plugin repository
Bamboo
Two plugin directories for different plugin
systems, web interface
Crowd One plugin directory (plugins 2 only)
FishEye/Crucible One plugin directory (plugins 2 only)
Automatic through
atlas-run
Wednesday, November 3, 2010
SDK Design
A process cannot be understood by stopping it.
Understanding must move with the flow of the
process, must join it and flow with it.
-- First Law of Mentat
Wednesday, November 3, 2010
Atlassian Maven
Plugin Suite
• Suite of Maven plugins
• maven-jira-plugin, maven-confluence-
plugin, etc.
• Common interface to products
• Handles installation and configuration
• Can be used independently of the SDK
Wednesday, November 3, 2010
Script shortcuts
Task Maven command Script
Start product with current
plugin installed
mvn amps:run atlas-run
Start product with current
plugin installed and
debuggable
mvn amps:debug atlas-debug
Start JIRA on port 8243 and
context “myjira” with current
plugin installed
mvn amps:run
–Dproduct=jira
–Dcontext.path=/myjira
–Dhttp.port=8243
atlas-run
--product jira
--context-path /myjira
--http-port 8243
Run arbitrary Maven
command
mvn myplugin:mygoal
<parameters>
atlas-mvn myplugin:mygoal
<parameters>
Wednesday, November 3, 2010
SDK in action
By pressing down a special key
It plays a little melody
--”Pocket Calculator”, Kraftwerk
Wednesday, November 3, 2010
SDK with Plugins 1.0
• SDK is only at full power with plugins 2
• http://confluence.atlassian.com/x/wRyyCg
for details on how
Wednesday, November 3, 2010
30-second
Plugin Creation™
• Creating a plugin is dirt simple!
• atlas-create-<product>-plugin
• Executes a Maven archetype
• Automatically prompts for required
information
• Created plugin project works out of the
box
Wednesday, November 3, 2010
Creating a new plugin
Wednesday, November 3, 2010
Creating a new plugin
Wednesday, November 3, 2010
On-the-fly code change
•Fast code/test/debug
•Start a CLI instance in a
separate terminal from atlas-run
•Make a code change
•Reinstall the plugin from the CLI
Wednesday, November 3, 2010
CLI plugin installation
Wednesday, November 3, 2010
CLI plugin installation
Wednesday, November 3, 2010
Auto resource reload
• Plugin web resources
are monitored
• Detects change and
auto-updates
• Just reload the
browser, see your
changes, get the
green-skinned alien
girl, repeat
Wednesday, November 3, 2010
Changing a live gadget
Wednesday, November 3, 2010
Changing a live gadget
Wednesday, November 3, 2010
Boxed Maven
• Contains a standalone,
isolated Maven 2.1.0
• Uses Atlassian repos
by default
• No extra
configuration needed
• Usable on its own
• atlas-mvn passes
parameters and goals
straight through
Wednesday, November 3, 2010
What’s new
Come on! Stop trying to hit me and hit me!
--Morpheus, The Matrix
Wednesday, November 3, 2010
External home
directories
• Create a zip of an existing product home
directory
• atlas-run starts the product with that data/
configuration/etc.
• Thanks to Jonathan Doklovic @ SysBliss!
Wednesday, November 3, 2010
Test groups
• Create groups of
tests
• Write a group of
tests for all supported
products and separate
groups for product-
specific testing
• Run one, some, or all
groups at once
Wednesday, November 3, 2010
Multiple version testing
• Run a test (or a
test group)
against multiple
versions of the
same product
• “Why does it
work in JIRA 4.1
but not 4.2?”
Wednesday, November 3, 2010
Co-installs
• Your plugin may
require other
plugins or special
artifacts to run
• SDK can install
these for you
during atlas-run
or atlas-debug
Wednesday, November 3, 2010
Getting involved
Be the change you seek.
--Fifth AtlassianValue
Wednesday, November 3, 2010
Vital statistics
• The SDK is open source
• Apache License 2.0
• Frequent updates, new features and
support for new product releases
• Outside committers contributing
Wednesday, November 3, 2010
Helping out
• Development IS at http://studio.atlassian.com/
browse/AMPS
• ThingsYOU can help with right now:
• Documentation
• Testing on Windows
• FeaturesYOU can help with:
• Per-plugin storage
Wednesday, November 3, 2010
Wrap-up
• SDK makes plugin and
gadget creation easier
• Works in all products
• Faster code/test/debug cycle
• Tight integration with
Atlassian
• Flexible enough to work in
your system
Wednesday, November 3, 2010
Resources
• Writing plugins: http://confluence.atlassian.com/x/
CgbvCw
• Marketplace: http://plugins.atlassian.com
• Hosting: http://studio.plugins.atlassian.com
• Forums: http://discuss.atlassian.com
• Contact Developer Relations:
• developer-relations@atlassian.com
• irc.freenode.net #atlassiandev
Wednesday, November 3, 2010

Contenu connexe

Tendances

Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...Peter Leschev
 
10 Deployments a day - A brief on extreme release protocols
10 Deployments a day - A brief on extreme release protocols10 Deployments a day - A brief on extreme release protocols
10 Deployments a day - A brief on extreme release protocolsVivek Parihar
 
Managing PowerShell DSC with Puppet
Managing PowerShell DSC with PuppetManaging PowerShell DSC with Puppet
Managing PowerShell DSC with PuppetPuppet
 
Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)Mike McGarr
 
Deploying IIS and ASP.NET with Puppet
Deploying IIS and ASP.NET with PuppetDeploying IIS and ASP.NET with Puppet
Deploying IIS and ASP.NET with PuppetPuppet
 
Continuous Delivery - Voxxed Days Cluj-Napoca 2017
Continuous Delivery - Voxxed Days Cluj-Napoca 2017Continuous Delivery - Voxxed Days Cluj-Napoca 2017
Continuous Delivery - Voxxed Days Cluj-Napoca 2017Rafał Leszko
 
Continuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two ApproachesContinuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two ApproachesRoss Snyder
 
Getting Started with Spring Boot
Getting Started with Spring BootGetting Started with Spring Boot
Getting Started with Spring BootDavid Kiss
 
How to Set Up Mobile Continuous Integration with Real Devices: CloudBees & SO...
How to Set Up Mobile Continuous Integration with Real Devices: CloudBees & SO...How to Set Up Mobile Continuous Integration with Real Devices: CloudBees & SO...
How to Set Up Mobile Continuous Integration with Real Devices: CloudBees & SO...SOASTA
 
Windows Configuration Management: Managing Packages, Services, & Power Shell-...
Windows Configuration Management: Managing Packages, Services, & Power Shell-...Windows Configuration Management: Managing Packages, Services, & Power Shell-...
Windows Configuration Management: Managing Packages, Services, & Power Shell-...Puppet
 
Getting started with Octopus Deploy
Getting started with Octopus DeployGetting started with Octopus Deploy
Getting started with Octopus DeployKaroline Klever
 
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
Configuration As Code - Adoption of the Job DSL Plugin at NetflixConfiguration As Code - Adoption of the Job DSL Plugin at Netflix
Configuration As Code - Adoption of the Job DSL Plugin at NetflixJustin Ryan
 
Top 8 mistakes developer teams make in their first serverless project
Top 8 mistakes developer teams make in their first serverless projectTop 8 mistakes developer teams make in their first serverless project
Top 8 mistakes developer teams make in their first serverless projectPaul Swail
 
Smarter deployments with octopus deploy
Smarter deployments with octopus deploySmarter deployments with octopus deploy
Smarter deployments with octopus deployThibaud Gravrand
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkinsKrish
 
Continuous Deployment at Kitchensurfing
Continuous Deployment at KitchensurfingContinuous Deployment at Kitchensurfing
Continuous Deployment at KitchensurfingLars Kluge
 
WinOps Conf 2015 - Microsoft Azure & Open Source
WinOps Conf 2015 - Microsoft Azure & Open SourceWinOps Conf 2015 - Microsoft Azure & Open Source
WinOps Conf 2015 - Microsoft Azure & Open SourceWinOps Conf
 
Three Technologies Worth Watching or Learning
Three Technologies Worth Watching or LearningThree Technologies Worth Watching or Learning
Three Technologies Worth Watching or LearningScott Lowe
 
Dev ops: Continuous delivery and Windows Azure
Dev ops: Continuous delivery and Windows AzureDev ops: Continuous delivery and Windows Azure
Dev ops: Continuous delivery and Windows AzureIbon Landa
 

Tendances (19)

Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
Puppet Camp Melbourne Nov 2014 - A Build Engineering Team’s Journey of Infras...
 
10 Deployments a day - A brief on extreme release protocols
10 Deployments a day - A brief on extreme release protocols10 Deployments a day - A brief on extreme release protocols
10 Deployments a day - A brief on extreme release protocols
 
Managing PowerShell DSC with Puppet
Managing PowerShell DSC with PuppetManaging PowerShell DSC with Puppet
Managing PowerShell DSC with Puppet
 
Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)Continuous delivery applied (RJUG)
Continuous delivery applied (RJUG)
 
Deploying IIS and ASP.NET with Puppet
Deploying IIS and ASP.NET with PuppetDeploying IIS and ASP.NET with Puppet
Deploying IIS and ASP.NET with Puppet
 
Continuous Delivery - Voxxed Days Cluj-Napoca 2017
Continuous Delivery - Voxxed Days Cluj-Napoca 2017Continuous Delivery - Voxxed Days Cluj-Napoca 2017
Continuous Delivery - Voxxed Days Cluj-Napoca 2017
 
Continuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two ApproachesContinuous Deployment at Etsy: A Tale of Two Approaches
Continuous Deployment at Etsy: A Tale of Two Approaches
 
Getting Started with Spring Boot
Getting Started with Spring BootGetting Started with Spring Boot
Getting Started with Spring Boot
 
How to Set Up Mobile Continuous Integration with Real Devices: CloudBees & SO...
How to Set Up Mobile Continuous Integration with Real Devices: CloudBees & SO...How to Set Up Mobile Continuous Integration with Real Devices: CloudBees & SO...
How to Set Up Mobile Continuous Integration with Real Devices: CloudBees & SO...
 
Windows Configuration Management: Managing Packages, Services, & Power Shell-...
Windows Configuration Management: Managing Packages, Services, & Power Shell-...Windows Configuration Management: Managing Packages, Services, & Power Shell-...
Windows Configuration Management: Managing Packages, Services, & Power Shell-...
 
Getting started with Octopus Deploy
Getting started with Octopus DeployGetting started with Octopus Deploy
Getting started with Octopus Deploy
 
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
Configuration As Code - Adoption of the Job DSL Plugin at NetflixConfiguration As Code - Adoption of the Job DSL Plugin at Netflix
Configuration As Code - Adoption of the Job DSL Plugin at Netflix
 
Top 8 mistakes developer teams make in their first serverless project
Top 8 mistakes developer teams make in their first serverless projectTop 8 mistakes developer teams make in their first serverless project
Top 8 mistakes developer teams make in their first serverless project
 
Smarter deployments with octopus deploy
Smarter deployments with octopus deploySmarter deployments with octopus deploy
Smarter deployments with octopus deploy
 
Introduction to jenkins
Introduction to jenkinsIntroduction to jenkins
Introduction to jenkins
 
Continuous Deployment at Kitchensurfing
Continuous Deployment at KitchensurfingContinuous Deployment at Kitchensurfing
Continuous Deployment at Kitchensurfing
 
WinOps Conf 2015 - Microsoft Azure & Open Source
WinOps Conf 2015 - Microsoft Azure & Open SourceWinOps Conf 2015 - Microsoft Azure & Open Source
WinOps Conf 2015 - Microsoft Azure & Open Source
 
Three Technologies Worth Watching or Learning
Three Technologies Worth Watching or LearningThree Technologies Worth Watching or Learning
Three Technologies Worth Watching or Learning
 
Dev ops: Continuous delivery and Windows Azure
Dev ops: Continuous delivery and Windows AzureDev ops: Continuous delivery and Windows Azure
Dev ops: Continuous delivery and Windows Azure
 

Similaire à AtlasCamp 2010: The Atlassian Plugin SDK For Fun & Profit - Ben Speakmon

Implementing Quality on Java projects
Implementing Quality on Java projectsImplementing Quality on Java projects
Implementing Quality on Java projectsVincent Massol
 
Jbossworld Presentation
Jbossworld PresentationJbossworld Presentation
Jbossworld PresentationDan Hinojosa
 
OWASP WTE - Now in the Cloud!
OWASP WTE - Now in the Cloud!OWASP WTE - Now in the Cloud!
OWASP WTE - Now in the Cloud!Matt Tesauro
 
SVN Usage & Best Practices
SVN Usage & Best PracticesSVN Usage & Best Practices
SVN Usage & Best PracticesAshraf Fouad
 
MAVEN - Short documentation
MAVEN - Short documentationMAVEN - Short documentation
MAVEN - Short documentationHolasz Kati
 
Project Penetration Testing Report(20 Points)Scenario.docx
Project Penetration Testing Report(20 Points)Scenario.docxProject Penetration Testing Report(20 Points)Scenario.docx
Project Penetration Testing Report(20 Points)Scenario.docxsimonlbentley59018
 
Oscon2008 Qa Leak Testing Latest Slides
Oscon2008 Qa Leak Testing Latest SlidesOscon2008 Qa Leak Testing Latest Slides
Oscon2008 Qa Leak Testing Latest Slidesctalbert
 
Oscon2008 Qa Leak Testing Latest Slides
Oscon2008 Qa Leak Testing Latest SlidesOscon2008 Qa Leak Testing Latest Slides
Oscon2008 Qa Leak Testing Latest Slidesctalbert
 
#vBrownBag OpenStack - Review & Kickoff for Phase 2
#vBrownBag OpenStack - Review & Kickoff for Phase 2#vBrownBag OpenStack - Review & Kickoff for Phase 2
#vBrownBag OpenStack - Review & Kickoff for Phase 2ProfessionalVMware
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...Paul Withers
 
Simplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI APISimplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI APIVictorSzoltysek
 
Jdk Tools For Performance Diagnostics
Jdk Tools For Performance DiagnosticsJdk Tools For Performance Diagnostics
Jdk Tools For Performance DiagnosticsDror Bereznitsky
 
Riga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationRiga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationNicolas Fränkel
 
DevSecCon Tel Aviv 2018 - Integrated Security Testing by Morgan Roman
DevSecCon Tel Aviv 2018 - Integrated Security Testing by Morgan RomanDevSecCon Tel Aviv 2018 - Integrated Security Testing by Morgan Roman
DevSecCon Tel Aviv 2018 - Integrated Security Testing by Morgan RomanDevSecCon
 
Bootstrap4XPages webinar
Bootstrap4XPages webinarBootstrap4XPages webinar
Bootstrap4XPages webinarMark Leusink
 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins UsersAndrew Bayer
 
Testing Java Web Apps With Selenium
Testing Java Web Apps With SeleniumTesting Java Web Apps With Selenium
Testing Java Web Apps With SeleniumMarakana Inc.
 

Similaire à AtlasCamp 2010: The Atlassian Plugin SDK For Fun & Profit - Ben Speakmon (20)

Implementing Quality on Java projects
Implementing Quality on Java projectsImplementing Quality on Java projects
Implementing Quality on Java projects
 
Jbossworld Presentation
Jbossworld PresentationJbossworld Presentation
Jbossworld Presentation
 
OWASP WTE - Now in the Cloud!
OWASP WTE - Now in the Cloud!OWASP WTE - Now in the Cloud!
OWASP WTE - Now in the Cloud!
 
Jakarta struts
Jakarta strutsJakarta struts
Jakarta struts
 
SVN Usage & Best Practices
SVN Usage & Best PracticesSVN Usage & Best Practices
SVN Usage & Best Practices
 
MAVEN - Short documentation
MAVEN - Short documentationMAVEN - Short documentation
MAVEN - Short documentation
 
Project Penetration Testing Report(20 Points)Scenario.docx
Project Penetration Testing Report(20 Points)Scenario.docxProject Penetration Testing Report(20 Points)Scenario.docx
Project Penetration Testing Report(20 Points)Scenario.docx
 
Oscon2008 Qa Leak Testing Latest Slides
Oscon2008 Qa Leak Testing Latest SlidesOscon2008 Qa Leak Testing Latest Slides
Oscon2008 Qa Leak Testing Latest Slides
 
Oscon2008 Qa Leak Testing Latest Slides
Oscon2008 Qa Leak Testing Latest SlidesOscon2008 Qa Leak Testing Latest Slides
Oscon2008 Qa Leak Testing Latest Slides
 
#vBrownBag OpenStack - Review & Kickoff for Phase 2
#vBrownBag OpenStack - Review & Kickoff for Phase 2#vBrownBag OpenStack - Review & Kickoff for Phase 2
#vBrownBag OpenStack - Review & Kickoff for Phase 2
 
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
IBM ConnectED 2015 - BP106 From XPages Hero To OSGi Guru: Taking The Scary Ou...
 
Arquillian in a nutshell
Arquillian in a nutshellArquillian in a nutshell
Arquillian in a nutshell
 
Simplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI APISimplified DevOps Bliss -with OpenAI API
Simplified DevOps Bliss -with OpenAI API
 
Jdk Tools For Performance Diagnostics
Jdk Tools For Performance DiagnosticsJdk Tools For Performance Diagnostics
Jdk Tools For Performance Diagnostics
 
Riga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous IntegrationRiga Dev Day - Automated Android Continuous Integration
Riga Dev Day - Automated Android Continuous Integration
 
DevSecCon Tel Aviv 2018 - Integrated Security Testing by Morgan Roman
DevSecCon Tel Aviv 2018 - Integrated Security Testing by Morgan RomanDevSecCon Tel Aviv 2018 - Integrated Security Testing by Morgan Roman
DevSecCon Tel Aviv 2018 - Integrated Security Testing by Morgan Roman
 
Bootstrap4XPages webinar
Bootstrap4XPages webinarBootstrap4XPages webinar
Bootstrap4XPages webinar
 
Exploring Maven SVN GIT
Exploring Maven SVN GITExploring Maven SVN GIT
Exploring Maven SVN GIT
 
7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users7 Habits of Highly Effective Jenkins Users
7 Habits of Highly Effective Jenkins Users
 
Testing Java Web Apps With Selenium
Testing Java Web Apps With SeleniumTesting Java Web Apps With Selenium
Testing Java Web Apps With Selenium
 

Plus de Atlassian

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020Atlassian
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020Atlassian
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App ShowcaseAtlassian
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UIAtlassian
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge RuntimeAtlassian
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceAtlassian
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge TriggersAtlassian
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeAtlassian
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelAtlassian
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemAtlassian
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the HoodAtlassian
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAtlassian
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginAtlassian
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingAtlassian
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterAtlassian
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindAtlassian
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Atlassian
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsAtlassian
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamAtlassian
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in MindAtlassian
 

Plus de Atlassian (20)

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App Showcase
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UI
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge Runtime
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User Experience
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge Triggers
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in Forge
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy Model
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI System
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the Hood
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIs
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the Building
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that Matter
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in Mind
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced Teams
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in Mind
 

Dernier

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 

Dernier (20)

🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 

AtlasCamp 2010: The Atlassian Plugin SDK For Fun & Profit - Ben Speakmon

  • 1. The Atlassian Plugin SDK For Fun & Profit Ben Speakmon Atlassian Developer Relations Wednesday, November 3, 2010
  • 2. Agenda • Challenges in writing plugins • How the SDK fixes it • SDK in action • What’s new • Getting involved Wednesday, November 3, 2010
  • 3. Plugin challenges I am yours, you are mine You are what you are And you make it hard --”Suite: Judy Blue Eyes”, Crosby, Stills & Nash Wednesday, November 3, 2010
  • 4. Effective plugin development • Different than product development • Work within someone else’s sandbox • Three things that MUST be easy: • Starting the product • Configuring the product • Installing the plugin Wednesday, November 3, 2010
  • 5. Challenge #1: Starting Product Startup method JIRA bin/startup.sh or .bat (standalone) or WAR install into app. server Confluence bin/startup.sh or .bat (standalone) or WAR install into app. server Bamboo bamboo.sh or Win32 service or WAR install into app. server Crowd start_crowd.sh or .bat (standalone) or WAR install into app. server FishEye/Crucible run.sh or .bat – no WAR version available Wednesday, November 3, 2010
  • 6. Challenge #2: Config Product Data/logs dir. Configuration JIRA jira-home WEB-INF/classes/jira- application.properties Confluence None by default WEB-INF/classes/confluence- init.properties Bamboo None by default WEB-INF/classes/bamboo- init.properties Crowd None by default WEB-INF/classes/crowd- init.properties, system / servlet context property FishEye/ Crucible var FISHEYE_INST environment variable Wednesday, November 3, 2010
  • 7. Challenge #3: Plugin install Product Install methods JIRA Two plugin directories for different plugin systems, web interface Confluence Two plugin directories for different plugin systems, web interface, plugin repository Bamboo Two plugin directories for different plugin systems, web interface Crowd One plugin directory (plugins 2 only) FishEye/Crucible One plugin directory (plugins 2 only) Wednesday, November 3, 2010
  • 8. And if that wasn’t enough... • Build systems • Maven 1 or 2? Ant? • Confusing dependencies • Starting a plugin project • Expert product knowledge required just to get started • Maven archetypes are too hard to use Wednesday, November 3, 2010
  • 9. It all adds up to... • Lots of small headaches • Not your fault • Not your job to fix them • Slow code/test/debug cycle • Frustration Wednesday, November 3, 2010
  • 10. How the SDK deals with this “What is happiness? The feeling that power is growing, that resistance is overcome.” --Friedrich Nietzsche, LISP user Wednesday, November 3, 2010
  • 11. Challenge #1: Starting Product Startup method JIRA bin/startup.sh or .bat (standalone) or WAR install into app. server Confluence bin/startup.sh or .bat (standalone) or WAR install into app. server Bamboo bamboo.sh or Win32 service or WAR install into app. server Crowd start_crowd.sh or .bat (standalone) or WAR install into app. server FishEye/Crucible run.sh or .bat – no WAR version available Wednesday, November 3, 2010
  • 12. Challenge #1: Starting Product Startup method JIRA bin/startup.sh or .bat (standalone) or WAR install into app. server Confluence bin/startup.sh or .bat (standalone) or WAR install into app. server Bamboo bamboo.sh or Win32 service or WAR install into app. server Crowd start_crowd.sh or .bat (standalone) or WAR install into app. server FishEye/Crucible run.sh or .bat – no WAR version available atlas-run Wednesday, November 3, 2010
  • 13. Challenge #2: Config Product Data/logs dir. Configuration JIRA jira-home WEB-INF/classes/jira- application.properties Confluence None by default WEB-INF/classes/confluence- init.properties Bamboo None by default WEB-INF/classes/bamboo- init.properties Crowd None by default WEB-INF/classes/crowd- init.properties, system / servlet context property FishEye/ Crucible var FISHEYE_INST environment variable Wednesday, November 3, 2010
  • 14. Challenge #2: Config Product Data/logs dir. Configuration JIRA jira-home WEB-INF/classes/jira- application.properties Confluence None by default WEB-INF/classes/confluence- init.properties Bamboo None by default WEB-INF/classes/bamboo- init.properties Crowd None by default WEB-INF/classes/crowd- init.properties, system / servlet context property FishEye/ Crucible var FISHEYE_INST environment variable Logs sent to console, preconfigured data dirs Wednesday, November 3, 2010
  • 15. Challenge #3: Plugin install Product Install methods JIRA Two plugin directories for different plugin systems, web interface Confluence Two plugin directories for different plugin systems, web interface, plugin repository Bamboo Two plugin directories for different plugin systems, web interface Crowd One plugin directory (plugins 2 only) FishEye/Crucible One plugin directory (plugins 2 only) Wednesday, November 3, 2010
  • 16. Challenge #3: Plugin install Product Install methods JIRA Two plugin directories for different plugin systems, web interface Confluence Two plugin directories for different plugin systems, web interface, plugin repository Bamboo Two plugin directories for different plugin systems, web interface Crowd One plugin directory (plugins 2 only) FishEye/Crucible One plugin directory (plugins 2 only) Automatic through atlas-run Wednesday, November 3, 2010
  • 17. SDK Design A process cannot be understood by stopping it. Understanding must move with the flow of the process, must join it and flow with it. -- First Law of Mentat Wednesday, November 3, 2010
  • 18. Atlassian Maven Plugin Suite • Suite of Maven plugins • maven-jira-plugin, maven-confluence- plugin, etc. • Common interface to products • Handles installation and configuration • Can be used independently of the SDK Wednesday, November 3, 2010
  • 19. Script shortcuts Task Maven command Script Start product with current plugin installed mvn amps:run atlas-run Start product with current plugin installed and debuggable mvn amps:debug atlas-debug Start JIRA on port 8243 and context “myjira” with current plugin installed mvn amps:run –Dproduct=jira –Dcontext.path=/myjira –Dhttp.port=8243 atlas-run --product jira --context-path /myjira --http-port 8243 Run arbitrary Maven command mvn myplugin:mygoal <parameters> atlas-mvn myplugin:mygoal <parameters> Wednesday, November 3, 2010
  • 20. SDK in action By pressing down a special key It plays a little melody --”Pocket Calculator”, Kraftwerk Wednesday, November 3, 2010
  • 21. SDK with Plugins 1.0 • SDK is only at full power with plugins 2 • http://confluence.atlassian.com/x/wRyyCg for details on how Wednesday, November 3, 2010
  • 22. 30-second Plugin Creation™ • Creating a plugin is dirt simple! • atlas-create-<product>-plugin • Executes a Maven archetype • Automatically prompts for required information • Created plugin project works out of the box Wednesday, November 3, 2010
  • 23. Creating a new plugin Wednesday, November 3, 2010
  • 24. Creating a new plugin Wednesday, November 3, 2010
  • 25. On-the-fly code change •Fast code/test/debug •Start a CLI instance in a separate terminal from atlas-run •Make a code change •Reinstall the plugin from the CLI Wednesday, November 3, 2010
  • 28. Auto resource reload • Plugin web resources are monitored • Detects change and auto-updates • Just reload the browser, see your changes, get the green-skinned alien girl, repeat Wednesday, November 3, 2010
  • 29. Changing a live gadget Wednesday, November 3, 2010
  • 30. Changing a live gadget Wednesday, November 3, 2010
  • 31. Boxed Maven • Contains a standalone, isolated Maven 2.1.0 • Uses Atlassian repos by default • No extra configuration needed • Usable on its own • atlas-mvn passes parameters and goals straight through Wednesday, November 3, 2010
  • 32. What’s new Come on! Stop trying to hit me and hit me! --Morpheus, The Matrix Wednesday, November 3, 2010
  • 33. External home directories • Create a zip of an existing product home directory • atlas-run starts the product with that data/ configuration/etc. • Thanks to Jonathan Doklovic @ SysBliss! Wednesday, November 3, 2010
  • 34. Test groups • Create groups of tests • Write a group of tests for all supported products and separate groups for product- specific testing • Run one, some, or all groups at once Wednesday, November 3, 2010
  • 35. Multiple version testing • Run a test (or a test group) against multiple versions of the same product • “Why does it work in JIRA 4.1 but not 4.2?” Wednesday, November 3, 2010
  • 36. Co-installs • Your plugin may require other plugins or special artifacts to run • SDK can install these for you during atlas-run or atlas-debug Wednesday, November 3, 2010
  • 37. Getting involved Be the change you seek. --Fifth AtlassianValue Wednesday, November 3, 2010
  • 38. Vital statistics • The SDK is open source • Apache License 2.0 • Frequent updates, new features and support for new product releases • Outside committers contributing Wednesday, November 3, 2010
  • 39. Helping out • Development IS at http://studio.atlassian.com/ browse/AMPS • ThingsYOU can help with right now: • Documentation • Testing on Windows • FeaturesYOU can help with: • Per-plugin storage Wednesday, November 3, 2010
  • 40. Wrap-up • SDK makes plugin and gadget creation easier • Works in all products • Faster code/test/debug cycle • Tight integration with Atlassian • Flexible enough to work in your system Wednesday, November 3, 2010
  • 41. Resources • Writing plugins: http://confluence.atlassian.com/x/ CgbvCw • Marketplace: http://plugins.atlassian.com • Hosting: http://studio.plugins.atlassian.com • Forums: http://discuss.atlassian.com • Contact Developer Relations: • developer-relations@atlassian.com • irc.freenode.net #atlassiandev Wednesday, November 3, 2010