GitLab CI/CD
Per gli utenti più avanzati, GitLab CI/CD (continuous integration/continuous delivery o continuous deployment) può distribuire automaticamente le modifiche al codice su un sito Kinsta ogni volta che un nuovo commit viene inviato al branch corrispondente. Questo metodo permette di inviare continuamente codice ad un ambiente live su Kinsta senza sovrascrivere il database MySQL di WordPress.
Questa configurazione permette di eseguire il push del codice dall’ambiente locale o dall’ambiente di staging di Kinsta e di avere un sistema di controllo della versione. Nell’esempio che segue, imposteremo un ambiente di staging e invieremo le modifiche effettuate in quell’ambiente ad un ambiente live tramite GitLab (aggirando la funzione Push to Live di Kinsta).
Se non avete ancora un account GitLab, cominciate dalla pagina di registrazione.
Creazione di un Sito Kinsta
Per questo tutorial, inizieremo creando un nuovo sito vuoto su Kinsta e installeremo WordPress in seguito. Se avete già un sito WordPress Kinsta, potete comunque seguire i passaggi di questo tutorial per collegare il vostro sito a GitLab.
In MyKinsta, andate alla pagina dei Siti WordPress. Fate clic sul pulsante Aggiungi sito nell’angolo in alto a destra e selezionate Crea nuovo sito dal menu a tendina. Selezionate l’opzione Ambiente vuoto (Senza WordPress) nella finestra modale/pop-up, e fate clic sul pulsante Continua.
Completate i campi richiesti, quindi fate clic sul pulsante Continua per avanzare in ogni finestra, fino alla conclusione della procedura di creazione del sito.
Creazione di un Progetto GitLab
Per iniziare, andate su GitLab e fate clic su Create a project per creare un nuovo repository per il vostro sito Kinsta.
Selezionate l’opzione Blank Project e compilate i campi Project name e Project slug.
Per l’opzione Visibility Level, consigliamo di rendere il repository privato. Dato che questo repository potrebbe contenere il codice di plugin e temi premium, lasciarlo accessibile su Internet permetterebbe a chiunque di scaricare i prodotti che avete acquistato.
Una volta terminata la configurazione del nuovo progetto, fate clic su Create project.
Configurazione delle Chiavi SSH
Successivamente, dovrete aggiungere delle chiavi SSH a GitLab e MyKinsta per permettere alle due piattaforme di comunicare.
Aggiungere una Chiave Pubblica SSH a GitLab
Per prima cosa, accedete con SSH all’ ambiente live del sito Kinsta ed eseguite il comando cat
per visualizzare la vostra chiave pubblica SSH.
cat ~/.ssh/id_rsa.pub
La chiave pubblica dovrebbe essere simile a quella qui sotto. Per il momento, tenete aperta la finestra della riga di comando e tornate a GitLab nel vostro browser.
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC7zdjwd6UIUJ5t4YnXNi6yhdHgrvIV2xgjvJ3592wd1Hzmnta4dau7yOIxQDU7/oNIr6DIskuIUii5ruGi4YZpIwB/AWGrn/uWb+FXJFiQHMZq9rCFcqtZXT0fyzKiSNkblV4F1RaPQJRvxfSUsSQ3jJU3FX8CF1c4R40CiBKkSHM8uavVIIESzgIHRiWVxkL9F6SKzg8GeTctJaAa3W+q1F1T60OKYmzH3OLdA37ZNmkm1CYWa8SF0JjOszxOnPwhfQ49P5r+rftXRFLz/7hGJ8CnUyzErSiUdUKNknUAB+w4KEZshQSNuiken0+GKqIw83dWWSyjiJJigcyDez2s+3AqDLHPG45NoBEXuBXjPQ9C08hokVyKlbzd/P2qvcnzUT5S6zTuaYOW+50+fiXeYkJlEoYYxoGRVx6FFdFqWyJx5UyaDv7QY3iQH0qct1iq9XGXMhBxIecIAEPUwF8nOp15in8L+5UIFMiNnihztTAXysc+8xvVwbuRlQIeR/E= ansible-generated on fvj-kinstagit
Cliccate sull’icona utente nell’angolo in alto a destra di GitLab e fate clic su Preferenze.
Sulla pagina Preferenze, cliccate su Chiavi SSH nel pannello laterale.
Fate clic su Aggiungi nuova chiave e incollate la chiave pubblica SSH nel campo Chiave. Il campo Titolo dovrebbe essere popolato automaticamente con un nome, ma è possibile modificarlo se lo si desidera. GitLab consente anche di impostare una data di scadenza per la chiave SSH. Questa opzione è utile se le chiavi SSH vengono invalidate e ruotate come parte del protocollo di sicurezza dell’infrastruttura. Se non lo fate, lasciate pure il campo Scade il vuoto.
Dopo aver controllato la configurazione, fate clic su Add key per completare il processo.
Aggiungere la Chiave SSH Pubblica in MyKinsta
Ora che avete aggiunto la vostra chiave SSH pubblica a GitLab, dovete aggiungere la stessa chiave in MyKinsta. Con questo passaggio aggiungerete la vostra chiave SSH pubblica al file authorized_keys del vostro sito (scrivibile solo da root e da MyKinsta) e permetterà a GitLab di accedere via SSH al sito per distribuire le modifiche al codice. In MyKinsta, fate clic sul vostro nome nell’angolo superiore destro e selezionate Impostazioni utente dal menu a discesa.
Scorrete verso il basso e fate clic su pulsante Aggiungi chiave SSH.
Nella finestra modale/pop-up, specificate un’etichetta (nome) per la chiave SSH, incollate la vostra chiave pubblica nel campo della Chiave SSH e fate clic su Aggiungi chiave SSH per completare la procedura.
Aggiungere la Chiave SSH Privata su GitLab
Poi dovrete aggiungere la chiave SSH privata dell’ambiente live del vostro sito come variabile d’ambiente in GitLab.
Per trovare la chiave privata, tornate alla finestra della riga di comando ed eseguite il comando riportato qui sotto. Non condividete la vostra chiave SSH privata al di fuori di GitLab.
cat ~/.ssh/id_rsa
In GitLab, fate clic sul progetto che avete creato in precedenza. Nella barra laterale, passate su Impostazioni e fate clic su CI/CD nel menu che appare.
Scorrete fino alla sezione Variables, fate clic sul pulsante Expand e poi su Add variable. Usate SSH_PRIVATE_KEY
per il nome della Key, incollate la vostra chiave privata nel campo Value e quindi fate clic sul pulsante Add variable per continuare.
Una volta aggiunta la variabile, potrete vederla nelle impostazioni del repository.
Clonazione della Repo di GitLab su MyKinsta
Ora che avete aggiunto le chiavi SSH necessarie, potete clonare il vostro repository GitLab nel vostro ambiente live di Kinsta. In GitLab, andate al vostro repository, fate clic sul pulsante blu Clone e poi sull’icona copia/appunti per copiare l’indirizzo del repository sotto la voce Clone with SSH.
Tornate alla finestra della riga di comando e andate nella home directory del vostro ambiente live. Se non sapete come raggiungere la vostra home directory, usate il comando qui sotto.
cd ~/
Una volta nella home directory, eseguite il comando git clone
con l’indirizzo del repository che avete copiato da GitLab.
git clone [your-repository-url-here]
Dopo aver clonato il repository, vedrete un avviso che dice “you appear to have cloned an empty repository”. Questo è prevedibile perché il repository al momento è vuoto.
Su Kinsta, la nostra configurazione Nginx serve contenuti dalla cartella ~/public. Pertanto, dovete cancellare la cartella ~/public e rinominare la cartella del vostro repo clonato in ~/public. Per farlo, utilizzate i due comandi seguenti.
rm -rf ~/public
mv ~/your-repo-folder-name ~/public
Configurazione della Repo di GitLab
Utilizzate quindi il comando che segue per accedere alla cartella ~/public.
cd ~/public
Eseguite i due comandi qui sotto per configurare la vostra repo GitLab. Non dimenticate di specificare un indirizzo email valido e un nome utente associato al vostro account GitLab.
git config --global user.email "[email protected]"
git config --global user.name "brian"
Installazione di WordPress con WP-CLI
Ora che il repo di GitLab è stato clonato nel vostro ambiente live di Kinsta e configurato, installiamo WordPress. Potete installare WordPress manualmente scaricandolo da wordpress.org, oppure potete installarlo con WP-CLI. Per questo esempio, useremo WP-CLI per installare WordPress nella cartella ~/public.
wp core download
Dopo aver installato WordPress, la cartella ~/public dovrebbe avere questo aspetto:
Poi andate alla pagina Domini del vostro sito in MyKinsta e fate clic sul link Apri URL per accedere al vostro Dominio primario.
Verrete accolto da una procedura di installazione di WordPress della durata di cinque minuti. Se non sapete come configurare WordPress, qui trovate una guida approfondita.
Installato WordPress, dovreste vedere il nuovo sito WordPress dal vostro dominio principale.
Configurazione della Pipeline CI/CD di GitLab
Quindi dovrete impostare un file di configurazione per fare in modo che GitLab avvii i deploy automatici dopo l’aggiornamento del branch principale del repo. Per farlo, spostatevi nella cartella ~/public del vostro ambiente live su Kinsta (se necessario, eseguite cd ~/public
) e create un nuovo file chiamato .gitlab-ci.yml con il seguente comando.
touch .gitlab-ci.yml
Dopo aver creato il file, aggiungete il seguente testo. Potete modificare il file con nano o vim nella riga di comando, oppure con SFTP e un editor di testo o di codice. Se utilizzate un client SFTP, abilitate i file nascosti per poter vedere il file .gitlab-ci.yml.
before_script:
- apt-get update -qq
- apt-get install -qq git
# Setup SSH deploy keys
- 'which ssh-agent || ( apt-get install -qq openssh-client )'
- eval $(ssh-agent -s)
- ssh-add <(echo "$SSH_PRIVATE_KEY")
- mkdir -p ~/.ssh- '[[ -f /.dockerenv ]] && echo -e "Host *ntStrictHostKeyChecking none" > ~/.ssh/config'
- ssh-keyscan gitlab.com >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
deploy_live:
environment:
name: Live
url: your-primary-domain script:
- ssh user@ip-address -p port-number "cd public-root && git checkout main && git pull origin main && exit"
only:
- main
Modificate i parametri url
e script
nel blocco deploy_live
; sostituite i valori in grassetto con i dati del vostro sito da MyKinsta.
- Sostituite il vostro dominio primario con il dominio primario del vostro sito.
- Sostituite ssh user@ip-address -p port-number con il comando del terminale SSH in MyKinsta (Siti WordPress > nome del sito > Info > SFTP/SSH).
- Sostituite public-root con il Percorso in MyKinsta (Siti WordPress > nome del sito > Info > Dettagli sull’ambiente).
La sezione only: - main
del file si riferisce al branch del repository che attiverà il processo CI/CD di GitLab. Con questa configurazione, i push al branch main avvieranno il deploy nell’ambiente live di Kinsta. Se volete specificare un altro branch per attivare il deployment, potete modificare la configurazione.
Se desiderate avere una maggiore granularità nella configurazione per tenere conto di un ambiente di staging, potete aggiungere un ulteriore blocco deploy_staging
con l’URL e i dettagli SSH del vostro ambiente di staging di Kinsta.
deploy_staging:
environment:
name: Staging
url: your-staging-domain script:
- ssh user@ip-address -p port-number "cd public-root && git checkout main && git pull origin staging && exit"
only:
- staging
Si noti anche la sezione only: - staging
: questo significa che il push al branch staging
avvierà il processo CI/CD di GitLab. Potete modificare questa sezione in base alle vostre esigenze per effettuare il deploy dal branch che preferite.
Commit Iniziale su GitLab
Ora che WordPress e il file di configurazione di GitLab sono a posto, facciamo un commit iniziale su GitLab. Creeremo un nuovo branch chiamato v0.1, inizieremo a tracciare i file nel repo, effettueremo il commit delle modifiche e le invieremo a GitLab sul branch v0.1. Eseguite questi comandi da ~/public per attivare il commit iniziale.
git checkout -b v0.1
git add .
git commit -a -m 'Initial Commit'
git push origin v0.1
Se controlli il vostro repository in GitLab, ora vedrai i file del commit iniziale.
Configurazione dell’Ambiente di Staging di Kinsta
Il passo successivo consiste nel creare e configurare un ambiente di staging in MyKinsta, in modo da avere un luogo sicuro per testare nuovi plugin, temi e codice senza toccare l’ambiente live/produzione.
Dopo aver creato l’ambiente di staging del vostro sito, accedete con SSH all’ambiente di staging in una nuova finestra della riga di comando (tenete aperta una finestra separata per l’ambiente live) ed eseguite questo comando per verificare eventuali modifiche al codice.
cd ~/public && git status
Dovreste vedere un messaggio come quello che segue. Come potete vedere, il branch è quello v0.1 creato in precedenza. Inoltre, il file wp-config.php è cambiato. Questo succede perché Kinsta aggiunge alcune righe a wp-config.php durante la creazione dell’ambiente di staging.
Commit e Deploy delle Modifiche su Live
Infine, applichiamo alcune modifiche all’ambiente di staging e facciamo un nuovo commit all’ambiente live di Kinsta utilizzando GitLab. Tenete presente che questo metodo esclude la funzione Push to Live di Kinsta.
Per questo esempio, installiamo il plugin Yoast SEO utilizzando WP-CLI con il comando che segue.
wp plugin install wordpress-seo
Dopo aver installato il plugin Yoast SEO, eseguite i comandi sottostanti per effettuare un commit e passare le modifiche al branch v0.1.
git add .
git commit -a -m ‘Installed Yoast SEO plugin.’
git push origin v0.1
Infine, passiamo al branch main, uniamo v0.1 a main e passiamo main su GitLab con i comandi che seguono. In questo modo GitLab avvierà un processo di distribuzione nell’ambiente live di Kinsta grazie all’impostazione only: - main
nel file di configurazione di GitLab.
git checkout main
git merge v0.1
git push origin main
In GitLab, andate su CI/CD > Jobs nella barra laterale del vostro repo e vedrete il lavoro in esecuzione. È GitLab che distribuisce il plugin Yoast SEO nell’ambiente live di Kinsta.
Una volta terminato il lavoro, tornate alla finestra della riga di comando del vostro ambiente live ed eseguite wp plugin list
. Dovreste vedere wordpress-seo
nell’elenco. Si tratta del plugin Yoast SEO che è stato installato in precedenza nell’ambiente di staging.
Se siete sviluppatori di temi o plugin che lavorano con siti Kinsta, impostare il deploy automatico tramite GitLab CI/CD può permettervi di velocizzare il workflow e a garantire il controllo delle versioni.