Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Groovy's release process — Devoxx 2015

Groovy's release process — Devoxx 2015

The release process of the Groovy programming language

Guillaume Laforge

April 09, 2015
Tweet

More Decks by Guillaume Laforge

Other Decks in Technology

Transcript

  1. #groovyprocess @jfrog
    Groovy’s release process
    Guillaume Laforge
    Cédric Champeau
    Frédéric Simon
    @glaforge | @cedricchampeau | @freddy33
    Restlet | Gradle | JFrog

    View Slide

  2. View Slide

  3. Beware, Frogs may
    be involved in this
    presentation!

    View Slide

  4. View Slide

  5. The Good, the
    Bad, the Ugly of
    the Groovy
    release process

    View Slide

  6. View Slide

  7. How we did it before,
    What we’re doing now,
    Where we’re going!

    View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  11. @YourTwitterHandle
    #DVXFR14{session hashtag}
    #groovyprocess @jfrog
    Hosted at…

    View Slide

  12. View Slide

  13. Trendy
    infrastructure!

    View Slide

  14. View Slide

  15. View Slide

  16. View Slide

  17. View Slide

  18. View Slide

  19. Sponsored by
    JetBrains
    themselves!

    View Slide

  20. Points

    View Slide

  21. #groovyprocess @jfrog
    Web
    • Codehaus provides WebDAV access 

    to push artifacts & documentation
    • Listing / changing directory can take up to 30 seconds
    • Uploading hundreds of JavaDoc files used to take 1+ hour
    • Stale lock files

    View Slide

  22. #groovyprocess @jfrog
    Web
    • Codehaus provides WebDAV access 

    to push artifacts & documentation
    • Listing / changing directory can take up to 30 seconds
    • Uploading hundreds of JavaDoc files used to take 1+ hour
    • Stale lock files
    When it
    actually
    works!

    View Slide

  23. View Slide

  24. Launch a
    release…

    View Slide

  25. Launch a
    release…
    And then,
    you pray!

    View Slide

  26. View Slide

  27. Same player
    shoots again!

    View Slide

  28. View Slide

  29. What could
    possibly go
    wrong?

    View Slide

  30. View Slide

  31. A very
    manual
    process

    View Slide

  32. View Slide

  33. Build / release from a
    developer’s machine

    View Slide

  34. Build / release from a
    developer’s machine
    Local or
    non-committed
    changes

    View Slide

  35. Build / release from a
    developer’s machine
    Local or
    non-committed
    changes
    Relieance on
    local repos

    View Slide

  36. Build / release from a
    developer’s machine
    Local or
    non-committed
    changes
    Relieance on
    local repos
    Manual tagging

    View Slide

  37. Build / release from a
    developer’s machine
    Local or
    non-committed
    changes
    Relieance on
    local repos
    Manual tagging
    Manual update of
    version information
    in properties files

    View Slide

  38. Build / release from a
    developer’s machine
    Local or
    non-committed
    changes
    Relieance on
    local repos
    Manual tagging
    Manual update of
    version information
    in properties files
    Manual VCS
    operations

    View Slide

  39. View Slide

  40. A release could
    take a full day

    View Slide

  41. A release could
    take a full day
    The best way to
    learn patience

    View Slide

  42. View Slide

  43. Time to automate
    things a bit!

    View Slide

  44. @YourTwitterHandle
    @YourTwitterHandle
    #groovyprocess @jfrog
    Now

    View Slide

  45. View Slide

  46. View Slide

  47. Enters
    JetBrains
    TeamCity!

    View Slide

  48. Enters
    JetBrains
    TeamCity!
    On our own
    server at

    View Slide

  49. Enters
    JetBrains
    TeamCity!
    On our own
    server at
    Build and test Groovy across:
    — different branches
    — different JDK versions (6, 7, 8, 9)
    — different flavours (normal/indy)
    — « joint builds »

    View Slide

  50. Enters
    JetBrains
    TeamCity!
    On our own
    server at
    Build and test Groovy across:
    — different branches
    — different JDK versions (6, 7, 8, 9)
    — different flavours (normal/indy)
    — « joint builds »
    Builds Pull
    Requests too

    View Slide

  51. View Slide

  52. New website built
    with Gradle and
    Groovy templates

    View Slide

  53. New website built
    with Gradle and
    Groovy templates

    View Slide

  54. New website built
    with Gradle and
    Groovy templates
    Built by Gradle
    with Asciidoctor

    View Slide

  55. New website built
    with Gradle and
    Groovy templates
    Built by Gradle
    with Asciidoctor
    All code samples
    are tested!

    View Slide

  56. View Slide

  57. And so, 

    it was cool!

    View Slide

  58. View Slide

  59. View Slide

  60. Snapshots pushed
    on commits

    View Slide

  61. Snapshots pushed
    on commits
    Releases signed & deployed
    on Bintray JCenter

    View Slide

  62. Snapshots pushed
    on commits
    Releases signed & deployed
    on Bintray JCenter
    Synced with Maven Central

    View Slide

  63. Snapshots pushed
    on commits
    Releases signed & deployed
    on Bintray JCenter
    Synced with Maven Central
    Website & docs uploaded

    View Slide

  64. View Slide

  65. « One-click »
    releases!

    View Slide

  66. « One-click »
    releases!
    Just need to fill 

    a form with
    version details

    View Slide

  67. « One-click »
    releases!
    Just need to fill 

    a form with
    version details
    TeamCity
    Artifactory
    plugin

    View Slide

  68. View Slide

  69. Pretty Groovy,
    isn’t it?

    View Slide

  70. @YourTwitterHandle
    @YourTwitterHandle
    #groovyprocess @jfrog
    What’s next?

    View Slide

  71. View Slide

  72. Codehaus is closing,
    Pivotal is firing us,
    time to move!

    View Slide

  73. View Slide

  74. View Slide

  75. View Slide

  76. And now, a
    real frog on
    stage!

    View Slide

  77. @YourTwitterHandle
    @YourTwitterHandle
    #groovyprocess @jfrog
    Artifactory & Bintray

    View Slide

  78. #groovyprocess @jfrog
    JFrog Releases in 2014
    •Bintray: 400
    •Artifactory Online: 27
    •Artifactory: 11

    View Slide

  79. #groovyprocess @jfrog
    Why?

    View Slide

  80. #groovyprocess @jfrog
    Why?

    View Slide

  81. #groovyprocess @jfrog
    Growing Ecosystem

    View Slide

  82. #groovyprocess @jfrog
    Growing Ecosystem

    View Slide

  83. #groovyprocess @jfrog
    Growing Ecosystem

    View Slide

  84. #groovyprocess @jfrog
    Bintray Growing Community

    View Slide

  85. #groovyprocess @jfrog
    Bintray Growing Community

    View Slide

  86. @YourTwitterHandle
    @YourTwitterHandle
    #groovyprocess @jfrog
    Summary

    View Slide

  87. View Slide

  88. Our
    winning
    combo!

    View Slide

  89. @YourTwitterHandle
    @YourTwitterHandle
    #groovyprocess @jfrog
    Thanks for your attention

    View Slide

  90. @YourTwitterHandle
    @YourTwitterHandle
    #groovyprocess @jfrog
    Q&A

    View Slide

  91. #groovyprocess @jfrog
    Picture credits
    http://i.ytimg.com/vi/1jpdj7yEHbc/maxresdefault.jpg
    http://warwickexposed.co.uk/wp-content/uploads/2012/05/Memory-Lane.jpg
    http://img1.wikia.nocookie.net/__cb20130914153219/onceuponatime8042/images/9/9d/InfoboxPlainTitle.jpg
    http://wundergroundmusic.com/wp-content/uploads/2014/04/hipster_0.jpg
    http://vectorblog.org/wp-content/uploads/2012/06/Pain-knuckle-tattoo_stevendepolo_Flickr.jpg
    https://cinemadroide.files.wordpress.com/2014/06/edge_of_tomorrow_2014-wide1.jpg
    http://www.thegospelcoalition.org/blogs/trevinwax/files/2015/02/open-hands.jpg
    http://goparallel.sourceforge.net/wp-content/uploads/2013/01/Untitled.png
    http://pbs.twimg.com/media/B9hYSr6IMAIvHDZ.png
    https://s-media-cache-ak0.pinimg.com/236x/cd/98/04/cd9804d0b3d14b6c36733b923600c79f.jpg
    http://venturebeat.com/wp-content/uploads/2012/05/linux-laptop-developers.jpg
    https://claesjohnsonmathscience.files.wordpress.com/2009/06/chaplin1.jpg
    http://wallhd.in/wp-content/uploads/2015/03/frog_wallpaper_quotes_free_hd_wallpaper_30.jpg
    http://www.clipartbest.com/cliparts/nTE/KMe/nTEKMe8TA.jpeg
    http://www.damnwallpapers.com/wp-content/uploads/2014/03/free-frog-hd-wallpaper3.jpg
    http://images.hdbackgroundpictures.com/pictureHD51ba2d6d2ab6442531.jpg
    http://walldiskpaper.com/mobilehd/cartoons-frog-wallpaper-hd/cartoons-frog-wallpaper-hd/
    http://greenfrogconsultancy.com/wp-content/uploads/2012/04/iStock_000016319131Small1.jpg
    http://wallhd.in/wp-content/uploads/2015/03/funny_frog_wallpaper_free_hd_wallpaper_32.jpg
    http://www.mmouse.ru/wp-content/uploads/mmouse-apache-warrior-paul-sachtleben.jpg
    http://www.wallpedes.com/funny-frog-wallpaper/funny-frog-place-free-wallpapers.html
    https://hdwallpapers.cat/thumbnail/funny_3d_frog_flowers_animal_abstract_and_hd-wallpaper-1712905.jpg

    View Slide