The Brave New World of  Continuous Release     Baruch, JFrog
About me Baruch Developer Advocate @JFrog  > Job definition (part of):    @jbaruch                                2
About me Developer Advocate @JFrog Job definition:  > Hang out with    the DevOps guys  > Talk about it github.com/jbar...
Agenda   The cloud silver bullet   The right tool for the job   Binaries all the way   The magic of release           ...
EVERYTHING *aaSThe New Silver Bullet
What’s So Good About *aaS? *aaS features Continuous Delivery                                      6
Continuous Delivery FTW User advantages  > Latest version/features  > No upgrades/maintenance Developer advantages  > Ag...
Almost, except the IT Used to quarterly release cycles “Secure” pace Minimizing the entropy caused by  developers with ...
Herding CatsDevelopers  > Increasing entropy             +IT (operations)  > Maintaining stability             =DevOps  > ...
Continuous Delivery Challenge   Very frequent releases   More than one version in production   Complicated access level...
Continuous Delivery Challenge   Very frequent releases   More than one version in production   Complicated access level...
It’s… Agile! Agile principles applied for DevOps We have good tooling for Agile  development  > Version control  > Unit ...
Agile Tooling for DevOps Checklist Versioning Access control Traceability Promotions Tags and  annotations Search   ...
Recursive Slide with Baby Photo Artifactory is released  with Artifactory JFrog SaaS offering   > Artifactory Online    ...
HERE COMES BINARY REPOSITORYThe Right Tool for the Job
Here Comes Binary Repository E.g. Artifactory Proxy Smart storage  > Much more than a passive space Critical for CI/CD...
Tooling Chain                17
In the Beginning it was…                           18
Binary Repo in DevOps Ecosystem                                  19
Binaries All the Way From some point product in your  lifecycle, all you care about is binaries Lots of things to do aft...
The Release PipelineSource: Agile ALM, Michael Hüttermann, Manning Publications Co.                                       ...
Passing the software to QA Different access rights Different physical location Ability to annotate                     ...
Staging and Preproduction Replication of Production environment  > Lock versions of dependencies and artifacts Allow acc...
Going to Production   Convert staging binaries to production   Allow public access   Change settings   Tag            ...
TRACEABILITYWhy and How?
The Time Machine Sometimes you need to go back in time
Quest for Traceability What should be restored?  > Sources  > Dependencies  > Environment details  > Tags Where’s the in...
Rebuilding from Sources Checkout branch/tag/revision Build Done! Time consuming Unstable                             ...
Dependencies Lie Dependency Descriptors aren’t stable                                         29
Evil Dependencies Resolution POMs deployed  with variables  > Ivy is OK Resolution  strategies change  over time  > Both...
Single Source of Truth Record information on spot  > When binaries are created Build Server                             ...
Single Target of Truth Truth should be saved… … with the binaries… … in binaries storage!                           32
Open Standard Of Truth   Bill of Materials   JSON   REST accessible   API accessible   APLv2 on GitHub               ...
Build Server Plugin Build information  > Resolved and realized during    the build  > Attached to the artifacts  > Upload...
DEMO TIME!Tracing Artifacts
WHAT MY FRIENDS THINK I DODevOps
What Others Think I Do                         37
What I Think I Do                    38
What I Really Do                   39
What I Really Do                   40
What I should Do                   41
Target: Automation It’s impossible to release frequently with  manual procedures  > While maintaining quality Use your b...
THE MAGIC OF RELEASEPut your repository to work
Release Candidates Your next build is a release-candidate Once successfully built and tested, click  the button  > Autom...
Releasing with Release Candidates Process:  1.   Produce and build snapshots until satisfied  2.   Once satisfied, build ...
Releasing With Artifactory Plugin Changes versions in build script Allows choosing a target deploy  repository Creates ...
DEMO TIME!Release With Release Candidates
OOTB Release Management Pros                  Cons  > Out of the box      > Limited  > Supports the “by      extensibili...
Releasing with Release Candidates Process:  1.   Produce and build snapshots until satisfied  2.   Once satisfied, build ...
Releasing with Release Candidates Process:  1. Produce and build snapshots until satisfied  3. Stage RC, check and verify...
Releasing with Release Candidates?                                     51
Releasing with Release Candidates? Lots of things can go wrong during one  more build If we won’t build it, we won’t scr...
Automation Flexibility We Know: We Don’t Know Better YMMV (great deal)       Write your own                           r...
Controlling Versioning Scheme Classic versioning scheme:  > Release version    › 2.0.3  > Integration version    › 2.0.4-...
Flexible Release Code your release strategy  > Versioning scheme  > VCS (tagging, branching, commit comments)  > Promotio...
REST == Scriptability == Automation It’s impossible to release frequently with  manual procedures  > While maintaining qu...
Example: Promotion of Snapshots Choose existing build to become a  release Using REST API without build server Invoke p...
CODE TIME!Plugin What?
Pluggable Architecture with DSLs   Artifactory is open for user plugins   Groovy groovy DSL   Your code runs inside the...
Community Effort https://github.com/JFrogDev/artifactory-user-plugins                                                    ...
Plugin Invocation Options As a response for various events  > Download/Create/Delete  > Login  > Release Scheduled On d...
Plugin Code Manipulating Version Control Systems                                         62
Plugin Code Manipulating BuildInfo object                                  63
Plugin Code Creating and replacing artifacts                                     64
Calling REST API With CURL                             65
Calling REST API With CURLhttp://repo-demo:8080/artifactory/api/plugins/build/promote/snapshotToRelease/gradle-multi-examp...
Calling REST API With CURLhttp://repo-demo:8080/   Artifactory serverartifactory/api/plugins/build/promote/snapshotToRelea...
Calling REST API With CURLhttp://repo-demo:8080/   Artifactory serverartifactory/api/plugins/       Plugins APIbuild/promo...
Calling REST API With CURLhttp://repo-demo:8080/   Artifactory serverartifactory/api/plugins/       Plugins APIbuild/promo...
Calling REST API With CURLhttp://repo-demo:8080/    Artifactory serverartifactory/api/plugins/        Plugins APIbuild/pro...
Calling REST API With CURLhttp://repo-demo:8080/       Artifactory serverartifactory/api/plugins/           Plugins APIbui...
Calling REST API With CURLhttp://repo-demo:8080/                    Artifactory serverartifactory/api/plugins/            ...
Recap: Promotion of Snapshots Choose existing build to become a  release Using the REST API without building Invoking t...
DEMO TIME!Release by Snapshot Promotion
4 Commandments of DevOps Automate  everything Version  everything Trace everything Report/Log/Feed  back everything   ...
4 Commandments of DevOps Automate  everything Version  everything Trace everything Report/Log/Feed  back everything   ...
The Brave New World of Continuous Release
Upcoming SlideShare
Loading in...5
×

