Ruby: Distribuire con GitHub Actions
Come distribuire il tuo codice Ruby utilizzando GitHub Actions
👋 Benvenuti nella documentazione di Stackhero!
Stackhero offre una soluzione Ruby cloud pronta all'uso che fornisce numerosi 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 potenziata.
- 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: bastano solo 5 minuti per provare la soluzione Ruby cloud hosting di Stackhero!
GitHub Actions semplifica l'automazione di attività come la distribuzione del codice Ruby sui server di produzione. Non sono necessari passaggi manuali.
In questa guida scoprirai come configurare GitHub Actions in modo sicuro e affidabile per distribuire automaticamente il tuo codice Ruby sia negli ambienti di staging che di produzione. Questo approccio garantisce distribuzioni coerenti e riduce il rischio di errori.
Per iniziare, lavorerai con due branch nel tuo repository GitHub: staging e production. Ogni volta che effettui un push su uno di questi branch, le modifiche verranno distribuite automaticamente sull'istanza Stackhero corrispondente.
Disporre di un'istanza di staging è opzionale. Anche se puoi seguire questa guida solo con un'istanza di produzione, è fortemente consigliato configurare sia l'ambiente di staging che quello di produzione. Questa è una best practice riconosciuta nel settore e aiuta a individuare eventuali problemi prima che raggiungano gli utenti in produzione.
Prima di iniziare, assicurati di avere un account GitHub e un repository che contenga il tuo codice Ruby.
Creazione dei servizi Ruby
Accedi alla dashboard di Stackhero per creare due servizi Ruby, uno per lo staging e uno per la produzione. Per maggiore chiarezza, è consigliabile rinominare questi servizi in "Production" e "Staging".
Non hai ancora un account Stackhero? Puoi registrarti gratuitamente in pochi minuti e creare i tuoi servizi cloud Ruby con pochi clic.
Esempio di servizi production e staging
Configurare le chiavi SSH
Per consentire a GitHub Actions di distribuire il tuo codice, è necessario configurare delle chiavi SSH. Questo garantisce che solo azioni autorizzate possano connettersi ai tuoi servizi Stackhero, mantenendo sicure le distribuzioni.
Puoi generare una nuova coppia di chiavi SSH sul tuo computer con:
ssh-keygen -C "" -f /tmp/ssh_key -N ""
Impostare la chiave pubblica
Successivamente, recupera la chiave pubblica appena creata:
cat /tmp/ssh_key.pub
Nella dashboard di Stackhero, seleziona il servizio Ruby "production" e clicca sul pulsante "Configure".
Accedi alle impostazioni del servizio
Poi:
- Sotto
SSH public keys, clicca suAdd a public key. - Per
Description, inserisciGitHub Action. - Per
Key, incolla il contenuto della chiave pubblica dal tuo computer.
Accedi alle impostazioni del servizio
Impostare la chiave privata
Ora vai sul sito di GitHub e apri il tuo progetto.
Vai su Settings > Environments, quindi clicca su New environment.
Configurazione degli ambienti GitHub
Dai un nome all'ambiente "production" e salvalo.
Impostazione dell'ambiente
Clicca sul pulsante No restriction e scegli Selected branches and tags.
Impostazione delle restrizioni dell'ambiente
Clicca su Add deployment branch or tag rule, inserisci "production" come pattern e aggiungi la regola.
Impostazione del branch dell'ambiente
Impostazione del branch dell'ambiente
Per conservare in modo sicuro la tua chiave privata SSH, vai su Environment secrets e clicca su Add secret.
Aggiungi secret
Recupera la chiave privata dal tuo computer:
cat /tmp/ssh_key
Per Name, inserisci STACKHERO_SSH_PRIVATE_KEY. Per Value, incolla il contenuto della tua chiave privata.
Impostazione del secret della chiave privata SSH
Successivamente, aggiungi l'endpoint del tuo servizio Ruby come variabile d'ambiente. Clicca su Add variable in Environment variables.
Impostazione delle variabili
Per Name, inserisci STACKHERO_ENDPOINT. Per Value, incolla l'endpoint del tuo servizio Ruby, che puoi trovare nella dashboard di Stackhero.
Impostazione della variabile endpoint
Se hai impostato un dominio personalizzato per il tuo servizio, assicurati di utilizzare quel dominio personalizzato invece di <XXXXXX>.stackhero-network.com.
Eliminare le chiavi generate
Una volta che le chiavi sono state configurate su Stackhero e GitHub, puoi eliminarle dal tuo computer per motivi di sicurezza.
rm /tmp/ssh_key /tmp/ssh_key.pub
Configurare il workflow di GitHub Actions
Sulla tua macchina locale, nel repository Git, crea una directory chiamata .github/workflows. All'interno di questa directory, crea un file chiamato deploy-to-stackhero.yml.
# 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 deploy dopo un git push.
# Ricordati di creare un ambiente corrispondente al nome del branch su GitHub (in "Settings"/"Environments").
# Poi aggiungi il secret "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 secret "STACKHERO_SSH_PRIVATE_KEY" e la variabile "STACKHERO_ENDPOINT" devono essere definiti nell'ambiente del branch corrispondente su GitHub sotto "Settings"/"Environments".
ssh_private_key: ${{ secrets.STACKHERO_SSH_PRIVATE_KEY }}
endpoint: ${{ vars.STACKHERO_ENDPOINT }}
Dopo aver creato il file di workflow, puoi effettuare il commit delle modifiche.
git add -A .
git commit -m "Add GitHub Actions to deploy to Stackhero"
Successivamente, crea un branch production.
git checkout -b production
Infine, effettua il push delle modifiche su GitHub.
git push --set-upstream origin production
Quest'ultimo git push caricherà il tuo codice sul branch production su GitHub. GitHub Actions si avvierà automaticamente e distribuirà il tuo codice sull'istanza Stackhero.
Per vedere il workflow in azione, visita la pagina GitHub del tuo progetto e clicca su Actions.
GitHub Actions che ha distribuito in produzione
Congratulazioni, hai appena configurato la distribuzione continua in produzione con GitHub Actions.
Creazione dell'ambiente di staging
La configurazione dell'ambiente di staging segue lo stesso processo di quello di produzione. Basta ripetere i passaggi sopra, sostituendo production con staging dove necessario.
Una volta configurato l'ambiente di staging, puoi creare un branch staging.
git checkout -b staging
Effettua il push del branch staging su GitHub.
git push --set-upstream origin staging
GitHub Actions ora distribuirà automaticamente il branch staging sull'istanza Ruby Stackhero dedicata allo staging.
Approfondimenti
Per aumentare la sicurezza delle distribuzioni, è consigliabile proteggere i branch production e staging. Questo significa che i push diretti sono limitati e le modifiche devono passare tramite una pull request. I membri del team con i permessi adeguati possono revisionare e approvare le pull request verso staging e, una volta che tutto è stato verificato, unire le modifiche in production nello stesso modo.
Seguendo questo workflow, aumenti la sicurezza (solo gli utenti autorizzati possono distribuire su staging e production) e l'affidabilità (tutte le nuove funzionalità vengono testate in staging prima di arrivare in produzione). Questo aiuta a garantire distribuzioni fluide e un ambiente di produzione stabile.