build trust in your build to deployment flow
play

Build Trust in Your Build-to-Deployment Flow! Baruch - PowerPoint PPT Presentation

Build Trust in Your Build-to-Deployment Flow! Baruch Sadogursky, JFrog About me Baruch Sadogursky Developer Advocate @JFrog > Job definition (part of): Hang out with the


  1. Build ¡Trust ¡in ¡Your ¡ ¡Build-­‑to-­‑Deployment ¡Flow! ¡ Baruch ¡Sadogursky, ¡JFrog ¡ ¡

  2. About me ü Baruch Sadogursky ü Developer Advocate @JFrog > Job definition (part of): Hang out with the DevOps guys ü @jbaruch QCon ¡London ¡2012 ¡ 2 ¡

  3. Agenda ü The cloud silver bullet ü The right tool for the job ü Binaries all the way ü The black magic of releasing QCon ¡London ¡2012 ¡ 3 ¡

  4. The ¡New ¡Silver ¡Bullet ¡ EVERYTHING ¡*aaS ¡

  5. Why We Need *aaS? ü *aaS features Continuous Delivery QCon ¡London ¡2012 ¡ 5 ¡

  6. Continuous Delivery FTW ü Advantages for the user: > Always on the latest version ü Advantages for the ISV: > Agile > Rapid feedback > Users are the best beta-testers > No long-term support ü Everybody Wins? QCon ¡London ¡2012 ¡ 6 ¡

  7. Almost, except DevOps ü Very frequent releases ü More than one version in production ü Complicated access levels QCon ¡London ¡2012 ¡ 7 ¡

  8. Almost, except DevOps ü Very frequent releases ü More than one version in production ü Complicated access levels QCon ¡London ¡2012 ¡ 8 ¡

  9. Almost, except DevOps ü Root cause analysis > Trace from binaries to sources > Reproduction abilities ü Promotions > Status changes QCon ¡London ¡2012 ¡ 9 ¡

  10. Almost, except DevOps ü Root cause analysis > Trace from binaries to sources > Reproduction abilities ü Promotions > Status changes QCon ¡London ¡2012 ¡ 10 ¡

  11. Sounds Familiar? ü Agile principles applied for DevOps ü We have good tooling for Agile development > Version Control > Unit Testing (and coverage) > Build Servers > Hot Swap tools ü What’s up with tooling for Agile DevOps? QCon ¡London ¡2012 ¡ 11 ¡

  12. Agile Tooling for DevOps Checklist ü Versioning ü Access control ü Traceability ü Promotions ü Tags and annotations ü Search QCon ¡London ¡2012 ¡ 12 ¡

  13. How Do I Know? ü JFrog SaaS offering > Artifactory Online ü We build, release and eat our own dog food > Continuously QCon ¡London ¡2012 ¡ 13 ¡

  14. The ¡Right ¡Tool ¡for ¡the ¡Job ¡ HERE ¡COMES ¡BINARY ¡REPOSITORY ¡

  15. Here Comes Binary Repository ü E.g. Artifactory ü Main feature – Smart Storage ü Much more than passive storage ü Critical for CI and ALM QCon ¡London ¡2012 ¡ 15 ¡

  16. Tooling Chain QCon ¡London ¡2012 ¡ 16 ¡

  17. Artifactory in DevOps Ecosystem QCon ¡London ¡2012 ¡ 17 ¡

  18. Meet ¡ArRfactory ¡ DEMO ¡TIME! ¡

  19. Binaries All the Way ü From some point product in your lifecycle, all you care about is binaries ü Lots of things to do after the software is built QCon ¡London ¡2012 ¡ 19 ¡

  20. The Release Pipeline Source: ¡Agile ¡ALM, ¡Michael ¡Hü4ermann, ¡Manning ¡Publica9ons ¡Co. ¡ ¡ QCon ¡London ¡2012 ¡ 20 ¡

  21. Passing the software to QA ü Different access rights ü Different physical location ü Ability to annotate QCon ¡London ¡2012 ¡ 21 ¡

  22. Staging and Preproduction ü Replication of Production environment > Lock versions of dependencies and artifacts ü Allow access to set of users QCon ¡London ¡2012 ¡ 22 ¡

  23. Going to Production ü Convert staging binaries to production ü Allow public access ü Change settings ü Tag QCon ¡London ¡2012 ¡ 23 ¡

  24. Traceability ü Binaries should be traceable in every stage > Sources > Dependencies > Environment details > Tags ü Where’s the information? > Version Control System > Build Server QCon ¡London ¡2012 ¡ 24 ¡

  25. DevOps ¡ WHAT ¡MY ¡FRIENDS ¡THINK ¡I ¡DO ¡

  26. What Others Think I Do QCon ¡London ¡2012 ¡ 26 ¡

  27. What I Think I Do QCon ¡London ¡2012 ¡ 27 ¡

  28. What I Really Do QCon ¡London ¡2012 ¡ 28 ¡

  29. What I should Do QCon ¡London ¡2012 ¡ 29 ¡

  30. Target: Automation ü It’s impossible to release frequently with manual procedures > While maintaining quality ü Use your binaries storage to release QCon ¡London ¡2012 ¡ 30 ¡

  31. Put ¡your ¡repository ¡to ¡work ¡ THE ¡MAGIC ¡OF ¡RELEASE ¡

  32. Release With Release Candidate ü Your next build is release-candidate ü Once successfully built and tested, click the button > Automatic versions switch › From integration to release > Right place to put your binaries › Move from Staging to Public > Automatic VCS tagging for the release QCon ¡London ¡2012 ¡ 32 ¡

  33. Release With Release Candidate ü Process: 1. Produce and build snapshots until satisfied 2. Once satisfied, build release candidate 3. Stage RC, check and verify 4. Once checked, release QCon ¡London ¡2012 ¡ 33 ¡

  34. Release With Artifactory: Mechanics ü : The Artifactory Jenkins Plugin > Gathers build information > Uploads artifacts in bulk > Uploads build information > Provides bi-directional linking ü Release Management > Changes versions in build script > Allows to Choose repository to deploy to > Creates a VCS tag/branch QCon ¡London ¡2012 ¡ 34 ¡

  35. Release ¡With ¡Release ¡Candidate ¡ DEMO ¡TIME! ¡

  36. OOTB Release Management ü Pros ü Cons > Out of the box > Not flexible > Supports the “by > Not extensible the book” > May not suite release cycle your case > Supports majority of the tools

  37. We Know: We Don’t Know Better ü YMMV (great deal) ü Write your own release logic ü Pre and post build deploy hooks QCon ¡London ¡2012 ¡ 37 ¡

  38. Flexible Release ü Code your release strategy > Versioning scheme > VCS (tagging, branching, commit comments) > Promotion hook (copy/move, comments, status) ü Available by REST QCon ¡London ¡2012 ¡ 38 ¡

  39. Controlling Versioning Scheme ü Classic versioning scheme: > Release version › 2.0.3 > Integration version › 2.0.4-SNAPSHOT ü YMMV > Write your own strategy for versioning > Dynamic Groovy code QCon ¡London ¡2012 ¡ 39 ¡

  40. Example: Promotion of Snapshots ü Sometimes the build takes long time… ü But that’s the silly reason QCon ¡London ¡2012 ¡ 40 ¡

  41. Release With Release Candidate ü Process: 1. Produce and build snapshots until satisfied 2. Once satisfied, build release candidate 3. Stage RC, check and verify 4. Once checked, release QCon ¡London ¡2012 ¡ 41 ¡

  42. Release With Release Candidate ü Process: 1. Produce and build snapshots until satisfied 3. Stage RC, check and verify 4. Once checked, release QCon ¡London ¡2012 ¡ 42 ¡

  43. Release With Release Candidate ü Lots of things can go wrong during one more build ü If we won’t build it, we won’t screw it ü Process: 1. Produce and build snapshots until satisfied 2. When satisfied, check and verify 3. Once checked, release QCon ¡London ¡2012 ¡ 43 ¡

  44. Example: Promotion of Snapshots ü Choose existing build to become a release ü Using REST API without build server ü Invoke Promotion plugin > Convert to next version > Tag, branch, etc. > Promote (copy/move) QCon ¡London ¡2012 ¡ 44 ¡

  45. Plugin ¡What? ¡ CODE ¡TIME! ¡

  46. Plugin Code ü Groovy goodness ü Executed directly in Artifactory ü Uses Public API > Search for artifacts > Search for builds > Copy/Move artifacts > Manipulate files › E.g. change versions in descriptors QCon ¡London ¡2012 ¡ 46 ¡

  47. Plugin Code ü Manipulating Version Control Systems QCon ¡London ¡2012 ¡ 47 ¡

  48. Plugin Code ü Manipulating BuildInfo object QCon ¡London ¡2012 ¡ 48 ¡

  49. Plugin Code ü Creating and replacing artifacts QCon ¡London ¡2012 ¡ 49 ¡

  50. Calling REST API With CURL QCon ¡London ¡2012 ¡ 50 ¡

  51. Calling REST API With CURL http://repo-demo:8080/ artifactory/api/plugins/ build/promote/snapshotToRelease/ gradle-multi-example/1? params=snapExp=d14| targetRepository=gradle-release- local QCon ¡London ¡2012 ¡ 51 ¡

  52. Calling REST API With CURL http://repo-demo:8080/ ArRfactory ¡Server ¡ artifactory/api/plugins/ build/promote/snapshotToRelease/ gradle-multi-example/1? params=snapExp=d14| targetRepository=gradle-release- local QCon ¡London ¡2012 ¡ 52 ¡

  53. Calling REST API With CURL http://repo-demo:8080/ ArRfactory ¡Server ¡ artifactory/api/plugins/ Plugins ¡API ¡ build/promote/snapshotToRelease/ gradle-multi-example/1? params=snapExp=d14| targetRepository=gradle-release- local QCon ¡London ¡2012 ¡ 53 ¡

Recommend


More recommend