Despliegue Automático a un VPS usando GitHub Actions
Guía para configurar GitHub Actions para desplegar código automáticamente a un VPS.
github actions vps ci/cd
19-10-2024
Introducción
¿Qué es GitHub Actions?
GitHub Actions es un servicio de CI/CD (Integración Continua/Despliegue Continuo) que te permite automatizar tareas en tu repositorio de GitHub. Puedes crear flujos de trabajo personalizados para compilar, probar y desplegar tu código de forma automática.
En esta guía, aprenderás cómo configurar GitHub Actions para desplegar automáticamente tu código a un VPS. Esto es útil para automatizar el proceso de despliegue y asegurar que tu aplicación esté siempre actualizada.
Requisitos previos
- Una cuenta de GitHub.
- Un repositorio de GitHub con el código que deseas desplegar.
- Un VPS con acceso SSH.
- Claves SSH configuradas para acceso sin contraseña al VPS.
Configuración de GitHub Actions
Primero, crea un archivo de flujo de trabajo en .github/workflows/deploy.yml
en tu repositorio de GitHub:
name: Deploy to VPS
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Node.js
uses: actions/setup-node@v4
with:
node-version: "20" # O la versión que uses
- name: Install dependencies
run: npm install
- name: Build the project
run: npm run build
- name: Copy files to VPS
uses: appleboy/scp-action@master
with:
host: ${{ secrets.VPS_HOST }}
key: ${{ secrets.VPS_SSH_KEY }}
username: ${{ secrets.VPS_USER }}
source: "dist/"
target: ${{ secrets.VPS_TARGET_DIR }}
strip_components: 1
- name: Restart Nginx
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.VPS_HOST }}
key: ${{ secrets.VPS_SSH_KEY }}
username: ${{ secrets.VPS_USER }}
script: "sudo systemctl restart nginx"
Este flujo de trabajo se activará en cada push
a la rama main
. Realiza las siguientes acciones:
- Checkout code: Clona el repositorio en el runner de GitHub Actions.
- Set up Node.js: Configura la versión de Node.js.
- Install dependencies: Instala las dependencias del proyecto.
- Build the project: Compila el proyecto (si es necesario).
- Copy files to VPS: Copia los archivos al VPS usando SCP.
- Restart Nginx: Reinicia Nginx para aplicar los cambios.
- Nota: Asegúrate de configurar las variables de entorno en la configuración de tu repositorio de GitHub para
VPS_HOST
,VPS_SSH_KEY
,VPS_USER
yVPS_TARGET_DIR
. - Nota: Asegúrate de que el directorio de destino en el VPS exista y tenga los permisos adecuados.
- Nota: Asegúrate de que el usuario especificado en
VPS_USER
tenga permisos para reiniciar Nginx. - Nota: Puedes personalizar este flujo de trabajo según tus necesidades.
- Nota: Asegúrate de que las claves SSH estén configuradas correctamente en tu VPS.