GitLab CI/CD

Para los usuarios más avanzados, GitLab CI/CD (integración continua/entrega continua o despliegue continuo) puede desplegar automáticamente los cambios de código en tu sitio Kinsta cada vez que se envíe un nuevo commit a la rama correspondiente. Este método te permite enviar continuamente el código a tu entorno en producción en Kinsta sin sobrescribir la base de datos MySQL de WordPress.

Esta configuración te permite enviar el código desde tu entorno local o desde el entorno staging de Kinsta y tener un sistema de control de versiones. En el siguiente ejemplo, configuraremos un entorno staging y enviaremos los cambios de ese entorno a nuestro entorno en producción a través de GitLab (evitando la función Push to Live de Kinsta).

Si aún no tienes una cuenta en GitLab, visita su página de registro para empezar.

Crear un Sitio Kinsta

Para este tutorial, empezaremos creando un nuevo sitio vacío en Kinsta, y más tarde instalaremos WordPress. Si ya tienes un sitio Kinsta WordPress, puedes seguir los pasos de este tutorial para conectar tu sitio a GitLab.

En MyKinsta, ve a tu página Sitios WordPress. Haz clic en el botón Añadir sitio en la esquina superior derecha y selecciona Crear nuevo sitio en el menú desplegable. Selecciona la opción Entorno vacío (Sin WordPress) en la ventana modal/pop-up, y haz clic en el botón Continuar.

Completa los campos solicitados, haz clic en el botón Continuar para avanzar a cada ventana y terminar el proceso de creación del sitio.

Crea un sitio vacío en MyKinsta.
Crea un sitio vacío en MyKinsta.

Crea un Proyecto GitLab

Para empezar, dirígete a GitLab y haz clic en Crear un proyecto para crear un nuevo repositorio para tu sitio Kinsta.

Crea un proyecto en GitLab.
Crea un proyecto en GitLab.

Selecciona la opción Proyecto en blanco, y rellena los campos Nombre del proyecto y Slug del proyecto.

Crea un proyecto en blanco en GitLab.
Crea un proyecto en blanco en GitLab.

Para la opción de Nivel de Visibilidad, recomendamos hacer el repositorio privado. Dado que este repositorio puede contener código de plugins y temas premium, dejarlo accesible en la Internet pública permitiría a cualquiera descargar los productos por los que has pagado.

Una vez que hayas terminado de configurar el nuevo proyecto, haz clic en Crear proyecto para continuar.

Configurar las Claves SSH

A continuación, tendrás que añadir claves SSH a GitLab y MyKinsta para que las dos plataformas puedan comunicarse.

Añade la Clave Pública SSH a GitLab

En primer lugar, entra con SSH en el entorno en producción de tu sitio Kinsta y ejecuta el comando cat que aparece a continuación para mostrar tu clave pública SSH.

cat ~/.ssh/id_rsa.pub

Tu clave pública debe ser similar a la que aparece a continuación. Mantén la ventana de la línea de comandos abierta por el momento, y vuelve a GitLab en tu navegador web.

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7zdjwd6UIUJ5t4YnXNi6yhdHgrvIV2xgjvJ3592wd1Hzmnta4dau7yOIxQDU7/oNIr6DIskuIUii5ruGi4YZpIwB/AWGrn/uWb+FXJFiQHMZq9rCFcqtZXT0fyzKiSNkblV4F1RaPQJRvxfSUsSQ3jJU3FX8CF1c4R40CiBKkSHM8uavVIIESzgIHRiWVxkL9F6SKzg8GeTctJaAa3W+q1F1T60OKYmzH3OLdA37ZNmkm1CYWa8SF0JjOszxOnPwhfQ49P5r+rftXRFLz/7hGJ8CnUyzErSiUdUKNknUAB+w4KEZshQSNuiken0+GKqIw83dWWSyjiJJigcyDez2s+3AqDLHPG45NoBEXuBXjPQ9C08hokVyKlbzd/P2qvcnzUT5S6zTuaYOW+50+fiXeYkJlEoYYxoGRVx6FFdFqWyJx5UyaDv7QY3iQH0qct1iq9XGXMhBxIecIAEPUwF8nOp15in8L+5UIFMiNnihztTAXysc+8xvVwbuRlQIeR/E= ansible-generated on fvj-kinstagit

Haz clic en el desplegable del icono de usuario en la esquina superior derecha de GitLab, y haz clic en Preferencias.

