herkko 0.0.1 → 0.0.2
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/lib/herkko/runner.rb +66 -22
- data/lib/herkko/travis.rb +4 -1
- data/lib/herkko/version.rb +1 -1
- data/lib/herkko.rb +8 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38ce9fb0c1c0bcf36cd9ee05a9992adfa8ef0177
|
4
|
+
data.tar.gz: d383b1fc91c655ff8476fac4902e3b362ad711a8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f79acc52f47187e90833c81e564de33572385b5894b5fa38fd32ea828ece01c8dd6376f491b0e6f84c474987e7687bf96fd0c3df826394a12aa5854638f569cf
|
7
|
+
data.tar.gz: 67eaf3b8a15d9688b0057112dd539d5fcef39fc5afc580cb0f33840105f83eab18b13b931b22f4728283bf25621739fb4b9672a29eda5df183130f2e4aff5b5c
|
data/lib/herkko/runner.rb
CHANGED
@@ -14,17 +14,29 @@ module Herkko
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def run
|
17
|
+
if ["version", "--version"].include?(environment)
|
18
|
+
return version
|
19
|
+
end
|
20
|
+
|
17
21
|
return print_usage if environment.nil? || command.nil?
|
18
22
|
|
19
23
|
if respond_to?(command)
|
20
|
-
send(command
|
24
|
+
send(command)
|
21
25
|
else
|
22
|
-
Herkko.
|
26
|
+
Herkko.run_with_output("heroku", arguments + ["-r#{environment}"])
|
23
27
|
end
|
24
28
|
end
|
25
29
|
|
30
|
+
def version
|
31
|
+
Herkko.puts "Herkko #{Herkko::VERSION}"
|
32
|
+
end
|
33
|
+
|
26
34
|
def print_usage
|
27
|
-
Herkko.
|
35
|
+
Herkko.puts <<END
|
36
|
+
Herkko
|
37
|
+
|
38
|
+
Run `herkko [environment] [command]` for example `herkko production deploy`.
|
39
|
+
END
|
28
40
|
end
|
29
41
|
|
30
42
|
def deploy
|
@@ -33,30 +45,39 @@ module Herkko
|
|
33
45
|
|
34
46
|
Herkko.info("Deploying changes:")
|
35
47
|
|
48
|
+
puts
|
36
49
|
puts changelog
|
50
|
+
puts
|
37
51
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
52
|
+
ci_state = if skip_ci_check?
|
53
|
+
:skip
|
54
|
+
else
|
55
|
+
check_ci
|
56
|
+
end
|
43
57
|
|
44
|
-
|
45
|
-
|
46
|
-
else
|
47
|
-
Herkko.info "No need to migrate."
|
48
|
-
end
|
58
|
+
if ci_state == :green
|
59
|
+
Herkko.info "CI is green. Deploying..."
|
49
60
|
|
50
|
-
|
51
|
-
|
52
|
-
|
61
|
+
deploy!
|
62
|
+
elsif ci_state == :skip
|
63
|
+
Herkko.info "Skipping CI. Deploying..."
|
53
64
|
|
54
|
-
|
65
|
+
deploy!
|
66
|
+
elsif ci_state == :yellow
|
67
|
+
Herkko.info "CI is running. Wait a while."
|
55
68
|
else
|
56
69
|
Herkko.info "CI is red. Fix it!"
|
57
70
|
end
|
58
71
|
end
|
59
72
|
|
73
|
+
def console
|
74
|
+
Herkko.run_with_output "heroku run rails console -r #{environment}"
|
75
|
+
end
|
76
|
+
|
77
|
+
def seed
|
78
|
+
Herkko.run_with_output "heroku run rake db:seed -r #{environment}"
|
79
|
+
end
|
80
|
+
|
60
81
|
def check_ci
|
61
82
|
Herkko.info "Checking CI..."
|
62
83
|
Herkko::Travis.status_for(current_branch)
|
@@ -64,7 +85,7 @@ module Herkko
|
|
64
85
|
|
65
86
|
def migrate
|
66
87
|
Herkko.info "Migrating database..."
|
67
|
-
Herkko.
|
88
|
+
Herkko.run_with_output %{
|
68
89
|
heroku run rake db:migrate -r #{environment} &&
|
69
90
|
heroku restart -r #{environment}
|
70
91
|
}
|
@@ -72,11 +93,34 @@ module Herkko
|
|
72
93
|
|
73
94
|
def push_new_code
|
74
95
|
Herkko.info "Pushing code to Heroku..."
|
75
|
-
|
96
|
+
puts
|
97
|
+
Herkko.run_with_output("git", "push", environment, "master")
|
98
|
+
puts
|
76
99
|
end
|
77
100
|
|
78
101
|
private
|
79
102
|
|
103
|
+
def deploy!
|
104
|
+
run_migrations = migrations_needed?
|
105
|
+
push_new_code
|
106
|
+
|
107
|
+
if run_migrations
|
108
|
+
migrate
|
109
|
+
else
|
110
|
+
Herkko.info "No need to migrate."
|
111
|
+
end
|
112
|
+
|
113
|
+
if seed_file_changed?
|
114
|
+
Herkko.info "NOTE: Seed file seem the have changed. Make sure to run it if needed."
|
115
|
+
end
|
116
|
+
|
117
|
+
# TODO: puts "Print the after deployment checklist from a file"
|
118
|
+
end
|
119
|
+
|
120
|
+
def skip_ci_check?
|
121
|
+
arguments.include?("--skip-ci-check")
|
122
|
+
end
|
123
|
+
|
80
124
|
def current_branch
|
81
125
|
Herkko.run("git", "rev-parse", "--abbrev-ref", "HEAD")[0].strip
|
82
126
|
end
|
@@ -100,15 +144,15 @@ module Herkko
|
|
100
144
|
def file_changed?(file_path)
|
101
145
|
files = Herkko.run("git", "diff", "--name-only", currently_deployed_to(environment), to_be_deployed_sha)[0]
|
102
146
|
|
103
|
-
files.split("\n").any? {|filename| filename.match(
|
147
|
+
files.split("\n").any? {|filename| filename.match(Regexp.new(file_path)) }
|
104
148
|
end
|
105
149
|
|
106
150
|
def fetch_currently_deployed_version
|
107
|
-
Herkko.
|
151
|
+
Herkko.run_with_output("git", "fetch", environment)
|
108
152
|
end
|
109
153
|
|
110
154
|
def changelog
|
111
|
-
Herkko.run("git", "log", "--
|
155
|
+
Herkko.run("git", "log", "--pretty=short", "#{currently_deployed_to(environment)}..#{to_be_deployed_sha}")[0]
|
112
156
|
end
|
113
157
|
end
|
114
158
|
end
|
data/lib/herkko/travis.rb
CHANGED
data/lib/herkko/version.rb
CHANGED
data/lib/herkko.rb
CHANGED
@@ -5,20 +5,24 @@ module Herkko
|
|
5
5
|
@@debug = false
|
6
6
|
|
7
7
|
def self.info(text)
|
8
|
-
puts "-> " + text
|
8
|
+
Kernel.puts "-> " + text
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.puts(text)
|
12
|
+
Kernel.puts text
|
9
13
|
end
|
10
14
|
|
11
15
|
def self.run(*command)
|
12
16
|
if @@debug
|
13
|
-
puts "--> #{command.join(" ")}"
|
17
|
+
Kernel.puts "--> #{command.join(" ")}"
|
14
18
|
end
|
15
19
|
|
16
20
|
Open3.capture3(*command)
|
17
21
|
end
|
18
22
|
|
19
|
-
def self.
|
23
|
+
def self.run_with_output(*command)
|
20
24
|
if @@debug
|
21
|
-
puts "--> #{command.join(" ")}"
|
25
|
+
Kernel.puts "--> #{command.join(" ")}"
|
22
26
|
end
|
23
27
|
|
24
28
|
Kernel.system(*command)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: herkko
|
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
|
- Vesa Vänskä
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-08-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -79,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
79
79
|
version: '0'
|
80
80
|
requirements: []
|
81
81
|
rubyforge_project:
|
82
|
-
rubygems_version: 2.
|
82
|
+
rubygems_version: 2.5.1
|
83
83
|
signing_key:
|
84
84
|
specification_version: 4
|
85
85
|
summary: Herkko is a deployment tool for Heroku.
|