depengine 3.0.20 → 3.0.21
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/.rubocop.yml +8 -0
- data/.rubocop_todo.yml +52 -0
- data/Gemfile.lock +16 -1
- data/Rakefile +9 -9
- data/bin/cdb_crypt +2 -2
- data/bin/de +1 -1
- data/bin/depengine +2 -2
- data/bin/spec_setup +2 -2
- data/depengine.gemspec +22 -21
- data/lib/depengine/asserter/url.rb +8 -9
- data/lib/depengine/cli.rb +12 -14
- data/lib/depengine/dsl/cdb.rb +16 -17
- data/lib/depengine/dsl/deployment.rb +42 -50
- data/lib/depengine/dsl/dweb.rb +10 -11
- data/lib/depengine/dsl/executor.rb +5 -5
- data/lib/depengine/dsl/fileops.rb +3 -4
- data/lib/depengine/dsl/helper.rb +26 -28
- data/lib/depengine/dsl/iis.rb +21 -24
- data/lib/depengine/dsl/patch.rb +22 -46
- data/lib/depengine/dsl/publisher.rb +14 -14
- data/lib/depengine/dsl/remote.rb +11 -13
- data/lib/depengine/dsl/repository.rb +19 -21
- data/lib/depengine/dsl/template.rb +19 -19
- data/lib/depengine/dsl/zip.rb +24 -24
- data/lib/depengine/helper/cli_helper.rb +9 -11
- data/lib/depengine/helper/hudson.rb +15 -19
- data/lib/depengine/helper/mail.rb +19 -25
- data/lib/depengine/helper/properties.rb +33 -52
- data/lib/depengine/helper/smb.rb +19 -25
- data/lib/depengine/helper/validations.rb +7 -7
- data/lib/depengine/helper/yaml.rb +7 -9
- data/lib/depengine/log/log.rb +3 -6
- data/lib/depengine/processor/erb_template.rb +42 -47
- data/lib/depengine/processor/fileops.rb +39 -48
- data/lib/depengine/processor/local_execute.rb +6 -4
- data/lib/depengine/processor/properties.rb +34 -56
- data/lib/depengine/processor/sed.rb +8 -12
- data/lib/depengine/processor/tags.rb +9 -10
- data/lib/depengine/processor/template.rb +27 -32
- data/lib/depengine/processor/zip.rb +16 -20
- data/lib/depengine/provider/cdb.rb +64 -71
- data/lib/depengine/provider/cdb_filesystem.rb +18 -26
- data/lib/depengine/provider/git.rb +37 -42
- data/lib/depengine/provider/repository.rb +161 -176
- data/lib/depengine/publisher/dweb.rb +74 -90
- data/lib/depengine/publisher/iis.rb +23 -30
- data/lib/depengine/publisher/rsync.rb +14 -17
- data/lib/depengine/publisher/samba.rb +12 -14
- data/lib/depengine/publisher/sftp.rb +51 -61
- data/lib/depengine/publisher/ssh.rb +19 -22
- data/lib/depengine/publisher/tomcat.rb +19 -21
- data/lib/depengine/reporter/cdb.rb +2 -3
- data/lib/depengine/version.rb +1 -1
- data/lib/depengine.rb +1 -2
- data/spec/cdb_spec.rb +8 -10
- data/spec/demo_recipe/recipes/demo.rb +10 -10
- data/spec/deployhelper_spec.rb +20 -21
- data/spec/fileops_spec.rb +11 -12
- data/spec/git_spec.rb +8 -4
- data/spec/helper_spec.rb +75 -75
- data/spec/junit.rb +47 -49
- data/spec/local_execute.rb +7 -7
- data/spec/log_spec.rb +17 -18
- data/spec/properties_spec.rb +13 -15
- data/spec/recipe_spec.rb +15 -16
- data/spec/repository_spec.rb +20 -20
- data/spec/ssh_spec.rb +18 -19
- data/spec/template_spec.rb +30 -30
- data/spec/zip_spec.rb +7 -7
- metadata +18 -2
data/spec/repository_spec.rb
CHANGED
@@ -13,40 +13,40 @@ require_relative '../lib/depengine/log/log'
|
|
13
13
|
$log = Log::DeploymentLogger.new
|
14
14
|
$log.writer.level = Log4r::DEBUG
|
15
15
|
|
16
|
-
describe
|
17
|
-
context
|
18
|
-
it
|
16
|
+
describe 'getting a file' do
|
17
|
+
context 'with maven' do
|
18
|
+
it 'should get from a remote repository' do
|
19
19
|
tmp_dir = Dir.mktmpdir
|
20
20
|
begin
|
21
|
-
test = Provider::Repository.new
|
22
|
-
test.repository =
|
23
|
-
test.user =
|
24
|
-
test.password =
|
25
|
-
test.method =
|
21
|
+
test = Provider::Repository.new
|
22
|
+
test.repository = 'http://repo1.maven.org/maven2/'
|
23
|
+
test.user = ''
|
24
|
+
test.password = ''
|
25
|
+
test.method = 'maven'
|
26
26
|
|
27
|
-
test.get_from_repository(
|
28
|
-
File.file?(tmp_dir+'/maven-model-2.2.1.jar').should be true
|
27
|
+
test.get_from_repository('org/apache/maven/maven-model/2.2.1/maven-model-2.2.1.jar', tmp_dir)
|
28
|
+
File.file?(tmp_dir + '/maven-model-2.2.1.jar').should be true
|
29
29
|
ensure
|
30
30
|
FileUtils.remove_entry tmp_dir
|
31
31
|
end
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
context
|
36
|
-
it
|
35
|
+
context 'with SCP' do
|
36
|
+
it 'should get a file from a remote host' do
|
37
37
|
tmp_dir = Dir.mktmpdir
|
38
38
|
begin
|
39
|
-
FileUtils.mkdir tmp_dir+
|
40
|
-
FileUtils.touch tmp_dir+
|
39
|
+
FileUtils.mkdir tmp_dir + '/source'
|
40
|
+
FileUtils.touch tmp_dir + '/source/test.file'
|
41
41
|
|
42
|
-
test = Provider::Repository.new
|
43
|
-
test.host =
|
42
|
+
test = Provider::Repository.new
|
43
|
+
test.host = 'localhost'
|
44
44
|
test.user = ENV['USER']
|
45
|
-
test.sshkey = ENV['HOME']+
|
46
|
-
test.method =
|
45
|
+
test.sshkey = ENV['HOME'] + '/.ssh/id_rsa'
|
46
|
+
test.method = 'scp'
|
47
47
|
|
48
|
-
test.get_from_repository(tmp_dir+
|
49
|
-
File.file?(tmp_dir+'/test.file').should be true
|
48
|
+
test.get_from_repository(tmp_dir + '/source/test.file', tmp_dir)
|
49
|
+
File.file?(tmp_dir + '/test.file').should be true
|
50
50
|
ensure
|
51
51
|
FileUtils.remove_entry tmp_dir
|
52
52
|
end
|
data/spec/ssh_spec.rb
CHANGED
@@ -12,60 +12,59 @@ $log = Log::DeploymentLogger.new
|
|
12
12
|
$log.writer.level = Log4r::INFO
|
13
13
|
$exec_file_path = __FILE__
|
14
14
|
|
15
|
-
describe
|
16
|
-
it
|
15
|
+
describe 'the ssh publisher' do
|
16
|
+
it 'should execute a command on a remote host' do
|
17
17
|
worker = Publisher::Ssh.new
|
18
18
|
worker.remote_host = 'localhost'
|
19
19
|
worker.remote_user = ENV['USER']
|
20
|
-
worker.ssh_key_file = ENV['HOME']+
|
20
|
+
worker.ssh_key_file = ENV['HOME'] + '/.ssh/id_rsa'
|
21
21
|
|
22
|
-
result = ''
|
23
22
|
result = worker.remote_execute('ls -l /')
|
24
|
-
result.should include(
|
23
|
+
result.should include('drwx')
|
25
24
|
end
|
26
25
|
|
27
|
-
it
|
26
|
+
it 'removes old releases' do
|
28
27
|
tmp_dir = Dir.mktmpdir
|
29
28
|
begin
|
30
29
|
elements = 10
|
31
30
|
elements.times do |i|
|
32
|
-
random_time_in_the_past_days = (Time.now-25*60*60*i-((rand*
|
33
|
-
FileUtils.mkdir_p(File.join(tmp_dir,random_time_in_the_past_days.strftime(
|
31
|
+
random_time_in_the_past_days = (Time.now - 25 * 60 * 60 * i - ((rand * 10_000).to_i))
|
32
|
+
FileUtils.mkdir_p(File.join(tmp_dir, random_time_in_the_past_days.strftime('%Y-%m-%d_%s')))
|
34
33
|
end
|
35
|
-
Dir.glob(tmp_dir+
|
34
|
+
Dir.glob(tmp_dir + '/*').size.should be elements
|
36
35
|
|
37
36
|
worker = Publisher::Ssh.new
|
38
37
|
worker.remote_host = 'localhost'
|
39
38
|
worker.remote_user = ENV['USER']
|
40
|
-
worker.ssh_key_file = ENV['HOME']+
|
39
|
+
worker.ssh_key_file = ENV['HOME'] + '/.ssh/id_rsa'
|
41
40
|
|
42
|
-
newest_release = Time.now.strftime(
|
41
|
+
newest_release = Time.now.strftime('%Y-%m-%d_%s')
|
43
42
|
FileUtils.mkdir_p(File.join(tmp_dir, newest_release))
|
44
43
|
|
45
44
|
worker.remove_old_releases(tmp_dir, 1, /[0-9]{4}\-[0-9]{2}\-[0-9]{2}_[0-9]+.*/)
|
46
|
-
Dir.glob(tmp_dir+
|
47
|
-
Dir.glob(tmp_dir+
|
45
|
+
Dir.glob(tmp_dir + '/*').size.should be 1
|
46
|
+
Dir.glob(tmp_dir + '/*').first.should include(newest_release)
|
48
47
|
|
49
48
|
ensure
|
50
49
|
FileUtils.remove_entry tmp_dir
|
51
50
|
end
|
52
51
|
end
|
53
52
|
|
54
|
-
context
|
55
|
-
it
|
53
|
+
context 'when no previous release' do
|
54
|
+
it 'does not remove anything' do
|
56
55
|
tmp_dir = Dir.mktmpdir
|
57
56
|
begin
|
58
57
|
worker = Publisher::Ssh.new
|
59
58
|
worker.remote_host = 'localhost'
|
60
59
|
worker.remote_user = ENV['USER']
|
61
|
-
worker.ssh_key_file = ENV['HOME']+
|
60
|
+
worker.ssh_key_file = ENV['HOME'] + '/.ssh/id_rsa'
|
62
61
|
|
63
|
-
newest_release = Time.now.strftime(
|
62
|
+
newest_release = Time.now.strftime('%Y-%m-%d_%s')
|
64
63
|
FileUtils.mkdir_p(File.join(tmp_dir, newest_release))
|
65
64
|
|
66
65
|
worker.remove_old_releases(tmp_dir, 2, /[0-9]{4}\-[0-9]{2}\-[0-9]{2}_[0-9]+.*/)
|
67
|
-
Dir.glob(tmp_dir+
|
68
|
-
Dir.glob(tmp_dir+
|
66
|
+
Dir.glob(tmp_dir + '/*').size.should be 1
|
67
|
+
Dir.glob(tmp_dir + '/*').first.should include(newest_release)
|
69
68
|
|
70
69
|
ensure
|
71
70
|
FileUtils.remove_entry tmp_dir
|
data/spec/template_spec.rb
CHANGED
@@ -13,77 +13,77 @@ require_relative '../lib/depengine/helper/validations'
|
|
13
13
|
$log = Log::DeploymentLogger.new
|
14
14
|
$log.writer.level = Log4r::ERROR
|
15
15
|
|
16
|
-
describe
|
16
|
+
describe 'the template mechanism' do
|
17
17
|
|
18
|
-
context
|
19
|
-
it
|
20
|
-
result = Processor::Template.parse(
|
21
|
-
expect(result).to include(
|
18
|
+
context 'given a string' do
|
19
|
+
it 'should render a template' do
|
20
|
+
result = Processor::Template.parse('>Template< ><t:echo>Content</t:echo><', {})
|
21
|
+
expect(result).to include('>Template< >Content<')
|
22
22
|
end
|
23
23
|
end
|
24
24
|
|
25
|
-
context
|
26
|
-
it
|
25
|
+
context 'given a single file as source' do
|
26
|
+
it 'should render a template' do
|
27
27
|
result = Processor::Template.parse('spec/templates/single.tpl', {})
|
28
|
-
expect(result).to include(
|
28
|
+
expect(result).to include('>Template< >Content<')
|
29
29
|
end
|
30
30
|
|
31
|
-
it
|
32
|
-
content = {'parameter' => 'value'}
|
31
|
+
it 'should create Tags from the content hash and provide it to the template' do
|
32
|
+
content = { 'parameter' => 'value' }
|
33
33
|
result = Processor::Template.parse('spec/templates/single_hash.tpl', content)
|
34
|
-
expect(result).to include(
|
34
|
+
expect(result).to include('>Template< >value<')
|
35
35
|
end
|
36
36
|
|
37
|
-
it
|
37
|
+
it 'should honor the excludes' do
|
38
38
|
tmp_dir = Dir.mktmpdir
|
39
39
|
begin
|
40
40
|
worker = Processor::Template.new
|
41
41
|
worker.basepath = File.join(File.dirname(__FILE__), 'templates')
|
42
|
-
worker.parse_template('base/sub1/single.tpl', {}, tmp_dir,
|
42
|
+
worker.parse_template('base/sub1/single.tpl', {}, tmp_dir, excludes: ['single'])
|
43
43
|
|
44
|
-
expect(File.file?(File.join(tmp_dir,
|
44
|
+
expect(File.file?(File.join(tmp_dir, 'base/sub1/single'))).to be false
|
45
45
|
ensure
|
46
46
|
FileUtils.remove_entry tmp_dir
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
|
-
it
|
50
|
+
it 'should create a directory structure in analogy to the source tree' do
|
51
51
|
tmp_dir = Dir.mktmpdir
|
52
52
|
begin
|
53
53
|
worker = Processor::Template.new
|
54
54
|
worker.basepath = File.join(File.dirname(__FILE__), 'templates')
|
55
55
|
worker.parse_template('base/sub1/single.tpl', {}, tmp_dir)
|
56
56
|
|
57
|
-
expect(File.open(File.join(tmp_dir,
|
57
|
+
expect(File.open(File.join(tmp_dir, 'base/sub1/single'), 'r').read).to include('>Template< >Content<')
|
58
58
|
ensure
|
59
59
|
FileUtils.remove_entry tmp_dir
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
-
context
|
65
|
-
it
|
64
|
+
context 'given a directory' do
|
65
|
+
it 'should create a directory structure in analogy to the source tree' do
|
66
66
|
tmp_dir = Dir.mktmpdir
|
67
67
|
begin
|
68
68
|
worker = Processor::Template.new
|
69
69
|
worker.basepath = File.join(File.dirname(__FILE__), 'templates')
|
70
70
|
worker.parse_template('base/sub2', {}, tmp_dir)
|
71
71
|
|
72
|
-
expect(File.open(File.join(tmp_dir,
|
72
|
+
expect(File.open(File.join(tmp_dir, 'base/sub2/multi2'), 'r').read).to include('>Template< >Content<')
|
73
73
|
ensure
|
74
74
|
FileUtils.remove_entry tmp_dir
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
78
|
-
it
|
78
|
+
it 'should not use any excluded file' do
|
79
79
|
tmp_dir = Dir.mktmpdir
|
80
80
|
begin
|
81
81
|
worker = Processor::Template.new
|
82
82
|
worker.basepath = File.join(File.dirname(__FILE__), 'templates')
|
83
|
-
worker.parse_template('base/sub2', {}, tmp_dir,
|
83
|
+
worker.parse_template('base/sub2', {}, tmp_dir, excludes: ['multi2'])
|
84
84
|
|
85
|
-
expect(File.file?(File.join(tmp_dir,
|
86
|
-
expect(File.file?(File.join(tmp_dir,
|
85
|
+
expect(File.file?(File.join(tmp_dir, 'base/sub2/multi2'))).to be false
|
86
|
+
expect(File.file?(File.join(tmp_dir, 'base/sub2/multi1'))).to be true
|
87
87
|
ensure
|
88
88
|
FileUtils.remove_entry tmp_dir
|
89
89
|
end
|
@@ -92,14 +92,14 @@ describe "the template mechanism" do
|
|
92
92
|
end
|
93
93
|
|
94
94
|
describe "the template DSL method 'parse_template'" do
|
95
|
-
it
|
95
|
+
it 'calls the processor' do
|
96
96
|
tmp_dir = Dir.mktmpdir
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
97
|
+
begin
|
98
|
+
hack_object = Class.new.class.class_eval('include Deployment::Methods::Template')
|
99
|
+
hack_object.parse_template('base/sub1/single.tpl', tmp_dir, {}, basepath: File.join(File.dirname(__FILE__), 'templates'))
|
100
|
+
ensure
|
101
|
+
FileUtils.remove_entry tmp_dir
|
102
|
+
end
|
103
103
|
end
|
104
104
|
|
105
105
|
end
|
data/spec/zip_spec.rb
CHANGED
@@ -7,17 +7,17 @@ require_relative '../lib/depengine/log/log'
|
|
7
7
|
$log = Log::DeploymentLogger.new
|
8
8
|
$log.writer.level = Log4r::ERROR
|
9
9
|
|
10
|
-
describe
|
10
|
+
describe 'the zipper' do
|
11
11
|
include Processor
|
12
12
|
|
13
|
-
it
|
13
|
+
it 'should extract all files from an archive' do
|
14
14
|
tmp_dir = Dir.mktmpdir
|
15
15
|
begin
|
16
|
-
unzip_file(File.join(File.dirname(__FILE__),'zip/source/dummy.zip'), tmp_dir)
|
17
|
-
File.file?(File.join(tmp_dir,'dummy1')).should be_true
|
18
|
-
File.file?(File.join(tmp_dir,'dummy2')).should be_true
|
19
|
-
File.file?(File.join(tmp_dir,'dummy3')).should be_true
|
20
|
-
File.file?(File.join(tmp_dir,'sub1/sub2/sub3/dummy4')).should be_true
|
16
|
+
unzip_file(File.join(File.dirname(__FILE__), 'zip/source/dummy.zip'), tmp_dir)
|
17
|
+
File.file?(File.join(tmp_dir, 'dummy1')).should be_true
|
18
|
+
File.file?(File.join(tmp_dir, 'dummy2')).should be_true
|
19
|
+
File.file?(File.join(tmp_dir, 'dummy3')).should be_true
|
20
|
+
File.file?(File.join(tmp_dir, 'sub1/sub2/sub3/dummy4')).should be_true
|
21
21
|
ensure
|
22
22
|
FileUtils.remove_entry tmp_dir
|
23
23
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: depengine
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.21
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Team Automatisierung
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-08-
|
11
|
+
date: 2014-08-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -192,6 +192,20 @@ dependencies:
|
|
192
192
|
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: 3.2.0
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: rubocop
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - "~>"
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: 0.24.1
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - "~>"
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: 0.24.1
|
195
209
|
description: Simply generates Depengine text.
|
196
210
|
email:
|
197
211
|
- team-automatisierung@sinnerschrader.com
|
@@ -203,6 +217,8 @@ executables:
|
|
203
217
|
extensions: []
|
204
218
|
extra_rdoc_files: []
|
205
219
|
files:
|
220
|
+
- ".rubocop.yml"
|
221
|
+
- ".rubocop_todo.yml"
|
206
222
|
- Gemfile
|
207
223
|
- Gemfile.lock
|
208
224
|
- Rakefile
|