dply 0.0.5 → 0.0.7
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/bin/drake +22 -24
- data/lib/dply/archive.rb +81 -0
- data/lib/dply/build.rb +112 -0
- data/lib/dply/build_config.rb +97 -0
- data/lib/dply/bundle.rb +78 -0
- data/lib/dply/cli/build.rb +68 -0
- data/lib/dply/cli/deploy.rb +16 -12
- data/lib/dply/cli/reload.rb +11 -28
- data/lib/dply/config.rb +46 -48
- data/lib/dply/config_downloader.rb +12 -7
- data/lib/dply/config_struct.rb +41 -0
- data/lib/dply/custom_logger.rb +13 -1
- data/lib/dply/git.rb +5 -0
- data/lib/dply/helper.rb +1 -11
- data/lib/dply/jenkins.rb +32 -0
- data/lib/dply/lock.rb +15 -11
- data/lib/dply/release.rb +58 -16
- data/lib/dply/setup.rb +47 -6
- data/lib/dply/shell.rb +5 -10
- data/lib/dply/stages_config.rb +2 -2
- data/lib/dply/strategy/archive.rb +124 -0
- data/lib/dply/strategy/git.rb +38 -41
- data/lib/dply/tasks.rb +28 -31
- data/lib/dply/version.rb +1 -1
- data/lib/dply/yum.rb +53 -0
- metadata +11 -8
- data/lib/dply/deploy.rb +0 -29
- data/lib/dply/reload.rb +0 -29
- data/lib/dply/setup/default.rb +0 -31
- data/lib/dply/setup/git.rb +0 -52
- data/lib/dply/setup/release.rb +0 -58
- data/lib/dply/strategy/default.rb +0 -57
@@ -0,0 +1,68 @@
|
|
1
|
+
require 'dply/logger'
|
2
|
+
require 'dply/lock'
|
3
|
+
require 'dply/build'
|
4
|
+
require 'dply/build_config'
|
5
|
+
|
6
|
+
module Dply
|
7
|
+
module Cli
|
8
|
+
class Build
|
9
|
+
|
10
|
+
include Logger
|
11
|
+
|
12
|
+
def initialize(argv)
|
13
|
+
@argv = argv
|
14
|
+
end
|
15
|
+
|
16
|
+
def run
|
17
|
+
lock.acquire
|
18
|
+
opts.parse!(@argv)
|
19
|
+
build.run
|
20
|
+
end
|
21
|
+
|
22
|
+
def build
|
23
|
+
@build ||= ::Dply::Build.new(config)
|
24
|
+
end
|
25
|
+
|
26
|
+
def config
|
27
|
+
@config ||= ::Dply::BuildConfig.new.to_struct
|
28
|
+
end
|
29
|
+
|
30
|
+
def dir
|
31
|
+
@dir ||= Dir.pwd
|
32
|
+
end
|
33
|
+
|
34
|
+
def lock
|
35
|
+
@lock ||= ::Dply::Lock.new
|
36
|
+
end
|
37
|
+
|
38
|
+
def opts
|
39
|
+
OptionParser.new do |opts|
|
40
|
+
|
41
|
+
opts.banner = "Usage: drake build [options] [target]"
|
42
|
+
|
43
|
+
opts.on("-b", "--branch [BRANCH]" , "Specify git branch") do |b|
|
44
|
+
config.branch = b
|
45
|
+
end
|
46
|
+
|
47
|
+
opts.on("-r", "--revision [REVISION]", "Specify revision") do |r|
|
48
|
+
config.revision = r
|
49
|
+
end
|
50
|
+
|
51
|
+
opts.on("--no-pull", "Enable/disable git pull") do |e|
|
52
|
+
config.no_pull = true
|
53
|
+
end
|
54
|
+
|
55
|
+
opts.on("--skip-git", "Disable git") do |e|
|
56
|
+
config.git = false
|
57
|
+
end
|
58
|
+
|
59
|
+
opts.on("-h", "--help", "Help") do
|
60
|
+
puts opts
|
61
|
+
exit
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
data/lib/dply/cli/deploy.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'dply/deploy'
|
2
2
|
require 'dply/logger'
|
3
3
|
require 'dply/lock'
|
4
|
+
require 'dply/config'
|
4
5
|
|
5
6
|
module Dply
|
6
7
|
module Cli
|
@@ -8,29 +9,28 @@ module Dply
|
|
8
9
|
|
9
10
|
include Logger
|
10
11
|
|
11
|
-
attr_reader :
|
12
|
+
attr_reader :argv
|
12
13
|
|
13
|
-
def initialize(
|
14
|
-
@deploy_dir = deploy_dir
|
15
|
-
@config = config
|
14
|
+
def initialize(argv)
|
16
15
|
@argv = argv
|
17
16
|
end
|
18
17
|
|
19
18
|
def run
|
20
19
|
lock.acquire
|
21
20
|
opts.parse!(argv)
|
22
|
-
|
23
|
-
config.target = target if target
|
24
|
-
deploy.options = options
|
25
|
-
deploy.run
|
21
|
+
strategy.deploy
|
26
22
|
end
|
27
23
|
|
28
|
-
def
|
29
|
-
@
|
24
|
+
def strategy
|
25
|
+
@strategy ||= Strategy.load(config, options)
|
30
26
|
end
|
31
27
|
|
32
28
|
def lock
|
33
|
-
@lock ||=
|
29
|
+
@lock ||= Lock.new
|
30
|
+
end
|
31
|
+
|
32
|
+
def config
|
33
|
+
@config ||= Config.new.to_struct
|
34
34
|
end
|
35
35
|
|
36
36
|
def opts
|
@@ -39,7 +39,11 @@ module Dply
|
|
39
39
|
opts.banner = "Usage: dply deploy [options] [target]"
|
40
40
|
|
41
41
|
opts.on("-b", "--branch [BRANCH]" , "Specify git branch") do |b|
|
42
|
-
|
42
|
+
config.branch = b
|
43
|
+
end
|
44
|
+
|
45
|
+
opts.on("-r", "--revision [REVISION]", "Specify build revision (only used in archive strategy)") do |r|
|
46
|
+
config.revision = r
|
43
47
|
end
|
44
48
|
|
45
49
|
opts.on("--no-pull", "Enable/disable git pull") do |e|
|
data/lib/dply/cli/reload.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'dply/reload'
|
2
1
|
require 'dply/logger'
|
3
2
|
require 'dply/lock'
|
4
3
|
|
@@ -8,45 +7,29 @@ module Dply
|
|
8
7
|
|
9
8
|
include Logger
|
10
9
|
|
11
|
-
|
12
|
-
|
13
|
-
def initialize(deploy_dir, config, argv)
|
14
|
-
@deploy_dir = deploy_dir
|
10
|
+
def initialize(argv)
|
15
11
|
@argv = argv
|
16
|
-
@config = config
|
17
12
|
end
|
18
13
|
|
19
14
|
def run
|
20
15
|
lock.acquire
|
21
|
-
|
22
|
-
target = argv.shift
|
23
|
-
config.target = target if target
|
24
|
-
reload.options = options
|
25
|
-
reload.run
|
16
|
+
strategy.deploy
|
26
17
|
end
|
27
18
|
|
28
|
-
def
|
29
|
-
@
|
19
|
+
def strategy
|
20
|
+
@strategy ||= ::Dply::Strategy.load(config, options)
|
30
21
|
end
|
31
22
|
|
32
|
-
def
|
33
|
-
@
|
23
|
+
def config
|
24
|
+
@config ||= ::Dply::Config.new(dir).to_struct
|
34
25
|
end
|
35
26
|
|
36
|
-
def
|
37
|
-
|
38
|
-
|
39
|
-
opts.banner = "Usage: dply reload [options] [target]"
|
40
|
-
|
41
|
-
opts.on("--skip-bundler", "Skip bundle install") do |e|
|
42
|
-
options[:skip_bundler] = true
|
43
|
-
end
|
27
|
+
def dir
|
28
|
+
@dir ||= Dir.pwd
|
29
|
+
end
|
44
30
|
|
45
|
-
|
46
|
-
|
47
|
-
exit
|
48
|
-
end
|
49
|
-
end
|
31
|
+
def lock
|
32
|
+
@lock ||= ::Dply::Lock.new
|
50
33
|
end
|
51
34
|
|
52
35
|
def options
|
data/lib/dply/config.rb
CHANGED
@@ -1,39 +1,36 @@
|
|
1
|
-
require 'ostruct'
|
2
1
|
require 'dply/helper'
|
2
|
+
require 'dply/config_struct'
|
3
3
|
|
4
4
|
module Dply
|
5
5
|
class Config
|
6
6
|
|
7
7
|
include Helper
|
8
|
-
attr_reader :
|
8
|
+
attr_reader :read_config
|
9
9
|
|
10
|
-
def initialize(
|
11
|
-
@
|
10
|
+
def initialize(dir = nil, read_config: true)
|
11
|
+
@dir = dir || Dir.pwd
|
12
12
|
@read_config = read_config
|
13
13
|
end
|
14
14
|
|
15
|
+
def to_struct
|
16
|
+
config
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
15
21
|
def config
|
16
22
|
return @config if @config
|
17
|
-
@config =
|
18
|
-
deploy_dir: deploy_dir,
|
19
|
-
target: :default,
|
20
|
-
branch: :master,
|
21
|
-
strategy: :default,
|
22
|
-
repo: nil,
|
23
|
-
env: {},
|
24
|
-
link_config: false,
|
25
|
-
config_map: nil,
|
26
|
-
dir_map: nil,
|
27
|
-
shared_dirs: [],
|
28
|
-
config_skip_download: [],
|
29
|
-
config_download_url: nil
|
30
|
-
}
|
23
|
+
@config = ConfigStruct.new(@dir)
|
31
24
|
read_from_file if read_config
|
32
25
|
return @config
|
33
26
|
end
|
34
27
|
|
35
|
-
def
|
36
|
-
set :
|
28
|
+
def name(name)
|
29
|
+
set :name, name
|
30
|
+
end
|
31
|
+
|
32
|
+
def repo(repo)
|
33
|
+
set :repo, repo
|
37
34
|
end
|
38
35
|
|
39
36
|
def branch(branch)
|
@@ -41,74 +38,75 @@ module Dply
|
|
41
38
|
end
|
42
39
|
|
43
40
|
def strategy(strategy)
|
44
|
-
set :strategy, strategy
|
41
|
+
set :strategy, strategy.to_sym
|
45
42
|
end
|
46
43
|
|
47
|
-
def
|
48
|
-
set :
|
44
|
+
def target(target)
|
45
|
+
set :target, target
|
49
46
|
end
|
50
47
|
|
51
|
-
def
|
52
|
-
|
48
|
+
def shared_dirs(dirs)
|
49
|
+
raise if not dirs.is_a? Array
|
50
|
+
set :shared_dirs, dirs
|
53
51
|
end
|
54
52
|
|
55
53
|
def config_map(map)
|
56
|
-
set :link_config, true
|
57
54
|
set :config_map, map
|
58
55
|
end
|
59
56
|
|
60
|
-
def
|
61
|
-
set :
|
57
|
+
def dir_map(map)
|
58
|
+
set :dir_map, map
|
62
59
|
end
|
63
60
|
|
64
61
|
def config_download_url(url)
|
65
62
|
set :config_download_url, url
|
66
63
|
end
|
67
64
|
|
68
|
-
|
69
|
-
|
70
|
-
def dir_map(map)
|
71
|
-
set :dir_map, map
|
65
|
+
def config_skip_download(list)
|
66
|
+
set :config_skip_download, list
|
72
67
|
end
|
73
68
|
|
74
|
-
def
|
75
|
-
|
69
|
+
def verify_checksum(verify_checksum)
|
70
|
+
set :verify_checksum, verify_checksum
|
76
71
|
end
|
77
72
|
|
78
|
-
def set(key, value)
|
79
|
-
@config.store key, value
|
80
|
-
end
|
81
73
|
|
82
|
-
def
|
83
|
-
|
74
|
+
def set(key, value)
|
75
|
+
method = "#{key}=".to_sym
|
76
|
+
@config.send method, value
|
84
77
|
end
|
85
78
|
|
86
79
|
def env(h)
|
87
80
|
raise if not h.is_a? Hash
|
88
|
-
|
89
|
-
@config[:env].each do |k,v|
|
81
|
+
h.each do |k,v|
|
90
82
|
ENV[k.to_s] = v.to_s
|
91
83
|
end
|
92
84
|
end
|
93
85
|
|
94
86
|
def config_file
|
95
|
-
@config_file ||=
|
87
|
+
@config_file ||= begin
|
88
|
+
found = ["#{@dir}/deploy.rb", "#{@dir}/dply.rb"].find { |f| File.readable? f }
|
89
|
+
found || "#{@dir}/deploy.rb"
|
90
|
+
end
|
96
91
|
end
|
97
92
|
|
98
|
-
def
|
99
|
-
|
100
|
-
|
93
|
+
def revision(&block)
|
94
|
+
set :revision_proc , block
|
95
|
+
end
|
96
|
+
|
97
|
+
def build_url(&block)
|
98
|
+
set :build_url_proc, block
|
101
99
|
end
|
102
100
|
|
103
101
|
def read_from_file
|
104
102
|
if not File.readable? config_file
|
105
|
-
|
103
|
+
error "deploy.rb not found in #{@dir}"
|
106
104
|
return
|
107
105
|
end
|
108
106
|
instance_eval(File.read(config_file))
|
109
107
|
rescue NoMethodError => e
|
110
|
-
|
108
|
+
error "invalid option used in config: #{e.name}"
|
111
109
|
end
|
112
|
-
|
110
|
+
|
113
111
|
end
|
114
112
|
end
|
@@ -3,17 +3,15 @@ module Dply
|
|
3
3
|
class ConfigDownloader
|
4
4
|
|
5
5
|
include Helper
|
6
|
-
|
6
|
+
attr_writer :config_skip_download
|
7
7
|
|
8
|
-
def initialize(config_files , base_url
|
8
|
+
def initialize(config_files , base_url)
|
9
9
|
@config_files = config_files
|
10
10
|
@base_url = base_url
|
11
|
-
@secret = secret
|
12
|
-
@config_skip_download = config_skip_download
|
13
11
|
end
|
14
12
|
|
15
13
|
def download_all
|
16
|
-
config_files.each do |f|
|
14
|
+
@config_files.each do |f|
|
17
15
|
if config_skip_download.include? f
|
18
16
|
logger.debug "skipping to download file #{f}"
|
19
17
|
next
|
@@ -22,14 +20,21 @@ module Dply
|
|
22
20
|
end
|
23
21
|
end
|
24
22
|
|
23
|
+
private
|
24
|
+
|
25
25
|
def download(file)
|
26
|
-
url = "#{base_url}/#{file}"
|
26
|
+
url = "#{@base_url}/#{file}"
|
27
27
|
logger.bullet "downloading #{file}"
|
28
28
|
http_status = `curl -w "%{http_code}" -f -s -o 'config/#{file}' '#{url}' `
|
29
29
|
if http_status != "200"
|
30
|
-
|
30
|
+
error "failed to download #{file}, http status #{http_status}"
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
+
|
35
|
+
def config_skip_download
|
36
|
+
@config_skip_download ||= []
|
37
|
+
end
|
38
|
+
|
34
39
|
end
|
35
40
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'dply/jenkins'
|
2
|
+
module Dply
|
3
|
+
class ConfigStruct
|
4
|
+
|
5
|
+
attr_writer :revision, :build_url, :build_url_proc,
|
6
|
+
:revision_proc
|
7
|
+
attr_accessor :dir, :name, :repo, :branch,
|
8
|
+
:strategy, :target, :verify_checksum,
|
9
|
+
:config_map, :dir_map, :shared_dirs,
|
10
|
+
:config_download_url, :config_skip_download
|
11
|
+
|
12
|
+
def initialize(dir = nil)
|
13
|
+
@dir = dir || Dir.pwd
|
14
|
+
@target = :default
|
15
|
+
@branch = :master
|
16
|
+
@verify_checksum = true
|
17
|
+
end
|
18
|
+
|
19
|
+
def revision
|
20
|
+
@revision ||= instance_eval(&revision_proc)
|
21
|
+
end
|
22
|
+
|
23
|
+
def build_url
|
24
|
+
@build_url ||= instance_eval(&build_url_proc)
|
25
|
+
end
|
26
|
+
|
27
|
+
def revision_proc
|
28
|
+
@revision_proc ||= Proc.new do
|
29
|
+
jenkins = Jenkins.new(repo, name)
|
30
|
+
jenkins.latest_successful_revision
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
def build_url_proc
|
35
|
+
@build_url_proc ||= Proc.new do
|
36
|
+
"#{repo.chomp("/")}/job/#{name}/#{revision}/artifact/build/#{name}-#{revision}-#{branch}.tar.gz"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
data/lib/dply/custom_logger.rb
CHANGED
@@ -3,6 +3,8 @@ require 'dply/ext/string'
|
|
3
3
|
module Dply
|
4
4
|
class CustomLogger < ::Logger
|
5
5
|
|
6
|
+
attr_writer :trace_mode, :remote_mode
|
7
|
+
|
6
8
|
def initialize(file)
|
7
9
|
super(file)
|
8
10
|
@level = ::Logger::INFO
|
@@ -17,7 +19,7 @@ module Dply
|
|
17
19
|
when "WARN"
|
18
20
|
"#{severity.downcase.bold.yellow} #{msg}\n"
|
19
21
|
else
|
20
|
-
"#{severity.
|
22
|
+
"#{severity[0].bold.blue} #{msg}\n"
|
21
23
|
end
|
22
24
|
end
|
23
25
|
|
@@ -25,5 +27,15 @@ module Dply
|
|
25
27
|
puts "#{"\u2219".bold.blue} #{msg}"
|
26
28
|
end
|
27
29
|
|
30
|
+
def trace(msg)
|
31
|
+
return if not @trace_mode
|
32
|
+
puts %(#{"T".bold.blue} #{msg}\n)
|
33
|
+
end
|
34
|
+
|
35
|
+
def remote(msg)
|
36
|
+
return if not @remote_mode
|
37
|
+
puts %{dply_msg|#{msg}}
|
38
|
+
end
|
39
|
+
|
28
40
|
end
|
29
41
|
end
|