luban 0.7.4 → 0.7.5

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 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