Project

deployml

0.02
Repository is archived
No commit activity in last 3 years
No release in over 3 years
DeploYML is a simple deployment solution that uses a single YAML file, Git and SSH.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

~> 2.4
~> 0.7

Runtime

~> 0.2
~> 0.14
 Project Readme

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: 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

Install

$ sudo gem install deployml

Copyright

Copyright (c) 2010-2012 Hal Brodigan

See {file:LICENSE.txt} for license information.