Tag: gitlab, gitlab-ci, devops, ci-cd, pipelines, yaml, docker
Livello: intermedio
TL;DR: Sintassi, architettura runner ed esecuzione pipeline in .gitlab-ci.yml. Riferimento rapido per configurazione stage, cache, artefatti e regole di esecuzione.
Pipeline definita nel repository tramite il file .gitlab-ci.yml.
Struttura basata su stage sequenziali contenenti job eseguiti in parallelo.
GitLab Runner isola l'esecuzione su host dedicati, container o cluster Kubernetes.
artifacts passa file e build tra stage diversi della stessa pipeline.
cache condivide dipendenze tra pipeline successive per velocizzare i job.
rules sostituisce only/except per controllare quando eseguire un job.
needs crea dipendenze dirette tra job scavalcando l'ordine rigido degli stage (DAG).
Variabili CI/CD gestiscono segreti, configurazioni di ambiente e token protetti.
Environments e deployment tracciano i rilasci su ambienti di staging e produzione.
Q: Qual e la differenza tra cache e artifacts in GitLab CI?R: Uso gli artifacts per trasferire output di build tra stage della stessa pipeline. Uso la cache per memorizzare dipendenze esterne come node_modules tra esecuzioni diverse.
Q: Come velocizzi una pipeline complessa con molti stage?R: Imposto needs per creare grafi aciclici diretti tra job indipendenti, configuro cache mirata per lockfile e uso immagini Docker snelle pre-costruite.
Q: Come gestisci il deploy sicuro su produzione evitando trigger indesiderati?R: Configuro regole con rules:when: manual sui branch protetti e isolo le credenziali sensibili come variabili protette e mascherate per ambiente.
Confondere cache con artifacts causando build fallite per file mancanti tra runner.
Dimenticare pull-push o policy inadeguate sulla cache che rallentano l'upload inutile.
Usare immagini Docker troppo pesanti senza layer pre-installati per i task comuni.
Sovrascrivere before_script globale nei singoli job perdendo setup critici.
Esporre variabili non mascherate nei log dei job tramite comandi verbosi.
```stages:
default:
image: node:20-alpine
cache:
key:
files:
paths:
unit-tests:
stage: test
script:
build-app:
stage: build
script:
artifacts:
name: dist-$CI_COMMIT_SHORT_SHA
paths:
expire_in: 1 week
deploy-prod:
stage: deploy
needs:
script:
environment:
name: production
url: https://example.com
rules:
when: manual
```
[ ] Sintassi avanzata della direttiva rules con clausole changes ed exists.
[ ] Architettura e configurazione degli executor per GitLab Runner.
[ ] Inclusione di template riutilizzabili tramite include:local e include:remote.
[x] Differenza pratica e ciclo di vita tra cache e artifacts.
[x] Configurazione base di stage e job sequenziali.
GitLab CI/CD Documentation (docs.gitlab.com/ee/ci/)
GitLab CI/CD Pipeline Configuration Reference (.gitlab-ci.yml reference)