Desplegar proyectos en un servidor con Cpanels con Gitlab pipeline y lftp

Submitted by Oskar on Tue, 04/01/2022 - 18:00

La idea es sencilla, poder desplegar un proyecto que tienes en un repositorio de Gitlab, en este caso un proyecto de Drupal, en un servidor gestionado mediante Cpanels y que no tenemos acceso vía SSH, lo que sería un servidor compartido de toda la vida.

 

Paso 1

Lo primero que tenemos que hacer es crear en el servidor con Cpanels el proyecto, la cuenta FTP para acceder al proyecto.

 

Paso 2

Lo segundo es dar de alta un proyecto en Gitlab, no me voy a parar a explicar esto, aquí os dejo un vídeo donde se explica como hacerlo, únicamente que para este ejemplo he creado una rama devel que es con la que hago todo, obviamente se puede cambiar por cualquier otra rama.

 

 

Paso 3

Aquí os dejo también como montar un Pipleline en Gitlab, luego entraré yo al detalle, pero como "entrante" viene bien si no conoces como funciona.

 

Lo importante en este caso es la configuración de las variables que vamos a usar en el pipeline, que son los valores para conectarnos vía FTP (obviamente tenemos que haber creado un proyecto en el servidor de CPanels, y tener una cuenta de FTP para acceder a los directorios de ese proyecto).

 

En el menú lateral izquierdo del proyecto en Gitlab accedemos a Settings > CD/CI

Image
gitlab > proyect settings > cdci

 

En la página que se carga expandimos las opciones de variables:

Image
Variables cdci gitlab

 

Creamos las variables en el botón Add variable:

Image
Create gitlab cdci variables

 

  • Key: es el nombre de la variable.
  • Value: es el valor de la variable.
  • Flags: Protect variable => lo dejamos sin marcar.

Y después de crear una variable para el usuario, la contraseña y el host del servidor nos debería de quedar así:

Image
Created cdci gitlab variables

 

Paso 4

Configuramos el archivo .gitlab-ci.yml

 

 

 

Lo que tenemos que tener en cuenta de .gitlab-ci.yml es:

  • He usado la imagen de php 7.4 pero se puede usar otra cualquiera.
  • Instalamos Composer.
  • Ejecutamos Composer, esto llevará unos minutos.
  • Borrar los archivos de git del proyecto para no subirlos vía ftp.
  • Ejecutamos lftp para que suba los archivos que tenemos en la imagen de docker que ha levantado el pipeline si son nuevos, y en el servidor de Cpanels borre aquello archivos que no tenemos en la imagen del pipeline.
  • Este pipeline se ejecuta únicamente en la rama devel.

 

Paso 5

Este paso depende de cada proyecto, en el caso de Drupal, como movemos muchos archivos la primera carga puede llevar más de 1 hora de ejecución para subir la primera vez todos los archivos, por eso configuramos que el pipeline pueda durar más tiempo, yo le he puesto 3 horas.

Image
General pipelines settings

 

Pinchar en el botón expandir de General pipelines y cambiamos la opción Timeout que se muestra en la parte inferior.

Image
General settings options

 

Os dejo el enlace de la página de lftp para aquellso que quieran mirarse todas las interesantes opciones que tiene este software