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 Kinsta, potete comunque seguire i passaggi di questo tutorial per collegare il vostro sito a GitLab.

In MyKinsta, andate alla pagina Siti e fate clic su Aggiungi sito nell’angolo in alto a destra. Selezionate l’opzione Non installare WordPress nella finestra modale 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

Fate clic sull’icona dell’utente nell’angolo in alto a destra di GitLab e poi su Settings.

La pagina delle impostazioni di GitLab.
La pagina delle impostazioni di GitLab.

Nella pagina Settings, fate clic su SSH Keys nella barra laterale.

SSH keys in GitLab.
Chiavi SSH in GitLab.

Incollate la vostra chiave pubblica SSH nel campo Key. Il campo Title dovrebbe essere popolato automaticamente con un nome, ma se volete potete cambiarlo. GitLab vi permette anche di impostare una data di scadenza per la chiave SSH. Questa opzione è utile se nel vostro protocollo di sicurezza dell’infrastruttura prevedete di invalidare e ruotare le chiavi SSH. Se non lo fate, potete lasciare il campo Expires at bianco.

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 sull’icona del vostro utente nell’angolo in basso a sinistra e poi su Impostazioni utente.

Impostazioni utente in MyKinsta.
Impostazioni utente in MyKinsta.

Scorrete verso il basso e fate clic su 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.

GitLab repository CI/CD settings.
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.

Clone with 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:

A fresh WordPress installation with WordPress core files and directories.
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.

Accedere al dominio primario per configurare WordPress.
Accedere al dominio primario per configurare WordPress.

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.

A new WordPress install.
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 *\n\tStrictHostKeyChecking none" > ~/.ssh/config'
deploy_live:
    environment:
        name: Live
        url: your-primary-domain
    script:
        - ssh [email protected] -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 [email protected] -p port-number con il comando del terminale SSH in MyKinsta (Siti > nome del sito > Info > Dettagli di base).
  • Sostituite public-root con il Percorso in MyKinsta (Sitinome del sito > Info > SFTP/SSH).
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 [email protected] -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.

Initial commit to 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.

Creare un ambiente di staging in MyKinsta.
Creare un ambiente di staging 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.

Active job 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.

The Yoast SEO plugin was deployed via 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.