osp-deploy 1.1.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -68,7 +68,7 @@ case command
68
68
  when 'make-last-changes'
69
69
  deployer.make_last_changelog
70
70
  when 'deploy'
71
- deployer.deploy_and_bundle
71
+ deployer.deploy
72
72
  else
73
73
  print_usage 2, "Unknown command: #{command}"
74
74
  end
@@ -10,8 +10,8 @@ class OspDeploy::RailsDeployer
10
10
  REQUIRED_OPTIONS = { :always => [:jobs, :server_uris, :tag_prefix],
11
11
  :puma => [:remote_dest_file_dir],
12
12
  :file => [:remote_dest_file_dir],
13
+ :war => [:remote_dest_file_dir, :war_file_name],
13
14
  :torquebox => [:appl_name, :torquebox_home, :remote_dest_file_dir],
14
- :precompile_assets => [:environment],
15
15
  }
16
16
 
17
17
  DEFAULT_EXCLUDES = ['coverage', 'nbproject', '.idea', 'tmp', 'log', '.git', '*~']
@@ -119,46 +119,42 @@ EOT
119
119
 
120
120
  # Deploy this project to the remote-servers
121
121
  def deploy
122
+ validate_config
122
123
  gen_version_initializer
123
- threads = nil
124
- if @deployment_config['jobs'].include?(:file) || @deployment_config['jobs'].include?(:torquebox)
125
- threads = server_iterator(:threads => true) do |server_uri|
126
- precompile_assets if @deployment_config['jobs'].include?(:precompile_assets)
127
- sync_files_to_remote_server(server_uri)
128
- torquebox_deploy(server_uri) if @deployment_config['jobs'].include?(:torquebox)
129
- puma_deploy(server_uri) if @deployment_config['jobs'].include?(:puma)
130
- precompile_assets_housekeeping if @deployment_config['jobs'].include?(:precompile_assets)
131
- end
132
- end
133
- threads.each{|t| t.join }
134
- server_iterator do |server_uri|
135
- execute_post_commands(server_uri)
124
+
125
+ do_before_local = @deployment_config['do_before_local']
126
+ do_cmds 'do_before_local', do_before_local
127
+
128
+ if @deployment_config['jobs'].include?(:war)
129
+ execute_cmd 'warble'
136
130
  end
137
- end
138
131
 
139
132
 
140
- # Deploy this project and execute bundler
141
- def deploy_and_bundle
142
- gen_version_initializer
143
133
  threads = nil
144
- if @deployment_config['jobs'].include?(:file) || @deployment_config['jobs'].include?(:torquebox)
145
- threads = server_iterator(:threads => true) do |server_uri|
146
- precompile_assets if @deployment_config['jobs'].include?(:precompile_assets)
134
+ threads = server_iterator(:threads => true) do |server_uri|
135
+ do_before = @deployment_config['do_before']
136
+ do_cmds 'do_before_local', do_before, server_uri, false
137
+
138
+ if !(['file', 'torquebox', 'puma'] & @deployment_config['jobs']).empty?
147
139
  sync_files_to_remote_server(server_uri)
148
- bundler_actions_on_remote_server(server_uri)
149
- torquebox_deploy(server_uri) if @deployment_config['jobs'].include?(:torquebox)
150
- puma_deploy(server_uri) if @deployment_config['jobs'].include?(:puma)
151
- precompile_assets_housekeeping if @deployment_config['jobs'].include?(:precompile_assets)
152
140
  end
141
+
142
+ torquebox_deploy(server_uri) if @deployment_config['jobs'].include?(:torquebox)
143
+ puma_deploy(server_uri) if @deployment_config['jobs'].include?(:puma)
144
+ war_deploy(server_uri) if @deployment_config['jobs'].include?(:war)
145
+
146
+ do_after = @deployment_config['do_after'] || @deployment_config['post_commands']
147
+ do_cmds 'do_after', do_after, server_uri, false
153
148
  end
154
149
  threads.each{|t| t.join }
155
- server_iterator do |server_uri|
156
- execute_post_commands(server_uri)
157
- end
150
+ do_after_local = @deployment_config['do_after_local']
151
+ do_cmds 'do_after_local', do_after_local
158
152
  end
159
153
 
160
154
 
161
155
 
156
+
157
+
162
158
  # make git-log for last 20 commits in medium format into file last-changelog.txt
163
159
  def make_last_changelog
164
160
  logger.info "make_last_changelog"
@@ -213,19 +209,6 @@ EOT
213
209
 
214
210
 
215
211
 
216
- def execute_post_commands server_uri
217
- post_commands = @deployment_config['post_commands']
218
- return if post_commands.nil?
219
- raise "Option 'post_commands' expected an Array!" unless post_commands.is_a?(Array)
220
- logger.info "Execute post-commands."
221
-
222
- file_dir = @deployment_config['remote_dest_file_dir']
223
- post_commands = ["cd #{file_dir}"] + post_commands if file_dir
224
-
225
- cmd = "ssh #{server_uri} \"#{post_commands.join(' && ')}\""
226
- execute_cmd(cmd)
227
- end
228
-
229
212
 
