lorenzomalferrari / gestiscicasa

Progetto che nasce privato con lo scopo di gestire al meglio la propria casa in tutte le sue necessita
Other
1 stars 0 forks source link

Creare CI che controlli che campo create e update siano sempre nello stesso formato #214

Closed lorenzomalferrari closed 2 days ago

lorenzomalferrari commented 1 month ago

Sì, è possibile creare una CI/CD pipeline in GitLab che esegua un controllo sui file SQL per assicurarsi che ogni tabella definita includa le colonne create_date e updated_date. Puoi fare questo utilizzando uno script personalizzato che analizzi i file SQL e verifichi la presenza di queste colonne.

Ecco un esempio di come potresti configurare questa pipeline in GitLab:

  1. Creare uno Script di Controllo Crea uno script (ad esempio check_columns.sh) che esegue il controllo sui file SQL. Questo script cercherà le colonne create_date e updated_date in ogni file SQL.

Ecco un esempio di script in Bash:

!/bin/bash

Variabile di successo

success=true

Ciclo su tutti i file .sql

for file in $(find . -name "*.sql"); do echo "Checking $file..."

# Verifica se il file contiene create_date e updated_date
if grep -iq "create_date" "$file" && grep -iq "updated_date" "$file"; then
    echo "  -> Both columns found."
else
    echo "  -> Missing columns in $file!"
    success=false
fi

done

Se una delle tabelle manca delle colonne richieste, esci con errore

if [ "$success" = false ]; then echo "Error: One or more SQL files are missing the required columns." exit 1 else echo "All SQL files contain the required columns." fi

  1. Aggiungere il File Script al Repository Assicurati che il file check_columns.sh sia presente nella root del tuo repository e che abbia i permessi di esecuzione:

chmod +x check_columns.sh

  1. Configurare la Pipeline CI/CD in GitLab Nel file .gitlab-ci.yml, configura una pipeline che esegua lo script di controllo ogni volta che viene eseguita la pipeline (ad esempio su ogni commit o merge request):

stages:

check_sql_columns: stage: test script:

Considerazioni Estensione: Questo script è semplice e controlla solo la presenza delle colonne a livello di testo. Se hai requisiti più complessi (ad esempio, con tipi di dato specifici), potresti voler estendere lo script con regex più specifiche o usare strumenti come awk o sed. Flessibilità: Lo script può essere migliorato per gestire meglio situazioni complesse, come la presenza di commenti o parole chiave simili che potrebbero ingannare un semplice controllo testuale. Con questo setup, potrai automaticamente verificare che ogni tabella definita nel tuo progetto rispetti le convenzioni richieste.