dapp 0.5.8 → 0.5.9
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 +4 -4
- data/config/en/common.yml +4 -3
- data/lib/dapp.rb +2 -0
- data/lib/dapp/application.rb +2 -0
- data/lib/dapp/application/deps/gitartifact.rb +39 -0
- data/lib/dapp/application/system_shellout.rb +57 -0
- data/lib/dapp/build/stage/source_base.rb +1 -26
- data/lib/dapp/builder/chef.rb +3 -11
- data/lib/dapp/git_artifact.rb +4 -4
- data/lib/dapp/git_repo/base.rb +1 -1
- data/lib/dapp/git_repo/remote.rb +2 -1
- data/lib/dapp/version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 442f21d5a2d84a60587d83bf4e3578622d079c17
|
4
|
+
data.tar.gz: f63c5c35c355eca4929c7a3f7fe1670d4f12fb16
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c56953614a510d5e1124080719375ac5c31545ad660f36749050f37918f7bdc3d90791e44b0a171f9099b7d1fc5723dd85a32814d85a47a87d9bae7b8ad8bbe7
|
7
|
+
data.tar.gz: d6c837e5d2d90544195a03f32c03a76167e23fab91c3f6bd803534987443ccaca06da497627ae6c96be3248a26aef127eff7bbeaa79353203e694b3a8bd3b0ce
|
data/config/en/common.yml
CHANGED
@@ -10,11 +10,12 @@ en:
|
|
10
10
|
process:
|
11
11
|
artifact_copy: "copying artifact '%{name}'"
|
12
12
|
artifact_building: "building artifact '%{name}'"
|
13
|
-
git_artifact_loading: 'loading git_artifact'
|
14
13
|
git_artifact_clone: "cloning remote git_artifact '%{name}'"
|
15
14
|
git_artifact_fetch: "fetching remote git_artifact '%{name}'"
|
16
|
-
chefdk_loading: 'loading chefdk'
|
17
15
|
berks_vendor: 'berks_vendor'
|
16
|
+
gitartifact_container_loading: 'loading dappdeps/gitartifact container'
|
17
|
+
chefdk_container_loading: 'loading dappdeps/chefdk container'
|
18
|
+
system_shellout_container_loading: 'loading system shellout container'
|
18
19
|
status:
|
19
20
|
process:
|
20
21
|
pushing: '[PUSHING]'
|
@@ -29,4 +30,4 @@ en:
|
|
29
30
|
not_present: '[NOT PRESENT]'
|
30
31
|
build: '[BUILD]'
|
31
32
|
empty: '[EMPTY]'
|
32
|
-
push: '[PUSH]'
|
33
|
+
push: '[PUSH]'
|
data/lib/dapp.rb
CHANGED
@@ -85,6 +85,8 @@ require 'dapp/application/git_artifact'
|
|
85
85
|
require 'dapp/application/logging'
|
86
86
|
require 'dapp/application/path'
|
87
87
|
require 'dapp/application/tags'
|
88
|
+
require 'dapp/application/deps/gitartifact'
|
89
|
+
require 'dapp/application/system_shellout'
|
88
90
|
require 'dapp/application'
|
89
91
|
require 'dapp/image/argument'
|
90
92
|
require 'dapp/image/docker'
|
data/lib/dapp/application.rb
CHANGED
@@ -0,0 +1,39 @@
|
|
1
|
+
module Dapp
|
2
|
+
# Application
|
3
|
+
class Application
|
4
|
+
# Deps
|
5
|
+
module Deps
|
6
|
+
# Gitartifact
|
7
|
+
module Gitartifact
|
8
|
+
GITARTIFACT_IMAGE = 'dappdeps/gitartifact:0.1.5'.freeze
|
9
|
+
|
10
|
+
def gitartifact_container_name # FIXME: hashsum(image) or dockersafe()
|
11
|
+
GITARTIFACT_IMAGE.tr('/', '_').tr(':', '_')
|
12
|
+
end
|
13
|
+
|
14
|
+
def gitartifact_container
|
15
|
+
@gitartifact_container ||= begin
|
16
|
+
if shellout("docker inspect #{gitartifact_container_name}").exitstatus.nonzero?
|
17
|
+
log_secondary_process(t(code: 'process.gitartifact_container_loading'), short: true) do
|
18
|
+
shellout ['docker run',
|
19
|
+
'--restart=no',
|
20
|
+
"--name #{gitartifact_container_name}",
|
21
|
+
"--volume /.dapp/deps/gitartifact #{GITARTIFACT_IMAGE}",
|
22
|
+
'2>/dev/null'].join(' ')
|
23
|
+
end
|
24
|
+
end
|
25
|
+
gitartifact_container_name
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def git_path
|
30
|
+
'/.dapp/deps/gitartifact/bin/git'
|
31
|
+
end
|
32
|
+
|
33
|
+
def sudo_path
|
34
|
+
'/.dapp/deps/gitartifact/bin/sudo'
|
35
|
+
end
|
36
|
+
end # Gitartifact
|
37
|
+
end # Deps
|
38
|
+
end # Application
|
39
|
+
end # Dapp
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Dapp
|
2
|
+
# Application
|
3
|
+
class Application
|
4
|
+
# SystemShellout
|
5
|
+
module SystemShellout
|
6
|
+
SYSTEM_SHELLOUT_IMAGE = 'ubuntu:14.04'
|
7
|
+
SYSTEM_SHELLOUT_VERSION = 2
|
8
|
+
|
9
|
+
def system_shellout_container_name
|
10
|
+
"dapp_system_shellout_#{hashsum [SYSTEM_SHELLOUT_VERSION,
|
11
|
+
SYSTEM_SHELLOUT_IMAGE,
|
12
|
+
Deps::Gitartifact::GITARTIFACT_IMAGE]}"
|
13
|
+
end
|
14
|
+
|
15
|
+
def system_shellout_container
|
16
|
+
@system_shellout_container ||= begin
|
17
|
+
if shellout("docker inspect #{system_shellout_container_name}").exitstatus.nonzero?
|
18
|
+
volumes_from = [gitartifact_container]
|
19
|
+
log_secondary_process(t(code: 'process.system_shellout_container_loading'), short: true) do
|
20
|
+
shellout! ['docker run --detach --privileged',
|
21
|
+
"--name #{system_shellout_container_name}",
|
22
|
+
*volumes_from.map { |container| "--volumes-from #{container}" },
|
23
|
+
'--volume /:/.system_shellout_root',
|
24
|
+
"#{SYSTEM_SHELLOUT_IMAGE} bash -ec 'while true ; do sleep 1 ; done'"].join(' ')
|
25
|
+
|
26
|
+
shellout! ["docker exec #{system_shellout_container_name}",
|
27
|
+
"bash -ec '#{[
|
28
|
+
'mkdir -p /.system_shellout_root/.dapp',
|
29
|
+
'mount --rbind /.dapp /.system_shellout_root/.dapp',
|
30
|
+
'mount --rbind /usr/bin /.system_shellout_root/usr/bin',
|
31
|
+
'apt-get update -qq',
|
32
|
+
'apt-get install -qq openssh-client',
|
33
|
+
].join(' && ')}'"].join(' ')
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
system_shellout_container_name
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def system_shellout(command, **kwargs)
|
42
|
+
shellout _to_system_shellout_command(command), **kwargs
|
43
|
+
end
|
44
|
+
|
45
|
+
def system_shellout!(command, **kwargs)
|
46
|
+
shellout! _to_system_shellout_command(command), **kwargs
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def _to_system_shellout_command(command)
|
52
|
+
cmd = shellout_pack ["cd #{Dir.pwd}", command].join(' && ')
|
53
|
+
"docker exec #{system_shellout_container} chroot /.system_shellout_root bash -ec '#{cmd}'"
|
54
|
+
end
|
55
|
+
end # SystemShellout
|
56
|
+
end # Application
|
57
|
+
end # Dapp
|
@@ -5,8 +5,6 @@ module Dapp
|
|
5
5
|
class SourceBase < Base
|
6
6
|
attr_accessor :prev_source_stage, :next_source_stage
|
7
7
|
|
8
|
-
GITARTIFACT_IMAGE = 'dappdeps/gitartifact:0.1.5'.freeze
|
9
|
-
|
10
8
|
def prev_source_stage
|
11
9
|
dependencies_stage.prev_stage.prev_stage
|
12
10
|
end
|
@@ -21,7 +19,7 @@ module Dapp
|
|
21
19
|
|
22
20
|
def image
|
23
21
|
super do |image|
|
24
|
-
image.add_volumes_from gitartifact_container
|
22
|
+
image.add_volumes_from application.gitartifact_container
|
25
23
|
application.git_artifacts.each do |git_artifact|
|
26
24
|
image.add_volume "#{git_artifact.repo.path}:#{git_artifact.repo.container_path}:ro"
|
27
25
|
image.add_command git_artifact.send(apply_command_method, self)
|
@@ -44,31 +42,8 @@ module Dapp
|
|
44
42
|
end
|
45
43
|
end
|
46
44
|
|
47
|
-
def git_dappdeps_path
|
48
|
-
'/.dapp/deps/gitartifact/bin/git'
|
49
|
-
end
|
50
|
-
|
51
45
|
protected
|
52
46
|
|
53
|
-
def gitartifact_container_name # FIXME: hashsum(image) or dockersafe()
|
54
|
-
GITARTIFACT_IMAGE.tr('/', '_').tr(':', '_')
|
55
|
-
end
|
56
|
-
|
57
|
-
def gitartifact_container
|
58
|
-
@gitartifact_container ||= begin
|
59
|
-
if application.shellout("docker inspect #{gitartifact_container_name}").exitstatus.nonzero?
|
60
|
-
application.log_secondary_process(application.t(code: 'process.git_artifact_loading'), short: true) do
|
61
|
-
application.shellout ['docker run',
|
62
|
-
'--restart=no',
|
63
|
-
"--name #{gitartifact_container_name}",
|
64
|
-
"--volume /.dapp/deps/gitartifact #{GITARTIFACT_IMAGE}",
|
65
|
-
'2>/dev/null'].join(' ')
|
66
|
-
end
|
67
|
-
end
|
68
|
-
gitartifact_container_name
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
47
|
def should_not_be_detailed?
|
73
48
|
true
|
74
49
|
end
|
data/lib/dapp/builder/chef.rb
CHANGED
@@ -22,7 +22,7 @@ module Dapp
|
|
22
22
|
image.add_command "export DAPP_BUILD_STAGE=#{stage}"
|
23
23
|
|
24
24
|
image.add_volume "#{stage_build_path(stage)}:#{container_stage_build_path(stage)}:ro"
|
25
|
-
image.add_command [
|
25
|
+
image.add_command ['/.dapp/deps/chefdk/bin/chef-solo',
|
26
26
|
'--legacy-mode',
|
27
27
|
"-c #{container_stage_config_path(stage)}",
|
28
28
|
"-o #{stage_cookbooks_runlist(stage).join(',')}"].join(' ')
|
@@ -139,7 +139,7 @@ module Dapp
|
|
139
139
|
def chefdk_container
|
140
140
|
@chefdk_container ||= begin
|
141
141
|
if application.shellout("docker inspect #{chefdk_container_name}").exitstatus.nonzero?
|
142
|
-
application.log_secondary_process(application.t(code: 'process.
|
142
|
+
application.log_secondary_process(application.t(code: 'process.chefdk_container_loading'), short: true) do
|
143
143
|
application.shellout(
|
144
144
|
['docker run',
|
145
145
|
'--restart=no',
|
@@ -166,7 +166,7 @@ module Dapp
|
|
166
166
|
'echo " StrictHostKeyChecking no" >> ~/.ssh/config',
|
167
167
|
'if [ ! -f Berksfile.lock ] ; then echo "Berksfile.lock not found" 1>&2 ; exit 1 ; fi',
|
168
168
|
'cp -a Berksfile.lock /tmp/Berksfile.lock.orig',
|
169
|
-
"
|
169
|
+
"/.dapp/deps/chefdk/bin/berks vendor /tmp/vendored_cookbooks",
|
170
170
|
'export LOCKDIFF=$(diff -u0 Berksfile.lock /tmp/Berksfile.lock.orig)',
|
171
171
|
['if [ "$LOCKDIFF" != "" ] ; then ',
|
172
172
|
'cp -a /tmp/Berksfile.lock.orig Berksfile.lock ; ',
|
@@ -381,14 +381,6 @@ module Dapp
|
|
381
381
|
def container_stage_build_path(_stage, *path)
|
382
382
|
path.compact.map(&:to_s).inject(Pathname.new('/.dapp/chef/build'), &:+)
|
383
383
|
end
|
384
|
-
|
385
|
-
def chef_solo_dappdeps_path
|
386
|
-
'/.dapp/deps/chefdk/bin/chef-solo'
|
387
|
-
end
|
388
|
-
|
389
|
-
def berks_dappdeps_path
|
390
|
-
'/.dapp/deps/chefdk/bin/berks'
|
391
|
-
end
|
392
384
|
end
|
393
385
|
end
|
394
386
|
end
|
data/lib/dapp/git_artifact.rb
CHANGED
@@ -27,7 +27,7 @@ module Dapp
|
|
27
27
|
credentials = [:owner, :group].map { |attr| "--#{attr}=#{send(attr)}" unless send(attr).nil? }.compact
|
28
28
|
|
29
29
|
["install #{credentials.join(' ')} -d #{where_to_add}",
|
30
|
-
["#{
|
30
|
+
["#{repo.application.git_path} --git-dir=#{repo.container_path} archive #{stage.layer_commit(self)}:#{cwd} #{paths}",
|
31
31
|
"#{sudo}tar -x -C #{where_to_add}"].join(' | ')]
|
32
32
|
end
|
33
33
|
|
@@ -36,8 +36,8 @@ module Dapp
|
|
36
36
|
prev_commit = stage.prev_source_stage.layer_commit(self)
|
37
37
|
|
38
38
|
if prev_commit != current_commit || any_changes?(prev_commit, current_commit)
|
39
|
-
[["#{
|
40
|
-
"#{sudo}#{
|
39
|
+
[["#{repo.application.git_path} --git-dir=#{repo.container_path} #{diff_command(prev_commit, current_commit)}",
|
40
|
+
"#{sudo}#{repo.application.git_path} apply --whitespace=nowarn --directory=#{where_to_add} --unsafe-paths"].join(' | ')]
|
41
41
|
else
|
42
42
|
[]
|
43
43
|
end
|
@@ -84,7 +84,7 @@ module Dapp
|
|
84
84
|
sudo = ''
|
85
85
|
|
86
86
|
if owner || group
|
87
|
-
sudo =
|
87
|
+
sudo = "#{repo.application.sudo_path} -E "
|
88
88
|
sudo += "-u #{sudo_format_user(owner)} " if owner
|
89
89
|
sudo += "-g #{sudo_format_user(group)} " if group
|
90
90
|
end
|
data/lib/dapp/git_repo/base.rb
CHANGED
data/lib/dapp/git_repo/remote.rb
CHANGED
@@ -52,7 +52,8 @@ module Dapp
|
|
52
52
|
|
53
53
|
def git(command, **kwargs)
|
54
54
|
if use_ssh_key && ssh_key_path
|
55
|
-
application.
|
55
|
+
cmd = application.shellout_pack("/usr/bin/ssh-agent bash -ec '/usr/bin/ssh-add #{ssh_key_path}; #{application.git_path} #{command}'")
|
56
|
+
application.system_shellout!("bash -ec '#{cmd}'")
|
56
57
|
else
|
57
58
|
super
|
58
59
|
end
|
data/lib/dapp/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dapp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Stolyarov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mixlib-shellout
|
@@ -327,9 +327,11 @@ files:
|
|
327
327
|
- config/en/net_status.yml
|
328
328
|
- lib/dapp.rb
|
329
329
|
- lib/dapp/application.rb
|
330
|
+
- lib/dapp/application/deps/gitartifact.rb
|
330
331
|
- lib/dapp/application/git_artifact.rb
|
331
332
|
- lib/dapp/application/logging.rb
|
332
333
|
- lib/dapp/application/path.rb
|
334
|
+
- lib/dapp/application/system_shellout.rb
|
333
335
|
- lib/dapp/application/tags.rb
|
334
336
|
- lib/dapp/build/stage/artifact.rb
|
335
337
|
- lib/dapp/build/stage/base.rb
|