Deploy Master
Fast, flexible, clean deployment tool
Installation
Requirements
DeployMaster is written in node.js, you should have latest stable version of node.
npm
You can install DeployMaster with npm (as root)
npm install -g deploymaster
..and you can run it! deploymaster
Installing from GIT
You can install DeployMaster with git, following commands:
git clone https://github.com/DeployMaster/DeployMaster.git DeployMastercd DeployMaster && npm install
Usage
Usage: deploymaster <command> [options..] command init-host Create new hosting repo start-host Start server
Help for a command
deploymaster <command> --help
Install systemd service
sudo deploymaster install-service
You can remove systemd service with;
sudo deploymaster remove-service
..or you can install/remove for specific port;
sudo deploymaster install-service --port 5053sudo deploymaster remove-service --port 5053
..or start hosting with a directory
Create a host repository
mkdir /path/to/project_hostcd /path/to/project_hostdeploymaster init-host
Notice!
If you did created a systemd service with "install-service" option, you should enter host directory before set it.
It is like this;
cd /var/deploymaster/deploymaster-5053-host
"install-service" option creates host directories like /var/deploymaster/deploymaster-PORT-host
Define a password for host repo
deploymaster password --set NEWPASSWORD
Set TLS for host repo
Enable TLS
deploymaster config --key host.tls.use_tls --value true
Disable TLS
deploymaster config --key host.tls.use_tls --value false
Set SSL/TLS certificate
Set RSA Private Key file
deploymaster config --key host.tls.key_file --value "/path/to/private.key"
Set RSA Public Key (Cert) file
deploymaster config --key host.tls.cert_file --value "/path/to/public.crt"
Start repository hosting
If you don't use systemd service, you can start hosting for any directory.
deploymaster start-host
or
deploymaster start-host --workdir /path/to/project_host
Development side
Create a development repository
mkdir /path/to/project_devcd /path/to/project_devdeploymaster init-development
See config
deploymaster config
Also see
deploymaster config --help
Connect development repo to host repo
deploymaster connect --host 127.0.0.1:5053
Set TLS for development repo
Enable TLS
deploymaster config --key remote.tls.use_tls --value true
Disable TLS
deploymaster config --key remote.tls.use_tls --value false
Connect development repo to production
Create production directory
mkdir /path/to/production
Add production repo to developmen repo
deploymaster production --set production --dir /path/to/production
Set owner and group for production files (for POSIX)
deploymaster production --set production --dir /path/to/production --owner username --group groupname
See status
touch testecho "test file" >> testdeploymaster status --repo production
If you are using TLS, you'll see this
Certificate fingerprint: 69:5B:97:20:D3:7B:56:08:8C:80:36:FE:6A:41:6F:A5:36:08:4B:E2Do you trust it ?es o ermanently:
If its ok, type "y" or "p" and press enter else type "n" and press enter
Push new/modified files to host
If you have new files;
deploymaster push --repo production
Publish all to production
deploymaster publish --repo production
(New and modified files should be pushed.)
Notice!
New and modified files come from pushed files to host directory.
If you have some changes and 100 new/modified files and pushed it.
When you did;
deploymaster push --repo productiondeploymaster publish --production testing
and after testing.. when you did;
deploymaster publish --production production
New/modified 100 files come from host directory.
DeployMaster prefers Testing - Production
approach.
Ignorelist
Create .ignorelist.deploymaster
file in development repo
and production directory
It is like this
/config.php/config/db.php/temp/static
The main approach is two same ignorelists at development and production directories both.
But you might be want some specific ignored items for testing
or production
repos.
Notice!
In development or production sides, DeployMaster will track files in all directories and sub-directories if they are not included in ignorelist.
If you are using only ignorelist in development or production side, DeployMaster will look for all files in other side..
Contributing
If you think you can contribute to DeployMaster, clone, code, commit and create a pull request!
License
MIT