.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013

2,089 views
1,919 views

Published on

A talk I [Haggai Philip Zagury] gave @ JUC 2013 - https://speakerdeck.com/hagzag/juc-israel-2013

Published in: Technology
0 Comments
8 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,089
On SlideShare
0
From Embeds
0
Number of Embeds
1,120
Actions
Shares
0
Downloads
0
Comments
0
Likes
8
Embeds 0
No embeds

No notes for slide

.Net OSS Ci & CD with Jenkins - JUC ISRAEL 2013

  1. 1. .Net Open Source CI & CDwith Jenkins06.06.2013JUC, IsraelHaggai Philip Zagury,#Jenkinsconf@JenkinsconfJenkins User Conference
  2. 2. Haggai Philip ZaguryDevOps / PS Engineer“I am a member of Tikals ALM group. Withover 5 members, we meet, share,contribute and code together on a monthlybasiswhoami ?
  3. 3. We help companies build,deliver, deploy, manageand optimize ourcustomers products.WHO WE ARE?
  4. 4. OUR EXPERTISE
  5. 5. Today we are SURE that wemade the right decision, choosingTikal““Guy Ben-Porat,Development Manager “ExLibris”
  6. 6. 1600+CummunityMembers150+Blog postslast year460+Meet upMembers12+Years old90+Tikal’sExperts Team100+ProjectsLast YearTIKAL BY NUMBERS
  7. 7. Actions speak louder than words““Tikals motto
  8. 8. Not that kind of consultant
  9. 9. Argument of OSS in MSFT env
  10. 10. Lets takeanotherJourney together
  11. 11. A love & hate storySteve Ballmer
  12. 12. A love & hate story
  13. 13. For Visual Studio
  14. 14. Microsoft launch [2006]
  15. 15. Microsoft launch [2006]An Example I will use
  16. 16. The era&
  17. 17. In The era&
  18. 18. We are fully equipped …FabricThe Open Source Ecosystem
  19. 19. The keys to success• Implementing CI’s “ 10 commandments “• Dependency Mechanism• Code Quality & analysis
  20. 20. So how to CI & CD for withCI DM CQ CD
  21. 21. So how to CI & CD for withCI DM CQ CDHopefully answer them one by one …
  22. 22. Continuous IntegrationThe “10 Commandments “• Maintain a code repository (central / shared)• Automate the build• Make the build self-testing• Everyone commits to the baseline every day• Every commit (to baseline) should be built• Keep the build fast• Test in a clone of the production environment• Make it easy to get the latest deliverables• Everyone can see the results of the latest build• Automate deployment
  23. 23. • Maintain a code repository (central / shared)Achieving CI
  24. 24. • Maintain a code repository (central / shared)• Automate the buildAchieving CI
  25. 25. • Maintain a code repository (central / shared)• Automate the build• Make the build self-testingAchieving CI
  26. 26. • Maintain a code repository (central / shared)• Automate the build• Make the build self-testing• Everyone commits to the baseline every day• Every commit (to baseline) should be builtAchieving CI
  27. 27. • Maintain a code repository (central / shared)• Automate the build• Make the build self-testing• Everyone commits to the baseline every day• Every commit (to baseline) should be builtAchieving CIYou could probably achieve CI withTFS – we will see later why it’s notenough ….
  28. 28. Developers experience
  29. 29. Developers experienceBut you can always use git  …
  30. 30. If you insist / have TFS
  31. 31. MSBUILD plug-inAdd / Manage multiple MSBuild versionsConfigure version at job level
  32. 32. Execute MSbuild
  33. 33. So how to CI & CD for withCI DM CQ CDMSBUILDNCOVERFXCOPNant& more
  34. 34. Dependency Management2nd and 3rd party build &development integrationApache / Maven have tried inthe past …Reference from SlaeSforce 2008: http://www.slideshare.net/sgreene/dependency-management-in-a-large-agile-environment-presentationA maven .NET implementationSoon to be terminated …Tip:Don’t Push Binaries ToSource Control,Use NuGet Wisely Instead
  35. 35. What is NuGetNuGet is a Visual Studio extension that makes iteasy to install and update third-party librariesand tools in Visual Studio.
  36. 36. What is NuGetGrowingrapidlyevery day …
  37. 37. From the comfort ofBrowse remote url’s [ Nuget Repositories ]
  38. 38. Whats in *.nupkg ?
  39. 39. Whats in *.nupkg !
  40. 40. Whats in *.nupkg !& more metadata …
  41. 41. From the comfort ofAll except Nuget.exe are added toSCM
  42. 42. From the comfort ofProject file [csproj]
  43. 43. From the comfort ofNuGet “magic” – the omu.* files arereferences imported by thenuget.exe
  44. 44. Nuget workflow1. Check for update2. install to pkg dir [ if update needed ]3. Regular compile sequence [ msbuild ]
  45. 45. NuGet workflowBuild
  46. 46. NuGet workflowBuild Packagenuget pack command:nuget.exe pack <.nuspec file>
  47. 47. NuGet workflowBuild Package<?xml version="1.0" encoding="utf-8"?><package><metadata><id>Microsoft.Silverlight.Testing</id><version>4.0.40413.2012</version><authors>hagzag</authors><owners>hagzag</owners><requireLicenseAcceptance>false</requireLicenseAcceptance><description>NuGet package</description></metadata></package>nuget pack command:nuget.exe pack <.nuspec file>
  48. 48. NuGet workflowBuild Push/UpdatePackagenuget push command:nuget push <path to .nupkg> -s <artifact server url> -ApiKey<ApiKey>
  49. 49. Home Grown solution
  50. 50. Home Grown solution
  51. 51. Home Grown solution
  52. 52. Home Grown solution
  53. 53. Home Grown solution• No ACL / AUTH• Friendly URL ?• Friendly UI ?• More …
  54. 54. Mature Artifact Repo
  55. 55. Mature Artifact Repo
  56. 56. Mature Artifact Repo
  57. 57. Jenkins NuGet PluginTrigger a build based ondependency change inNuGet – Check every …
  58. 58. Jenkins NuGet PluginTrigger a build based ondependency change inNuGet – Check every …Java Guys are saying so what …, Maven does the same thing … 
  59. 59. So how to CI & CD for withCI DM CQ CDMSBUILDNCOVERFXCOPNant& more
  60. 60. Code Quality
  61. 61. Code Quality & Analysis
  62. 62. Developers experience
  63. 63. Sonar – A standardAdd / Manage Sonar(s)Configure version at job level
  64. 64. So how to CI & CD for withCI DM CQ CDMSBUILDNCOVERFXCOPNant& more
  65. 65. From CI => CD
  66. 66. The easy solution would be …
  67. 67. Build => Deploy => Test
  68. 68. Build => Deploy => Test
  69. 69. Choose you poison& morePAAS
  70. 70. Build => Deploy => Test
  71. 71. Build => Deploy => Test
  72. 72. Build => Deploy => Test
  73. 73. Build => Deploy => Test- Reuse Elastic Beanstalk Deployment
  74. 74. Build => Deploy => Test
  75. 75. Build => Deploy => Test
  76. 76. So how to CI & CD for withCI DM CQ CDMSBUILDNCOVERFXCOPNant& more
  77. 77. Thank you
  78. 78. THANK YOUHaggai Philip ZaguryEmail: hagzag@tikalk.comTel: +972-545302525

×