Scalable Deployment Architectures with TYPO3 Surf, Git and Jenkins
42
Scalable Deployment Architectures with TYPO3 Surf, Git and Jenkins Inspiring FLOW Conference, April 20th 2013 Martin Helmich, Mittwald CM Service [email protected]
-
Upload
mhelmich -
Category
Technology
-
view
4.144 -
download
4
description
Slides of my presentation at the Inspiring Flow conference (http://www.inspiring-flow.de) in Kolbermoor on April 20th, 2013.
Transcript of Scalable Deployment Architectures with TYPO3 Surf, Git and Jenkins
- 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.