jumpup-heroku 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/.travis.yml +3 -0
- data/CHANGELOG.md +23 -0
- data/LICENSE +1 -1
- data/README.md +20 -3
- data/Rakefile +4 -10
- data/jumpup-heroku.gemspec +2 -2
- data/lib/jumpup/heroku/integrate.rb +48 -69
- data/lib/jumpup/heroku/version.rb +1 -1
- data/lib/tasks/integrate.rake +2 -12
- data/spec/jumpup/heroku/configuration_spec.rb +58 -72
- data/spec/jumpup/heroku/integrate_spec.rb +101 -0
- metadata +11 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ad3455b4d9530976fca4b7864e0b253c4c5b454e
|
4
|
+
data.tar.gz: e85afab2e046724e7dcb7811f7e896a6cd3d870c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 781ce3f2f9274df3598f41f3574efe210ee30e5eaf7aaea2905c96d9bcfd5c9ac1e00edf78802a324868c95c1b151e408e8dd4d43d97ca46010dc3640c3c1a1f
|
7
|
+
data.tar.gz: dd0c7c85f276cb15a7f34dfbfad715281b3bd68e0f95cc339a09f4774e40f3a115aa0c1e1b4d8169979ae2421fbd10ff0790356e78e24d58746032672da09747
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2.1.2
|
data/.travis.yml
ADDED
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,28 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 0.0.7 (unreleased)
|
4
|
+
|
5
|
+
### features
|
6
|
+
|
7
|
+
### improvements
|
8
|
+
|
9
|
+
### bug fixes
|
10
|
+
|
11
|
+
## 0.0.6 (April 8, 2015)
|
12
|
+
|
13
|
+
### features
|
14
|
+
- Add option to skip spec on deploy to production with SKIP_SPEC environment variable
|
15
|
+
- Tells deploy to skip backup trough SKIP_BACKUP env var
|
16
|
+
|
17
|
+
### improvements
|
18
|
+
- Remove jumpup:coverage_verify from README. Not required on jumpup 0.0.6
|
19
|
+
- Swap the order of `jumpup:finish` and `jumpup:heroku:finish` tasks on README.
|
20
|
+
|
21
|
+
### bug fixes
|
22
|
+
- Ensure user has logged in to heroku before proceeding with integration [[GH-48](https://github.com/Helabs/jumpup-heroku/issues/48)]
|
23
|
+
- Set RSpec version on runtime dependency
|
24
|
+
- Use new syntax for pg:backups [[GH-72](https://github.com/Helabs/jumpup-heroku/issues/72)]
|
25
|
+
|
3
26
|
## 0.0.5 (March 31, 2014)
|
4
27
|
|
5
28
|
### features
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# Jumpup-heroku
|
2
2
|
[![RubyGems][gem_version_badge]][ruby_gems]
|
3
|
+
[](https://codeclimate.com/github/Helabs/jumpup-heroku)
|
4
|
+
[](https://gemnasium.com/Helabs/jumpup-heroku)
|
5
|
+
[](https://travis-ci.org/Helabs/jumpup-heroku)
|
3
6
|
|
4
7
|
Rake tasks to deploy any Rails application on [Heroku](http://heroku.com) using [Jumpup](https://github.com/Helabs/jumpup).
|
5
8
|
|
@@ -35,9 +38,8 @@ Without groups on Gemfile, because of initializer.
|
|
35
38
|
jumpup:bundle_install
|
36
39
|
db:migrate
|
37
40
|
spec
|
38
|
-
jumpup:coverage_verify
|
39
|
-
jumpup:finish
|
40
41
|
jumpup:heroku:finish
|
42
|
+
jumpup:finish
|
41
43
|
)
|
42
44
|
```
|
43
45
|
|
@@ -108,6 +110,13 @@ $ git push -u origin production
|
|
108
110
|
|
109
111
|
And send to Heroku with ```rake jumpup:heroku:deploy:production``` or as an alias ```rake integrate:production```
|
110
112
|
|
113
|
+
#### Need to skip spec on integrate to production?
|
114
|
+
|
115
|
+
Set the environment variable SKIP_SPEC=1 before integrating to production.
|
116
|
+
|
117
|
+
```SKIP_SPEC=1 rake integrate:production```
|
118
|
+
|
119
|
+
|
111
120
|
## Versioning
|
112
121
|
|
113
122
|
Jumpup-heroku follow the [Semantic Versioning](http://semver.org/).
|
@@ -122,7 +131,8 @@ Please see [CONTRIBUTING.md](https://github.com/Helabs/jumpup-heroku/blob/master
|
|
122
131
|
|
123
132
|
## Maintainers
|
124
133
|
|
125
|
-
- [
|
134
|
+
- [Marcio Junior](https://github.com/marcioj)
|
135
|
+
- [Tomás Augusto Müller](https://github.com/tomasmuller)
|
126
136
|
|
127
137
|
## Release
|
128
138
|
|
@@ -146,3 +156,10 @@ Jumpup-heroku is Copyright © 2013-2014 HE:labs. It is free software, and may be
|
|
146
156
|
|
147
157
|
[gem_version_badge]: https://badge.fury.io/rb/jumpup-heroku.png
|
148
158
|
[ruby_gems]: http://rubygems.org/gems/jumpup-heroku
|
159
|
+
|
160
|
+
|
161
|
+
## Made with love by HE:labs
|
162
|
+
|
163
|
+

|
164
|
+
|
165
|
+
This gem was created and is maintained by [HE:labs](https://github.com/Helabs).
|
data/Rakefile
CHANGED
@@ -1,14 +1,8 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
require 'rspec/core'
|
1
|
+
require 'bundler/gem_tasks'
|
4
2
|
require 'rspec/core/rake_task'
|
5
|
-
RSpec::Core::RakeTask.new(:spec) do |spec|
|
6
|
-
spec.pattern = FileList['spec/**/*_spec.rb']
|
7
|
-
end
|
8
3
|
|
9
|
-
RSpec::Core::RakeTask.new
|
10
|
-
|
11
|
-
spec.rcov = true
|
4
|
+
RSpec::Core::RakeTask.new do |t|
|
5
|
+
t.pattern = 'spec/**/*_spec.rb'
|
12
6
|
end
|
13
7
|
|
14
|
-
task :
|
8
|
+
task default: :spec
|
data/jumpup-heroku.gemspec
CHANGED
@@ -20,6 +20,6 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
22
|
spec.add_development_dependency "rake"
|
23
|
-
spec.add_development_dependency "rspec"
|
24
|
-
spec.add_development_dependency "pry", "0.
|
23
|
+
spec.add_development_dependency "rspec", "3.1.0"
|
24
|
+
spec.add_development_dependency "pry", "0.10.1"
|
25
25
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'pathname'
|
2
|
+
|
1
3
|
module Jumpup
|
2
4
|
module Heroku
|
3
5
|
|
@@ -29,26 +31,12 @@ module Jumpup
|
|
29
31
|
end
|
30
32
|
|
31
33
|
def self.check
|
32
|
-
message = "Checking if
|
34
|
+
message = "Checking if you can integrate to #{integrate.app}"
|
33
35
|
integrate.when_branch_send_to_heroku(message) do
|
34
36
|
integrate.check
|
35
37
|
end
|
36
38
|
end
|
37
39
|
|
38
|
-
def self.lock
|
39
|
-
message = "Locking Heroku integration on app #{integrate.app}"
|
40
|
-
integrate.when_branch_send_to_heroku(message) do
|
41
|
-
integrate.lock
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
def self.unlock
|
46
|
-
message = "Unlocking Heroku integration on app #{integrate.app}"
|
47
|
-
integrate.when_branch_send_to_heroku(message) do
|
48
|
-
integrate.unlock
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
40
|
def self.integrate
|
53
41
|
envs = Env.all
|
54
42
|
app = envs[:app] || envs[:staging_app]
|
@@ -74,33 +62,27 @@ module Jumpup
|
|
74
62
|
end
|
75
63
|
|
76
64
|
def deploy
|
77
|
-
if run_database_tasks?
|
78
|
-
check_if_migration_is_needed
|
79
|
-
check_if_seed_is_needed
|
80
|
-
end
|
65
|
+
run_database_checks if run_database_tasks?
|
81
66
|
|
82
|
-
backup
|
67
|
+
backup if run_database_tasks? and !skip_backup?
|
83
68
|
push(Env.all[:deploy_branch])
|
84
|
-
migrate
|
85
|
-
seed
|
69
|
+
migrate if run_database_tasks?
|
70
|
+
seed if run_database_tasks?
|
86
71
|
restart
|
87
72
|
end
|
88
73
|
|
89
74
|
def deploy_to_production
|
90
|
-
if run_database_tasks?
|
91
|
-
check_if_migration_is_needed
|
92
|
-
check_if_seed_is_needed
|
93
|
-
end
|
75
|
+
run_database_checks if run_database_tasks?
|
94
76
|
|
95
77
|
confirm_deploy
|
96
|
-
spec
|
78
|
+
spec unless skip_spec?
|
97
79
|
confirm_maintenance
|
98
80
|
maintenance
|
99
|
-
backup
|
81
|
+
backup if run_database_tasks? and !skip_backup?
|
100
82
|
tag
|
101
83
|
push(Env.all[:deploy_to_production_branch])
|
102
|
-
migrate
|
103
|
-
seed
|
84
|
+
migrate if run_database_tasks?
|
85
|
+
seed if run_database_tasks?
|
104
86
|
close_maintenance
|
105
87
|
restart
|
106
88
|
end
|
@@ -111,25 +93,23 @@ module Jumpup
|
|
111
93
|
end
|
112
94
|
|
113
95
|
def check
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
def lock
|
120
|
-
return if integrating_by?(user)
|
121
|
-
|
122
|
-
puts "----> Locking Heroku integration for you (#{user})"
|
123
|
-
exec_with_clean_env("heroku config:set INTEGRATING_BY='#{user}' --app #{app}")
|
124
|
-
end
|
125
|
-
|
126
|
-
def unlock
|
127
|
-
exec_with_clean_env("heroku config:unset INTEGRATING_BY --app #{app}")
|
96
|
+
unless authenticated_on_heroku?
|
97
|
+
puts "----> You haven't logged in to heroku, please run `heroku login`"
|
98
|
+
exit 1
|
99
|
+
end
|
128
100
|
end
|
129
101
|
|
130
102
|
private
|
131
103
|
attr_reader :envs, :maintenance_mode
|
132
104
|
|
105
|
+
def skip_spec?
|
106
|
+
ENV['SKIP_SPEC']
|
107
|
+
end
|
108
|
+
|
109
|
+
def skip_backup?
|
110
|
+
ENV['SKIP_BACKUP']
|
111
|
+
end
|
112
|
+
|
133
113
|
def check_if_migration_is_needed
|
134
114
|
files_changed = run_with_clean_env("git diff HEAD #{latest_remote_sha} --name-only -- db/migrate | wc -l").strip.to_i
|
135
115
|
@migrations_changed = files_changed > 0
|
@@ -144,16 +124,11 @@ module Jumpup
|
|
144
124
|
@latest_remote_sha ||= run_with_clean_env("git ls-remote git@heroku.com:#{app}.git HEAD 2>/dev/null | awk '{ print $1 }'").strip
|
145
125
|
end
|
146
126
|
|
147
|
-
def
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
integrating_by == user
|
153
|
-
end
|
154
|
-
|
155
|
-
def integrating_by
|
156
|
-
@integrating_by ||= run_with_clean_env("heroku config:get INTEGRATING_BY --app #{app}").strip
|
127
|
+
def authenticated_on_heroku?
|
128
|
+
netrc = Pathname("#{ENV['HOME']}/.netrc").expand_path
|
129
|
+
if netrc.readable?
|
130
|
+
netrc.read =~ /^machine api\.heroku\.com/
|
131
|
+
end
|
157
132
|
end
|
158
133
|
|
159
134
|
def user
|
@@ -191,40 +166,35 @@ module Jumpup
|
|
191
166
|
end
|
192
167
|
|
193
168
|
def backup
|
194
|
-
|
195
|
-
|
196
|
-
exec_with_clean_env("heroku pgbackups:capture --expire --app #{app}")
|
169
|
+
output "Backing up database"
|
170
|
+
exec_with_clean_env("heroku pg:backups capture --app #{app}")
|
197
171
|
end
|
198
172
|
|
199
173
|
def migrate
|
200
|
-
return unless run_database_tasks?
|
201
|
-
|
202
174
|
if @migrations_changed
|
203
|
-
|
175
|
+
output "Migrating"
|
204
176
|
exec_with_clean_env("heroku run rake db:migrate --app #{app}")
|
205
177
|
else
|
206
|
-
|
178
|
+
output "Skipping migrations"
|
207
179
|
end
|
208
180
|
end
|
209
181
|
|
210
182
|
def seed
|
211
|
-
return unless run_database_tasks?
|
212
|
-
|
213
183
|
if @seeds_changed
|
214
|
-
|
184
|
+
output "Seeding"
|
215
185
|
exec_with_clean_env("heroku run rake db:seed --app #{app}")
|
216
186
|
else
|
217
|
-
|
187
|
+
output "Skipping seeds"
|
218
188
|
end
|
219
189
|
end
|
220
190
|
|
221
191
|
def restart
|
222
|
-
|
192
|
+
output "Restarting"
|
223
193
|
exec_with_clean_env("heroku restart --app #{app}")
|
224
194
|
end
|
225
195
|
|
226
196
|
def push(branch)
|
227
|
-
|
197
|
+
output "Pushing to #{host} from branch [#{branch}]"
|
228
198
|
exec_with_clean_env("git push git@#{host}:#{app}.git #{branch}:master")
|
229
199
|
end
|
230
200
|
|
@@ -248,10 +218,10 @@ module Jumpup
|
|
248
218
|
|
249
219
|
def maintenance
|
250
220
|
if maintenance?
|
251
|
-
|
221
|
+
output "Setting Maintenance on"
|
252
222
|
exec_with_clean_env("heroku maintenance:on --app #{app}")
|
253
223
|
restart
|
254
|
-
|
224
|
+
output "Waiting 20 seconds to app come back (in maintenance mode)"
|
255
225
|
sleep(20)
|
256
226
|
end
|
257
227
|
end
|
@@ -281,6 +251,15 @@ module Jumpup
|
|
281
251
|
def actual_branch
|
282
252
|
run_with_clean_env("git rev-parse --abbrev-ref HEAD").strip
|
283
253
|
end
|
254
|
+
|
255
|
+
def output(message)
|
256
|
+
puts "----> [#{app}] #{message}"
|
257
|
+
end
|
258
|
+
|
259
|
+
def run_database_checks
|
260
|
+
check_if_migration_is_needed
|
261
|
+
check_if_seed_is_needed
|
262
|
+
end
|
284
263
|
end
|
285
264
|
end
|
286
265
|
end
|
data/lib/tasks/integrate.rake
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
namespace :jumpup do
|
2
2
|
namespace :heroku do
|
3
3
|
|
4
|
-
task :start => ["add_remote", "check"
|
5
|
-
task :finish => ["deploy"
|
4
|
+
task :start => ["add_remote", "check"]
|
5
|
+
task :finish => ["deploy"]
|
6
6
|
|
7
7
|
desc "Add Heroku git remotes"
|
8
8
|
task add_remote: :environment do
|
@@ -14,16 +14,6 @@ namespace :jumpup do
|
|
14
14
|
Jumpup::Heroku::Integrate.check
|
15
15
|
end
|
16
16
|
|
17
|
-
desc "Lock the Heroku integration"
|
18
|
-
task lock: :environment do
|
19
|
-
Jumpup::Heroku::Integrate.lock
|
20
|
-
end
|
21
|
-
|
22
|
-
desc "Unlock the Heroku integration"
|
23
|
-
task unlock: :environment do
|
24
|
-
Jumpup::Heroku::Integrate.unlock
|
25
|
-
end
|
26
|
-
|
27
17
|
desc "Deploy to heroku"
|
28
18
|
task deploy: :environment do
|
29
19
|
Jumpup::Heroku::Integrate.deploy
|
@@ -15,17 +15,15 @@ describe Jumpup::Heroku::Configuration do
|
|
15
15
|
end
|
16
16
|
end
|
17
17
|
|
18
|
-
subject
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
its(:deploy_branch) { should eq('master') }
|
28
|
-
its(:deploy_to_production_branch) { should eq('master') }
|
18
|
+
subject { Jumpup::Heroku.configuration }
|
19
|
+
|
20
|
+
it { expect(subject.app).to be_nil }
|
21
|
+
it { expect(subject.staging_app).to be_nil }
|
22
|
+
it { expect(subject.production_app).to be_nil }
|
23
|
+
it { expect(subject.run_database_tasks).to be_truthy }
|
24
|
+
it { expect(subject.host).to eq('heroku.com') }
|
25
|
+
it { expect(subject.deploy_branch).to eq('master') }
|
26
|
+
it { expect(subject.deploy_to_production_branch).to eq('master') }
|
29
27
|
end
|
30
28
|
|
31
29
|
describe "with configurations" do
|
@@ -40,24 +38,22 @@ describe Jumpup::Heroku::Configuration do
|
|
40
38
|
end
|
41
39
|
end
|
42
40
|
|
43
|
-
subject
|
44
|
-
Jumpup::Heroku.configuration
|
45
|
-
end
|
41
|
+
subject { Jumpup::Heroku.configuration }
|
46
42
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
43
|
+
it { expect(subject.app).to eq('myapp') }
|
44
|
+
it { expect(subject.staging_app).to eq('myapp-staging')}
|
45
|
+
it { expect(subject.production_app).to eq('myapp-production') }
|
46
|
+
it { expect(subject.run_database_tasks).to be_falsey }
|
47
|
+
it { expect(subject.host).to eq('myhost.com') }
|
48
|
+
it { expect(subject.deploy_branch).to eq('master') }
|
49
|
+
it { expect(subject.deploy_to_production_branch).to eq('production') }
|
54
50
|
end
|
55
51
|
|
56
52
|
describe "with multiple accounts" do
|
57
53
|
|
58
54
|
context "first account" do
|
59
55
|
|
60
|
-
before { ENV.
|
56
|
+
before { allow(ENV).to receive(:[]).with("HEROKU_ACCOUNT").and_return("first") }
|
61
57
|
before do
|
62
58
|
Jumpup::Heroku.configure do |config|
|
63
59
|
config.app = 'myapp'
|
@@ -73,21 +69,19 @@ describe Jumpup::Heroku::Configuration do
|
|
73
69
|
end
|
74
70
|
end
|
75
71
|
|
76
|
-
subject
|
77
|
-
Jumpup::Heroku.configuration
|
78
|
-
end
|
72
|
+
subject { Jumpup::Heroku.configuration }
|
79
73
|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
74
|
+
it { expect(subject.valid?).to be_truthy }
|
75
|
+
it { expect(subject.app).to be_nil }
|
76
|
+
it { expect(subject.staging_app).to eq('myapp1-staging')}
|
77
|
+
it { expect(subject.production_app).to eq('myapp1-production') }
|
78
|
+
it { expect(subject.run_database_tasks).to be_falsey }
|
79
|
+
it { expect(subject.host).to eq('heroku.first') }
|
86
80
|
end
|
87
81
|
|
88
82
|
context "second account with default values" do
|
89
83
|
|
90
|
-
before { ENV.
|
84
|
+
before { allow(ENV).to receive(:[]).with("HEROKU_ACCOUNT").and_return("second") }
|
91
85
|
before do
|
92
86
|
Jumpup::Heroku.configure do |config|
|
93
87
|
config.production_app = 'myapp1-production'
|
@@ -102,21 +96,19 @@ describe Jumpup::Heroku::Configuration do
|
|
102
96
|
end
|
103
97
|
end
|
104
98
|
|
105
|
-
subject
|
106
|
-
Jumpup::Heroku.configuration
|
107
|
-
end
|
99
|
+
subject { Jumpup::Heroku.configuration }
|
108
100
|
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
101
|
+
it { expect(subject.valid?).to be_truthy }
|
102
|
+
it { expect(subject.app).to be_nil }
|
103
|
+
it { expect(subject.staging_app).to eq('myapp2-staging')}
|
104
|
+
it { expect(subject.production_app).to eq('myapp2-production') }
|
105
|
+
it { expect(subject.run_database_tasks).to be_falsey }
|
106
|
+
it { expect(subject.host).to eq('mysecondhost.com') }
|
115
107
|
end
|
116
108
|
|
117
109
|
context "other account" do
|
118
110
|
|
119
|
-
before { ENV.
|
111
|
+
before { allow(ENV).to receive(:[]).with("HEROKU_ACCOUNT").and_return("third") }
|
120
112
|
before do
|
121
113
|
Jumpup::Heroku.configure do |config|
|
122
114
|
config.account(:first) do |first|
|
@@ -133,20 +125,18 @@ describe Jumpup::Heroku::Configuration do
|
|
133
125
|
end
|
134
126
|
end
|
135
127
|
|
136
|
-
subject
|
137
|
-
Jumpup::Heroku.configuration
|
138
|
-
end
|
128
|
+
subject { Jumpup::Heroku.configuration }
|
139
129
|
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
130
|
+
it { expect(subject.valid?).to be_falsey }
|
131
|
+
it { expect(subject.app).to be_nil }
|
132
|
+
it { expect(subject.staging_app).to be_nil }
|
133
|
+
it { expect(subject.production_app).to be_nil }
|
134
|
+
it { expect(subject.run_database_tasks).to be_falsey }
|
135
|
+
it { expect(subject.host).to eq('heroku.com') }
|
146
136
|
end
|
147
137
|
|
148
138
|
context "without heroku accounts installed" do
|
149
|
-
before { Jumpup::Heroku::Configuration.
|
139
|
+
before { allow_any_instance_of(Jumpup::Heroku::Configuration).to receive(:current_account).and_return(:"") }
|
150
140
|
before do
|
151
141
|
Jumpup::Heroku.configure do |config|
|
152
142
|
config.account(:second) do |second|
|
@@ -158,20 +148,18 @@ describe Jumpup::Heroku::Configuration do
|
|
158
148
|
end
|
159
149
|
end
|
160
150
|
|
161
|
-
subject
|
162
|
-
Jumpup::Heroku.configuration
|
163
|
-
end
|
151
|
+
subject { Jumpup::Heroku.configuration }
|
164
152
|
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
153
|
+
it { expect(subject.valid?).to be_falsey }
|
154
|
+
it { expect(subject.app).to be_nil }
|
155
|
+
it { expect(subject.staging_app).to be_nil }
|
156
|
+
it { expect(subject.production_app).to be_nil }
|
157
|
+
it { expect(subject.run_database_tasks).to be_truthy }
|
158
|
+
it { expect(subject.host).to eq('heroku.com') }
|
171
159
|
end
|
172
160
|
|
173
|
-
context "without
|
174
|
-
before { Jumpup::Heroku::Configuration.
|
161
|
+
context "without heroku accounts installed and default values" do
|
162
|
+
before { allow_any_instance_of(Jumpup::Heroku::Configuration).to receive(:current_account).and_return(:"") }
|
175
163
|
before do
|
176
164
|
Jumpup::Heroku.configure do |config|
|
177
165
|
config.production_app = 'myapp1-production'
|
@@ -185,15 +173,13 @@ describe Jumpup::Heroku::Configuration do
|
|
185
173
|
end
|
186
174
|
end
|
187
175
|
|
188
|
-
subject
|
189
|
-
Jumpup::Heroku.configuration
|
190
|
-
end
|
176
|
+
subject { Jumpup::Heroku.configuration }
|
191
177
|
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
178
|
+
it { expect(subject.valid?).to be_truthy }
|
179
|
+
it { expect(subject.app).to be_nil }
|
180
|
+
it { expect(subject.staging_app).to eq('myapp1-staging')}
|
181
|
+
it { expect(subject.production_app).to eq('myapp1-production') }
|
182
|
+
it { expect(subject.run_database_tasks).to be_truthy }
|
197
183
|
end
|
198
184
|
end
|
199
185
|
end
|
@@ -363,7 +349,7 @@ describe Jumpup::Heroku::Configuration do
|
|
363
349
|
end
|
364
350
|
|
365
351
|
it 'not be valid' do
|
366
|
-
|
352
|
+
skip "The bug is raised when have no config/initializer/heroku-deploy.rb file"
|
367
353
|
expect(Jumpup::Heroku.configuration).to_not be_valid
|
368
354
|
end
|
369
355
|
end
|
@@ -0,0 +1,101 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Jumpup::Heroku::Integrate do
|
4
|
+
before do
|
5
|
+
Jumpup::Heroku.configuration = nil
|
6
|
+
end
|
7
|
+
|
8
|
+
describe '#deploy_to_production' do
|
9
|
+
before do
|
10
|
+
allow_any_instance_of(Jumpup::Heroku::Integrate).to receive(:run_database_checks)
|
11
|
+
allow_any_instance_of(Jumpup::Heroku::Integrate).to receive(:confirm_deploy)
|
12
|
+
allow_any_instance_of(Jumpup::Heroku::Integrate).to receive(:spec)
|
13
|
+
allow_any_instance_of(Jumpup::Heroku::Integrate).to receive(:confirm_maintenance)
|
14
|
+
allow_any_instance_of(Jumpup::Heroku::Integrate).to receive(:maintenance)
|
15
|
+
allow_any_instance_of(Jumpup::Heroku::Integrate).to receive(:backup)
|
16
|
+
allow_any_instance_of(Jumpup::Heroku::Integrate).to receive(:tag)
|
17
|
+
allow_any_instance_of(Jumpup::Heroku::Integrate).to receive(:push)
|
18
|
+
allow_any_instance_of(Jumpup::Heroku::Integrate).to receive(:migrate)
|
19
|
+
allow_any_instance_of(Jumpup::Heroku::Integrate).to receive(:seed)
|
20
|
+
allow_any_instance_of(Jumpup::Heroku::Integrate).to receive(:close_maintenance)
|
21
|
+
allow_any_instance_of(Jumpup::Heroku::Integrate).to receive(:restart)
|
22
|
+
|
23
|
+
Jumpup::Heroku.configure do |config|
|
24
|
+
config.app = 'myapp'
|
25
|
+
config.run_database_tasks = false
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
subject { Jumpup::Heroku::Integrate.new(double(:app)) }
|
30
|
+
|
31
|
+
context 'with database tasks disabled' do
|
32
|
+
|
33
|
+
%I(confirm_deploy spec confirm_maintenance maintenance tag push close_maintenance restart).each do |task|
|
34
|
+
it "runs #{task}" do
|
35
|
+
expect_any_instance_of(Jumpup::Heroku::Integrate).to receive(task)
|
36
|
+
|
37
|
+
subject.deploy_to_production
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
%I(run_database_checks backup migrate seed).each do |task|
|
42
|
+
it "#does not run #{task}" do
|
43
|
+
expect_any_instance_of(Jumpup::Heroku::Integrate).to_not receive(task)
|
44
|
+
|
45
|
+
subject.deploy_to_production
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
context 'with database migrations' do
|
51
|
+
before do
|
52
|
+
Jumpup::Heroku.configure do |config|
|
53
|
+
config.app = 'myapp'
|
54
|
+
config.run_database_tasks = true
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
%I(run_database_checks backup migrate seed).each do |task|
|
59
|
+
it "runs #{task}" do
|
60
|
+
expect_any_instance_of(Jumpup::Heroku::Integrate).to receive(task)
|
61
|
+
|
62
|
+
subject.deploy_to_production
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
describe 'skipping steps' do
|
68
|
+
before { allow(ENV).to receive(:[]) }
|
69
|
+
after { subject.deploy_to_production }
|
70
|
+
|
71
|
+
context 'skip spec' do
|
72
|
+
context 'present' do
|
73
|
+
before { allow(ENV).to receive(:[]).with('SKIP_SPEC').and_return('1') }
|
74
|
+
it { expect_any_instance_of(Jumpup::Heroku::Integrate).to_not receive(:spec) }
|
75
|
+
end
|
76
|
+
context 'not set' do
|
77
|
+
before { allow(ENV).to receive(:[]).with('SKIP_SPEC').and_return(nil) }
|
78
|
+
it { expect_any_instance_of(Jumpup::Heroku::Integrate).to receive(:spec) }
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
describe 'skip backup' do
|
83
|
+
before do
|
84
|
+
Jumpup::Heroku.configure do |config|
|
85
|
+
config.app = 'myapp'
|
86
|
+
config.run_database_tasks = true
|
87
|
+
end
|
88
|
+
end
|
89
|
+
context 'present' do
|
90
|
+
before { allow(ENV).to receive(:[]).with('SKIP_BACKUP').and_return('1') }
|
91
|
+
it { expect_any_instance_of(Jumpup::Heroku::Integrate).to_not receive(:backup) }
|
92
|
+
end
|
93
|
+
context 'not set' do
|
94
|
+
before { allow(ENV).to receive(:[]).with('SKIP_BACKUP').and_return(nil) }
|
95
|
+
it { expect_any_instance_of(Jumpup::Heroku::Integrate).to receive(:backup) }
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: jumpup-heroku
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- HE:labs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-04-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -42,30 +42,30 @@ dependencies:
|
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 3.1.0
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 3.1.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: pry
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
61
|
+
version: 0.10.1
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
68
|
+
version: 0.10.1
|
69
69
|
description: Rake tasks to deploy on heroku
|
70
70
|
email:
|
71
71
|
- tech@helabs.com.br
|
@@ -76,6 +76,7 @@ files:
|
|
76
76
|
- ".gitignore"
|
77
77
|
- ".ruby-gemset"
|
78
78
|
- ".ruby-version"
|
79
|
+
- ".travis.yml"
|
79
80
|
- CHANGELOG.md
|
80
81
|
- CONTRIBUTING.md
|
81
82
|
- Gemfile
|
@@ -92,6 +93,7 @@ files:
|
|
92
93
|
- lib/tasks/integrate.rake
|
93
94
|
- spec/jumpup/heroku/configuration_spec.rb
|
94
95
|
- spec/jumpup/heroku/env_spec.rb
|
96
|
+
- spec/jumpup/heroku/integrate_spec.rb
|
95
97
|
- spec/spec_helper.rb
|
96
98
|
homepage: https://github.com/Helabs/jumpup-heroku
|
97
99
|
licenses:
|
@@ -120,4 +122,5 @@ summary: Rake tasks to deploy on heroku
|
|
120
122
|
test_files:
|
121
123
|
- spec/jumpup/heroku/configuration_spec.rb
|
122
124
|
- spec/jumpup/heroku/env_spec.rb
|
125
|
+
- spec/jumpup/heroku/integrate_spec.rb
|
123
126
|
- spec/spec_helper.rb
|