luban 0.7.4 → 0.7.5

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: cbca715d836e07f8facc579abd81a6ad4d14ebcd
4
- data.tar.gz: 68945ffab8742dae123414b20631d6f15915ee93
3
+ metadata.gz: 25350f60e02f4ad3fdb32ef96e950ebd2bc06f68
4
+ data.tar.gz: 7a290c7c19c41bc551d629d84eb1ab289b84be5c
5
5
  SHA512:
6
- metadata.gz: d61488ad6cadfa12ce43fc4507297eafd2c1b08d15b5e022db482ea14dde6f98da896920fdffa17e3142cf4d82116416384ef77a3b9d8bf9a5a103b802f81da6
7
- data.tar.gz: 06aa49374f03b99287598e9c036c3110bae09baf1e621752be52cf6651d1e11fc9096722b25285dff56b64f17f1be708b4d56921e41b866b5dcb9e0aed10b89c
6
+ metadata.gz: f17055fec2a3d3daf4cda59716b6e480f0122a80ee97ca3b9b6f798667ed3389bace1b0a26e9f9154493dbced804cebc9a1086338dc04e4860d7b50e13bb45d8
7
+ data.tar.gz: 68326cb893360e365623305212ddba81eb06355b46ec7ec77d95a2527b72ac8cb48431049b9687ab4a42d1e7b6fef246c50a8e24d9cd15a023d6cb1850cdb8fe
data/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Change log
2
2
 
3
+ ## Version 0.7.5 (Aug 30, 2016)
4
+
5
+ Minor enhancements:
6
+ * Extracted linked_dirs/linked_files handling into LinkedPaths module
7
+ * Used LinkedPaths module to change linked_dirs/linked_files into worker level instance variables instead of global configuration to better cope with different linked paths requirements among different worker classes from Application and Service, like Publisher and Installer
8
+
9
+ Bug fixes:
10
+ * Correctly composed the bundle command when installing gems from cache in Publisher
11
+ * Extracted Gemfile.lock in addition to Gemfile if any from the release tarball to ensure deploy the exact same set of gems specified from the Gemfile.lock in code repository
12
+
3
13
  ## Version 0.7.4 (Aug 26, 2016)
4
14
 
5
15
  Bug fixes:
@@ -259,11 +259,6 @@ module Luban
259
259
  set_default_profile
260
260
  end
261
261
 
262
- def set_default_application_parameters
263
- super
264
- linked_dirs.push('log', 'pids')
265
- end
266
-
267
262
  def set_default_source
268
263
  source(default_source_path, scm: :rsync)
269
264
  release(stage, current: true)
@@ -42,15 +42,6 @@ module Luban
42
42
  assure_dirs(logrotate_path, downloads_path,
43
43
  tmp_path, app_bin_path, app_tmp_path,
44
44
  releases_path, shared_path)
45
- assure_linked_dirs
46
- end
47
-
48
- def assure_linked_dirs
49
- return if linked_dirs.empty?
50
- linked_dirs.each do |dir|
51
- linked_dir = shared_path.join(dir)
52
- assure(:directory, linked_dir) { mkdir(linked_dir) }
53
- end
54
45
  end
55
46
 
56
47
  def create_envrc_files
@@ -2,6 +2,8 @@ module Luban
2
2
  module Deployment
3
3
  class Application
4
4
  class Publisher < Worker
5
+ include Luban::Deployment::Helpers::LinkedPaths
6
+
5
7
  def release_type; task.opts.release_pack[:type]; end
6
8
  def release_version; task.opts.release_pack[:version]; end
7
9
  def release_tag; task.opts.release_pack[:tag]; end
@@ -118,8 +120,7 @@ module Luban
118
120
  def create_symlinks
119
121
  send("create_#{release_type}_symlinks")
120
122
  if file?(gemfile)
121
- create_shared_symlinks_for(bundle_linked_dirs, type: :directory,
122
- from: linked_dirs_from, to: linked_dirs_to)
123
+ create_linked_dirs(bundle_linked_dirs, from: shared_path, to: release_path)
123
124
  end
