Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Summit2011 satellites-robinf-20110605

884 views

Published on

See http://summit.atlassian.com/archives/plugin-devs/integrating-infrastructure-with-jira

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Summit2011 satellites-robinf-20110605

  1. 2. Satellites around the Cloud <ul><li>Use remote APIs to integrate your systems with JIRA Studio, Atlassian's hosted software suite. </li></ul><ul><li>Robin Fernandes Software Developer Atlassian </li></ul><ul></ul>
  2. 3. Satellite Apps <ul><li>REST </li></ul><ul><li>XML-RPC </li></ul><ul><li>SOAP </li></ul><ul><li>RSS </li></ul><ul></ul>
  3. 4. Marvin the IRC bot <ul></ul><fcuozzo> marvin2 resolve JST-4478 as Fixed <marvin2> fcuozzo: Resolved https://studio.atlassian.com/browse/JST-4478 as Fixed <jkodumal> marvin2 raise task &quot;Fix xstream dependencies&quot; in NOT assign to me <marvin2> jkodumal: Created issue https://studio.atlassian.com/browse/NOT-9 <fcuozzo> marvin2 can you buy us dinner? <marvin2> fcuozzo: ''help'' expected but identifier ''can'' found
  4. 5. Satellite Apps – run on your favourite platform! <ul></ul>
  5. 6. Atlassian CLI <ul></ul>
  6. 7. Satellite Apps – run them wherever you need! <ul></ul>
  7. 8. Scenarios for Satellite Apps <ul><li>-> Reporting
  8. 9. -> Integration
  9. 10. -> Automation </li></ul><ul></ul>
  10. 11. Reporting using Satellite Apps -> Reporting -> Integration -> Automation <ul></ul>
  11. 12. Reporting using Satellite Apps def client = n ew HTTPBuilder( 'http://simpsons.jira.com' ) client. get (path : '/source/rest-service/auth-v1/login' , query: [userName: 'homer' , password: 'beer' ]) { } client. get (path : '/source/rest-service/reviews-v1/filter' , query: [project: 'BEERBARON' ]) { resp, xml -> println process (xml) } <ul></ul>
  12. 13. Reporting using Satellite Apps def client = n ew HTTPBuilder( 'http://simpsons.jira.com' ) client. get (path : '/source/rest-service/auth-v1/login' , query: [userName: 'homer' , password: 'beer' ]) { } client. get (path : '/source/rest-service/reviews-v1/filter' , query: [project: 'BEERBARON' ]) { resp, xml -> println process (xml) } <ul></ul>
  13. 14. Reporting using Satellite Apps def client = n ew HTTPBuilder( 'http://simpsons.jira.com' ) client. get (path : '/source/rest-service/auth-v1/login' , query: [userName: 'homer' , password: 'beer' ]) { } client. get (path : '/source/rest-service/reviews-v1/filter' , query: [project: 'BEERBARON' ]) { resp, xml -> println process (xml) } <ul></ul>
  14. 15. Reporting using Satellite Apps <ul></ul>
  15. 16. Useful APIs for Reporting -> Reporting -> Integration -> Automation <ul><li>/ </li></ul>Access issue details, retrieve issues by filter Access details of all build results Access details of reviews & repository <ul></ul>
  16. 17. -> Reporting -> Integration -> Automation Integration using Satellite Apps <ul></ul>
  17. 18. Integration using Satellite Apps <ul></ul>
  18. 19. Integration using Satellite Apps <ul></ul>
  19. 20. Integration using Satellite Apps <ul></ul>
  20. 21. Integration using Satellite Apps <ul></ul><?php $wsdl = 'http://simpsons.jira.com/rpc/soap/jirasoapservice-v2?wsdl' ; $username = 'homer' ; $password = 'beer' ; $client = new soapclient($wsdl); $token = $client->login($username, $password); $filterID = '10240' ; $issues = $client->getIssuesFromFilter($token, $filterID); $drupalPages = create_drupal_pages ($issues); foreach ($drupalPages as $issueKey => $pageUrl) { $remoteComment = create_remote_comment ($pageUrl); $issues = $client->addComment($token, $issueKey, $remoteComment); }
  21. 22. Integration using Satellite Apps <ul></ul><?php $wsdl = 'http://simpsons.jira.com/rpc/soap/jirasoapservice-v2?wsdl' ; $username = 'homer' ; $password = 'beer' ; $client = new soapclient($wsdl); $token = $client->login($username, $password); $filterID = '10240' ; $issues = $client->getIssuesFromFilter($token, $filterID); $drupalPages = create_drupal_pages ($issues); foreach ($drupalPages as $issueKey => $pageUrl) { $remoteComment = create_remote_comment ($pageUrl); $issues = $client->addComment($token, $issueKey, $remoteComment); }
  22. 23. Integration using Satellite Apps <ul></ul><?php $wsdl = 'http://simpsons.jira.com/rpc/soap/jirasoapservice-v2?wsdl' ; $username = 'homer' ; $password = 'beer' ; $client = new soapclient($wsdl); $token = $client->login($username, $password); $filterID = '10240' ; $issues = $client->getIssuesFromFilter($token, $filterID); $drupalPages = create_drupal_pages ($issues); foreach ($drupalPages as $issueKey => $pageUrl) { $remoteComment = create_remote_comment ($pageUrl); $issues = $client->addComment($token, $issueKey, $remoteComment); }
  23. 24. Atlassian IDE Connectors <ul></ul>
  24. 25. Hercules <ul></ul>
  25. 26. -> Reporting -> Integration -> Automation <ul><li>/ </li></ul>Create & modify issues Manage users Create & modify pages Create reviews & comments Useful APIs for Integration <ul></ul>
  26. 27. Scenarios for Satellite Apps -> Reporting -> Integration -> Automation <ul></ul>
  27. 28. fairly unique leveraged she literally exploded <ul></ul>
  28. 29. Automation using Satellite Apps <ul></ul>
  29. 30. Automation using Satellite Apps <ul></ul>Post blah put blah blah resource blah idempotent blah representation
  30. 31. Automation using Satellite Apps require 'confluence4r' serverUrl = 'https://simpsons.jira.com/wiki' server = Confluence::Server.new(serverUrl) server.login( 'homer' , 'beer' ) term = 'she literally exploded' server.search( term , 5).each { |searchResult| page = server.getPage(searchResult[ 'id' ]) page[ 'content' ] = page[ 'content' ].gsub( term , '███████' ) server.storePage(page) } <ul></ul>
  31. 32. Automation using Satellite Apps require 'confluence4r' serverUrl = 'https://simpsons.jira.com/wiki' server = Confluence::Server.new(serverUrl) server.login( 'homer' , 'beer' ) term = 'she literally exploded' server.search( term , 5).each { |searchResult| page = server.getPage(searchResult[ 'id' ]) page[ 'content' ] = page[ 'content' ].gsub( term , '███████' ) server.storePage(page) } <ul></ul>
  32. 33. Useful APIs for Automation -> Reporting -> Integration -> Automation Use filters to monitor for new hot issues Use feeds to listen for build results Kick off new builds Modification & creation of pages <ul></ul>
  33. 34. Activity Streams <ul></ul>
  34. 35. <ul><li>Robin Fernandes Software Developer Atlassian </li></ul>Satellites Around Studio <ul></ul>More information, links & code samples: http://bit.ly/satellitesTalk

×