Quinto articolo della serie sui fondamenti dello sviluppo di plugin WordPress. Abbiamo un repository Git, Composer e un ambiente locale con wp-env. Ora automatizziamo i controlli di qualità con GitHub Actions.
Finora ogni verifica sul tuo codice è stata manuale: esegui un comando, guardi il risultato, vai avanti. Funziona, ma è facile dimenticarsi un controllo — specialmente quando il progetto cresce. La Continuous Integration (CI) risolve questo problema: ogni push e ogni Pull Request attivano controlli automatici, senza che tu debba fare nulla.
Alla fine di questo articolo avrai un workflow GitHub Actions funzionante che verifica il tuo plugin a ogni modifica.
Cos’è GitHub Actions
GitHub Actions è la piattaforma CI/CD integrata in GitHub. Non servono servizi esterni né configurazioni complicate — tutto vive nel tuo repository.
I workflow sono file YAML nella cartella .github/workflows/. Si attivano in risposta a eventi come push, Pull Request o anche secondo una pianificazione. Per i repository pubblici, i minuti di esecuzione sono illimitati.
Qualche termine che incontrerai: un workflow contiene uno o più job, ogni job è composto da step, e il tutto gira su un runner — una macchina virtuale messa a disposizione da GitHub.
Il primo workflow
Creiamo il file .github/workflows/ci.yml:
yaml
name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
checks:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
tools: composer
- name: Install dependencies
run: composer install --no-interaction --prefer-dist
- name: Validate composer.json
run: composer validate --strict
Vediamolo passo per passo. Il workflow si attiva su ogni push e Pull Request verso main. Gira su un runner Ubuntu fornito da GitHub. I quattro step fanno esattamente quello che faresti in locale: scaricano il codice, configurano PHP, installano le dipendenze Composer e verificano che composer.json sia valido.
Anche questo workflow minimale ha già un valore: cattura configurazioni Composer rotte e dipendenze mancanti prima che diventino un problema.
Aggiungere controlli di qualità
Il workflow sopra è uno scheletro. Nei prossimi articoli aggiungeremo i singoli strumenti — ma prepariamo già la struttura.
Prima di tutto, aggiungi una sezione scripts al tuo composer.json:
{
"scripts": {
"phpcs": "phpcs",
"phpstan": "phpstan analyse",
"test": "phpunit"
}
}
Questi script Composer sono il collante tra sviluppo locale e CI: gli stessi comandi funzionano ovunque. Nel workflow, aggiungere un controllo diventa una sola riga:
yaml
- name: Check coding standards
run: composer run phpcs
- name: Run static analysis
run: composer run phpstan
- name: Run tests
run: composer run test
Non preoccuparti se questi strumenti non sono ancora installati — li configureremo uno per uno nei prossimi articoli. L’importante è che la struttura sia pronta.
Matrice PHP e WordPress
Un plugin dovrebbe funzionare su più versioni di PHP. Con GitHub Actions puoi testarlo automaticamente grazie alla strategy matrix:
yaml
jobs:
checks:
runs-on: ubuntu-latest
strategy:
matrix:
php-version: ['8.1', '8.2', '8.3']
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-version }}
tools: composer
- name: Install dependencies
run: composer install --no-interaction --prefer-dist
- name: Validate composer.json
run: composer validate --strict
Con queste poche righe, il workflow gira tre volte in parallelo — una per ogni versione di PHP. Puoi estendere la matrice anche con diverse versioni di WordPress, ad esempio variando la configurazione di wp-env. Per iniziare, concentrati sulle versioni PHP: è lì che si nascondono le incompatibilità più comuni.
Pull Request come punto di controllo
Ricordi il workflow con i branch dall’articolo su Git? Ora il cerchio si chiude. Quando apri una Pull Request, GitHub esegue automaticamente il workflow e mostra il risultato direttamente sulla PR: verde se tutto passa, rosso se qualcosa fallisce.
Puoi anche attivare le branch protection rules nelle impostazioni del repository per impedire il merge finché i controlli non passano. Questo trasforma ogni PR in un checkpoint di qualità automatico: branch → PR → controlli automatici → merge con fiducia.
Prossimi passi
Ora hai una pipeline CI che gira a ogni push e Pull Request, con una matrice che copre più versioni di PHP. Il workflow è ancora uno scheletro — ma è progettato per crescere.
Nel prossimo articolo configureremo PHPCS con gli standard WordPress (WPCS) per verificare automaticamente lo stile del codice. Aggiungeremo lo strumento via Composer e il relativo step al workflow CI che abbiamo creato oggi.
Prossimo articolo: Coding Standards con PHPCS e WPCS →
