Despliegue del Backend de PHP + BBDD

3. CI/CD

3.1. Secrets GitHub

ssh-keygen -t ed25519 -C "github-actions"

ssh-copy-id -i vps.pub root@217.154.179.196

ssh -i vps root@217.154.179.196

Ahora subimos todo esto a los secretos

VPS_HOST → IP
VPS_USER → usuario (root)
VPS_SSH_KEY → clave privada

Miramos que el .gitignore no haya nada, en este caso tenía el .github

Creamos los dos directorios y el archivo

deploy.yml

name: Deploy PHP to VPS

on:
  push:
    branches:
      - main

jobs:
  ci:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: Setup PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: '8.1'

      - name: Validar sintaxis PHP
        run: |
          find . -type f -name "*.php" -print0 | xargs -0 -n1 php -l

  deploy:
    needs: ci
    runs-on: ubuntu-latest

    steps:
      - name: Checkout
        uses: actions/checkout@v4

      - name: SSH Agent
        uses: webfactory/ssh-agent@v0.9.0
        with:
          ssh-private-key: ${{ secrets.VPS_SSH_KEY }}

      - name: Añadir VPS a known_hosts
        run: |
          mkdir -p ~/.ssh
          ssh-keyscan -H ${{ secrets.VPS_HOST }} >> ~/.ssh/known_hosts

      - name: Deploy (git pull)
        run: |
          ssh ${{ secrets.VPS_USER }}@${{ secrets.VPS_HOST }} "
            cd /var/www/html/backend002 &&
            git pull origin main
          "

Podemos hacer cambios y veremos el workflow funcionado