Testing SSH conection from Github Action (10) #116
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Virtual Dojo Deploy | |
on: | |
push: | |
branches: [ main ] | |
jobs: | |
build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v2 | |
- name: Set up Node.js | |
uses: actions/setup-node@v2 | |
with: | |
node-version: '22' # O la versión que uses | |
- name: Install dependencies for frontend | |
run: | | |
npm run install:frontend | |
- name: Create frontend .env file | |
env: | |
VITE_API_URL: ${{ secrets.VITE_API_URL }} | |
VITE_SERVICE_USR: ${{ secrets.VITE_SERVICE_USR }} | |
VITE_SERVICE_PASS: ${{ secrets.VITE_SERVICE_PASS }} | |
run: | | |
echo "VITE_API_URL=${VITE_API_URL}" > frontend/.env | |
echo "VITE_SERVICE_USR=${VITE_SERVICE_USR}" >> frontend/.env | |
echo "VITE_SERVICE_PASS=${VITE_SERVICE_PASS}" >> frontend/.env | |
- name: Build frontend | |
run: | | |
npm run build:frontend | |
- name: Install dependencies for backend | |
run: | | |
npm run install:backend | |
- name: Install sshpass | |
run: sudo apt-get install -y sshpass | |
- name: Deploy to VPS (Frontend) | |
env: | |
SSH_HOST: ${{ secrets.VPS_SSH_HOST }} | |
SSH_USERNAME: ${{ secrets.VPS_SSH_USERNAME }} | |
SSH_PASSWORD: ${{ secrets.VPS_SSH_PASSWORD }} | |
run: | | |
# Crear directorio en el VPS para el frontend | |
sshpass -p "${SSH_PASSWORD}" ssh -tt -o StrictHostKeyChecking=no "${SSH_USERNAME}@${SSH_HOST}" 'mkdir -p /var/www/html/virtual-dojo/frontend' | |
# Copiar el build del frontend al VPS | |
echo "Desplegando el frontend" | |
rsync -avz --delete -e "sshpass -p '${SSH_PASSWORD}' ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=120" frontend/dist/ "${SSH_USERNAME}@${SSH_HOST}:/var/www/html/virtual-dojo/frontend" | |
rsync -avz -e "sshpass -p '${SSH_PASSWORD}' ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=120" frontend/.env "${SSH_USERNAME}@${SSH_HOST}:/var/www/html/virtual-dojo/frontend/.env" | |
- name: Deploy to VPS (Backend) | |
env: | |
SSH_HOST: ${{ secrets.VPS_SSH_HOST }} | |
SSH_USERNAME: ${{ secrets.VPS_SSH_USERNAME }} | |
SSH_PASSWORD: ${{ secrets.VPS_SSH_PASSWORD }} | |
run: | | |
# Crear directorio en el VPS para el backend | |
sshpass -p "${SSH_PASSWORD}" ssh -tt -o StrictHostKeyChecking=no "${SSH_USERNAME}@${SSH_HOST}" 'mkdir -p /var/www/html/virtual-dojo/backend' | |
# Copiar el backend al VPS | |
echo "Desplegando el backend" | |
rsync -avz --delete -e "sshpass -p '${SSH_PASSWORD}' ssh -o StrictHostKeyChecking=no -o ServerAliveInterval=120" backend/ "${SSH_USERNAME}@${SSH_HOST}:/var/www/html/virtual-dojo/backend" | |
# Crear el archivo .env para el backend en el VPS | |
sshpass -p "${SSH_PASSWORD}" ssh -tt -o StrictHostKeyChecking=no "${SSH_USERNAME}@${SSH_HOST}" <<-EOF | |
echo "PORT=${{ secrets.PORT }}" > /var/www/html/virtual-dojo/backend/.env | |
echo "DATA_BASE_URL=${{ secrets.DATA_BASE_URL }}" >> /var/www/html/virtual-dojo/backend/.env | |
echo "FRONTEND_URL=${{ secrets.FRONTEND_URL }}" >> /var/www/html/virtual-dojo/backend/.env | |
echo "STRIPE_SECRET_KEY=${{ secrets.STRIPE_SECRET_KEY }}" >> /var/www/html/virtual-dojo/backend/.env | |
echo "EMAIL_HOST=${{ secrets.EMAIL_HOST }}" >> /var/www/html/virtual-dojo/backend/.env | |
echo "EMAIL_USER=${{ secrets.EMAIL_USER }}" >> /var/www/html/virtual-dojo/backend/.env | |
echo "EMAIL_PASS=${{ secrets.EMAIL_PASS }}" >> /var/www/html/virtual-dojo/backend/.env | |
echo "API_DOMAIN=${{ secrets.API_DOMAIN }}" >> /var/www/html/virtual-dojo/backend/.env | |
echo "CLOUDINARY_CLOUD_NAME=${{ secrets.CLOUDINARY_CLOUD_NAME }}" >> /var/www/html/virtual-dojo/backend/.env | |
echo "CLOUDINARY_CLOUD_API_KEY=${{ secrets.CLOUDINARY_CLOUD_API_KEY }}" >> /var/www/html/virtual-dojo/backend/.env | |
echo "CLOUDINARY_CLOUD_API_SECRET=${{ secrets.CLOUDINARY_CLOUD_API_SECRET }}" >> /var/www/html/virtual-dojo/backend/.env | |
EOF | |
- name: Deploy to VPS (Restarting Backend) | |
env: | |
SSH_HOST: ${{ secrets.VPS_SSH_HOST }} | |
SSH_USERNAME: ${{ secrets.VPS_SSH_USERNAME }} | |
SSH_PASSWORD: ${{ secrets.VPS_SSH_PASSWORD }} | |
run: | | |
# Reiniciar el backend | |
echo "Reiniciando el backend" | |
sshpass -p "${SSH_PASSWORD}" ssh -tt -o StrictHostKeyChecking=no "${SSH_USERNAME}@${SSH_HOST}" <<-EOF | |
cd /var/www/html/virtual-dojo/backend | |
npm install pm2 -g | |
npm install --only=prod | |
pm2 restart all || pm2 start server.js --name virtual-dojo --no-daemon > /dev/null 2>&1 & | |
sleep 5 | |
exit 0 | |
EOF |