Simple project files watcher and deployer.
The scenario is when we are developing in your local workspace and the program only runs in specific runtime environment, we have to setup by ourself to make the program run and debug on runtime folders, or remote machines. Caravan is the automation tool designed for solving such kind of problems by watching the file changes, and deploy them automatically to its destination.
This is the caravan in Sid Meier’s Civilization V, where the project name originally comes from.
$ gem install caravan
$ caravan --help
-s, --source SOURCE_PATH Source path
-d, --dest DEST_PATH Destination path
-m, --mode DEPLOY_MODE Deploy mode
-i, --ignore IGNORE_FILES Ignore files
-o, --once Deploy for once
-b, --debug Debug mode
-l, --load YAML_FILE YAML file (Default: ./caravan.yml)
--version Show version
Deploy to local directory:
$ caravan -s /path/to/project/. -d /path/to/deploy -m shell
Deploy to remote machines:
$ caravan -s /path/to/project/. -d user@remote_machines:/path/to/deploy -m rsync
Deploy only once:
$ caravan -s /path/to/project/. -d user@remote_machines:/path/to/deploy -m rsync --once
Generate default configuration:
$ cd /path/to/src
$ caravan --init
A caravan.yml
will be generated as /path/to/src/caravan.yml
. You may specify any options in command arguments except source path.
debug: false
deploy_mode: rsync_local
incremental: true
exclude:
- ".git"
- ".svn"
You may also write src
and dst
to caravan.yml
. Hence, deployment made even easier.
$ caravan
caravan.yml
can be named as you like. To load your own YAML file, use --load
:
$ caravan --load my-caravan.yml
cp
in local.scp
to remote machines, not recommended.rsync
to remote machines, which is the default and recommended mode because it is incremental. Thus, it performs much better.rsync
in local.caravan.yml
for project-specialized configurationafter_create
after_change
before_deploy
after_deploy
before_destroy