DeploYML

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 and dest).
  • 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:
  • 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: [email protected]:user/project.git
dest: [email protected]/var/www/site

Specifying dest URI as a Hash:

source: [email protected]:user/project.git
dest:
  user: deploy
  host: www.example.com
  path: /var/www/site

Specify multiple dest URIs:

source: [email protected]:user/project.git
dest:
  - [email protected]/var/www/site
  - [email protected]/var/www/site
  - [email protected]/var/www/site

Specifying a server option:

source: [email protected]:user/project.git
dest: [email protected]/var/www/site
server: apache

Specifying a server with options:

source: [email protected]:user/project.git
dest: [email protected]/var/www/site
server:
  name: thin
  options:
    servers: 4
deamonize: true
socket: /var/run/thin.sock
rackup: true

Multiple environments:

# config/deploy.yml
source: [email protected]:user/project.git
framework: rails
orm: datamapper

# config/deploy/staging.yml
dest: ssh://[email protected]/srv/staging
server:
  name: thin
  options:
    config: /etc/thin/staging.yml
    socket: /tmp/thin.staging.sock

# config/deploy/production.yml
dest: ssh://[email protected]/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

Install

$ sudo gem install deployml

Copyright (c) 2010-2012 Hal Brodigan

See LICENSE for license information.