The Brave New World of Continuous Release

2,580

Published on



While rapid release cycles provide numerous benefits for end-users and developers, it puts additional pressure on DevOps to make sure that a good application is provisioned with no mistakes. In this session, we will look at the release process from the binaries point of view. We will explain what are the processes and the methodologies for moving your build binaries between different phases until declared production-ready. In the second part of the session, we will show how business requirements can affect release procedures. We will discuss what it takes to customize the logic of the process in the context of CI servers and binary artifacts. We will demonstrate several common release methodologies and compare the pros and cons of each one.

Published in: Technology
2 Comments
5 Likes
Statistics
Notes
No Downloads
Views
Total Views
2,580
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
29
Comments
2
Likes
5
Embeds 0
No embeds

No notes for slide
  • Attention deficit disorderСиндром дефицита внимания
  • Mention smart artifact/library manager
  • Freedom of choice for developers, no lockinopensource
  • Bill Of Materials
  • Let’s admitit, maybe I shouted, but we are all scared to death
  • Choose your deployment repositories - independently of VCS, build tool, etc.
  • Callback -> plugin?
  • DevOps Crest
  • DevOps Crest
  • The Brave New World of Continuous Release

    1. 1. The Brave New World of Continuous Release Baruch, JFrog
    2. 2. About me Baruch Developer Advocate @JFrog > Job definition (part of): @jbaruch 2
    3. 3. About me Developer Advocate @JFrog Job definition: > Hang out with the DevOps guys > Talk about it github.com/jbaruch @jbaruch 3
    4. 4. Agenda The cloud silver bullet The right tool for the job Binaries all the way The magic of release 4
    5. 5. EVERYTHING *aaSThe New Silver Bullet
    6. 6. What’s So Good About *aaS? *aaS features Continuous Delivery 6
    7. 7. Continuous Delivery FTW User advantages > Latest version/features > No upgrades/maintenance Developer advantages > Agile > Rapid feedback > Users are the best beta-testers > No long-term support Everybody wins? 7
    8. 8. Almost, except the IT Used to quarterly release cycles “Secure” pace Minimizing the entropy caused by developers with ADD 8
    9. 9. Herding CatsDevelopers > Increasing entropy +IT (operations) > Maintaining stability =DevOps > Stable change 9
    10. 10. Continuous Delivery Challenge Very frequent releases More than one version in production Complicated access levels Root cause analysis > Tracing from binaries to source Version tracking Not everyone is ready for CD 10
    11. 11. Continuous Delivery Challenge Very frequent releases More than one version in production Complicated access levels Root cause analysis > Tracing from binaries to source Version tracking Not everyone is ready for CD 11
    12. 12. It’s… Agile! Agile principles applied for DevOps We have good tooling for Agile development > Version control > Unit testing and code coverage > CI servers > Hot swap tools What’s up with tooling for agile DevOps? 12
    13. 13. Agile Tooling for DevOps Checklist Versioning Access control Traceability Promotions Tags and annotations Search 13
    14. 14. Recursive Slide with Baby Photo Artifactory is released with Artifactory JFrog SaaS offering > Artifactory Online › Gradle, Grails, SpringSou rce, Typesafe, Jenkins, e tc. We build, release and eat our own dog food > Continuously 14
    15. 15. HERE COMES BINARY REPOSITORYThe Right Tool for the Job
    16. 16. Here Comes Binary Repository E.g. Artifactory Proxy Smart storage > Much more than a passive space Critical for CI/CD and ALM 16
    17. 17. Tooling Chain 17
    18. 18. In the Beginning it was… 18
    19. 19. Binary Repo in DevOps Ecosystem 19
    20. 20. 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 20
    21. 21. The Release PipelineSource: Agile ALM, Michael Hüttermann, Manning Publications Co. 21
    22. 22. Passing the software to QA Different access rights Different physical location Ability to annotate 22
    23. 23. Staging and Preproduction Replication of Production environment > Lock versions of dependencies and artifacts Allow access to set of users 23
    24. 24. Going to Production Convert staging binaries to production Allow public access Change settings Tag 24
    25. 25. TRACEABILITYWhy and How?
    26. 26. The Time Machine Sometimes you need to go back in time
    27. 27. Quest for Traceability What should be restored? > Sources > Dependencies > Environment details > Tags Where’s the information? > Version control system > Build Tool > Build server 27
    28. 28. Rebuilding from Sources Checkout branch/tag/revision Build Done! Time consuming Unstable 28
    29. 29. Dependencies Lie Dependency Descriptors aren’t stable 29
    30. 30. Evil Dependencies Resolution POMs deployed with variables > Ivy is OK Resolution strategies change over time > Both Ivy and Maven 30
    31. 31. Single Source of Truth Record information on spot > When binaries are created Build Server 31
    32. 32. Single Target of Truth Truth should be saved… … with the binaries… … in binaries storage! 32
    33. 33. Open Standard Of Truth Bill of Materials JSON REST accessible API accessible APLv2 on GitHub 33
    34. 34. Build Server Plugin Build information > Resolved and realized during the build > Attached to the artifacts > Uploaded with the artifacts 34
    35. 35. DEMO TIME!Tracing Artifacts
    36. 36. WHAT MY FRIENDS THINK I DODevOps
    37. 37. What Others Think I Do 37
    38. 38. What I Think I Do 38
    39. 39. What I Really Do 39
    40. 40. What I Really Do 40
    41. 41. What I should Do 41
    42. 42. Target: Automation It’s impossible to release frequently with manual procedures > While maintaining quality Use your binaries storage to release 42
    43. 43. THE MAGIC OF RELEASEPut your repository to work
    44. 44. Release Candidates Your next build is a 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 44
    45. 45. Releasing with Release Candidates Process: 1. Produce and build snapshots until satisfied 2. Once satisfied, build a release candidate 3. Stage RC, check and verify 4. Once verified, release 45
    46. 46. Releasing With Artifactory Plugin Changes versions in build script Allows choosing a target deploy repository Creates a VCS tag/branch 46
    47. 47. DEMO TIME!Release With Release Candidates
    48. 48. OOTB Release Management Pros  Cons > Out of the box > Limited > Supports the “by extensibility the book” > May not fit your release cycle requirements > Supports majority of the tools 48
    49. 49. Releasing with Release Candidates Process: 1. Produce and build snapshots until satisfied 2. Once satisfied, build a release candidate 3. Stage RC, check and verify 4. Once checked, release 49
    50. 50. Releasing with Release Candidates Process: 1. Produce and build snapshots until satisfied 3. Stage RC, check and verify 4. Once checked, release 50
    51. 51. Releasing with Release Candidates? 51
    52. 52. Releasing with Release Candidates? Lots of things can go wrong during one more build If we won’t build it, we won’t screw it Revised Process: 1. Produce and build snapshots until satisfied 2. When satisfied, check and verify 3. Once checked, release 52
    53. 53. Automation Flexibility We Know: We Don’t Know Better YMMV (great deal)  Write your own release logic  Pre and post build deploy hooks 53
    54. 54. Controlling Versioning Scheme Classic versioning scheme: > Release version › 2.0.3 > Integration version › 2.0.4-SNAPSHOT YMMV 54
    55. 55. Flexible Release Code your release strategy > Versioning scheme > VCS (tagging, branching, commit comments) > Promotion hook (copy/move, comments, status) Available by REST 55
    56. 56. REST == Scriptability == Automation It’s impossible to release frequently with manual procedures > While maintaining quality Use your scriptable binaries storage to release 56
    57. 57. 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) 57
    58. 58. CODE TIME!Plugin What?
    59. 59. Pluggable Architecture with DSLs Artifactory is open for user plugins Groovy groovy DSL Your code runs inside the server Uses Public API (PAPI) > Search for artifacts > Search for builds > Copy/move artifacts > Manipulate files › E.g. change versions in descriptors 59
    60. 60. Community Effort https://github.com/JFrogDev/artifactory-user-plugins 60
    61. 61. Plugin Invocation Options As a response for various events > Download/Create/Delete > Login > Release Scheduled On demand 61
    62. 62. Plugin Code Manipulating Version Control Systems 62
    63. 63. Plugin Code Manipulating BuildInfo object 63
    64. 64. Plugin Code Creating and replacing artifacts 64
    65. 65. Calling REST API With CURL 65
    66. 66. Calling REST API With CURLhttp://repo-demo:8080/artifactory/api/plugins/build/promote/snapshotToRelease/gradle-multi-example/1?params=snapExp=d14|targetRepository=gradle-release-local 66
    67. 67. Calling REST API With CURLhttp://repo-demo:8080/ Artifactory serverartifactory/api/plugins/build/promote/snapshotToRelease/gradle-multi-example/1?params=snapExp=d14|targetRepository=gradle-release-local 67
    68. 68. Calling REST API With CURLhttp://repo-demo:8080/ Artifactory serverartifactory/api/plugins/ Plugins APIbuild/promote/snapshotToRelease/gradle-multi-example/1?params=snapExp=d14|targetRepository=gradle-release-local 68
    69. 69. Calling REST API With CURLhttp://repo-demo:8080/ Artifactory serverartifactory/api/plugins/ Plugins APIbuild/promote/snapshotToRelease/ Plugin namegradle-multi-example/1?params=snapExp=d14|targetRepository=gradle-release-local 69
    70. 70. Calling REST API With CURLhttp://repo-demo:8080/ Artifactory serverartifactory/api/plugins/ Plugins APIbuild/promote/snapshotToRelease/Plugin namegradle-multi-example/1? Build name and numberparams=snapExp=d14|targetRepository=gradle-release-local 70
    71. 71. Calling REST API With CURLhttp://repo-demo:8080/ Artifactory serverartifactory/api/plugins/ Plugins APIbuild/promote/snapshotToRelease/ Plugin namegradle-multi-example/1? Build name and numberparams=snapExp=d14| versioning schemetargetRepository=gradle-release-local 71
    72. 72. Calling REST API With CURLhttp://repo-demo:8080/ Artifactory serverartifactory/api/plugins/ Plugins APIbuild/promote/snapshotToRelease/ Plugin namegradle-multi-example/1? Build name and numberparams=snapExp=d14| versioning schemetargetRepository=gradle-release-local Target repository for release 72
    73. 73. Recap: Promotion of Snapshots Choose existing build to become a release Using the REST API without building Invoking the promotion plugin > Convert to next version > Tag, branch, etc. > Promote (copy/move) 73
    74. 74. DEMO TIME!Release by Snapshot Promotion
    75. 75. 4 Commandments of DevOps Automate everything Version everything Trace everything Report/Log/Feed back everything 75
    76. 76. 4 Commandments of DevOps Automate everything Version everything Trace everything Report/Log/Feed back everything Designed by Jessica Allen on Dribbble.com 76
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×