0Pricing
PHP Academy · Lezione

Deploy con GitHub Actions

Automatizzare i passaggi di build, test e deploy tramite SSH in un workflow GitHub Actions.

Deploy con GitHub Actions è una lezione PHP Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento PHP Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso PHP Academy include 4 lezioni in totale.

Che cos'è GitHub Actions?

GitHub Actions è una piattaforma CI/CD integrata in GitHub. I workflow definiti in .github/workflows/*.yml vengono eseguiti automaticamente in seguito a eventi di push, pull request o pianificati.

Struttura di base di un workflow

Un workflow è composto da uno o più job, ciascuno costituito da diversi passaggi.

# .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

Passaggio di distribuzione tramite SSH

Eseguite la distribuzione su un server tramite SSH dopo il superamento dei test.

      - 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

Segreti GitHub

Memorizzate i valori sensibili (chiavi SSH, token API, password del database) come segreti crittografati del repository in Impostazioni → Segreti e variabili.

Memorizzazione nella cache delle dipendenze

Memorizzate nella cache i pacchetti Composer tra un'esecuzione e l'altra per velocizzare i workflow.

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

Esecuzione dei test

Includete un container di servizio MySQL o PostgreSQL per i test di integrazione.

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

Variabili d'ambiente in Actions

Passate i segreti come variabili d'ambiente ai passaggi del workflow.

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

Controlli di qualità del codice

Bloccate le distribuzioni se i controlli di qualità del codice falliscono.

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

Test tramite matrice

Eseguite i test contemporaneamente su più versioni di 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 }}

Strategie di distribuzione

Approcci comuni: git pull diretto (semplice), rsync (sincronizzazione rapida dei file), blue-green (nessun tempo di inattività), Deployer PHP (nessun tempo di inattività automatizzato). Scegliete in base alla tolleranza ai tempi di inattività.

Riepilogo

Definite i workflow in .github/workflows/*.yml. Eseguite i test a ogni push e la distribuzione sui merge del branch principale. Memorizzate le dipendenze nella cache, conservate i segreti in GitHub Secrets e aggiungete controlli di qualità prima della distribuzione.

Verifica rapida

Dove vengono memorizzati i valori sensibili, come le chiavi SSH, per GitHub Actions?

Domande Frequenti

La lezione «Deploy con GitHub Actions» è gratuita?

Sì — il testo completo di «Deploy con GitHub Actions» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso PHP Academy, passa a CoddyKit PRO. Il corso PHP Academy include 4 lezioni in totale.

Cosa imparerò in «Deploy con GitHub Actions»?

Automatizzare i passaggi di build, test e deploy tramite SSH in un workflow GitHub Actions. Eserciti PHP Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare PHP Academy?

Non è richiesta alcuna esperienza precedente. PHP Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Deploy con GitHub Actions»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione PHP Academy?

Sì. Ogni lezione PHP Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Configurazione di Nginx e PHP-FPM
  2. Variabili d'ambiente e file .env
  3. Deploy con GitHub Actions
  4. Containerizzazione di un'applicazione PHP
← Torna a PHP Academy