0Pricing
PHP Academy · Lección

Despliegue con GitHub Actions

Automatice los pasos de compilación, pruebas y despliegue mediante SSH en un flujo de GitHub Actions.

Despliegue con GitHub Actions es una lección gratuita de PHP Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de PHP Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de PHP Academy incluye 4 lecciones en total.

¿Qué es GitHub Actions?

GitHub Actions es una plataforma de CI/CD integrada en GitHub. Los workflows definidos en .github/workflows/*.yml se ejecutan automáticamente al producirse eventos de push, pull request o programación.

Estructura básica de un workflow

Un workflow consta de uno o más jobs, cada uno con sus propios pasos.

# .github/workflows/deploy.yml
name: Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Set up PHP
        uses: shivammathur/setup-php@v2
        with:
          php-version: "8.3"
      - name: Install dependencies
        run: composer install --no-dev --optimize-autoloader
      - name: Run tests
        run: vendor/bin/phpunit

Paso de implementación mediante SSH

Implemente la aplicación en un servidor mediante SSH después de que las pruebas se completen correctamente.

      - name: Deploy to server
        uses: appleboy/ssh-action@v1
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            cd /srv/myapp
            git pull origin main
            composer install --no-dev --optimize-autoloader
            php artisan migrate --force
            php artisan config:cache
            php artisan route:cache
            sudo systemctl reload php8.3-fpm

Secretos de GitHub

Almacene los valores confidenciales (claves SSH, tokens de API y contraseñas de bases de datos) como secretos cifrados del repositorio en Settings → Secrets and Variables.

Almacenamiento en caché de dependencias

Almacene en caché los paquetes de Composer entre ejecuciones para acelerar los workflows.

      - name: Cache Composer packages
        uses: actions/cache@v4
        with:
          path: vendor
          key: ${{ runner.os }}-composer-${{ hashFiles("composer.lock") }}

Ejecución de pruebas

Incluya un contenedor de servicio MySQL o PostgreSQL para las pruebas de integración.

services:
  mysql:
    image: mysql:8
    env:
      MYSQL_DATABASE: test
      MYSQL_ROOT_PASSWORD: secret
    ports: [3306:3306]

Variables de entorno en Actions

Pase los secretos como variables de entorno a los pasos del workflow.

      - name: Run tests
        env:
          DB_HOST: 127.0.0.1
          DB_DATABASE: test
          DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
        run: vendor/bin/phpunit

Puertas de calidad del código

Bloquee las implementaciones si las comprobaciones de calidad del código fallan.

      - name: PHPStan static analysis
        run: vendor/bin/phpstan analyse src --level=6
      - name: PHP_CodeSniffer
        run: vendor/bin/phpcs src --standard=PSR12

Pruebas matriciales

Realice pruebas simultáneamente con varias versiones de PHP.

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        php: ["8.2", "8.3"]
    steps:
      - uses: shivammathur/setup-php@v2
        with:
          php-version: ${{ matrix.php }}

Estrategias de implementación

Enfoques habituales: git pull directo (sencillo), rsync (sincronización rápida de archivos), blue-green (sin tiempo de inactividad) y Deployer PHP (automatización sin tiempo de inactividad). Elija según la tolerancia al tiempo de inactividad.

Resumen

Defina los workflows en .github/workflows/*.yml. Ejecute las pruebas en cada push e implemente al fusionar cambios en la rama principal. Almacene las dependencias en caché, guarde los secretos en GitHub Secrets y añada puertas de calidad antes de la implementación.

Comprobación rápida

¿Dónde se almacenan los valores confidenciales, como las claves SSH, para GitHub Actions?

Preguntas frecuentes

¿La lección «Despliegue con GitHub Actions» es gratis?

Sí — el texto completo de «Despliegue con GitHub Actions» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de PHP Academy, actualiza a CoddyKit PRO. El curso de PHP Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Despliegue con GitHub Actions»?

Automatice los pasos de compilación, pruebas y despliegue mediante SSH en un flujo de GitHub Actions. Practicas PHP Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar PHP Academy?

No se requiere experiencia previa. PHP Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Despliegue con GitHub Actions»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de PHP Academy?

Sí. Cada lección de PHP Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Configuración de Nginx y PHP-FPM
  2. Variables de entorno y archivos .env
  3. Despliegue con GitHub Actions
  4. Contenerización de una aplicación PHP
← Volver a PHP Academy