Skip to content

Version Control

Kaizen Network uses Git with MineCICD for automated configuration deployment.

MineCICD

MineCICD is a Minecraft plugin that syncs server configuration files with a Git repository.

How It Works

graph LR
    Dev[Developer] -->|git push| Repo[Git Repository]
    Repo -->|webhook| MineCICD[MineCICD Plugin]
    MineCICD -->|apply| Server[Server Files]

Gitignore Pattern

MineCICD uses an inverted gitignore approach:

  1. Ignore everything by default (*)
  2. Whitelist specific files to track (!/path/to/file)
# Ignore all files
*
!*/

# Whitelist config files
!/plugins/Essentials/config.yml
!/plugins/LuckPerms/config.yml
!/plugins/Skript/scripts/*.sk

This ensures only intentionally tracked configs are synced.

Repository Structure

server_configs/
├── proxy/           # Velocity proxy configs
├── lobby1/          # Lobby 1 configs
├── lobby2/          # Lobby 2 configs
├── survivalmix/     # Survival Mix configs
│   ├── .gitignore   # Whitelist for this server
│   ├── plugins/
│   └── ...
├── tycoon/          # Tycoon configs
├── creative/        # Creative configs
├── quake/           # Quake configs
└── limbo/           # Limbo configs

Workflows

Making Config Changes

  1. Edit locally or directly on server
  2. Test changes in-game
  3. Commit to repository:
    git add .
    git commit -m "Update Essentials config"
    git push
    
  4. MineCICD automatically applies to server

Adding New File to Tracking

  1. Add to .gitignore whitelist:
    !/plugins/NewPlugin/config.yml
    
  2. Commit and push

Sensitive Files

Never commit credentials

Database passwords, API keys, and secrets should use environment variables or be excluded from Git.

Files that should NOT be tracked: - plugins/*/playerdata/ - Files containing passwords - Large binary files - World data

Branches

Branch Purpose
main Production configs
dev Testing changes