En la página Preferencias, haz clic en Claves SSH en la barra lateral.

Haz clic en Añadir nueva clave y pega tu clave pública SSH en el campo Clave. El campo Título debería rellenarse automáticamente con un nombre, pero puedes cambiarlo si quieres. GitLab también te permite establecer una fecha de caducidad para la clave SSH. Esta opción es útil si invalidas y rotas claves SSH como parte del protocolo de seguridad de tu infraestructura. Si no lo haces, no dudes en dejar en blanco el campo Caduca en.

Añade tu clave SSH en GitLab.
Añade tu clave SSH en GitLab.

Después de comprobar la configuración, haz clic en Añadir clave para finalizar el proceso.

Añade la Clave Pública SSH a MyKinsta

Ahora que tu clave pública SSH ha sido añadida a GitLab, tendrás que añadir la misma clave a MyKinsta. Este paso añade tu clave pública SSH al archivo authorized_keys de tu sitio (sólo escribible por root y MyKinsta) y permitirá a GitLab acceder por SSH a tu sitio para desplegar los cambios de código. En MyKinsta, haz clic en tu nombre en la esquina superior derecha y selecciona Configuración de usuario en el menú desplegable.

Configuración de usuario de MyKinsta.
Configuración de usuario de MyKinsta.

Desplázate hacia abajo y haz clic en el botón Añadir clave SSH.

Añadir clave SSH en MyKinsta.
Añadir clave SSH en MyKinsta.

En la ventana modal/pop-up, especifica una etiqueta (nombre) para la clave SSH, pega tu clave pública en el campo de la clave SSH y haz clic en Añadir clave SSH para finalizar el proceso.

Añade tu clave SSH en MyKinsta.
Añade tu clave SSH en MyKinsta.

Añade la Clave Privada SSH a GitLab

A continuación, tendrás que añadir la clave privada SSH del entorno en producción de tu sitio como una variable de entorno en GitLab.

Para encontrar tu clave privada, vuelve a la ventana de la línea de comandos y ejecuta el siguiente comando. Asegúrate de no compartir tu clave privada SSH en ningún lugar fuera de GitLab.

cat ~/.ssh/id_rsa

En GitLab, haz clic en el proyecto que has creado antes. En la barra lateral, pasa por encima de Configuración y haz clic en CI/CD en el menú que aparece.

Configuración de CI/CD del repositorio de GitLab.
Configuración de CI/CD del repositorio de GitLab.

Desplázate hasta la sección Variables, haz clic en el botón Expandir y haz clic en Añadir variable. Utiliza SSH_PRIVATE_KEY para el nombre de la Clave, pega tu clave privada en el campo Valor, y haz clic en el botón Añadir variable para continuar.

Una vez añadida la variable, podrás verla en la configuración de tu repositorio.

Variable de clave privada SSH en GitLab.
Variable de clave privada SSH en GitLab.

Clonar el Repo de GitLab a MyKinsta

Ahora que se han añadido las claves SSH necesarias, puedes clonar tu repositorio de GitLab a tu entorno real de Kinsta. En GitLab, navega hasta tu repositorio, haz clic en el botón azul de Clonar, y haz clic en el icono de copia/clipboard para copiar la dirección del repositorio en Clonar con SSH.

Clonar con SSH en GitLab.
Clonar con SSH en GitLab.

Vuelve a tu ventana de línea de comandos y navega hasta el directorio principal de tu entorno en producción. Si no estás seguro de cómo llegar a tu directorio principal, utiliza el siguiente comando.

cd ~/

Una vez que estés en el directorio principal, ejecuta el comando git clone con la dirección del repositorio que has copiado de GitLab.

git clone [your-repository-url-here]

Tras clonar el repositorio, verás una advertencia que dice «parece que has clonado un repositorio vacío» Esto es de esperar porque el repositorio está vacío en este momento.

Clona tu repositorio de GitLab en tu entorno vivo de Kinsta.
Clona tu repositorio de GitLab en tu entorno vivo de Kinsta.

En Kinsta, nuestra configuración de Nginx sirve el contenido de la carpeta ~/public. Por lo tanto, necesitas eliminar la carpeta actual ~/public y renombrar tu carpeta repo clonada a ~/public. Para ello, ejecuta los dos comandos siguientes.

