Sincronizzare la Versione dell'App Direttamente dal Tag Git in CI/CD
Data di pubblicazione:
Quante volte vi è capitato di creare un tag Git di rilascio (es. git tag v1.4.0) e scoprire dopo il deploy che l'applicazione mostra ancora la versione precedente nel footer, nell'endpoint /health o nei log?
È un classico disallineamento operativo: la versione viene assegnata correttamente su Git, ma ci si dimentica di aggiornare manualmente la stringa nel codice sorgente (package.json, file di configurazione, costanti o manifest di build).
Per eliminare questo passaggio manuale e azzerare le dimenticanze, abbiamo impostato un'automazione snella e diretta su GitHub Actions.
Il Flusso: Dal Tag Git al Deploy in Produzione
L'obiettivo è semplice: fare in modo che sia il Tag Git l'unica fonte di verità (Single Source of Truth) per la versione del software.
Quando viene effettuato il push di un nuovo tag di versione:
- Trigger dedicato: La pipeline intercetta l'evento di push sui tag che seguono il pattern
v*. - Estrazione della versione: GitHub Actions espone nativamente la variabile
${{ github.ref_name }}(o$GITHUB_REF_NAME), che contiene l'esatto tag creato (es.v1.4.0). - Replace mirato nel file di configurazione: Uno step esegue la sostituzione automatica della stringa di versione direttamente nel file dell'applicazione (ad esempio aggiornando
versioninpackage.jsono rimpiazzando una costante di build). - Compilazione & Deploy: L'applicazione viene compilata con la versione appena sincronizzata e distribuita direttamente in produzione.
Esempio Pratico di Workflow
name: Deploy on Tag Release
on:
push:
tags:
- 'v*'
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Sincronizza versione nel file di progetto
run: |
VERSION="${GITHUB_REF_NAME#v}"
echo "Sincronizzazione versione: $VERSION"
# Esempio per Node/npm senza creare commit git ridondanti
npm version $VERSION --no-git-tag-version --allow-same-version
- name: Build & Deploy
run: |
npm run build
# Esecuzione del deploy in produzione
Vantaggi Operativi
- Zero passaggi manuali: Non serve ricordarsi di fare un commit separato solo per cambiare il numeretto di versione nei file.
- Tracciabilità garantita: L'ambiente di produzione riflette sempre al 100% il tag Git distribuito.
- Nessuna sovrastruttura: Niente tool pesanti o procedure complesse: solo uno step mirato di CI/CD che fa esattamente ciò che serve.