egads 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +36 -1
- data/lib/egads/cli.rb +4 -3
- data/lib/egads/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
NDFlMTY3OGRkMWMxNzAyYjI3ZWRmYWVlYzA1NTk5NDNhZjFmMWIzYQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YmZmNTIyNDkxYzBkYWQ1YjBmNzIyNmYxZGNhMjcxYTJlOGIxMjllYg==
|
7
7
|
!binary "U0hBNTEy":
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YzNhOTAxMTNlOTVjODlmZjkxMGUxZjNiMDViYTIwZTU1ZTBmM2MzMDI4OTZm
|
10
|
+
YmI0OTJkMTRmNWQxMTE0YjU5NWE0M2MzNDNlYjRkYWMzYjcyODg1OWU2ZDlk
|
11
|
+
ZTYxNTExMjhiMjE4MTRiYjYzN2YxOGMwOThjZTk4ODgyZmQxMTE=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
MTdlNjhjYzBlOWI3Mzc5MTJiZGVmYmNhYzdjZGJiNzBmZDY4N2ZkY2EwMDVh
|
14
|
+
ZWM4ODM4YmQwOGIwOWNkNjUwMDQ5NGQ2NWZlY2UyOTgzNmUyMDIzNDI4ZDA1
|
15
|
+
MTAwYzFiNjk4YTM0ZmQ2MmRmNDdlNWZhMjU4YmVhYjBjOGFjYzM=
|
data/README.md
CHANGED
@@ -5,9 +5,44 @@
|
|
5
5
|
For local work (building and uploading tarballs), put `egads` in your Gemfile:
|
6
6
|
|
7
7
|
# In Gemfile
|
8
|
-
gem 'egads'
|
8
|
+
gem 'egads', require: nil
|
9
9
|
|
10
10
|
On remote machines (to which you deploy), `egads` must be in your PATH.
|
11
11
|
So install `egads` as a system gem:
|
12
12
|
|
13
13
|
sudo gem install egads
|
14
|
+
|
15
|
+
## Commands
|
16
|
+
|
17
|
+
See `egads -h` for the most robust & up-to-date info. Here's a whirlwind tour.
|
18
|
+
|
19
|
+
Egads has two types of commands. *Local* commands run on your development machine or continuous integration environment. *Remote* commands run on deployed servers.
|
20
|
+
|
21
|
+
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.
|
22
|
+
|
23
|
+
### Local commands
|
24
|
+
|
25
|
+
* `egads build [SHA]` - makes a deployable tarball of the current commit and upload it to S3 (if missing).
|
26
|
+
* `egads upload SHA` - (plumbing, called by `build`) Uploads a pre-built tarball
|
27
|
+
|
28
|
+
### Remote commands
|
29
|
+
|
30
|
+
* `egads stage SHA` - Prepares an extracted tarball for release: runs bundler, copies config files, etc.
|
31
|
+
* `egads release SHA` - Symlinks a staged release to current, restarts services
|
32
|
+
* `egads extract SHA` - (plumbing, called by `stage`) Downloads and untars a tarball from S3.
|
33
|
+
* `egads clean` - (plumbing, called by `release`) Deletes old releases to free space.
|
34
|
+
|
35
|
+
## Configuration
|
36
|
+
|
37
|
+
There are two config files:
|
38
|
+
|
39
|
+
* `egads.yml` ([example](example/egads.yml)) is in your git repo and tarballs. It has instructions for building, staging, and releasing tarballs.
|
40
|
+
* `/etc/egads.yml` ([example](example/egads_remote.yml)) 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.
|
41
|
+
|
42
|
+
## Deploy process
|
43
|
+
|
44
|
+
The deploy process is:
|
45
|
+
|
46
|
+
* 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.
|
47
|
+
* Run `egads stage SHA` on all the remote servers to download, extract, and configure the SHA for release.
|
48
|
+
* Run `egads release SHA` on all the remote servers to symlink the staged SHA to 'current', and restart services.
|
data/lib/egads/cli.rb
CHANGED
@@ -59,6 +59,7 @@ module Egads
|
|
59
59
|
tarball = S3Tarball.new(sha)
|
60
60
|
if !options[:force] && tarball.exists?
|
61
61
|
say "Tarball for #{sha} already exists. Pass --force to upload again."
|
62
|
+
return
|
62
63
|
end
|
63
64
|
|
64
65
|
path = tarball.local_gzipped_path
|
@@ -79,7 +80,7 @@ module Egads
|
|
79
80
|
desc "extract SHA", "[remote, plumbing] Downloads tarball for SHA from S3 and extracts it to the filesystem"
|
80
81
|
method_option :force, type: :boolean, default: false, banner: "Overwrite existing files"
|
81
82
|
def extract(sha)
|
82
|
-
dir = RemoteConfig.release_dir
|
83
|
+
dir = RemoteConfig.release_dir(sha)
|
83
84
|
path = File.join(dir, "#{sha}.tar.gz")
|
84
85
|
tarball = S3Tarball.new(sha, true)
|
85
86
|
|
@@ -111,7 +112,7 @@ module Egads
|
|
111
112
|
method_option :force, type: :boolean, default: false, banner: "Overwrite existing files"
|
112
113
|
def stage(sha)
|
113
114
|
invoke(:extract, [sha], options)
|
114
|
-
dir = RemoteConfig.release_dir
|
115
|
+
dir = RemoteConfig.release_dir(sha)
|
115
116
|
stage_flag_path = File.join(dir, '.egads-stage-success')
|
116
117
|
if options[:force] || !File.exists?(stage_flag_path)
|
117
118
|
inside dir do
|
@@ -139,7 +140,7 @@ module Egads
|
|
139
140
|
method_option :force, type: :boolean, default: false, banner: "Overwrite existing files while staging"
|
140
141
|
def release(sha)
|
141
142
|
invoke(:stage, [sha], options)
|
142
|
-
dir = RemoteConfig.release_dir
|
143
|
+
dir = RemoteConfig.release_dir(sha)
|
143
144
|
inside dir do
|
144
145
|
run_hooks_for(:release, :before)
|
145
146
|
end
|
data/lib/egads/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: egads
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Aaron Suggs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-06-
|
11
|
+
date: 2013-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fog
|