Skip to content

Cum să configurezi Flyway Teams în CI/CD

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Cum să configurezi Flyway Teams în CI/CD. We cover key concepts, practical examples, and best practices.

Vei învăța cum să integrezi Flyway Teams în pipeline-urile CI/CD pentru a rula migrări de bază de date automate, cu validare și rollback în medii de testare și staging.

Problema

În CI/CD, migrările de bază de date trebuie să fie automate, sigure și repeatabile. O migrare eșuată poate bloca întregul pipeline. Flyway Teams oferă validare, undo și callback-uri care fac migrările în CI/CD sigure și previzibile.

Modul Greșit

# .github/workflows/deploy.yml
- name: Run migrations
  run: flyway migrate
# Fără validare, fără gestionare a erorilor, fără rollback
# Dacă migrarea eșuează — nu există plan de recuperare
flyway migrate  # Migration failed!

Modul Corect

# .github/workflows/deploy.yml
name: Database Migration
on: [push]

jobs:
  migrate:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres:15
        env:
          POSTGRES_DB: test_db
          POSTGRES_PASSWORD: test
        ports:
          - 5432:5432

    steps:
      - uses: actions/checkout@v4

      - name: Validate migrations
        run: |
          flyway -url=jdbc:postgresql://localhost:5432/test_db \
                 -user=postgres -password=test \
                 -locations=filesystem:db/migration \
                 validate

      - name: Run migrations
        run: |
          flyway -url=jdbc:postgresql://localhost:5432/test_db \
                 -user=postgres -password=test \
                 -locations=filesystem:db/migration \
                 migrate

      - name: Notify on failure
        if: failure()
        run: |
          echo "Migration failed — check flyway_schema_history"

Output CI:

Validate: Successfully validated 5 migrations
Migrate: Successfully applied 1 migration (execution time 00:00.123s)

Pas cu Pas

1. Creează un workflow de validare

- name: Check migration integrity
  run: flyway validate -configFiles=flyway-ci.conf

2. Rulează migrările cu rollback automat

flyway migrate 2>&1 || {
  echo "Migration failed — running undo"
  flyway undo
  exit 1
}

3. Adaugă callback-uri pentru notificări

# În caz de eroare, trimite notificare
if [ $? -ne 0 ]; then
  curl -X POST https://hooks.slack.com/... \
    -d '{"text":"Migration failed in CI"}'
fi

Sfaturi de Prevenție

  • Rulează flyway validate înainte de flyway migrate în CI
  • Folosește containere izolate pentru testarea migrărilor
  • Stochează parolele în secrets, nu în cod
  • Activează flyway.cleanDisabled=true în producție

Greșeli Comune

  1. Validare omisă înainte de migrare — migrări cu checksum incorect ajung în producție
  2. Fără service de bază de date în CI — pipeline-ul eșuează pentru că nu există bază de date disponibilă
  3. Scripturi care depind de stare anterioară — migrările trebuie să fie independente și idempotente
  4. Credentiale hardcodate — expun parolele în log-urile CI

Întrebări Frecvente

### Cum fac rollback automat în CI?

Flyway Teams permite flyway undo pentru a anula ultima migrare. Încorporează-l într-un bloc try-catch al scriptului CI.

Pot testa migrările fără o bază de date reală?

Da — folosește H2 în modul PostgreSQL (jdbc:h2:file:./test;MODE=<a href="/databases/postgresql/">PostgreSQL</a>) pentru validare rapidă în CI.

Ce fac dacă migrarea eșuează în producție?

Rulează flyway repair pentru a marca migrarea eșuată, apoi creează o migrare de corecție. Nu edita migrarea eșuată.

Construit de dezvoltătorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu Flyway Teams pentru CI/CD sigur.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro