dapp 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NmM2YzExN2Y3YjVlZjQxOTg0MzVmM2QyMzA1YTQxMTQyNmMzZjA2NQ==
4
+ OWI0MGM4MWU0MjU2MWUxZWY0NWNkMTczNzEyNzJmMWQ2NDhjMzlkYQ==
5
5
  data.tar.gz: !binary |-
6
- ZjJhNGExOThmZmE5NjU4MTFlNzhlOTkwZTE5OTY4M2NlMDVmMzk4Yw==
6
+ MDdmMzhiNTE1ZTM0MjcyMDFmNGEzMzYyNjI2ZmNiNjZlYjA2ZGU0MA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZjMzMTA0YWEzYmJjYjZjMDE3NTA3NzMyYmM2NjYzNzYwODlmOTNhNzk4ZWQz
10
- MTZkYTM0M2ZjYjI4OTlkYTJkMWU2ZTA1NzllNmVhMDcxNGQyMDc0MTY2NDY0
11
- ZDQ2MjNhM2FiYmY4ODU2OTJiOWQ0ZWY3NjIxMjc2N2NkYjljOWY=
9
+ ZDlmZDU3NDYzYTA5YzgwZDRkOGI0MmJmMjU3ZTc1ZGEyOGRkYWQyM2I3NTI3
10
+ MmI2YzRmNmNhM2JjZjZmMzQxNzk1YjZmNGNiZjJhODI0YjU1MWMzODE5YjJi
11
+ ZDcwMGNiNmQ5Y2M3NTU0ZGNjZTg5OTRiZjE4M2I0YTAwMWE1ZDg=
12
12
  data.tar.gz: !binary |-
13
- ODJkNjk4N2NmM2Q0ZWM1NTgxNjY1ODVkMzE1MDI1YWU5NWRkMmIyN2JjNDlk
14
- MjFhOTcxODBjZWVkODQwYzliMDRkZjY5OWUzMTcxNDdmODNiNjU1ZTdmYzRj
15
- ODI4ODk0OTFkNjNmMGI2NWUxODdiMGQ0N2M3M2EyMmJmNzlkZjc=
13
+ NTQ5OGJhMjRkZjI2MTU0ZDEzNzE5ZTdlMjVmYzI2MzcyODkxMThmM2NiMDMx
14
+ NTE0MTM2YTc4MzhjOWJmMmI2OGRjNDA5ZmU2NmU0ZTcwZjNmOTMxZDhiNjVl
15
+ MTk2MmRiODU1YjRkN2U0M2I3ZDIzMjAyM2M4ZDkyMGE5NTJhN2Q=
data/lib/dapp.rb CHANGED
@@ -17,6 +17,7 @@ require 'dapp/builder'
17
17
  require 'dapp/docker'
18
18
  require 'dapp/atomizer'
19
19
  require 'dapp/git_repo/base'
20
+ require 'dapp/git_repo/own'
20
21
  require 'dapp/git_repo/chronicler'
21
22
  require 'dapp/git_repo/remote'
22
23
  require 'dapp/git_artifact'
data/lib/dapp/builder.rb CHANGED
@@ -127,7 +127,18 @@ module Dapp
127
127
  [opts[:basename], opts[:name]].compact.join '-'
128
128
  end
129
129
 
130
- def add_artifact_from_git(url, where_to_add, branch: opts[:git_artifact_branch], ssh_key_path: nil, **kwargs)
130
+ def add_git_artifact(where_to_add, **kwargs)
131
+ log "Adding artifact (to #{where_to_add})"
132
+
133
+ # own repo
134
+ repo = GitRepo::Own.new(self)
135
+
136
+ # add artifact
137
+ artifact = GitArtifact.new(self, repo, where_to_add, flush_cache: opts[:flush_cache], branch: home_branch, **kwargs)
138
+ artifact.add_multilayer!
139
+ end
140
+
141
+ def add_remote_git_artifact(url, where_to_add, branch: opts[:git_artifact_branch] || home_branch, ssh_key_path: nil, **kwargs)
131
142
  log "Adding artifact from git (#{url} to #{where_to_add}, branch: #{branch})"
