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 Proyecto GitLab
Para empezar, dirígete a GitLab y haz clic en Crear un proyecto para crear un nuevo repositorio para tu sitio Kinsta.
Selecciona la opción Proyecto en blanco, y rellena los campos Nombre del proyecto y Slug del proyecto.
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.
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.
Desplázate hacia abajo y haz clic en el botón Añadir clave SSH.
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 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.
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.
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.
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.
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:
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.
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í.
Una vez instalado WordPress, deberías poder ver tu nuevo sitio de WordPress visitando tu dominio principal.
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).
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.
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.
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.
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.
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.
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.