230
213
 
231
214
  # Rsync Project-Dir mit Remote-Server inkl. Rename der Config-Files
@@ -262,18 +245,6 @@ EOT
262
245
  end
263
246
 
264
247
 
265
- # Aufruf des Bundlers auf dem Zielsystem
266
- def bundler_actions_on_remote_server server_uri
267
- file_dir = @deployment_config['remote_dest_file_dir']
268
- bundler_cmd = @deployment_config['bundler_cmd'] || BUNDLER_DEFAULT_CMD
269
- logger.info "Execute '#{bundler_cmd}' on #{server_uri}:#{file_dir}"
270
- runtime = Benchmark.realtime do
271
- bout = @options[:verbose] ? nil : '> /dev/null'
272
- cmd = "ssh #{server_uri} \"cd #{file_dir} && #{bundler_cmd}\" #{bout}"
273
- execute_cmd cmd
274
- end
275
- logger.info "Execute bundler finished in #{runtime.round}s"
276
- end
277
248
 
278
249
 
279
250
 
@@ -337,6 +308,19 @@ EOS
337
308
  end
338
309
 
339
310
 
311
+ def war_deploy server_uri
312
+ war_file_src = "#{File.basename(Dir.getwd)}.war"
313
+ war_file_dest = File.join(@deployment_config['remote_dest_file_dir'], @deployment_config['war_file_name'])
314
+ if server_uri.start_with?('.') || server_uri.start_with?('/') || server_uri.start_with?('file:')
315
+ # local uri
316
+ dest = File.join server_uri, war_file_dest
317
+ else
318
+ dest = "#{server_uri}:#{war_file_dest}"
319
+ end
320
+ execute_cmd "scp #{war_file_src} #{dest}"
321
+ end
322
+
323
+
340
324
 
341
325
  # read current branch
342
326
  def parse_git_branch
@@ -346,7 +330,7 @@ EOS
346
330
  end
347
331
 
348
332
 
349
- # Überprüfen ob es Änderungen im Fiel-System gibt, die noch nicht in GIT eingecheckt wurden
333
+ # Überprüfen ob es Änderungen im File-System gibt, die noch nicht in GIT eingecheckt wurden
350
334
  def git_check
351
335
  if @options[:no_git_check]
352
336
  logger.warn "Skip GIT check !!! "
@@ -360,27 +344,36 @@ EOS
360
344
  end
361
345
 
362
346
 
363
- def precompile_assets
364
- logger.info "Precompile assets..."
365
- execute_cmd "bundle exec rake assets:precompile RAILS_ENV=#{@deployment_config['environment']}"
366
- end
367
-
368
-
369
- def precompile_assets_housekeeping
370
- asset_dir = 'public/assets'
371
- if File.exist?(asset_dir)
372
- logger.info "Precompile assets housekeeping: remove '#{asset_dir}'"
373
- FileUtils.rm_rf asset_dir
374
- end
375
- end
376
347
 
377
348
 
378
349
  def execute_cmd cmd
379
- logger.debug "Execute: #{cmd[/\w+/]}\n\t#{cmd}"
350
+ logger.debug "Execute: #{cmd}"
380
351
  rc = system(cmd)
381
352
  raise("Command '#{cmd}' failed.") unless rc
382
353
  end
383
354
 
384
355
 
356
+ def do_cmds name, cmd_list, server_uri=nil, local=true
357
+ return if cmd_list.nil? || cmd_list.empty?
358
+ puts "\nExecute #{name} commands..\n"
359
+ file_dir = @deployment_config['remote_dest_file_dir']
360
+ raise "Remote command required server_uri" if !local && server_uri.nil?
361
+ raise "Remote command required remote_dest_file_dir" if !local && file_dir.nil?
362
+ cmd_list.each do |cmd|
363
+ next if cmd.nil?
364
+ if cmd.start_with? '#'
365
+ puts cmd
366
+ else
367
+ if local
368
+ sys_cmd = cmd
369
+ else
370
+ sys_cmd = "ssh #{server_uri} '. .profile && cd #{file_dir} && export RAILS_ENV=#{@rails_env} && #{cmd}'"
371
+ end
372
+ execute_cmd sys_cmd
373
+ end
374
+ end
375
+ end
376
+
377
+
385
378
 
386
379
  end
@@ -1,3 +1,3 @@
1
1
  module OspDeploy
2
- VERSION = "1.1.1"
2
+ VERSION = "1.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: osp-deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.1
4
+ version: 1.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-11-05 00:00:00.000000000 Z
12
+ date: 2015-03-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake