Project

egads

0.01
Low commit activity in last 3 years
A long-lived project that still receives updates
A collection of scripts for making a deployable tarball of a git commit, uploading it to Amazon S3, and downloading it to your servers.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

>= 0

Runtime

>= 0
>= 0
 Project Readme

egads!!!

Extensible Git-Archive Deploy Strategy

Test and Release

egads is a set of commands for deploying applications without depending on a git server.

Build Status Code Climate

Install

Put egads in your Gemfile:

# ./Gemfile
gem 'egads', require: nil

On remote machines (to which you deploy), egads must be in your PATH. So install egads as a system gem:

gem install egads

Commands

See egads -h for the most robust & up-to-date info. Here's a whirlwind tour.

Egads has two types of commands. Local commands run on your development machine or continuous integration environment. Remote commands run on deployed servers.

Commands are either porcelain commands that you should call directly as part of a typical workflow; or plumbing commands that are invoked by porcelain commands, and rarely invoked directly.

Local commands

  • egads check SHA - checks if a deployable tarball of the current commit exists on S3.
  • egads build SHA - makes a deployable tarball of the current commit and upload it to S3 (if missing).
  • egads upload SHA - (plumbing, called by build) Uploads a pre-built tarball.

Remote commands

  • egads stage SHA - Prepares an extracted tarball for release: runs bundler, copies config files, etc.
  • egads release SHA - Symlinks a staged release to current, restarts services
  • egads extract SHA - (plumbing, called by stage) Downloads and untars a tarball from S3.
  • egads clean - (plumbing, called by release) Deletes old releases to free space.

Configuration

There are two config files:

  • egads.yml (example) is in your git repo and tarballs. It has instructions for building, staging, and releasing tarballs.
  • /etc/egads.yml (example) on remote servers has some configuration for downloading and extracting tarballs from S3; and some environment variables that could vary across environments. This file is presumably provisioned by a tool like Chef or Puppet.

Deploy process

The deploy process is:

  • Run egads build from a server with a full git checkout (e.g. your local machine). This ensures there's a tarball for the remote servers to download.
  • Run egads stage SHA on all the remote servers to download, extract, and configure the SHA for release.
  • Run egads release SHA on all the remote servers to symlink the staged SHA to 'current', and restart services.

Publishing a New Gem Version

To publish a new version of egads:

  1. Update Egads::VERSION
  2. Commit and push to GitHub
  3. Create a new GitHub release
  4. Monitor the Test and Release action to ensure the gem is published successfully

License

Copyright (c) 2013 Kickstarter, Inc

Released under an MIT License