132
143
 
133
144
  # extract git repo name from url
@@ -31,13 +31,13 @@ module Dapp
31
31
  (opts[:build_history_length] - 1).downto(1).each do |n|
32
32
  origin = i.merge(tag: "#{i[:tag]}_#{n}")
33
33
 
34
- if docker.image_exists?(**origin)
34
+ if docker.image_exist?(**origin)
35
35
  docker.tag origin, i.merge(tag: "#{i[:tag]}_#{n + 1}")
36
36
  end
37
37
  end
38
38
 
39
39
  # shift top -> 1
40
- docker.tag i, i.merge(tag: "#{i[:tag]}_1") if docker.image_exists?(**i)
40
+ docker.tag i, i.merge(tag: "#{i[:tag]}_1") if docker.image_exist?(**i)
41
41
 
42
42
  # tag top
43
43
  docker.tag image_id, i
@@ -2,7 +2,7 @@ module Dapp
2
2
  class Builder
3
3
  # Centos7 support
4
4
  module Centos7
5
- # rubocop:disable Metrics/MethodLength:
5
+ # rubocop:disable Metrics/MethodLength
6
6
  def from_centos7
7
7
  # use centos7
8
8
  docker.from 'centos:7'
@@ -11,7 +11,7 @@ module Dapp
11
11
  [:prepare, :build, :setup].each do |step|
12
12
  # run chef-solo for extra dapps
13
13
  extra_dapps.each do |extra_dapp|
14
- if dapp_chef_cookbooks_artifact.exists_in_step? "cookbooks/#{extra_dapp}/recipes/#{step}.rb", step
14
+ if dapp_chef_cookbooks_artifact.exist_in_step? "cookbooks/#{extra_dapp}/recipes/#{step}.rb", step
15
15
  # FIXME: env ???
16
16
  docker.run "chef-solo -c /usr/share/dapp/chef_solo.rb -o #{extra_dapp}::#{step},env-#{opts[:basename]}::void", step: step
17
17
  end
@@ -20,7 +20,7 @@ module Dapp
20
20
  # run chef-solo for app
21
21
  recipe = [opts[:name], step].compact.join '-'
22
22
  # FIXME: env ???
23
- if dapp_chef_cookbooks_artifact.exists_in_step? "cookbooks/env-#{opts[:basename]}/recipes/#{recipe}.rb", step
23
+ if dapp_chef_cookbooks_artifact.exist_in_step? "cookbooks/env-#{opts[:basename]}/recipes/#{recipe}.rb", step
24
24
  docker.run "chef-solo -c /usr/share/dapp/chef_solo.rb -o env-#{opts[:basename]}::#{recipe}", step: step
25
25
  end
26
26
  end
@@ -71,7 +71,7 @@ module Dapp
71
71
 
72
72
  def run_chef_solo_for_dapp_common
73
73
  [:prepare, :build, :setup].each do |step|
74
- if dapp_chef_cookbooks_artifact.exists_in_step? "cookbooks/dapp-common/recipes/#{step}.rb", step
74
+ if dapp_chef_cookbooks_artifact.exist_in_step? "cookbooks/dapp-common/recipes/#{step}.rb", step
75
75
  # FIXME: env ???
76
76
  docker.run "chef-solo -c /usr/share/dapp/chef_solo.rb -o dapp-common::#{step},env-#{opts[:basename]}::void", step: step
77
77
  end
data/lib/dapp/docker.rb CHANGED
@@ -76,7 +76,7 @@ module Dapp
76
76
  res.stdout.lines.grep(/^Successfully built ([0-9a-f]+)\n$/).first.strip.split.last
77
77
  end
78
78
 
79
- def image_exists?(**kwargs)
79
+ def image_exist?(**kwargs)
80
80
  !image_id(**kwargs).nil?
81
81
  end
82
82
 
@@ -71,12 +71,8 @@ module Dapp
71
71
  end
72
72
  end
73
73
 
