Le variabili delle pipeline di GitLab sono un elemento chiave per rendere le pipeline CI/CD (Continuous Integration/Continuous Deployment) più flessibili, sicure e personalizzabili. Consentono agli sviluppatori di parametrizzare configurazioni, gestire credenziali sensibili e creare pipeline più generiche e riutilizzabili. In questo articolo esploreremo in dettaglio cosa sono, come funzionano, i tipi di variabili disponibili e alcune best practice per usarle.
Le variabili delle pipeline sono valori dinamici che possono essere definiti e utilizzati all'interno dei file di configurazione .gitlab-ci.yml
. Queste variabili possono essere usate per sostituire stringhe statiche, fornire valori sensibili come token API, configurare comportamenti delle pipeline o passare informazioni tra i vari job.
Nel file .gitlab-ci.yml
:
variables:
APP_ENV: production
APP_VERSION: 1.0.0
build_job:
script:
- echo "Deploying version $APP_VERSION in $APP_ENV environment"
Quando la pipeline viene eseguita, il comando restituirà:
Deploying version 1.0.0 in production environment
GitLab offre diversi tipi di variabili, ciascuna con specifici utilizzi e metodi di configurazione.
Variabili predefinite
Sono variabili integrate in GitLab e disponibili automaticamente per tutte le pipeline. Contengono informazioni utili sul progetto, sull’ambiente e sul job.
Esempi:
CI_PROJECT_NAME
: Nome del progetto.CI_COMMIT_REF_NAME
: Nome del branch o del tag.CI_PIPELINE_ID
: ID univoco della pipeline.
Variabili definite dall'utente
Queste variabili possono essere dichiarate direttamente nel file .gitlab-ci.yml
o a livello di progetto, gruppo o pipeline.
Configurazione a livello di progetto:
- Vai su Settings > CI/CD > Variables.
- Crea una nuova variabile specificando:
- Key: Nome della variabile.
- Value: Valore assegnato.
- Scope: Accesso limitato a determinate pipeline o job.
Le variabili definite in un gruppo sono ereditate da tutti i progetti al suo interno.
Variabili di ambiente
Permettono di definire valori specifici per uno stage o job specifico.
deploy:
variables:
APP_ENV: production
script:
- echo "Environment: $APP_ENV"
Variabili protette
Le variabili protette possono essere utilizzate solo da job associati a branch o tag protetti. Questa caratteristica è utile per gestire in modo sicuro credenziali o configurazioni sensibili.
Creazione:
- Vai su Settings > CI/CD > Variables.
- Seleziona l'opzione "Protected".
Variabili mascherate
Le variabili mascherate nascondono il loro valore nei log di esecuzione delle pipeline, utile per proteggere informazioni sensibili come chiavi API.
Requisiti:
- Il valore deve contenere solo caratteri alfanumerici.
- Non deve superare i 512 caratteri.
Variabili segrete (secret variables)
Le secret variables sono ideali per la gestione di dati sensibili come password o token. Sono configurabili tramite l'interfaccia di GitLab e non sono visibili nel repository o nei file .gitlab-ci.yml
.
Variabili passate da pipeline manuali
Le pipeline manuali consentono di passare variabili durante l’avvio.
test:
script:
- echo "Running in $MODE"
Quando si avvia manualmente una pipeline, è possibile specificare il valore di MODE
.
Priorità delle variabili
Quando sono definite variabili con lo stesso nome, GitLab assegna priorità in base al seguente ordine (dal più alto al più basso):
- Variabili definite manualmente durante l’esecuzione della pipeline.
- Variabili segrete configurate a livello di progetto o gruppo.
- Variabili definite nel file
.gitlab-ci.yml
. - Variabili predefinite di GitLab.
Buone pratiche
Usa variabili protette e mascherate per credenziali sensibili: Evita di inserire informazioni sensibili direttamente nel file
.gitlab-ci.yml
.Centralizza le variabili a livello di gruppo o progetto: Per evitare ridondanza e facilitare la manutenzione.
Documenta le variabili: Mantieni una lista aggiornata delle variabili usate nel progetto, con la descrizione del loro scopo.
Limita l'accesso alle variabili: Usa la funzione di protezione per branch/tag sensibili e maschera i valori nei log.
Rendi le pipeline riutilizzabili: Sfrutta le variabili per creare pipeline generiche che possono essere adattate a diversi scenari.
Conclusione
Le variabili delle pipeline di GitLab sono uno strumento potente per rendere i processi CI/CD flessibili, sicuri e scalabili. Sfruttarle correttamente richiede una buona conoscenza delle loro caratteristiche e una gestione accurata, specialmente quando si tratta di dati sensibili. Con le best practice illustrate, puoi migliorare l’efficienza e la sicurezza delle tue pipeline, semplificando al contempo la gestione del codice e delle configurazioni.