Taller de Phing - phpconference 2009 barcelona

download Taller de Phing - phpconference 2009 barcelona

If you can't read please download the document

description

Taller impartido por Fernando Palomo en la phpconference de barcelona en 2009

Transcript of Taller de Phing - phpconference 2009 barcelona

  • 1. TALLER DE PHINGSubversion and PHING :How-to update successfully your website.
    • Fernando Palomo Garca
    • Head of IT at MyBrands.de
  • 2. [email_address]

3. INDEX

  • 1.- Vista General

4. 2.- Control de versiones: Subversion

  • Breve intro a control de versiones

5. Conceptos de subversion 6. Practica de subversion 3.- Script de despliegue: PHING

  • Breve intro a scripts de despliegue

7. Conceptos de PHING

  • Estructura de un script

8. Comandos bsicos 9. Extendiendo Phing Scripts de ejemplo 10. Generemos un script entre todos! 11. 1.- Vista General

  • Equipo de desarrollo trabajando en paralelo

12. Plataforma con multiples servidores

  • DB, Static content, Dynamic content, Proxy para contenido esttico, svn, memcache, monitorizacin, testing...

Actualizaciones frecuentes

  • Bug fixes

13. Nuevas funcionalidades 14. Mejoras de funcionalidades 15. 1.- Vista General

  • Garantizar:
  • Consistencia de datos
  • Archivos en servidores www

16. DB 17. Cach 18. Sesiones... Misma versin en los diferentes recursos:

  • Estructuras de DB corresponden con aplicacin

19. Contenido esttico corresponde con aplicacin(prefijos) Disponibilidad de recursos

  • Es necesario down-time para actualizar?

20. Realizar actualizaciones fuera de horas punta 21. Test de despliegue en entorno controlado 22. 2.- Control de Versiones: Subversion

  • Qu nos proporciona?
  • Trabajo en equipo, desarrollo en paralelo. Archivos compartidos y abiertos al mismo tiempo

23. Control de cambios en archivos. Rollback rpido 24. Quin hace qu Los ms populares:

  • CVS => Sustituido por svn

25. SVN => Estndar de-facto,maneja mejor binarios 26. GIT => Desarrollado por Linus Torvalds, usado para el kernel de linux. Distribuido. 27. Mercurial => Distribuido 28. 2.- Subversion::__init()

  • http://subversion.tigris.org/

29. Clientes:

  • Linux / OS X: consola, rapidSVN

30. Windows: tortoiseSVN 31. integrado en IDE: Netbeans, Eclipse,Zend Studio... Repositorio central (svnadmin create ) 32. Accesohttp:// , https:// ,file:/// , svn:// svn+ssh:// 33. Replicacion de repositorio master-slave (svnsync) 34. 2.- Subversion::main()

  • Un poco de Terminologa
  • Repositorio

35. Working copy 36. Branches 37. Tags 38. Trunk 39. Merge ( --reintegrate ) 40. Conflictos Buen tutorial:http://svnbook.red-bean.com/ 41. 2.- Subversion::main()

  • Uso habitual: Release branches
  • trunk/

42. branches/

  • 1.0/

43. 2.0/ tags/

  • 1.0.0/

44. 1.0.1/ 45. 2.0.0/ 46. 2.0.2/ 47. 2.- Subversion::__main()

  • Practica:
  • Instalacin de servidor

48. Crear repositorio 49. Configurar mod_dav apache 50. Configuracin del cliente en netbeans 51. casos:

  • Branch

52. Tag 53. merge 54. 3.- Scripts de Despliegue: PHING

  • Cmo desplegaramos sin scripts?

55. Velocidad no hay olvidos - atomicidad 56. Sincronismo entre servidores 57. Script debera anticipar y prever fallos 58. Posibilidades:

  • Bash scripts ( bash version )

59. Apache Ant (Java: platform-independent) 60. Make ( maldito espacio antes del tabulador! ) 61. PHING ( PHP: platform independent) 62. 3.- Scripts de Despliegue: PHING

  • Previsin de fallos

63. Development => Testing => Live 64. Polticas de despliegue incrementales

  • Al desplegar aadimos un prefijo/sufijo a cada archivo, correspondiente a la versin actual.

65. En la aplicacin o htaccess indicamos el numero de versin 66. 3.- Scripts de despliegue: PHING

  • Polticas de despliegue directa
  • el directorio principal en el servidor www es una wc

67. Archivos internos de svn 68. Para volver a versin anterior: directamente sobre el contenido web ( otro down-time ) 69. Fcil aplicar patchs 70. 3.- Scripts de despliegue: PHING

  • Polticas de despliegue intermedias
  • Svn export , aplicar parches para live version

71. Contenido antiguo sustituido por nuevo 72. Para volver a version anterior, reemplazar directorio 73. Down-time?

  • Descarga local => no

74. Descarga y rsync => s Diff patch? Y la BD?

  • Preparar scripts incrementales : DO vs UNDO

75. 3.- PHING::__init()

  • PH ingI sN otG numake

76. http://phing.info 77. Basado en Apache Ant 78. Definicin de tareas en XML 79. Facilmente extensible con clases PHP para crear tareas personalizadas 80. Scripts intuitivos, curva de aprendizaje muy inclinada 81. 3.- PHING::main()

  • Phing => phing.php

82. Phing -f target

  • -Dproperty=value, asigna valor a properties

83. -l , para listar targets 84. -verbose 85. 3.- PHING::main()

  • Estructura de un script de PHING
  • Tasks: trozo de codigo con una funcin especfica=> echo...

86. Types: estructuras de datos para las tasks => filelist, filterchain, fileset... 87. Properties: inline, input o fichero de properties 88. Target: nodo raiz del archivo de build http://phing.info/docs/guide/stable/ 89. 3.- PHING::main() Ejemplo sencillo: 90. 3.- PHING::main()

  • Algunas properties predefinidas...
  • application.startdir

91. host.arch 92. project.name 93. project.basedir 94. host.machine 95. host.name 96. line.separator 97. host.os.version 98. ... 99. 3.- PHING::main()

  • Algunas estructuras de control:
  • If ( if elseif else )

100. Depends 101. Unless 102. Conditions

  • Not, and, or, available, equals, isset, istrue...

103. 3.-PHING::main()

  • Modificaciones sobre el proyecto
  • Datos =>
  • Copy, move, append...

104. Eliminar comentarios, cambiar valores,Nombres de archivo =>

  • Change all php to html...

105. Obtener todos los archivos en el mismo dir 106. Expresiones regulares 107. 3.- PHING::main()

  • Otras tareas
  • acepta transactions

108. para generar la documentacin 109. para ejecutar unit test 110. podemos llamar funciones y asignar el resultado a una property 111. 3.-PHING::main()

  • Ejercicios! Por fin! http://www.fpg81.es/phing-examples.tar.gz