foreplay 0.2.0 → 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/foreplay/deploy.rb +6 -7
- data/lib/foreplay/version.rb +1 -1
- data/spec/lib/foreplay/deploy_spec.rb +25 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 97f18a0731191cf469fba1995ee53ecd33c2fbc2
|
4
|
+
data.tar.gz: b4bcb4397858d6d851eeac32b87efd65077e1c20
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b02466199c0278fc600d582027ad50969ae558e6ba4cdc37508065fb4d11f0ff0ffeb62c27226f582629f85ef5dd4ea1f979721bfe793fa473353ac266e9d303
|
7
|
+
data.tar.gz: 83471c6f9631f3158a64e32fce3d82d1648a8341e7d1cd2aaa064ebbeb4380e566515509e2a5f3164946526aa6bdf38911de194bd5f1f8f35eb8e4c5cd61362a
|
data/lib/foreplay/deploy.rb
CHANGED
@@ -145,6 +145,11 @@ module Foreplay
|
|
145
145
|
instructions[:foreman]['user'] = user
|
146
146
|
instructions[:foreman]['log'] = "$HOME/#{path}/#{current_port}/log"
|
147
147
|
|
148
|
+
# Contents of .env file
|
149
|
+
instructions[:env]['HOME'] = '$HOME'
|
150
|
+
instructions[:env]['SHELL'] = '$SHELL'
|
151
|
+
instructions[:env]['PATH'] = '$PATH:`which bundle`'
|
152
|
+
|
148
153
|
# Commands to execute on remote server
|
149
154
|
steps = [
|
150
155
|
{ command: "mkdir -p #{path} && cd #{path} && rm -rf #{current_port} && git clone #{repository} #{current_port}",
|
@@ -153,7 +158,7 @@ module Foreplay
|
|
153
158
|
commentary: 'Trusting the .rvmrc file for the new instance' },
|
154
159
|
{ command: "rvm rvmrc warning ignore #{current_port}",
|
155
160
|
commentary: 'Ignoring the .rvmrc warning for the new instance' },
|
156
|
-
{ command: "cd #{current_port}",
|
161
|
+
{ command: "cd #{current_port} && mkdir -p log",
|
157
162
|
commentary: 'If you have a .rvmrc file there may be a delay now while we install a new ruby' },
|
158
163
|
{ command: 'if [ -f .ruby-version ] ; then rvm install `cat .ruby-version` ; else echo "No .ruby-version file found" ; fi',
|
159
164
|
commentary: 'If you have a .ruby-version file there may be a delay now while we install a new ruby' },
|
@@ -184,12 +189,6 @@ module Foreplay
|
|
184
189
|
commentary: 'Using bundler to install the required gems in deployment mode' },
|
185
190
|
{ command: 'sudo ln -f `which foreman` /usr/bin/foreman || echo Using default version of foreman',
|
186
191
|
commentary: 'Setting the current version of foreman to be the default' },
|
187
|
-
{ command: 'echo HOME="$HOME" >> .env',
|
188
|
-
commentary: 'Adding home path to .env (foreplay issue #443)' },
|
189
|
-
{ command: 'echo SHELL="$SHELL" >> .env',
|
190
|
-
commentary: 'Adding shell path to .env (foreplay issue #443)' },
|
191
|
-
{ command: 'echo PATH="$PATH:`which bundle`" >> .env',
|
192
|
-
commentary: 'Adding bundler path to .env (foreplay issue #443)' },
|
193
192
|
{ command: 'sudo foreman export upstart /etc/init',
|
194
193
|
commentary: "Converting #{current_service} to an upstart service" },
|
195
194
|
{ command: "sudo start #{current_service} || sudo restart #{current_service}",
|
data/lib/foreplay/version.rb
CHANGED
@@ -11,7 +11,7 @@ describe Foreplay::Deploy do
|
|
11
11
|
before :each do
|
12
12
|
# Setup foreplay
|
13
13
|
`rm -f config/foreplay.yml`
|
14
|
-
`foreplay setup -r git@github.com:Xenapto/foreplay.git -s
|
14
|
+
`foreplay setup -r git@github.com:Xenapto/foreplay.git -s web1.example.com web2.example.com -f apps/%a -u fred --password trollope`
|
15
15
|
|
16
16
|
# Stub all the things
|
17
17
|
Net::SSH.stub(:start).and_yield(session)
|
@@ -40,7 +40,7 @@ describe Foreplay::Deploy do
|
|
40
40
|
expect { Foreplay::Deploy.start([:deploy, 'production', '']) }
|
41
41
|
.to raise_error(
|
42
42
|
RuntimeError,
|
43
|
-
/.*No authentication methods supplied. You must supply a private key, key file or password in the configuration file
|
43
|
+
/.*No authentication methods supplied. You must supply a private key, key file or password in the configuration file.*/
|
44
44
|
)
|
45
45
|
end
|
46
46
|
|
@@ -48,18 +48,36 @@ describe Foreplay::Deploy do
|
|
48
48
|
`rm -f config/foreplay.yml`
|
49
49
|
`foreplay setup -r git@github.com:Xenapto/foreplay.git -s web.example.com -f apps/%a -u fred --keyfile "/home/fred/no-such-file"`
|
50
50
|
expect { Foreplay::Deploy.start([:deploy, 'production', '']) }
|
51
|
-
.to raise_error(Errno::ENOENT, %r{.*No such file or directory @ rb_sysopen - /home/fred/no-such-file
|
51
|
+
.to raise_error(Errno::ENOENT, %r{.*No such file or directory @ rb_sysopen - /home/fred/no-such-file.*})
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'complains if a mandatory key is missing from the config file' do
|
55
|
+
`sed -i 's/path:/pxth:/' config/foreplay.yml`
|
56
|
+
|
57
|
+
expect { Foreplay::Deploy.start([:deploy, 'production', '']) }
|
58
|
+
.to raise_error(
|
59
|
+
RuntimeError,
|
60
|
+
/.*Required key path not found in instructions for production environment.*/
|
61
|
+
)
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'complains if we try to deploy an environment that isn\'t defined' do
|
65
|
+
expect { Foreplay::Deploy.start([:deploy, 'unknown', '']) }
|
66
|
+
.to raise_error(
|
67
|
+
RuntimeError,
|
68
|
+
/.*No deployment configuration defined for unknown environment.*/
|
69
|
+
)
|
52
70
|
end
|
53
71
|
|
54
72
|
it 'should terminate if a remote process exits with a non-zero status' do
|
55
73
|
process.stub(:exit_status).and_return(1)
|
56
|
-
expect { Foreplay::Deploy.start([:deploy, 'production', '']) }.to raise_error(RuntimeError, /.*output message
|
74
|
+
expect { Foreplay::Deploy.start([:deploy, 'production', '']) }.to raise_error(RuntimeError, /.*output message.*/)
|
57
75
|
end
|
58
76
|
|
59
77
|
it "should terminate if a connection can't be established with the remote server" do
|
60
78
|
Net::SSH.unstub(:start)
|
61
79
|
expect { Foreplay::Deploy.start([:deploy, 'production', '']) }
|
62
|
-
.to raise_error(RuntimeError, /.*There was a problem starting an ssh session on
|
80
|
+
.to raise_error(RuntimeError, /.*There was a problem starting an ssh session on web1.example.com.*/)
|
63
81
|
end
|
64
82
|
|
65
83
|
it 'should check the config' do
|
@@ -68,13 +86,13 @@ describe Foreplay::Deploy do
|
|
68
86
|
end
|
69
87
|
|
70
88
|
it 'should deploy to the environment' do
|
71
|
-
Net::SSH.should_receive(:start).with('
|
89
|
+
Net::SSH.should_receive(:start).with('web1.example.com', 'fred', verbose: :warn, port: 22, password: 'trollope').and_yield(session)
|
72
90
|
|
73
91
|
[
|
74
92
|
'mkdir -p apps/foreplay && cd apps/foreplay && rm -rf 50000 && git clone git@github.com:Xenapto/foreplay.git 50000',
|
75
93
|
'rvm rvmrc trust 50000',
|
76
94
|
'rvm rvmrc warning ignore 50000',
|
77
|
-
'cd 50000',
|
95
|
+
'cd 50000 && mkdir -p log',
|
78
96
|
'if [ -f .ruby-version ] ; then rvm install `cat .ruby-version` ; else echo "No .ruby-version file found" ; fi',
|
79
97
|
'mkdir -p config',
|
80
98
|
'echo "RAILS_ENV=production" > .env',
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: foreplay
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Xenapto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|