DeploYML
- Source
- Issues
- Documentation
- [Email](mailto:postmodern.mod3 at gmail.com)
Description
DeploYML is a simple deployment solution that uses a single YAML file, Git and SSH.
Features
- Requires only one YAML file (
config/deploy.yml
) with a minimum of two settings (source
anddest
). - Supports multiple deployment environments (
config/deploy/staging.yml
). - Supports multiple deployment destinations.
- Supports Git.
- Can deploy Ruby web applications or static sites.
- Supports common Web Servers:
- Supports common Web Application frameworks:
-
Rails:
- Bundler
- ActiveRecord
- DataMapper
-
Rails:
- Does not require anything else to be installed on the servers.
-
Does not use
net-ssh
. - Supports any Operating System that supports Ruby and SSH.
- Provides a simple command-line interface using Thor.
Configuration Examples
Specifying source
and dest
URIs as Strings:
source: git@github.com:user/project.git
dest: deploy@www.example.com/var/www/site
Specifying dest
URI as a Hash:
source: git@github.com:user/project.git
dest:
user: deploy
host: www.example.com
path: /var/www/site
Specify multiple dest
URIs:
source: git@github.com:user/project.git
dest:
- deploy@www1.example.com/var/www/site
- deploy@www2.example.com/var/www/site
- deploy@www3.example.com/var/www/site
Specifying a server
option:
source: git@github.com:user/project.git
dest: deploy@www.example.com/var/www/site
server: apache
Specifying a server
with options:
source: git@github.com:user/project.git
dest: deploy@www.example.com/var/www/site
server:
name: thin
options:
servers: 4
deamonize: true
socket: /var/run/thin.sock
rackup: true
Multiple environments:
# config/deploy.yml
source: git@github.com:user/project.git
framework: rails
orm: datamapper
# config/deploy/staging.yml
dest: ssh://deploy@www.example.com/srv/staging
server:
name: thin
options:
config: /etc/thin/staging.yml
socket: /tmp/thin.staging.sock
# config/deploy/production.yml
dest: ssh://deploy@www.example.com/srv/project
server:
name: thin
options:
config: /etc/thin/example.yml
socket: /tmp/thin.example.sock
Specifying before/after commands:
before:
restart: rm public/some/file
after:
install:
- mkdir tmp
- mkdir tmp/pids
- mkdir log
update: rake post_deploy
Synopsis
Cold-Deploy a new project:
$ deployml deploy
Redeploy a project:
$ deployml redeploy
Run a rake task on the deploy server:
$ deployml rake 'db:automigrate'
Execute a command on the deploy server:
$ deployml exec 'whoami'
SSH into the deploy server:
$ deployml ssh
List available tasks:
$ deployml help
Requirements
- ruby >= 1.8.6
- addressable ~> 2.2
- rprogram ~> 0.2
- thor ~> 0.14
Install
$ sudo gem install deployml
Copyright
Copyright (c) 2010-2012 Hal Brodigan
See {file:LICENSE.txt} for license information.