Release It!
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share

Release It!

  • 3,238 views
Uploaded on

Using Gradle, TeamCity and Artifactory for making releases the new way.

Using Gradle, TeamCity and Artifactory for making releases the new way.

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,238
On Slideshare
3,213
From Embeds
25
Number of Embeds
4

Actions

Shares
Downloads
38
Comments
0
Likes
7

Embeds 25

http://www.linkedin.com 14
https://twitter.com 7
https://www.linkedin.com 3
https://si0.twimg.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Transcript

  • 1. Release  It! Using  Gradle,  TeamCity  and  Artifactory  for   making  releases  the  new  way Evgeny  Goldin  (@evgeny_goldin) November  14,  2012Wednesday, November 14, 12
  • 2. Evgeny  Goldin Tel-­‐Aviv  =>  Munich  =>  Berlin Java  /  Maven  =>  Groovy  /  Gradle SCM  at  Trademob evgeny-­‐goldin.com/wiki github.com/evgeny-­‐goldin GroovyMag,  Gr8Conf evgenyg@gmail.comWednesday, November 14, 12
  • 3. In  this  session  .. Releasing  a  library  using  Gradle  Maven  plugin Releasing  a  library  using  Gradle  Release  plugin Releasing  a  library  using  Artifactory  Gradle  plugin Releasing  a  library  using  Artifactory  TeamCity  plugin Releasing  a  library  using  Artifactory  user  pluginsWednesday, November 14, 12
  • 4. In  this  session  .. Releasing  a  library  using  Gradle  Maven  plugin Releasing  a  library  using  Gradle  Release  plugin Releasing  a  library  using  Artifactory  Gradle  plugin Releasing  a  library  using  Artifactory  TeamCity  plugin Releasing  a  library  using  Artifactory  user  plugins Metadata,  Traceability,  Staging,  PromotionWednesday, November 14, 12
  • 5. Meet  the  players! Gradle                    -­‐  general  purpose  build  tool TeamCity        -­‐  general  purpose  build  server  (Web  UI) Artifactory  -­‐  general  purpose  binaries  repository  (Web  UI) Have  Java  roots  but  technology  agnosticWednesday, November 14, 12
  • 6. Meet  the  players! Gradle                    -­‐  Java,  Groovy,  Scala,  C++,  OSGi,  Maven TeamCity        -­‐  Java,  .NET,  Objective-­‐C,  Python,  Ruby Artifactory  -­‐  Java,  .NET,  P2,  Linux,  Build  tools  and  servers Have  Java  roots  but  technology  agnosticWednesday, November 14, 12
  • 7. Wednesday, November 14, 12
  • 8. Build  environment  =  build  tool  +  build  server  +  binaries  repoWednesday, November 14, 12
  • 9.      apply  plugin:  aboutWednesday, November 14, 12
  • 10. v0.1  -­‐  Local  Maven  repository                                                                       gradle  install                                  Wednesday, November 14, 12
  • 11. v  0.2  -­‐  Manual  Artifacts  Upload                                                                                                      Wednesday, November 14, 12
  • 12. v0.3  -­‐  Maven  repo  deploy                                                                       gradle  uploadArchives      Wednesday, November 14, 12
  • 13. v0.3  -­‐  Maven  repo  deploy Were  you  committed? Up-­‐to-­‐date? Had  any  unversioned  files? Used  SNAPSHOT  dependencies? Did  you  forget  to  tag  /  branch?Wednesday, November 14, 12
  • 14. v0.4  -­‐  Gradle  release  plugin                                                                       gradle  release                                Wednesday, November 14, 12
  • 15. v0.4  -­‐  Gradle  release  plugin Checks  if  Update  /  Commit  /  Push  needed Verifies  no  SNAPSHOT  dependencies  are  used Verifies  no  unversioned  files  are  found Updates  version  number:   0.4  =>  0.5 0.4-­‐SNAPSHOT  =>  0.4  =>  0.5-­‐SNAPSHOTWednesday, November 14, 12
  • 16. v0.4  -­‐  Gradle  release  plugin Checks  if  Update  /  Commit  /  Push  needed Verifies  no  SNAPSHOT  dependencies  are  used Verifies  no  unversioned  files  are  found Updates  version  number:   0.4  =>  0.5 0.4-­‐SNAPSHOT  =>  0.4  =>  0.5-­‐SNAPSHOT Adds  SCM  tagWednesday, November 14, 12
  • 17. v0.5  -­‐  Gradle  Artifactory  plugin                                                                       gradle  artifactoryPublishWednesday, November 14, 12
  • 18. v0.5  -­‐  Gradle  Artifactory  plugin Similar  to  Gradle  uploadArchives  plus  .. Publishes  build  info Publishes  artifact  properties  (metadata!)Wednesday, November 14, 12
  • 19. Publishing  -­‐  who  owns  it? Build  script   vs. Build  serverWednesday, November 14, 12
  • 20. v0.6  -­‐  TeamCity  Artifactory  PluginWednesday, November 14, 12
  • 21. v0.6  -­‐  TeamCity  Artifactory  Plugin Publishing  belongs  to  TeamCity Publishes  build  environment  (traceability!) Published  modules  and  their  dependencies Sends  all  artifacts  in  one  go Provides  a  bi-­‐directional  link: TeamCity  <=>  ArtifactoryWednesday, November 14, 12
  • 22. v0.7  -­‐  Artifactory  Release  MgmtWednesday, November 14, 12
  • 23. v0.7  -­‐  Artifactory  Release  Mgmt Similar  to  Gradle  release  plugin  plus  .. Release  branch Release  process: Staging              :  SNAPSHOT  =>  RC Promotion  :  RC  =>  Release Release  historyWednesday, November 14, 12
  • 24. Traditional  release  process SNAPSHOTs  =>  RC-­‐1  ...  RC-­‐N  =>  Release!Wednesday, November 14, 12
  • 25. Traditional  release  process SNAPSHOTs  =>  RC-­‐1  ...  RC-­‐N  =>  Release!Wednesday, November 14, 12
  • 26. Traditional  release  process SNAPSHOTs  =>  RC-­‐1  ...  RC-­‐N  =>  Release!Wednesday, November 14, 12
  • 27. Traditional  release  process SNAPSHOTs  =>  RC-­‐1  ...  RC-­‐N  =>  Release!Wednesday, November 14, 12
  • 28. Traditional  release  process SNAPSHOTs  =>  RC-­‐1  ...  RC-­‐N  =>  Release! Problems: RC  builds  are  redundant,  timely  and  risky Version  updating  policy  .. SCM  tagging  and  branching  policy  .. Staging  and  promotion  policy  ..Wednesday, November 14, 12
  • 29. Traditional  release  process SNAPSHOTs  =>  RC-­‐1  ...  RC-­‐N  =>  Release! Problems: RC  builds  are  redundant,  timely  and  risky Version  updating  policy  .. Predefined! SCM  tagging  and  branching  policy  .. Staging  and  promotion  policy  ..Wednesday, November 14, 12
  • 30. Traditional  release  process SNAPSHOTs  =>  RC-­‐1  ...  RC-­‐N  =>  Release! Solution:  promotion  of  SNAPSHOTs! Build  as  many  SNAPSHOTs  as  needed Pick  one  build  and  stage/promote  its  SNAPSHOT Code  your  own  release  procedureWednesday, November 14, 12
  • 31. v0.8  -­‐  Artifactory  User  Plugins Execute  in  Artifactory Lots  of  extension  points Rich  Groovy  DSL  and  Artifactory  Public  API wiki.jfrog.org/javadocs/artifactory/latest/papi/ github.com/JFrogDev/artifactory-­‐user-­‐pluginsWednesday, November 14, 12
  • 32. v0.8  -­‐  Artifactory  User  Plugins Search  for  builds  and  artifacts Manipulate,  copy  and  move  artifacts Read  build  info Execute  custom  promotion  logic Callable  over  HTTP  using  curl Respond  to  Artifactory  events Run  scheduled  jobsWednesday, November 14, 12
  • 33. Wednesday, November 14, 12
  • 34. Overview v0.1  -­‐  Gradle  Maven  plugin  -­‐  local  .m2  repository. v0.2  -­‐  Manual  upload  of  artifacts v0.3  -­‐  Gradle  Maven  plugin  -­‐  remote  repo  deploy. v0.4  -­‐  Gradle  release  plugin  -­‐  checks,  tag,  version  update. v0.5  -­‐  Gradle  Artifactory  plugin  -­‐  metadata,  build  info. v0.6  -­‐  TeamCity  Artifactory  plugin  -­‐  metadata,  build  info. v0.7  -­‐  TeamCity  Artifactory  plugin  -­‐  staging,  promotion v0.8  -­‐  Artifactory  user  plugins,  SNAPSHOTs  promotionWednesday, November 14, 12
  • 35. Overview v0.1  -­‐  Gradle  Maven  plugin  -­‐  local  .m2  repository. v0.2  -­‐  Manual  upload  of  artifacts v0.3  -­‐  Gradle  Maven  plugin  -­‐  remote  repo  deploy. v0.4  -­‐  Gradle  release  plugin  -­‐  checks,  tag,  version  update. v0.5  -­‐  Gradle  Artifactory  plugin  -­‐  metadata,  build  info. v0.6  -­‐  TeamCity  Artifactory  plugin  -­‐  metadata,  build  info. v0.7  -­‐  TeamCity  Artifactory  plugin  -­‐  staging,  promotion v0.8  -­‐  Artifactory  user  plugins,  SNAPSHOTs  promotionWednesday, November 14, 12
  • 36. Overview v0.1  -­‐  Gradle  Maven  plugin  -­‐  local  .m2  repository. v0.2  -­‐  Manual  upload  of  artifacts v0.3  -­‐  Gradle  Maven  plugin  -­‐  remote  repo  deploy. v0.4  -­‐  Gradle  release  plugin  -­‐  checks,  tag,  version  update. v0.5  -­‐  Gradle  Artifactory  plugin  -­‐  metadata,  build  info. v0.6  -­‐  TeamCity  Artifactory  plugin  -­‐  metadata,  build  info. v0.7  -­‐  TeamCity  Artifactory  plugin  -­‐  staging,  promotion v0.8  -­‐  Artifactory  user  plugins,  SNAPSHOTs  promotionWednesday, November 14, 12
  • 37. Overview v0.1  -­‐  Gradle  Maven  plugin  -­‐  local  .m2  repository. v0.2  -­‐  Manual  upload  of  artifacts v0.3  -­‐  Gradle  Maven  plugin  -­‐  remote  repo  deploy. v0.4  -­‐  Gradle  release  plugin  -­‐  checks,  tag,  version  update. v0.5  -­‐  Gradle  Artifactory  plugin  -­‐  metadata,  build  info. v0.6  -­‐  TeamCity  Artifactory  plugin  -­‐  metadata,  build  info. v0.7  -­‐  TeamCity  Artifactory  plugin  -­‐  staging,  promotion v0.8  -­‐  Artifactory  user  plugins,  SNAPSHOTs  promotionWednesday, November 14, 12
  • 38. Overview v0.1  -­‐  goo.gl/UWrx4 v0.2  -­‐  goo.gl/8eIQb v0.3  -­‐  goo.gl/UWrx4 v0.4  -­‐  goo.gl/wFSrp v0.5  -­‐  goo.gl/LpH4M v0.6  -­‐  goo.gl/dA5dB v0.7  -­‐  goo.gl/E7RN1 v0.8  -­‐  goo.gl/jSrQfWednesday, November 14, 12
  • 39. Resources Gradle  (videos) TeamCity  (videos) Artifactory  (videos) pinboard.in/u:evgenyg/t:release/ github.com/evgeny-­‐goldin/demo-­‐releases-­‐plugin github.com/evgeny-­‐goldin/gradle-­‐pluginsWednesday, November 14, 12
  • 40. Gradle  plugins: about                          -­‐  adds  “about”  data  to  build  artifacts duplicates        -­‐  finds  duplicates  in  your  dependencies kotlin                          -­‐  builds  Kotlin  projects teamcity              -­‐  builds  TeamCity  plugins evgeny-­‐goldin.com/wiki/Gradle_PluginsWednesday, November 14, 12
  • 41. Gradle  plugins  (coming  next): crawler      -­‐  crawls  the  Web,  checks  for  broken  links gitdump  -­‐  makes  local  archives  of  all  your  Git  repos node.js      -­‐  makes  working  with  Node.js  easy roam              -­‐  makes  your  builds  roam! Follow  me  on  Twitter  -­‐  @evgeny_goldinWednesday, November 14, 12
  • 42. Thank  you!Wednesday, November 14, 12