GitHub CI/CD
Para usuarios avanzados, GitHub CI/CD (Integración Continua/Entrega Continua o Despliegue Continuo) puede desplegar automáticamente cambios de código en tu sitio de Kinsta cada vez que se envíe un nuevo commit a la rama designada. Esta configuración permite el despliegue de código sin problemas desde tu entorno local a través de SSH y GitHub actions, permitiendo actualizaciones continuas en tu sitio.
Para seguir estos pasos, debes tener un sitio existente alojado en Kinsta y una cuenta de GitHub.
1. Descarga una copia de seguridad de tu sitio
Puedes descargar una copia de seguridad de tu sitio para configurar el repositorio de GitHub y trabajar en él localmente. Alternativamente, puedes utilizar DevKinsta para extraer tu sitio del servidor Kinsta y trabajar en él localmente.
En MyKinsta, ve a Sitios WordPress > nombre del sitio > Copias de seguridad > Descargar > Crear copia de seguridad ahora.
Cuando tu copia de seguridad esté lista, haz clic en Descargar, guárdala en tu ordenador local y descomprime los archivos en una carpeta.
2. Configura el repositorio de GitHub
Abre la carpeta que contiene los archivos de tu sitio en tu editor de código preferido. Para evitar subir archivos innecesarios del core de WordPress, archivos multimedia o información sensible, añade un archivo .gitignore al directorio raíz de tu proyecto. Puedes utilizar una plantilla .gitignore estándar de WordPress, copiar su contenido y guardarlo para asegurarte de que sólo se rastrean los archivos esenciales.
Crea un repositorio GitHub y envía los archivos de tu sitio a GitHub.
3. Configurar secretos de GitHub para Kinsta
Para automatizar los despliegues desde GitHub a Kinsta, necesitas los detalles clave de SSH, incluyendo tu nombre de usuario, contraseña, puerto y dirección IP. Como son sensibles, debes almacenarlos de forma segura como Secretos de GitHub.
Dentro de GitHub ve a tu repositorio, haz clic en Configuración > Secretos y variables > Acciones > Nuevo secreto de repositorio.
Añade los siguientes secretos utilizando los detalles SFTP/SSH de la página de Información de tu sitio en MyKinsta:
Nombre del secreto | Secreto |
KINSTA_SERVIDOR_IP | Host, por ejemplo 12.34.56.78 |
NOMBRE_USUARIO_KINSTA | Nombre de usuario p.ej. kinstahelp |
CONTRASEÑA | Contraseña |
PUERTO | Puerto, por ejemplo 12345 |
4. Crear un repositorio Git vacío en Kinsta
Un repositorio Git vacío es un destino remoto al que GitHub enviará tu código. Este repositorio es un repositorio central diseñado para recibir y almacenar tu código.
Abre un nuevo terminal y accede mediante SSH a tu servidor Kinsta utilizando el comando terminal SSH desde la página de Información de tu sitio en MyKinsta.
Introduce la contraseña de tu sitio desde la página de Información en MyKinsta, luego copia la Ruta desde Detalles del entorno.
Navega hasta la carpeta privada de tu servidor sustituyendo public
por private
y your-site
por el nombre de la carpeta de la ruta de tu sitio:
cd /www/your-site/private
Si la carpeta privada no existe, utiliza el siguiente comando para crearla:
mkdir -p /www/your-site/private
Crea el repositorio Git vacío con el siguiente comando, sustituyendo your-repo.git
por el nombre de tu repositorio GitHub:
git init --bare your-repo.git
5. Configura el hook post-recepción
El hook post-receive
despliega automáticamente el código en tu sitio en producción cada vez que se envían nuevos cambios a la rama main
de GitHub.
Navega hasta el directorio hooks en tu repositorio Git vacío, sustituyendo your-site
por el nombre de la carpeta de tu sitio y your-repo
por el nombre de tu repositorio GitHub:
cd /www/your-site/private/your-repo.git/hooks
Crea y edita el hook post-receive
:
nano post-receive
Añade el siguiente script al archivo post-receive
. Esto comprueba el último código en el directorio public
de tu sitio activo:
#!/bin/bash
TARGET="/www/your-site/public"
GIT_DIR="/www/your-site/private/your-repo.git"
while read oldrev newrev ref
do
BRANCH=$(git rev-parse --symbolic --abbrev-ref $ref)
if [[ $BRANCH == "main" ]];
then
echo "Ref $ref received. Deploying ${BRANCH} branch to production..."
git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f
else
echo "Ref $ref received. Doing nothing: only the main branch may be deployed on this server."
fi
done
El script despliega el código sólo de la rama main
. La variable TARGET
apunta al directorio donde se encuentran los archivos de tu sitio activo y la variable GIT_DIR
apunta al repositorio Git vacío.
Guarda y sal del archivo pulsando Ctrl + X, luego Y y Enter.
Haz que el script sea ejecutable para que se ejecute automáticamente después de cada envío:
chmod +x post-receive
6. Genera y añade un token de acceso personal (PAT) de GitHub
Cuando envíes código a GitHub a través de SSH, debes utilizar un PAT para autenticarte. Este token permite a GitHub aceptar tus envíos de forma segura.
Para generar el PAT:
- Ve a tu cuenta de GitHub, haz clic en tu foto de perfil y selecciona Settings.
- Haz clic en Developer settings > Personal access tokens > Tokens (classic).
- Haz clic en Generate new token > Generate new token (classic), y dentro de Note dale un nombre (por ejemplo, «Kinsta Deployment Token»).
- En Select scopes, marca repo (para un control total de los repositorios privados).
- Haz clic en Generate token, y copia el token. (No podrás volver a verlo)
Ejecuta el siguiente comando para añadir tu repositorio de GitHub como remoto, sustituyendo your-username
por tu nombre de usuario de GitHub, YOUR_PERSONAL_ACCESS_TOKEN
por el PAT que acabas de generar y your-repo
por el nombre de tu repositorio de GitHub:
git remote add origin https://your-username:[email protected]/your-username/your-repo.git
7. Crea el flujo de trabajo GitHub Actions
Este flujo de trabajo despliega los cambios en Kinsta automáticamente cada vez que haces un envío a la rama main
. Para automatizar el despliegue, necesitas definir cómo se realizará el despliegue utilizando un archivo YAML.
En tu repositorio de GitHub, crea un nuevo directorio llamado .github/workflows
dentro de este directorio, crea un nuevo archivo llamado deploy.yml
y añade el siguiente contenido al archivo, sustituyendo your-site
por el nombre de la carpeta de la ruta de tu sitio Kinsta y your-repo
por el nombre de tu repositorio de GitHub:
name: Deploy to Kinsta
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v2
- name: Deploy to Kinsta via SSH
uses: appleboy/[email protected]
with:
host: ${{ secrets.KINSTA_SERVER_IP }}
username: ${{ secrets.KINSTA_USERNAME }}
password: ${{ secrets.PASSWORD }}
port: ${{ secrets.PORT }}
script: |
cd /www/your-site/private/your-repo.git # Navigate to the bare Git repository on Kinsta
git --work-tree=/www/your-site/public --git-dir=/www/your-site/private/your-repo.git fetch origin main # Fetch the latest changes from GitHub
git --work-tree=/www/your-site/public --git-dir=/www/your-site/private/your-repo.git reset --hard origin/main # Deploy changes to the live site
Este flujo de trabajo hace lo siguiente
- Trigger: El flujo de trabajo se activa cada vez que se envía código a la rama
main
de tu repositorio de GitHub. - Job: El flujo de trabajo contiene un
job
llamadodeploy
, que se ejecuta en una máquina virtual Ubuntu (ubuntu-latest
). - Checkout code: Utiliza la acción
actions/checkout@v2
para extraer el código más reciente de tu repositorio de GitHub. - Deploy to Kinsta via SSH: La acción
appleboy/ssh-action
se utiliza para conectarse de forma segura a tu servidor Kinsta mediante SSH utilizando los secretos que configuraste (IP del servidor, nombre de usuario, contraseña y puerto). El script de este paso ejecuta los siguientes comandos:cd /www/your-site/private/your-repo.git
: Navega al repositorio Git vacío en tu servidor Kinsta.git fetch origin main
: Obtiene los últimos cambios de la ramamain
en tu repositorio GitHub.git reset --hard origin/main
: Aplica esos cambios actualizando el sitio en producción en el directoriopublic
donde está alojado WordPress.
8. Prueba el flujo de trabajo
Una vez que hayas configurado el flujo de trabajo, puedes probarlo introduciendo un pequeño cambio en la rama main
de tu repositorio de GitHub. Cada vez que envíes un cambio, las GitHub Actions activarán automáticamente el despliegue, extrayendo la última versión de tu código y desplegándolo en tu sitio en producción en Kinsta.
Puedes controlar el estado de tu despliegue accediendo a la pestaña Actions de tu repositorio de GitHub. Si el flujo de trabajo encuentra errores, verás registros detallados que te ayudarán a solucionarlos.