PHP: Distribuire con GitHub Actions
Come distribuire il tuo codice PHP utilizzando GitHub Actions
👋 Benvenuti nella documentazione di Stackhero!
Stackhero offre una soluzione PHP cloud pronta all'uso che fornisce una serie di vantaggi, tra cui:
- Distribuisci la tua applicazione in pochi secondi con un semplice
git push.- Usa il tuo nome di dominio e beneficia della configurazione automatica dei certificati HTTPS per una sicurezza migliorata.
- Goditi la tranquillità con backup automatici, aggiornamenti con un clic, e una tariffazione semplice, trasparente e prevedibile.
- Ottieni prestazioni ottimali e una sicurezza robusta grazie a una VM privata e dedicata.
Risparmia tempo e semplificati la vita: ci vogliono solo 5 minuti per provare la soluzione di PHP cloud hosting di Stackhero!
GitHub Actions semplifica l'automazione di attività come la distribuzione del tuo codice PHP su server di produzione. In questa guida, ti verrà mostrato come distribuire in modo sicuro la tua applicazione PHP su ambienti di staging e produzione utilizzando GitHub Actions.
L'approccio prevede il mantenimento di due branch, staging e production. Il codice inviato a questi branch viene automaticamente distribuito sull'istanza corrispondente di Stackhero.
Avere un'istanza di staging non è obbligatorio. Tuttavia, l'uso di entrambe le istanze di staging e produzione è fortemente raccomandato per garantire distribuzioni fluide e maggiore fiducia durante la distribuzione in produzione. Questa pratica è in linea con gli standard del settore e aiuta a prevenire potenziali problemi.
Per seguire questa guida, è necessario un account GitHub che ospiti il tuo repository di codice PHP.
Creazione dei servizi PHP
Inizia accedendo alla tua dashboard di Stackhero e creando due servizi PHP: uno per lo staging e uno per la produzione. Per mantenere l'organizzazione, rinomina questi servizi in "Production" e "Staging".
Se non hai un account Stackhero, puoi crearne uno gratuitamente in soli due minuti e configurare i tuoi servizi cloud PHP con pochi clic.
Esempio di servizi di produzione e staging
Configurare le chiavi SSH
Le chiavi SSH sono essenziali per consentire a GitHub Actions di connettersi in modo sicuro al tuo servizio PHP per la distribuzione. In questa guida, creerai una coppia di chiavi SSH unica dedicata a questo scopo.
Generare le chiavi SSH
Puoi generare nuove chiavi SSH eseguendo il seguente comando sul tuo computer:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Impostare la chiave pubblica
Recupera la chiave pubblica eseguendo:
cat /tmp/ssh_key.pub
Successivamente, vai alla tua dashboard di Stackhero. Seleziona il tuo servizio PHP "Production" e clicca su "Configure". Segui quindi questi passaggi:
- Sotto
SSH public keys, clicca su "Add a public key". - Imposta la
Descriptionsu "GitHub Action". - Incolla la chiave pubblica recuperata nel campo
Key.
Ottieni le impostazioni del servizio
Impostare la chiave privata
Ora, apri il tuo progetto GitHub e segui questi passaggi per configurare la chiave privata per la distribuzione:
-
Clicca su
Settings, poiEnvironmentse selezionaNew environment.
Configurazione degli ambienti GitHub -
Nel campo
Name, inserisci "production" e conferma.
Impostazione dell'ambiente -
Clicca sul pulsante
No restrictione selezionaSelected branches and tags.
Impostazione delle restrizioni dell'ambiente -
Clicca su
Add deployment branch or tag rule, inserisci "production" nel campoName pattern, e clicca suAdd rule.
Impostazione del branch dell'ambiente
Impostazione del branch dell'ambiente -
Sotto
Environment secrets, clicca suAdd secret.
Aggiungi un segreto
Recupera la chiave privata che hai generato in precedenza eseguendo:
cat /tmp/ssh_key
Nelle impostazioni dell'ambiente GitHub:
-
In
Name, inserisciSTACKHERO_SSH_PRIVATE_KEYe incolla la tua chiave privata nel campoValue.
Impostazione del segreto della chiave privata SSH -
Nella sezione
Environment variables, clicca suAdd variable.
Impostazione delle variabili -
In
Name, inserisciSTACKHERO_ENDPOINTe incolla l'endpoint del servizio PHP nel campoValue. Puoi trovare questo endpoint nella tua dashboard di Stackhero.
Impostazione della variabile dell'endpoint
Se hai personalizzato il nome di dominio del tuo servizio, usa la versione personalizzata invece di xxxxxx.stackhero-network.com.
Eliminare le chiavi generate
Per motivi di sicurezza, ora dovresti rimuovere le chiavi SSH generate dal tuo computer:
rm /tmp/ssh_key /tmp/ssh_key.pub
Configurare il workflow di GitHub Actions
Successivamente, configurerai un workflow di GitHub Actions per automatizzare le tue distribuzioni. Nel tuo repository Git, crea una directory chiamata .github/workflows e aggiungi un file chiamato deploy-to-stackhero.yml con il seguente contenuto:
# File: .github/workflows/deploy-to-stackhero.yml
name: Deploy to Stackhero
run-name: Deploy branch "${{ github.ref_name }}" to Stackhero
on:
push:
# Elenco dei branch che attiveranno l'azione di distribuzione a seguito di un push git
# Non dimenticare di creare un ambiente corrispondente in GitHub (sotto "Settings" -> "Environments") per ogni branch
# Quindi aggiungi il segreto "STACKHERO_SSH_PRIVATE_KEY" e la variabile "STACKHERO_ENDPOINT" in quell'ambiente
branches: [ "production", "staging" ]
jobs:
Deploy:
environment: ${{ github.ref_name }}
runs-on: ubuntu-latest
steps:
- uses: stackhero-io/github-actions-deploy-to-stackhero@v1
with:
# Il segreto "STACKHERO_SSH_PRIVATE_KEY" e la variabile "STACKHERO_ENDPOINT" devono essere definiti nell'ambiente GitHub corrispondente (sotto "Settings" -> "Environments")
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Dopo aver aggiunto il file, conferma le tue modifiche eseguendo i seguenti comandi nel tuo terminale:
git add -A .
git commit -m "Aggiungi GitHub Actions per distribuire su Stackhero"
Quindi, crea un branch di produzione eseguendo:
git checkout -b production
Infine, invia le tue modifiche a GitHub:
git push --set-upstream origin production
Questo comando invia il tuo codice al branch production di GitHub. GitHub Actions quindi si esegue automaticamente e distribuisce il tuo codice sull'istanza associata di Stackhero. Per verificare la distribuzione, visita il tuo progetto GitHub e clicca su Actions.
GitHub Actions che ha distribuito in produzione
Congratulazioni, ora sei pronto per distribuire automaticamente il tuo codice in produzione utilizzando GitHub Actions!
Creazione dell'ambiente di staging
Puoi configurare l'ambiente di staging utilizzando un processo simile a quello dell'ambiente di produzione. Basta ripetere i passaggi sopra, sostituendo production con staging dove applicabile.
Una volta configurate le impostazioni, crea un branch di staging eseguendo:
git checkout -b staging
Quindi, invia le tue modifiche a GitHub:
git push --set-upstream origin staging
GitHub Actions distribuisce automaticamente il codice del branch staging al servizio PHP designato per lo staging.
Approfondimenti
È buona pratica proteggere i branch production e staging per evitare push diretti. Potresti considerare di creare una pull request per il branch staging che viene esaminata e fusa solo da persone con diritti di distribuzione. Una volta che le modifiche sono validate nell'ambiente di staging, gli utenti autorizzati possono fondere la pull request nel branch production.
Seguire questo approccio aumenta la sicurezza garantendo che solo le modifiche approvate vengano distribuite e migliora l'affidabilità testando le nuove funzionalità in un ambiente di staging prima che raggiungano la produzione.