Introduction
Disini kita akan belajar tentang, bagaimana cara menggunakan flyway sebagai database GitOps: Github Actions, sebelumnya kita perlu ketahui dulu tentang apa itu flyway & GitOps.
flyway adalah tools open-source yang biasanya digunaan untuk mengelola dan mengotomatisasikan skema database dalam developing software. Konsep utama dari flyway meliputi:
1. Migrasi Database
2. Version Control
3. Integration with Build Tools
4. Scripting
5. Management Version
Flyway membantu kita sebagai developer dalam melakukan migrasi skema database dangan aman, terkendali, konsisten selama aplikasi terus update.
GitOps adalah sebuah culture atau praktik dalam pengelolaan infrastructure dan application yang berfokus pada penggunaan Git sebagai sumber utama untuk mengotomatisasikan perubahan di seluruh lingkungan atau environment development, staging, maupun Production.
Karakteristik dari GitOps:
- Source of Truth
- Automation & Syncronize
- Version Control
Untuk skemanya sendiri kurang lebih seperti gambar dibawah ini, menyesuaikan dengan kebutuhan kita.

Baca juga :
Step 1 – Setup Workflows on Github
Buat file workflows untuk CICD nya nanti di .github/workflows/ disini saya akan mengintregasikan ke databse mongodb di environment develpoment, untuk
name: 'Migrate database schema - mongodb'
on:
push:
branches:
- development
jobs:
migrate-database:
name: Run Flyway migrations
runs-on: ubuntu-20.04
env:
db_HOST: db.YOUR_db_DATABASE_HOST.db.co
DB_PORT: 27020
DB_USER: mongodb
DB_PASS: mongodb
steps:
- uses: actions/checkout@v2
- run: >-
docker run --rm
--volume ${{ github.workspace }}/migrations:/flyway/sql:ro
flyway/flyway:7.12.1-alpine
-url="jdbc:mongodb://${{ env.DB_HOST }}:${{ env.DB_PORT }}/${{ env.DB_DB }}?sslmode=require"
-user="${{ env.DB_USER }}"
-password="${{ secrets.DB_PASS }}"
migrate
Step 2 – CICD Run & Flyway Schema History
Jika percabangan file kita seperti ini contohnya:
.
├── mongodb
│ ├── development
│ │ ├── V1__Initial_Script.sql
│ │ ├── V2__Create_Table_Payment.sql
│ │ └── V3__Create_Table_user.sql
│ └── staging
└── mysql
├── development
└── staging
Dalam hal ini flyway meiliki dan akan membuat table yang bernama flyway_schema_history ketika integrationya & deploymentya berhasil, fungsinya adalah tadi untuk versioning control, dan catatan : Di tiap file integration V1 – V3 jangan melakukan perubahan entah itu titik koma maupun spasi karena akan error jika kita melakukan migration.
Step 3 – Output
Jika kita telah berhasil melakukan integrasinya maka kita tinggal check di sisi table flyway_schema_history

Terima kasih selamat mencoba

Admin website igunawan.com, System Administrator, DevOps Engineer