rm -rf ~/public
mv ~/your-repo-folder-name ~/public

Configurar el Repositorio de GitLab

A continuación, utiliza el siguiente comando para navegar a la carpeta ~/public.

cd ~/public

Ejecuta los dos comandos siguientes para configurar tu repositorio de GitLab. Asegúrate de especificar tu dirección de correo electrónico válida y un nombre de usuario asociado a tu cuenta de GitLab.

git config --global user.email "[email protected]"
git config --global user.name "brian"

Instalar WordPress con WP-CLI

Ahora que el repositorio de GitLab ha sido clonado y configurado en tu entorno en producción de Kinsta, vamos a instalar WordPress. Puedes instalar WordPress manualmente descargándolo de wordpress.org, o puedes instalarlo con WP-CLI. Para este ejemplo, utilizaremos WP-CLI para instalar WordPress con el siguiente comando en la carpeta ~/public.

wp core download

Después de instalar WordPress, tu carpeta ~/public debería tener este aspecto:

Una instalación fresca de WordPress con los archivos y directorios del core de WordPress.
Una instalación fresca de WordPress con los archivos y directorios del core de WordPress.

A continuación, ve a la página de Dominios de tu sitio en MyKinsta y haz clic en el enlace Abrir URL para visitar tu dominio principal.

Abrir enlace URL en MyKinsta.
Abrir enlace URL en MyKinsta.

Te aparecerá el proceso de instalación de WordPress en cinco minutos. Si no estás seguro de cómo configurar WordPress, tenemos una guía en profundidad aquí.

Configura la nueva instalación de WordPress.
Configura la nueva instalación de WordPress.

Una vez instalado WordPress, deberías poder ver tu nuevo sitio de WordPress visitando tu dominio principal.

Una nueva instalación de WordPress.
Una nueva instalación de WordPress.

Configurar el Pipeline CI/CD de GitLab

A continuación, tendrás que configurar un archivo de configuración para indicar a GitLab que inicie los despliegues automáticos una vez que se haya actualizado la rama principal del repositorio. Para ello, asegúrate de que estás en la carpeta ~/public de tu entorno Kinsta live (ejecuta cd ~/public para navegar hasta allí si es necesario) y crea un nuevo archivo llamado .gitlab-ci.yml con el siguiente comando.

touch .gitlab-ci.yml

Una vez creado el archivo, añade el siguiente texto al archivo. Puedes editar el archivo con nano o vim en la línea de comandos o con SFTP y un editor de texto o de código. Si utilizas un cliente SFTP, asegúrate de activar los archivos ocultos para poder ver el archivo .gitlab-ci.yml.

before_script:
    - apt-get update -qq
    - apt-get install -qq git
    # Setup SSH deploy keys
    - 'which ssh-agent || ( apt-get install -qq openssh-client )'
    - eval $(ssh-agent -s)
    - ssh-add <(echo "$SSH_PRIVATE_KEY")
    - mkdir -p ~/.ssh- '[[ -f /.dockerenv ]] && echo -e "Host *ntStrictHostKeyChecking none" > ~/.ssh/config'
    - ssh-keyscan gitlab.com >> ~/.ssh/known_hosts
    - chmod 644 ~/.ssh/known_hosts
deploy_live:
    environment:
        name: Live
        url: your-primary-domain script:
        - ssh user@ip-address -p port-number "cd public-root && git checkout main && git pull origin main && exit"
    only:
        - main

Cambia los parámetros url y script en el bloque deploy_live, sustituyendo los valores en negrita por los datos de tu sitio en MyKinsta.

  • Sustituye tu-dominio-principal por el dominio principal de tu sitio.
  • Sustituye ssh user@ip-address -p port-number por el comando de terminal SSH en MyKinsta (Sitios de WordPress > nombre del sitio > Información > SFTP/SSH).
  • Sustituye public-root por la ruta en MyKinsta (Sitios de WordPress > nombre del sitio > Información > Detalles del entorno).
Ruta pública y detalles SSH en MyKinsta.
Ruta pública y detalles SSH en MyKinsta.

La sección only: - main del archivo hace referencia a la rama del repositorio que activará el proceso CI/CD de GitLab. Con esta configuración, los envíos a la rama principal iniciarán un despliegue en tu entorno en producción de Kinsta. Si quieres especificar otra rama para activar el despliegue, no dudes en cambiar la configuración.