124
125
  end
125
126
 
@@ -130,39 +131,23 @@ module Luban
130
131
 
131
132
  def create_app_symlinks
132
133
  create_release_symlink(app_path)
133
- create_shared_symlinks_for_linked_dirs
134
- create_shared_symlinks_for_linked_files
134
+ assure_linked_dirs
135
+ create_symlinks_for_linked_dirs
136
+ create_symlinks_for_linked_files
135
137
  end
136
138
 
137
139
  def create_release_symlink(target_dir)
138
140
  assure_symlink(release_path, target_dir.join(release_type))
139
141
  end
140
142
 
141
- def create_shared_symlinks_for_linked_dirs
142
- create_shared_symlinks_for(linked_dirs, type: :directory,
143
- from: linked_dirs_from, to: linked_dirs_to)
143
+ def create_symlinks_for_linked_dirs
144
+ create_linked_dirs(linked_dirs, from: shared_path, to: release_path)
144
145
  end
145
146
 
146
- def create_shared_symlinks_for_linked_files
147
- create_shared_symlinks_for(linked_files, type: :file,
148
- from: linked_files_from, to: linked_files_to)
147
+ def create_symlinks_for_linked_files
148
+ create_linked_files(linked_files, from: profile_path, to: release_path.join('config'))
149
149
  end
150
150
 
151
- def create_shared_symlinks_for(linked_paths, type:, from:, to:)
152
- linked_paths.each do |path|
153
- target_path = to.join(path)
154
- assure_dirs(target_path.dirname)
155
- rm('-r', target_path) if send("#{type}?", target_path)
156
- source_path = from.join(path)
157
- assure_symlink(source_path, target_path) if send("#{type}?", source_path)
158
- end
159
- end
160
-
161
- def linked_dirs_from; shared_path; end
162
- def linked_dirs_to; release_path; end
163
- def linked_files_from; profile_path; end
164
- def linked_files_to; release_path.join('config'); end
165
-
166
151
  def create_etc_symlinks
167
152
  create_logrotate_symlinks
168
153
  end
@@ -216,17 +201,15 @@ module Luban
216
201
  end
217
202
 
218
203
  def install_gems_from_cache
219
- within(release_path) do
220
- options = []
221
- options << "--gemfile #{gemfile}"
222
- options << "--path #{bundle_path}"
223
- unless test(bundle_cmd, :check, *options)
224
- unless bundle_without.include?(stage.to_s)
225
- options << "--without #{bundle_without.join(' ')}"
226
- end
227
- options << bundle_flags.join(' ')
228
- execute(bundle_cmd, :install, *options)
204
+ options = []
205
+ options << "--gemfile #{gemfile}"
206
+ options << "--path #{bundle_path}"
207
+ unless test(bundle_cmd, :check, *options)
208
+ unless bundle_without.include?(stage.to_s)
209
+ options << "--without #{bundle_without.join(' ')}"
229
210
  end
211
+ options << bundle_flags.join(' ')
212
+ execute(bundle_cmd, :install, *options)
230
213
  end
231
214
  end
232
215
  end
@@ -169,7 +169,7 @@ module Luban
169
169
  gems = bundled_gems[:gems] = {}
170
170
  if test(:tar, "-tzf #{release_package_path} #{gemfile_path} > /dev/null 2>&1")
171
171
  within(workspace_path) do
172
- execute(:tar, "--strip-components=1 -xzf #{release_package_path} #{gemfile_path}")
172
+ execute(:tar, "--strip-components=1 -xzf #{release_package_path} #{gemfile_path} #{gemfile_path}.lock > /dev/null 2>&1")
173
173
  options = []
174
174
  options << "--path #{bundle_path}"
175
175
  unless test(:bundle, :check, *options)
@@ -30,13 +30,6 @@ module Luban
30
30
  def init_profile(args:, opts:)
31
31
  orig_init_profile(args: args, opts: opts.merge(default_templates: default_templates))
32
32
  end
