Skip to content

A simple python package that performs SQL Server Source Control and Auto Deployment.

License

Notifications You must be signed in to change notification settings

mertguvencli/deploydb

Repository files navigation

deploydb

Deploy your database objects automatically when the git branch is updated.

  • Production-ready! ⚙️
  • Easy-to-use 🔨
  • Customizable 🔧

Installation

Install the latest package. pip install deploydb

Usage

1- Create configuration file ( json file or dict )

Property Description
local_path where the local repository will be located
https_url or ssh_url address to be listen
target_branch branch to handle changes
db_creds a list of server credentials

Example: config.json

{
    "local_path": "",
    "https_url": "",
    "ssh_url": "",
    "target_branch": "main",
    "db_creds": {
        "driver": "ODBC Driver 17 for SQL Server",
        "server": "server-address-or-instance-name",
        "user": "your-username",
        "passw": "your-password"
    }
}

2- Listener will listen every changes with handle_changes method.

from deploydb import Listener

deploy = Listener('config.json')
deploy.handle_changes()

Repo Generator

If you does not have any existing repository. You can easily export your database objects then create your repository.

from deploydb import RepoGenerator

scripter = RepoGenerator(
    config="config.json",
    export_path="path-to-export",
    includes=[],  # Default takes all databases from the given credential if not specified.
    excludes=[]
)
scripter.run()

RepoGenerator will extract objects structure as below.

.
├── Databases
│   ├── Your-Db-Name
│   │   ├── DDLs
│   │   ├── DMLs
│   │   ├── Functions
│   │   ├── Stored-Procedures
│   │   ├── Tables
│   │   ├── Triggers
│   │   ├── Types
│   │   └── Views
│   └── Database-N
└── README.md

TODO

  • Creating Services for Continuous Integration

    • Windows Service
    • Linux Systemd Service
  • Getting Notifications

    • Microsoft Teams Webhook Integration
    • Slack Webhook Integration