depengine 3.0.20 → 3.0.21
Sign up to get free protection for your applications and to get access to all the features.
- 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
|