Cara menggunakan flyway sebagai Database GitOps: With Github Actions

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:

  1. Source of Truth
  2. Automation & Syncronize
  3. 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

Leave a Reply

Your email address will not be published. Required fields are marked *