42
Scalable Deployment Architectures with TYPO3 Surf, Git and Jenkins Inspiring FLOW Conference, April 20th 2013 Martin Helmich, Mittwald CM Service [email protected]

Scalable Deployment Architectures with TYPO3 Surf, Git and Jenkins

Embed Size (px)

DESCRIPTION

Slides of my presentation at the Inspiring Flow conference (http://www.inspiring-flow.de) in Kolbermoor on April 20th, 2013.

Citation preview

  • 1. Scalable
  • 2. Deployment
  • 3. Architectureswith
  • 4. TYPO3
  • 5. Surf,
  • 6. Git
  • 7. and
  • 8. JenkinsInspiring
  • 9. FLOW
  • 10. Conference,
  • 11.
  • 12. April
  • 13. 20th
  • 14. 2013Martin
  • 15. Helmich,
  • 16. Mittwald
  • 17. CM
  • 18. [email protected]
  • 19. YOUR SPEAKERMartin
  • 20. HelmichSoftware
  • 21. Developer/Architectat
  • 22. MittwaldTYPO3
  • 23. addicted
  • 24. since
  • 25. 2004Caffeine
  • 26. addicted
  • 27. since
  • 28. 2007
  • 29. LAST
  • 30. YEARSFLOW3
  • 31. EXPERIENCEhttp://www.flickr.com/photos/techdivision/7038633581
  • 32. Software
  • 33. deployment
  • 34. is
  • 35. all
  • 36. of
  • 37. the
  • 38. activities
  • 39. that
  • 40. make
  • 41. a
  • 42. software
  • 43. system
  • 44. available
  • 45. for
  • 46. use.http://en.wikipedia.org/wiki/Software_deployment
  • 47. Manual
  • 48. Deployment,
  • 49. Take
  • 50. #1CLICKDROPDRAG
  • 51. COMMON
  • 52. PITFALLSWhat
  • 53. if...you
  • 54. dont
  • 55. know
  • 56. (or
  • 57. have
  • 58. forgotten)which
  • 59. files
  • 60. have
  • 61. changed
  • 62. since
  • 63. the
  • 64. last
  • 65. deployment?you
  • 66. want
  • 67. to
  • 68. roll
  • 69. back
  • 70. to
  • 71. a
  • 72. previous
  • 73. version?you
  • 74. want
  • 75. to
  • 76. know
  • 77. which
  • 78. version
  • 79. you
  • 80. are
  • 81. currently
  • 82. running?Manual
  • 83. Deployment,
  • 84. Take
  • 85. #1???
  • 86. martin@mybox:~ > ssh myserver.demartin@myserver:~ > cd my_appmartin@myserver:~/my_app > git fetch originmartin@myserver:~/my_app > git reset --hard origin/mastermartin@myserver:~/my_app > git submodule update --initmartin@myserver:~/my_app > ./flow doctrine:migratemartin@myserver:~/my_app > ./flow cache:flushManual
  • 87. Deployment,
  • 88. Take
  • 89. #2
  • 90. martin@mybox:~ > ssh myserver.demartin@myserver:~ > cd my_appmartin@myserver:~/my_app > git fetch originmartin@myserver:~/my_app > git reset --hard origin/mastermartin@myserver:~/my_app > git submodule update --initmartin@myserver:~/my_app > ./flow doctrine:migratemartin@myserver:~/my_app > ./flow cache:flushVERSION
  • 91. CONTROL is
  • 92. great!
  • 93. But
  • 94. what
  • 95. if...you
  • 96. forget
  • 97. one
  • 98. of
  • 99. these
  • 100. steps?there
  • 101. are
  • 102. ten
  • 103. servers
  • 104. (or
  • 105. 100)instead
  • 106. of
  • 107. one??Manual
  • 108. Deployment,
  • 109. Take
  • 110. #2?
  • 111. HERE:
  • 112. USING
  • 113. APACHE
  • 114. ANTAutomated
  • 115. Deployment
  • 116. HERE:
  • 117. USING
  • 118. APACHE
  • 119. ANTAutomated
  • 120. DeploymentSEE
  • 121. https://github.com/martin-helmich/ant-typo3flow
  • 122. TYPO3
  • 123. Surf
  • 124. TYPO3
  • 125. SurfWHAT
  • 126. DOES
  • 127. IT
  • 128. DO? cache localgitclone releases 20130324175345 current -> ./20130324175345 sharedBEFORE
  • 129. cache localgitclone releases 20130324175345 current -> ./20130324175345 sharedBEFORE cache localgitclone releases 20130324175345 20130329184503 previous -> ./20130324175345 current -> ./20130329184503 sharedAFTERTYPO3
  • 130. SurfWHAT
  • 131. DOES
  • 132. IT
  • 133. DO?
  • 134. TYPO3
  • 135. Surf cache localgitclone releases 20130324175345 20130329184503 previous -> ./20130324175345 current -> ./20130329184503 sharedPoint
  • 136. your
  • 137. document
  • 138. root
  • 139. HERE.Something
  • 140. goes
  • 141. wrong
  • 142. badly,
  • 143. simply
  • 144. RESET
  • 145. THE
  • 146. SYMLINK
  • 147. to
  • 148. the
  • 149. previous
  • 150. target.WHAT
  • 151. DOES
  • 152. IT
  • 153. DO?
  • 154. Install
  • 155. using
  • 156. GIT:> git clone git://git.typo3.org/FLOW3/Packages/TYPO3.Surf.git Packages/Application/TYPO3.Surf> ./flow package:activate TYPO3.SurfInstall
  • 157. using
  • 158. Composer:> ./composer.phar require typo3/surf=dev-master> ./flow package:activate TYPO3.Surf
  • 159. INITIALIZEUPDATEMIGRATEFINALIZETESTSWITCHCLEANUPSURF
  • 160. DEFAULTWORKFLOWThis
  • 161. is
  • 162. just
  • 163. the
  • 164. default
  • 165. workflow
  • 166. (called
  • 167. SimpleWorkflow).You
  • 168. can
  • 169. customize
  • 170. it
  • 171. as
  • 172. you
  • 173. like
  • 174. or
  • 175. even
  • 176. define
  • 177. entirely
  • 178. new
  • 179. workflows.
  • 180. Use
  • 181. Jenkins
  • 182. to
  • 183. optimizeyour
  • 184. TYPO3
  • 185. Surf
  • 186. deployments#1:
  • 187. AUTOMATE
  • 188. JENKINS MainBuildDeploymentBuildAuxiliaryBuildTYPO3
  • 189. SurfcallsGITtriggersnotifies
  • 190. viapost-receivehookgit
  • 191. pullDeveloperpushes
  • 192. to
  • 193. gitUpdate
  • 194. submodulesCompile/TranspileRun
  • 195. testsPacketizeGenerate
  • 196. documentationGenerate
  • 197. code
  • 198. metrics
  • 199. Use
  • 200. Jenkins
  • 201. to
  • 202. optimizeyour
  • 203. TYPO3
  • 204. Surf
  • 205. deployments#2:
  • 206. PARALLELIZE
  • 207. INITIALIZE
  • 208. &
  • 209. UPDATE
  • 210. NODES
  • 211. N1..Nn SWITCHtimeN1 N2 N3 N4
  • 212. N2 N3 N4N1N2N3N4INIT
  • 213. &UPDATESWITCHtimeWOW!
  • 214. Thats
  • 215. so
  • 216. much
  • 217. faster!But
  • 218. where
  • 219. is
  • 220. the
  • 221. catch
  • 222. in
  • 223. this...?
  • 224. Execute
  • 225. deployments
  • 226. in
  • 227. parallel
  • 228. usingJenkins
  • 229. multi-configuration
  • 230. builds.
  • 231.