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 sito vuoto in MyKinsta.
Creazione di un sito vuoto in MyKinsta.

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.

Creare un progetto in GitLab.
Creare un progetto in GitLab.

Selezionate l’opzione Blank Project e compilate i campi Project name e Project slug.

Creare un progetto vuoto in GitLab.
Creare un progetto vuoto in GitLab.

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.

Aggiungere la chiave SSH in GitLab.
Aggiungere la chiave SSH in GitLab.

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.

Impostazioni utente di MyKinsta.
Impostazioni utente di MyKinsta.

Scorrete verso il basso e fate clic su pulsante Aggiungi chiave SSH.

Aggiungi la chiave SSH in MyKinsta.
Aggiungi la chiave SSH in MyKinsta.

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 in MyKinsta.
Aggiungere la chiave SSH in MyKinsta.

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.

Impostazioni CI/CD del repository di GitLab.
Impostazioni CI/CD del repository di GitLab.

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.

Variabile chiave SSH privata in GitLab.
Variabile chiave SSH privata in GitLab.

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.

Clona con SSH in GitLab.
Clona con SSH in GitLab.

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.

Clonare il repository di GitLab in un ambiente live di Kinsta.
Clonare il repository di GitLab in un ambiente live di Kinsta.

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:

Una nuova installazione con i file e le directory principali di WordPress.
Una nuova installazione con i file e le directory principali di WordPress.

Poi andate alla pagina Domini del vostro sito in MyKinsta e fate clic sul link Apri URL per accedere al vostro Dominio primario.

Link all'URL aperto in MyKinsta.
Link all’URL aperto in MyKinsta.

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.

Configurazione della nuova installazione di WordPress.
Configurazione della nuova installazione di WordPress.

Installato WordPress, dovreste vedere il nuovo sito WordPress dal vostro dominio principale.

Una nuova installazione di WordPress.
Una nuova installazione di WordPress.

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 WordPressnome del sito > Info > Dettagli sull’ambiente).
Percorso pubblico e dati SSH in MyKinsta.
Percorso pubblico e dati SSH in MyKinsta.

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.

Commit iniziale su GitLab.
Commit iniziale su GitLab.

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.

Creazione di un nuovo ambiente di staging Kinsta in MyKinsta.
Creazione di un nuovo ambiente di staging Kinsta in MyKinsta.

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.

File modificati nell'ambiente di staging di Kinsta.
File modificati nell’ambiente di staging di Kinsta.

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.

Lavoro attivo in GitLab.
Lavoro attivo in GitLab.

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.

Il plugin Yoast SEO è stato distribuito tramite GitLab.
Il plugin Yoast SEO è stato distribuito tramite GitLab.

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.

Questo articolo ti è stato utile?