Blog de Gonzalo

COMO USAR DEPLOYER EN PHP

Hace poco descubrí la herramienta de deployer para hacer despliegues de proyectos en servidores. Y la verdad es que es bastante sencillo de usar y de configurar. Aunque no creo que sea tan completo como jenkins. En este post voy a explicar como usar deployer en php y como configurarlo.
Yo lo instalé en el proyecto usando composer, es aconsejable hacerlo a nivel de proyecto en vez de hacerlo a nivel global.
Una vez que deployer se ha instalado hay que iniciarlo (deployer init) usando el comando php vendor/deployer/deployer/bin/dep deploy init (con sudo si es en linux). Este comando pregunta si se usa algún framework en concreto ya que deployer funciona con recipes, también se puede especificar que no se usa ningún framework.
Una vez que termina el proceso de inicalización podemos ver que se ha creado un fichero deploy.php en la raíz del proyecto donde hay que especificar la configuracón de git, si el proyecto ya está usando git deployer añadirá la configuración del repositorio para hacer el despliegue en producción, desarrollo o stage y también hay que especificar la ruta, dentro del servidor, donde se realizará el despliegue. En este fichero se especifica el servidor o servidores donde se realizará el despliegue, y también instalará los vendors del proyecto mediante composer.
Después dela configuración del servidor en el fichero deploy.php hay que especificarlas tareas (o tasks) que queremos hacer. En las recipes que he mencionado antes ya se realizan las tareas específicas por cada framework. Así que no hace falta añadirlas. Primero se crean las tareas y luego hay que especificar cuando se ejecutan, antes o después de otra tarea.

Funciones de deployer

  • Se define el servidor de despligue. Si se quiere probar en local solo es cambiar host por localhost.
    
    host('IpServidor')
          ->user('ususario')
          ->set('deploy_path', 'ruta despliegue');
    
  • Aunque lo añade automáticamente es mejor revisarlo o por si se tiene que añadir: set('repository', 'repositorio git');
  • Rama del repositorio para desplegar: set ('branch','branch name');
  • Esta opción permite añadir que opciones añadir cuando se ejecute la tareade composer, es interesante, ya que en producción hay que añadir --dev pero no en un entorno de pruebas set('composer_options','composer options');
  • Normalmente con las tareas se ejecutan comandos:
     task('load:command', function () {
         run('command');
     });
  • Otro ejemplo de creación de una tarea, en este caso sube el fichero de entorno en la carpeta del despliegue, no hay que ponerla ya que está guardada en {{release_path}} al definir el host de despliegue, en el ejemplo se puede ver que la tarea se llama load:env-vars:
     task('load:env-vars', function () {
         upload(get('env_file'), '{{release_path}}/.env');
     });
  • Para ejecutar una tarea definida, en ejemplo se puede ver que está tarea definida en el punto anterior y se ejecutará antes (definido por before)de la tarea composer:update, para que la tarea se ejecute despueés de otra tarea hay que usar after: before('composer:update', 'load:env-vars');

Para desplegar el proyecto hay que ejecutar el comando php vendor/deployer/deployer/bin/dep deploy (con sudo si es desde linux). Por defectose despliega en stage. Para desplegar en producción sería añadir prod al final del comando, como parámetro.
Hay más opciones como definir la ejecución de pruebas unitarias, etc...

Compartir en twitter