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:

  1. Trigger dedicato: La pipeline intercetta l'evento di push sui tag che seguono il pattern v*.
  2. 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).
  3. Replace mirato nel file di configurazione: Uno step esegue la sostituzione automatica della stringa di versione direttamente nel file dell'applicazione (ad esempio aggiornando version in package.json o rimpiazzando una costante di build).
  4. 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.