33
-
34
- protected
35
-
36
- def set_parameters
37
- super
38
- linked_dirs.push('log', 'pids')
39
- end
40
33
  end
41
34
  end
42
35
  end
@@ -3,6 +3,28 @@ module Luban
3
3
  module Service
4
4
  class Installer < Luban::Deployment::Package::Installer
5
5
  include Worker::Base
6
+ include Luban::Deployment::Helpers::LinkedPaths
7
+
8
+ protected
9
+
10
+ def bootstrap_install
11
+ super
12
+ assure_linked_dirs
13
+ end
14
+
15
+ def create_symlinks!
16
+ super
17
+ create_symlinks_for_linked_dirs
18
+ create_symlinks_for_linked_files
19
+ end
20
+
21
+ def create_symlinks_for_linked_dirs
22
+ create_linked_dirs(linked_dirs, from: shared_path, to: install_path)
23
+ end
24
+
25
+ def create_symlinks_for_linked_files
26
+ create_linked_files(linked_files, from: profile_path, to: install_path.join('config'))
27
+ end
6
28
  end
7
29
  end
8
30
  end
@@ -0,0 +1,42 @@
1
+ module Luban
2
+ module Deployment
3
+ module Helpers
4
+ module LinkedPaths
5
+ def linked_dirs; @linked_dirs ||= []; end
6
+ def linked_files; @linked_files ||= []; end
7
+
8
+ protected
9
+
10
+ def init
11
+ super
12
+ linked_dirs.push('log', 'pids')
13
+ end
14
+
15
+ def assure_linked_dirs
16
+ return if linked_dirs.empty?
17
+ assure_dirs(linked_dirs.collect { |dir| shared_path.join(dir) })
18
+ end
19
+
20
+ def create_linked_dirs(dirs, from:, to:)
21
+ dirs.each do |path|
22
+ target_path = to.join(path)
23
+ assure_dirs(target_path.dirname)
24
+ rmdir(target_path) if directory?(target_path)
25
+ source_path = from.join(path)
26
+ assure_symlink(source_path, target_path) #if directory?(source_path)
27
+ end
28
+ end
29
+
30
+ def create_linked_files(files, from:, to:)
31
+ files.each do |path|
32
+ target_path = to.join(path)
33
+ assure_dirs(target_path.dirname)
34
+ rm(target_path) if file?(target_path)
35
+ source_path = from.join(path)
36
+ assure_symlink(source_path, target_path) #if file?(source_path)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -1,3 +1,4 @@
1
1
  require_relative 'helpers/configuration'
2
+ require_relative 'helpers/linked_paths'
2
3
  require_relative 'helpers/utils'
3
4
  require_relative 'helpers/generator'
@@ -111,16 +111,12 @@ module Luban
111
111
 
112
112
  parameter :application
113
113
  parameter :scm_role
114
- parameter :linked_dirs
115
- parameter :linked_files
116
114
  parameter :logrotate_files
117
115
 
118
116
  protected
119
117
 
120
118
  def set_default_application_parameters
121
119
  set_default :scm_role, :scm
122
- set_default :linked_dirs, []
123
- set_default :linked_files, []
124
120
  set_default :logrotate_files, []
125
121
 
126
122
  setup_default_application_config_finder
@@ -1,5 +1,5 @@
1
1
  module Luban
2
2
  module Deployment
3
- VERSION = "0.7.4"
3
+ VERSION = "0.7.5"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: luban
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.4
4
+ version: 0.7.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rubyist Lei
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-08-26 00:00:00.000000000 Z
11
+ date: 2016-08-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: luban-cli
@@ -138,6 +138,7 @@ files:
138
138
  - lib/luban/deployment/helpers.rb
139
139
  - lib/luban/deployment/helpers/configuration.rb
140
140
  - lib/luban/deployment/helpers/generator.rb
141
+ - lib/luban/deployment/helpers/linked_paths.rb
141
142
  - lib/luban/deployment/helpers/utils.rb
142
143
  - lib/luban/deployment/packages/bundler.rb
143
144
  - lib/luban/deployment/packages/git.rb