74
- def exists_in_commit?(path, commit)
75
- repo.git_bare("cat-file -e #{commit}:#{path}", returns: [0, 128]).status.success?
76
- end
77
-
78
- def exists_in_step?(path, step)
79
- exists_in_commit?(path, commit_by_step(step))
74
+ def exist_in_step?(path, step)
75
+ repo.exist_in_commit?(path, commit_by_step(step))
80
76
  end
81
77
 
82
78
  def prepare_step_commit
@@ -96,12 +92,9 @@ module Dapp
96
92
  end
97
93
 
98
94
  def any_changes?(from)
99
- !repo.git_bare("diff --quiet #{from}..#{repo_latest_commit}#{" --relative=#{cwd}" if cwd} #{paths(true)}", returns: [0, 1]).status.success?
95
+ !repo.git_bare("diff --quiet #{from}..#{repo_latest_commit}#{" --relative=#{cwd}" if cwd} -- #{paths(true)}", returns: [0, 1]).status.success?
100
96
  end
101
97
 
102
- protected
103
-
104
- attr_reader :builder
105
98
  attr_reader :repo
106
99
  attr_reader :name
107
100
  attr_reader :where_to_add
@@ -110,6 +103,10 @@ module Dapp
110
103
  attr_reader :owner
111
104
  attr_reader :group
112
105
  attr_reader :interlayer_period
106
+
107
+ protected
108
+
109
+ attr_reader :builder
113
110
  attr_reader :atomizer
114
111
 
115
112
  def lock_with_repo(&blk)
@@ -119,7 +116,7 @@ module Dapp
119
116
  end
120
117
 
121
118
  def create_and_add_archive
122
- create_archive! unless archive_exists?
119
+ create_archive! unless archive_exist?
123
120
  add_archive
124
121
  end
125
122
 
@@ -221,7 +218,7 @@ module Dapp
221
218
  File.write archive_commitfile_path, repo_latest_commit
222
219
  end
223
220
 
224
- def archive_exists?
221
+ def archive_exist?
225
222
  File.exist? archive_commitfile_path
226
223
  end
227
224
 
@@ -248,17 +245,18 @@ module Dapp
248
245
  def add_patch(filename, step:)
249
246
  builder.docker.add_artifact(build_path(filename), filename, '/tmp', step: step)
250
247
 
251
- builder.docker.run [
248
+ builder.docker.run(
252
249
  "zcat /tmp/#{filename} | #{sudo}git apply --whitespace=nowarn --directory=#{where_to_add}",
253
- "rm /tmp/#{filename}"
254
- ], step: step
250
+ "rm /tmp/#{filename}",
251
+ step: step
252
+ )
255
253
  end
256
254
 
257
255
  def create_patch!(from, filename, commitfile_path)
258
256
  atomizer << build_path(filename)
259
257
  atomizer << commitfile_path
260
258
 
261
- repo.git_bare "diff --binary #{from}..#{repo_latest_commit}#{" --relative=#{cwd}" if cwd} #{paths(true)} | gzip > #{build_path filename}"
259
+ repo.git_bare "diff --binary #{from}..#{repo_latest_commit}#{" --relative=#{cwd}" if cwd} -- #{paths(true)} | gzip > #{build_path filename}"
262
260
  File.write commitfile_path, repo_latest_commit
263
261
  end
264
262
 
@@ -20,10 +20,6 @@ module Dapp
20
20
  build_path "#{name}.git"
21
21
  end
22
22
 
23
- def git(command, **kwargs)
24
- builder.shellout "git #{command}", **kwargs
25
- end
26
-
27
23
  def git_bare(command, **kwargs)
28
24
  git "--git-dir=#{dir_path} #{command}", **kwargs
29
25
  end
@@ -36,15 +32,22 @@ module Dapp
36
32
  git_bare("rev-parse #{branch}").stdout.strip
37
33
  end
38
34
 
35
+ def exist_in_commit?(path, commit)
36
+ git_bare("cat-file -e #{commit}:#{path}", returns: [0, 128]).status.success?
37
+ end
38
+
39
39
  def cleanup!
40
- lock do
41
- FileUtils.rm_rf dir_path
42
- end
43
40
  end
44
41
 
45
42
  def lock(**kwargs, &block)
46
43
  builder.filelock(build_path("#{name}.lock"), error_message: "Repository #{name} in use! Try again later.", **kwargs, &block)
47
44
  end
45
+
46
+ protected
47
+
48
+ def git(command, **kwargs)
49
+ builder.shellout "git #{command}", **kwargs
50
+ end
48
51
  end
49
52
  end
50
53
  end
@@ -29,6 +29,7 @@ module Dapp
29
29
  def cleanup!
30
30
  lock do
31
31
  super
32
+ FileUtils.rm_rf dir_path
32
33
  FileUtils.rm_rf chronodir_path
33
34
  end
34
35
  end
@@ -0,0 +1,14 @@
1
+ module Dapp
2
+ module GitRepo
3
+ # Own Git repo
4
+ class Own < Base
5
+ def initialize(builder, **kwargs)
6
+ super(builder, 'own', **kwargs)
7
+ end
8
+
9
+ def dir_path
10
+ @dir_path ||= git("-C #{builder.home_path} rev-parse --git-dir").stdout.strip
11
+ end
12
+ end
13
+ end
14
+ end
@@ -28,6 +28,13 @@ module Dapp
28
28
  end
29
29
  end
30
30
 
31
+ def cleanup!
32
+ lock do
33
+ super
34
+ FileUtils.rm_rf dir_path
35
+ end
36
+ end
37
+
31
38
  protected
32
39
 
33
40
  attr_reader :url
data/lib/dapp/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Dapp
2
- VERSION = '0.0.2'.freeze
2
+ VERSION = '0.0.3'.freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dapp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Stolyarov
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-03-13 00:00:00.000000000 Z
12
+ date: 2016-04-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: mixlib-shellout
@@ -103,16 +103,30 @@ dependencies:
103
103
  name: test_construct
104
104
  requirement: !ruby/object:Gem::Requirement
105
105
  requirements:
106
- - - ! '>='
106
+ - - ~>
107
107
  - !ruby/object:Gem::Version
108
- version: '0'
108
+ version: '2'
109
109
  type: :development
110
110
  prerelease: false
111
111
  version_requirements: !ruby/object:Gem::Requirement
112
112
  requirements:
113
- - - ! '>='
113
+ - - ~>
114
114
  - !ruby/object:Gem::Version
115
- version: '0'
115
+ version: '2'
116
+ - !ruby/object:Gem::Dependency
117
+ name: timecop
118
+ requirement: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ~>
121
+ - !ruby/object:Gem::Version
122
+ version: '0.8'
123
+ type: :development
124
+ prerelease: false
125
+ version_requirements: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ~>
128
+ - !ruby/object:Gem::Version
129
+ version: '0.8'
116
130
  - !ruby/object:Gem::Dependency
117
131
  name: pry
118
132
  requirement: !ruby/object:Gem::Requirement
@@ -177,16 +191,16 @@ dependencies:
177
191
  name: codeclimate-test-reporter
178
192
  requirement: !ruby/object:Gem::Requirement
179
193
  requirements:
180
- - - ! '>='
194
+ - - ~>
181
195
  - !ruby/object:Gem::Version
182
- version: '0'
196
+ version: '0.5'
183
197
  type: :development
184
198
  prerelease: false
185
199
  version_requirements: !ruby/object:Gem::Requirement
186
200
  requirements:
187
- - - ! '>='
201
+ - - ~>
188
202
  - !ruby/object:Gem::Version
189
- version: '0'
203
+ version: '0.5'
190
204
  description: Build docker packaged apps using chef or shell
191
205
  email:
192
206
  - dmitry.stolyarov@flant.com
@@ -210,6 +224,7 @@ files:
210
224
  - lib/dapp/git_artifact.rb
211
225
  - lib/dapp/git_repo/base.rb
212
226
  - lib/dapp/git_repo/chronicler.rb
227
+ - lib/dapp/git_repo/own.rb
213
228
  - lib/dapp/git_repo/remote.rb
214
229
  - lib/dapp/version.rb
215
230
  homepage: https://github.com/flant/dapp