Si quieres implementar una granularidad adicional en la configuración para tener en cuenta un entorno de staging, puedes añadir un bloque adicional en deploy_staging con la URL y los detalles SSH de tu entorno de staging de Kinsta.

deploy_staging:
    environment:
        name: Staging
        url: your-staging-domain script:
        - ssh user@ip-address -p port-number "cd public-root && git checkout main && git pull origin staging && exit"
    only:
        - staging

Fíjate también en la sección only: - staging: esto significa que al enviar a la rama staging se iniciará el proceso CI/CD de GitLab. Puedes ajustar esto como sea necesario para desplegar desde la rama que elijas.

Commint Inicial en GitLab

Ahora que WordPress y el archivo de configuración de GitLab están configurados, vamos a hacer un commit inicial en GitLab. Crearemos una nueva rama llamada v0.1, iniciaremos el seguimiento de los archivos en el repositorio, confirmaremos los cambios y enviaremos los cambios a GitLab en la rama v0.1. Ejecuta los siguientes comandos desde ~/public para activar la confirmación inicial.

git checkout -b v0.1
git add .
git commit -a -m 'Initial Commit'
git push origin v0.1

Si compruebas tu repositorio en GitLab, ahora verás los archivos de tu confirmación inicial.

Confirmación inicial en GitLab.
Confirmación inicial en GitLab.

Configurar el Entorno Staging de Kinsta

El siguiente paso es crear y configurar un entorno de staging en MyKinsta para que tengas un lugar seguro donde probar nuevos plugins, temas y código sin que ello afecte a tu entorno real/de producción.

Crea un nuevo entorno staging en MyKinsta.
Crea un nuevo entorno staging en MyKinsta.

Después de crear el entorno de staging de tu sitio, entra por SSH en el entorno staging en una nueva ventana de línea de comandos (mantén abierta la ventana separada para tu entorno real) y ejecuta el siguiente comando para comprobar si hay cambios en el código.

cd ~/public && git status

Deberías ver un mensaje como el siguiente. Como puedes ver, la rama es la v0.1 creada anteriormente. Además, el archivo wp-config.php ha cambiado. Esto ocurre porque Kinsta añade algunas líneas adicionales a wp-config.php al crear el entorno staging.

Archivos modificados en el entorno staging de Kinsta.
Archivos modificados en el entorno staging de Kinsta.

Confirmar y Desplegar los Cambios en Producción

Por último, vamos a realizar algunos cambios en el entorno de Archivos modificados en el entorno staging de Kinsta. y a enviar una nueva confirmación al entorno activo de Kinsta utilizando GitLab. Ten en cuenta que este método evitará la función Push to Live de Kinsta.

Para este ejemplo, vamos a instalar el plugin Yoast SEO usando WP-CLI con el siguiente comando.

wp plugin install wordpress-seo

Una vez instalado el plugin Yoast SEO, ejecuta los siguientes comandos para hacer un commit y empujar los cambios a la rama v0.1.

git add .
git commit -a -m ‘Installed Yoast SEO plugin.’
git push origin v0.1

Por último, cambiemos a la rama principal, fusionemos la v0.1 con la principal y enviaremos la principal a GitLab con los siguientes comandos. Esto hará que GitLab inicie un proceso de despliegue en tu entorno en producción de Kinsta debido a la configuración de only: - main en el archivo de configuración de GitLab.

git checkout main
git merge v0.1
git push origin main

En GitLab, ve a CI/CD > Trabajos en la barra lateral de tu repositorio, y verás el trabajo en ejecución. Este trabajo es GitLab desplegando el plugin Yoast SEO en tu entorno real de Kinsta.

Trabajo activo en GitLab.
Trabajo activo en GitLab.

Una vez finalizado el trabajo, vuelve a la ventana de la línea de comandos de tu entorno real y ejecuta wp plugin list en esa ventana. Deberías ver wordpress-seo en la lista. Este es el plugin Yoast SEO que se instaló antes en el entorno de staging.

El plugin Yoast SEO se desplegó a través de GitLab.
El plugin Yoast SEO se desplegó a través de GitLab.

Si eres un desarrollador de temas o de plugins que trabaja con sitios Kinsta, la configuración de despliegues automáticos a través de GitLab CI/CD puede ayudarte a acelerar tu flujo de trabajo al tiempo que te proporciona el control de versiones.

¿Este artículo te ha resultado útil?