middleman-deploy-with-notifications 0.0.31 → 0.0.32
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a67629673a43d9cf77a074ddb1e97178d46f6ce
|
4
|
+
data.tar.gz: 78446ebb30f62a65a39e069c1ef73e4b550f421a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: def2690f227fb81d4661ac0f2b23641d4bfed892d386ae570934d584822773b55174afb56f51361c5a5dedf22c4d02254541447883e2e0d3d395a94b64bccf4b
|
7
|
+
data.tar.gz: 4ebe364acf2017b7dabdaba68ded7f941a0e11ece0d814f5ba5dc64afac08762af520e517660a749d93ca801d992fb0d98c95113ae066fe5129c6ea090cab903
|
@@ -2,10 +2,7 @@ require "middleman-core/cli"
|
|
2
2
|
|
3
3
|
require "middleman-deploy-with-notifications/extension"
|
4
4
|
require "middleman-deploy-with-notifications/pkg-info"
|
5
|
-
|
6
|
-
# for hipchat notifications
|
7
|
-
require "net/http"
|
8
|
-
require "uri"
|
5
|
+
require "middleman-deploy-with-notifications/notifications"
|
9
6
|
|
10
7
|
PACKAGE = "#{Middleman::DeployWithNotifications::PACKAGE}"
|
11
8
|
VERSION = "#{Middleman::DeployWithNotifications::VERSION}"
|
@@ -107,65 +104,14 @@ EOF
|
|
107
104
|
options
|
108
105
|
end
|
109
106
|
|
110
|
-
def notify_airbrake(short_rev, rev, who)
|
111
|
-
puts "Recording a timestamped deploy in Airbrake: #{short_rev}".green
|
112
|
-
url = "api_key=#{self.deploy_options.airbrake_api_key}" +
|
113
|
-
"&deploy[rails_env]=production" +
|
114
|
-
"&deploy[local_username]=#{who}" +
|
115
|
-
"&deploy[scm_repository]=git@github.com:140proof/280.140proof.com.git" +
|
116
|
-
"&deploy[scm_revision]=#{short_rev}"
|
117
|
-
`curl -d "#{url}" http://airbrake.io/deploys &> /dev/null`
|
118
|
-
end
|
119
|
-
|
120
|
-
def send_hc_mesg(mesg, fmt = "text")
|
121
|
-
uri = uri || URI.parse( "http://api.hipchat.com/v1/rooms/message" )
|
122
|
-
self.deploy_options.hipchat_rooms.each do |room|
|
123
|
-
Net::HTTP.post_form( uri, {
|
124
|
-
"format" => "json",
|
125
|
-
"color" => "random",
|
126
|
-
"auth_token" => self.deploy_options.hipchat_token,
|
127
|
-
"room_id" => room,
|
128
|
-
"from" => "280 Deploy",
|
129
|
-
"message" => mesg,
|
130
|
-
"message_format" => fmt || "text"}
|
131
|
-
)
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
def hipchat_start(who, github_project)
|
136
|
-
send_hc_mesg( "Yo yo! @#{who} is deploying #{github_project}:" )
|
137
|
-
end
|
138
|
-
|
139
|
-
def hipchat_complete(who, github_project, github_user, rev, comment)
|
140
|
-
puts "Notifying hipchat room(s)".yellow
|
141
|
-
|
142
|
-
message = "<a href='http://github.com/#{github_user}/#{github_project}/commit/#{rev}'>#{rev}</a> (#{comment}) is now live on <b><a href='http://#{github_project}'>production</a></b>."
|
143
|
-
send_hc_mesg(message, "html")
|
144
|
-
end
|
145
|
-
|
146
|
-
remove_task :send_hc_mesg, :hipchat_start, :hipchat_complete
|
147
|
-
|
148
107
|
def deploy_rsync
|
149
108
|
host = self.deploy_options.host
|
150
109
|
port = self.deploy_options.port
|
151
110
|
user = self.deploy_options.user
|
152
111
|
path = self.deploy_options.path
|
153
112
|
|
154
|
-
|
155
|
-
|
156
|
-
hipchat_token = self.deploy_options.hipchat_token
|
157
|
-
|
158
|
-
github_user, github_project = `git remote -v | grep "/" | head -n1`.gsub( /.*:([\w_-]+)\/([\w_\.-]+).git.*/, '\1/\2' ).split( "/" )
|
159
|
-
github_project.chomp!
|
160
|
-
|
161
|
-
rev = `git rev-parse HEAD`.gsub( /\s*$/, '' ).chomp
|
162
|
-
short_rev = `git rev-parse --short HEAD`.gsub( /\s*$/, '' ).chomp
|
163
|
-
branch = `git rev-parse --abbrev-ref HEAD`.gsub( /\s*/, '' ).chomp
|
164
|
-
comment = `git log -1 --pretty=%B`.gsub( /\s*$/, '' ).chomp
|
165
|
-
who = `git config --get github.user`.chomp
|
166
|
-
|
167
|
-
notify_airbrake(short_rev, rev, who) if self.deploy_options.airbrake_api_key
|
168
|
-
hipchat_start(who, github_project) if self.deploy_options.hipchat_token
|
113
|
+
notify_airbrake if self.deploy_options.airbrake_api_key
|
114
|
+
notify_hipchat_start if self.deploy_options.hipchat_token
|
169
115
|
|
170
116
|
puts "Deploying via rsync to #{user}@#{host}".red
|
171
117
|
|
@@ -183,8 +129,7 @@ EOF
|
|
183
129
|
|
184
130
|
run command
|
185
131
|
|
186
|
-
|
187
|
-
|
132
|
+
notify_hipchat_complete if self.deploy_options.hipchat_token
|
188
133
|
end
|
189
134
|
|
190
135
|
def deploy_git
|
@@ -193,6 +138,9 @@ EOF
|
|
193
138
|
|
194
139
|
puts "## Deploying via git to remote=\"#{remote}\" and branch=\"#{branch}\""
|
195
140
|
|
141
|
+
notify_airbrake if self.deploy_options.airbrake_api_key
|
142
|
+
notify_hipchat_start if self.deploy_options.hipchat_token
|
143
|
+
|
196
144
|
#check if remote is not a git url
|
197
145
|
unless remote =~ /\.git$/
|
198
146
|
remote = `git config --get remote.#{remote}.url`.chop
|
@@ -227,6 +175,7 @@ EOF
|
|
227
175
|
`git commit --allow-empty -am 'Automated commit at #{Time.now.utc} by #{PACKAGE} #{VERSION}'`
|
228
176
|
`git push -f origin #{branch}`
|
229
177
|
end
|
178
|
+
notify_hipchat_complete if self.deploy_options.hipchat_token
|
230
179
|
end
|
231
180
|
|
232
181
|
def deploy_ftp
|
@@ -240,6 +189,9 @@ EOF
|
|
240
189
|
|
241
190
|
puts "## Deploying via ftp to #{user}@#{host}:#{path}"
|
242
191
|
|
192
|
+
notify_airbrake if self.deploy_options.airbrake_api_key
|
193
|
+
notify_hipchat_start if self.deploy_options.hipchat_token
|
194
|
+
|
243
195
|
ftp = Net::FTP.new(host)
|
244
196
|
ftp.login(user, pass)
|
245
197
|
ftp.chdir(path)
|
@@ -277,6 +229,7 @@ EOF
|
|
277
229
|
end
|
278
230
|
end
|
279
231
|
ftp.close
|
232
|
+
notify_hipchat_complete if self.deploy_options.hipchat_token
|
280
233
|
end
|
281
234
|
|
282
235
|
end
|
@@ -5,7 +5,7 @@ require "middleman-core"
|
|
5
5
|
module Middleman
|
6
6
|
module DeployWithNotifications
|
7
7
|
|
8
|
-
class Options < Struct.new(:whatisthis, :method, :host, :port, :user, :password, :path, :clean, :remote, :branch, :after_build, :airbrake_api_key, :hipchat_rooms, :hipchat_token); end
|
8
|
+
class Options < Struct.new(:whatisthis, :method, :host, :port, :user, :password, :path, :clean, :remote, :branch, :after_build, :airbrake_api_key, :hipchat_rooms, :hipchat_token, :revision, :revision_short, :deploy_user, :github_project, :github_user, :git_branch, :git_comment); end
|
9
9
|
|
10
10
|
class << self
|
11
11
|
|
@@ -24,6 +24,15 @@ module Middleman
|
|
24
24
|
|
25
25
|
options.after_build ||= false
|
26
26
|
|
27
|
+
options.revision = `git rev-parse HEAD`.gsub( /\s*$/, '' ).chomp
|
28
|
+
options.revision_short = `git rev-parse --short HEAD`.gsub( /\s*$/, '' ).chomp
|
29
|
+
options.deploy_user = `git config --get github.user`.chomp
|
30
|
+
options.github_user, options.github_project = `git remote -v | grep "/" | head -n1`.gsub( /.*:([\w_-]+)\/([\w_\.-]+).git.*/, '\1/\2' ).split( "/" )
|
31
|
+
options.github_project.chomp!
|
32
|
+
|
33
|
+
options.git_branch = `git rev-parse --abbrev-ref HEAD`.gsub( /\s*/, '' ).chomp
|
34
|
+
options.git_comment = `git log -1 --pretty=%B`.gsub( /\s*$/, '' ).chomp
|
35
|
+
|
27
36
|
app.after_build do |builder|
|
28
37
|
::Middleman::Cli::DeployWithNotifications.new.deploy if options.after_build
|
29
38
|
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
module Middleman
|
2
|
+
module Cli
|
3
|
+
|
4
|
+
class DeployWithNotifications < Thor
|
5
|
+
|
6
|
+
namespace :deploy
|
7
|
+
|
8
|
+
protected
|
9
|
+
|
10
|
+
desc "notify_airbrake", ""
|
11
|
+
def notify_airbrake
|
12
|
+
puts "Recording a timestamped deploy in Airbrake: #{self.deploy_options.revision_short}".green
|
13
|
+
url = "api_key=#{self.deploy_options.airbrake_api_key}" +
|
14
|
+
"&deploy[rails_env]=production" +
|
15
|
+
"&deploy[local_username]=#{self.deploy_options.deploy_user}" +
|
16
|
+
"&deploy[scm_repository]=git@github.com:140proof/280.140proof.com.git" +
|
17
|
+
"&deploy[scm_revision]=#{self.deploy_options.revision_short}"
|
18
|
+
`curl -d "#{url}" http://airbrake.io/deploys &> /dev/null`
|
19
|
+
end
|
20
|
+
|
21
|
+
desc "hipchat_start", ""
|
22
|
+
def notify_hipchat_start
|
23
|
+
send_hc_mesg( "#{exclaim} @#{self.deploy_options.deploy_user} is deploying #{self.deploy_options.github_project}:" )
|
24
|
+
end
|
25
|
+
remove_task :notify_hipchat_start
|
26
|
+
|
27
|
+
desc "hipchat_complete", ""
|
28
|
+
def notify_hipchat_complete
|
29
|
+
puts "Notifying hipchat room(s)".yellow
|
30
|
+
|
31
|
+
message = "<a href='http://github.com/#{self.deploy_options.github_user}/#{self.deploy_options.github_project}/commit/#{self.deploy_options.revision}'>#{self.deploy_options.revision}</a> " +
|
32
|
+
"(#{self.deploy_options.git_comment}) is now live on <b><a href='http://#{self.deploy_options.github_project}'>production</a></b>."
|
33
|
+
send_hc_mesg(message, "html")
|
34
|
+
end
|
35
|
+
remove_task :notify_hipchat_complete
|
36
|
+
|
37
|
+
def exclaim
|
38
|
+
phrases = [
|
39
|
+
"Holy cannoli",
|
40
|
+
"Holy guacamole",
|
41
|
+
"Holy hot chocolate",
|
42
|
+
"Holy ravioli",
|
43
|
+
"Hot buttery biscuits",
|
44
|
+
]
|
45
|
+
return phrases[rand(phrases.size)] + "!"
|
46
|
+
end
|
47
|
+
remove_task :exclaim
|
48
|
+
|
49
|
+
def send_hc_mesg(mesg, fmt = "text")
|
50
|
+
uri = uri || URI.parse( "http://api.hipchat.com/v1/rooms/message" )
|
51
|
+
puts mesg
|
52
|
+
self.deploy_options.hipchat_rooms.each do |room|
|
53
|
+
Net::HTTP.post_form( uri, {
|
54
|
+
"auth_token" => self.deploy_options.hipchat_token,
|
55
|
+
"color" => "random",
|
56
|
+
"format" => "json",
|
57
|
+
"from" => "280 Deploy",
|
58
|
+
"message" => mesg,
|
59
|
+
"message_format" => fmt || "text",
|
60
|
+
"room_id" => room,
|
61
|
+
})
|
62
|
+
end
|
63
|
+
end
|
64
|
+
remove_task :send_hc_mesg
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: middleman-deploy-with-notifications
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.32
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Vaughan
|
@@ -100,6 +100,7 @@ files:
|
|
100
100
|
- lib/middleman-deploy-with-notifications.rb
|
101
101
|
- lib/middleman-deploy-with-notifications/commands.rb
|
102
102
|
- lib/middleman-deploy-with-notifications/extension.rb
|
103
|
+
- lib/middleman-deploy-with-notifications/notifications.rb
|
103
104
|
- lib/middleman-deploy-with-notifications/pkg-info.rb
|
104
105
|
- lib/middleman_extension.rb
|
105
106
|
- middleman-deploy-with-notifications.gemspec
|