dply 0.2.19 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rspec +4 -0
- data/Rakefile +0 -14
- data/TODO +0 -1
- data/code_dump/old_remote_task.rb +2 -0
- data/{dev_bin → dev_exe}/dplyr +0 -0
- data/{dev_bin → dev_exe}/drake +1 -1
- data/dply.gemspec +2 -2
- data/{bin → exe}/dplyr +0 -0
- data/{bin → exe}/drake +12 -14
- data/lib/dply/TEST_TODO +50 -0
- data/lib/dply/app_config.rb +108 -0
- data/lib/dply/base_config.rb +110 -0
- data/lib/dply/build.rb +17 -11
- data/lib/dply/build_config.rb +28 -96
- data/lib/dply/bundle.rb +7 -30
- data/lib/dply/cli/build.rb +5 -12
- data/lib/dply/cli/ctl.rb +7 -8
- data/lib/dply/cli/deploy.rb +6 -10
- data/lib/dply/cli/devbuild.rb +6 -10
- data/lib/dply/cli/install_pkgs.rb +2 -3
- data/lib/dply/cli/run.rb +27 -0
- data/lib/dply/cli/status.rb +1 -2
- data/lib/dply/cli/task.rb +6 -12
- data/lib/dply/code_archive.rb +123 -0
- data/lib/dply/command.rb +57 -0
- data/lib/dply/config_downloader.rb +3 -2
- data/lib/dply/curl.rb +1 -5
- data/lib/dply/custom_logger.rb +18 -1
- data/lib/dply/deplist.rb +16 -48
- data/lib/dply/deploy_config.rb +34 -0
- data/lib/dply/elf.rb +60 -0
- data/lib/dply/env.rb +9 -0
- data/lib/dply/git.rb +15 -8
- data/lib/dply/helper.rb +21 -33
- data/lib/dply/linker.rb +27 -27
- data/lib/dply/lock.rb +2 -9
- data/lib/dply/logger.rb +1 -1
- data/lib/dply/pkgs.rb +9 -11
- data/lib/dply/release.rb +2 -2
- data/lib/dply/{archive.rb → remote_archive.rb} +1 -1
- data/lib/dply/repo.rb +3 -3
- data/lib/dply/rpm.rb +12 -20
- data/lib/dply/scripts/depcheck.rb +4 -0
- data/lib/dply/shared_dirs.rb +1 -1
- data/lib/dply/strategy/archive.rb +15 -22
- data/lib/dply/strategy/base.rb +82 -0
- data/lib/dply/strategy/git.rb +18 -19
- data/lib/dply/task_dsl.rb +101 -0
- data/lib/dply/util.rb +75 -0
- data/lib/dply/venv.rb +53 -0
- data/lib/dply/version.rb +1 -1
- data/lib/dply/yum.rb +21 -31
- data/lib/dplyr/consul.rb +1 -1
- data/spec/dply/base_config_spec.rb +178 -0
- data/spec/dply/bundle_spec.rb +100 -0
- data/spec/dply/command_spec.rb +190 -0
- data/spec/dply/curl_spec.rb +41 -0
- data/spec/dply/deplist_spec.rb +48 -0
- data/spec/dply/elf_spec.rb +64 -0
- data/spec/dply/env_spec.rb +57 -0
- data/spec/dply/git_spec.rb +136 -0
- data/spec/dply/helper_spec.rb +168 -0
- data/spec/dply/linker_spec.rb +81 -0
- data/spec/dply/lock_spec.rb +24 -0
- data/spec/dply/pkgs_spec.rb +105 -0
- data/spec/dply/repo_spec.rb +58 -0
- data/spec/dply/rpm_spec.rb +32 -0
- data/spec/dply/yum_spec.rb +29 -0
- data/spec/integration/archive_flow_spec.rb +87 -0
- data/spec/integration/git_flow_spec.rb +63 -0
- data/spec/repo.rb +27 -0
- data/spec/spec_helper.rb +44 -0
- data/spec/test_data/build.tar.gz +0 -0
- data/spec/test_data/build.tar.gz.md5 +1 -0
- data/spec/test_data/bundle/gems_installed/Gemfile +1 -0
- data/spec/test_data/bundle/gems_not_installed/Gemfile +2 -0
- data/spec/test_data/bundle/no_gemfile/.gitkeep +0 -0
- data/spec/test_data/command/test.rb +7 -0
- data/spec/test_data/elf/elf +0 -0
- data/spec/test_data/elf/libpgtypes.so.3 +0 -0
- data/spec/test_data/elf/not_elf +1 -0
- data/spec/test_data/sample_repo/.dply.lock +0 -0
- data/spec/test_data/sample_repo/Gemfile +2 -0
- data/spec/test_data/sample_repo/Rakefile +3 -0
- data/spec/test_data/sample_repo/app.rb +1 -0
- data/spec/test_data/sample_repo/dply/app.rb +33 -0
- data/spec/test_data/sample_repo/lib/libacl.so.1 +0 -0
- data/spec/test_data/sample_repo/pkgs.yml +2 -0
- data/spec/webserver.rb +21 -0
- metadata +96 -28
- data/lib/dply/cli/app_task.rb +0 -38
- data/lib/dply/config.rb +0 -120
- data/lib/dply/config_struct.rb +0 -52
- data/lib/dply/rakelib/drake.rake +0 -33
- data/lib/dply/tasks.rb +0 -136
data/lib/dply/build_config.rb
CHANGED
@@ -1,101 +1,33 @@
|
|
1
|
-
require '
|
2
|
-
require 'dply/helper'
|
1
|
+
require 'dply/base_config'
|
3
2
|
|
4
3
|
module Dply
|
5
|
-
class BuildConfig
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
4
|
+
class BuildConfig < BaseConfig
|
5
|
+
define_opts do
|
6
|
+
opt :dir
|
7
|
+
opt :task
|
8
|
+
opt :branch
|
9
|
+
opt :repo
|
10
|
+
opt :mirror
|
11
|
+
opt :git
|
12
|
+
opt :no_pull
|
13
|
+
opt :revision
|
14
|
+
opt :config_map, type: Hash
|
15
|
+
opt :dir_map, type: Hash
|
16
|
+
opt :shared_dirs, type: Array
|
17
|
+
opt :config_download_url
|
18
|
+
opt :config_skip_download, type: Array
|
19
|
+
end
|
20
|
+
|
21
|
+
def default_config
|
22
|
+
dir Dir.pwd
|
23
|
+
git true
|
24
|
+
task :build
|
25
|
+
branch "master"
|
26
|
+
shared_dirs []
|
27
|
+
dir_map({
|
28
|
+
"tmp" => "tmp",
|
29
|
+
"log" => "log"
|
30
|
+
})
|
12
31
|
end
|
13
|
-
|
14
|
-
def config
|
15
|
-
return @config if @config
|
16
|
-
@config = {
|
17
|
-
dir: @dir,
|
18
|
-
task: "app:build",
|
19
|
-
branch: :master,
|
20
|
-
repo: nil,
|
21
|
-
git: true,
|
22
|
-
env: {},
|
23
|
-
config_map: nil,
|
24
|
-
dir_map: nil,
|
25
|
-
shared_dirs: [],
|
26
|
-
config_skip_download: [],
|
27
|
-
config_download_url: nil
|
28
|
-
}
|
29
|
-
read_from_file if @read_config
|
30
|
-
return @config
|
31
|
-
end
|
32
|
-
|
33
|
-
def branch(branch)
|
34
|
-
set :branch, branch
|
35
|
-
end
|
36
|
-
|
37
|
-
def task(task)
|
38
|
-
set :task, task
|
39
|
-
end
|
40
|
-
|
41
|
-
def repo(repo)
|
42
|
-
set :repo, repo
|
43
|
-
end
|
44
|
-
|
45
|
-
def config_map(map)
|
46
|
-
set :config_map, map
|
47
|
-
end
|
48
|
-
|
49
|
-
def config_skip_download(list)
|
50
|
-
set :config_skip_download, list
|
51
|
-
end
|
52
|
-
|
53
|
-
def config_download_url(url)
|
54
|
-
set :config_download_url, url
|
55
|
-
end
|
56
|
-
|
57
|
-
def dir_map(map)
|
58
|
-
set :dir_map, map
|
59
|
-
end
|
60
|
-
|
61
|
-
def set_env(key, value)
|
62
|
-
@config[:env].store key, value
|
63
|
-
end
|
64
|
-
|
65
|
-
def set(key, value)
|
66
|
-
@config.store key, value
|
67
|
-
end
|
68
|
-
|
69
|
-
def to_struct
|
70
|
-
OpenStruct.new(config)
|
71
|
-
end
|
72
|
-
|
73
|
-
def env(h)
|
74
|
-
raise if not h.is_a? Hash
|
75
|
-
@config[:env] = h
|
76
|
-
@config[:env].each do |k,v|
|
77
|
-
ENV[k.to_s] = v.to_s
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def config_file
|
82
|
-
@config_file ||= "#{@dir}/build.rb"
|
83
|
-
end
|
84
|
-
|
85
|
-
def shared_dirs(dirs)
|
86
|
-
raise if not dirs.is_a? Array
|
87
|
-
@config[:shared_dirs] = dirs
|
88
|
-
end
|
89
|
-
|
90
|
-
def read_from_file
|
91
|
-
if not File.readable? config_file
|
92
|
-
error "build.rb not found in #{@dir}"
|
93
|
-
return
|
94
|
-
end
|
95
|
-
instance_eval(File.read(config_file), config_file)
|
96
|
-
rescue NoMethodError => e
|
97
|
-
error "invalid option used in config: #{e.name}"
|
98
|
-
end
|
99
|
-
|
100
32
|
end
|
101
33
|
end
|
data/lib/dply/bundle.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'dply/helper'
|
2
2
|
require 'fileutils'
|
3
3
|
require 'yaml'
|
4
|
-
require 'shellwords'
|
5
4
|
|
6
5
|
module Dply
|
7
6
|
class Bundle
|
@@ -9,26 +8,22 @@ module Dply
|
|
9
8
|
include Helper
|
10
9
|
|
11
10
|
def install
|
12
|
-
|
11
|
+
return if not gemfile_exists?
|
12
|
+
write_config
|
13
13
|
return if check
|
14
14
|
cmd "bundle install -j5 --deployment"
|
15
15
|
end
|
16
16
|
|
17
|
-
def rake(task)
|
18
|
-
rakelib = Shellwords.shellescape "#{__dir__}/rakelib"
|
19
|
-
rake_cmd = %(rake -R #{rakelib} -Nf dply/Rakefile #{task})
|
20
|
-
command = gemfile_exists? ? "bundle exec #{rake_cmd}" : rake_cmd
|
21
|
-
cmd command, env: env, display: false
|
22
|
-
end
|
23
|
-
|
24
17
|
def clean
|
18
|
+
return if not gemfile_exists?
|
19
|
+
write_config
|
25
20
|
cmd "bundle clean"
|
26
21
|
end
|
27
22
|
|
28
23
|
private
|
29
24
|
|
30
|
-
def
|
31
|
-
@
|
25
|
+
def write_config
|
26
|
+
@write_config ||= begin
|
32
27
|
h = {
|
33
28
|
"BUNDLE_PATH" => "vendor/bundle",
|
34
29
|
"BUNDLE_FROZEN" => "1",
|
@@ -43,26 +38,8 @@ module Dply
|
|
43
38
|
system "bundle check > /dev/null"
|
44
39
|
end
|
45
40
|
|
46
|
-
def env
|
47
|
-
@env ||= begin
|
48
|
-
env = {}
|
49
|
-
env.merge! env_from_yml(".env.yml")
|
50
|
-
env.merge! env_from_yml("config/env.yml")
|
51
|
-
env
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
def env_from_yml(path)
|
56
|
-
if not File.readable? path
|
57
|
-
logger.debug "skipped loading env from #{path}"
|
58
|
-
return {}
|
59
|
-
end
|
60
|
-
require 'yaml'
|
61
|
-
YAML.load_file(path)
|
62
|
-
end
|
63
|
-
|
64
41
|
def gemfile_exists?
|
65
|
-
File.
|
42
|
+
File.exist? "Gemfile"
|
66
43
|
end
|
67
44
|
|
68
45
|
end
|
data/lib/dply/cli/build.rb
CHANGED
@@ -24,41 +24,34 @@ module Dply
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def config
|
27
|
-
@config ||=
|
28
|
-
end
|
29
|
-
|
30
|
-
def dir
|
31
|
-
@dir ||= Dir.pwd
|
27
|
+
@config ||= BuildConfig.build("#{Dir.pwd}/build.rb")
|
32
28
|
end
|
33
29
|
|
34
30
|
def lock
|
35
|
-
@lock ||=
|
31
|
+
@lock ||= Lock.new(Dir.pwd)
|
36
32
|
end
|
37
33
|
|
38
34
|
def opts
|
39
35
|
OptionParser.new do |opts|
|
40
36
|
|
41
37
|
opts.banner = "Usage: drake build [options] [target]"
|
42
|
-
|
38
|
+
|
43
39
|
opts.on("-b", "--branch [BRANCH]" , "Specify git branch") do |b|
|
44
40
|
config.branch = b
|
45
41
|
end
|
46
42
|
|
47
43
|
opts.on("-r", "--revision [REVISION]", "Specify revision") do |r|
|
48
44
|
config.revision = r
|
45
|
+
ENV["BUILD_NUMBER"] = r.to_s
|
49
46
|
end
|
50
47
|
|
51
48
|
opts.on("--no-pull", "Enable/disable git pull") do |e|
|
52
49
|
config.no_pull = true
|
53
50
|
end
|
54
51
|
|
55
|
-
opts.on("--use-yum", "use yum to install packages") do |e|
|
56
|
-
config.use_yum = true
|
57
|
-
end
|
58
|
-
|
59
52
|
opts.on("--skip-git", "Disable git") do |e|
|
60
53
|
config.git = false
|
61
|
-
end
|
54
|
+
end
|
62
55
|
|
63
56
|
opts.on("-h", "--help", "Help") do
|
64
57
|
puts opts
|
data/lib/dply/cli/ctl.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'dply/lock'
|
2
2
|
require 'dply/strategy'
|
3
|
-
require 'dply/
|
4
|
-
require 'dply/
|
3
|
+
require 'dply/deploy_config'
|
4
|
+
require 'dply/util'
|
5
5
|
|
6
6
|
module Dply
|
7
7
|
module Cli
|
@@ -10,9 +10,8 @@ module Dply
|
|
10
10
|
def run(command)
|
11
11
|
case command
|
12
12
|
when :start, :stop, :reopen_logs
|
13
|
-
config
|
14
13
|
lock.acquire
|
15
|
-
Dir.chdir("current") {
|
14
|
+
Dir.chdir("current") { util.run command }
|
16
15
|
when :reload
|
17
16
|
lock.acquire
|
18
17
|
strategy.reload
|
@@ -24,15 +23,15 @@ module Dply
|
|
24
23
|
end
|
25
24
|
|
26
25
|
def config
|
27
|
-
@config ||=
|
26
|
+
@config ||= DeployConfig.build("#{Dir.pwd}/deploy.rb")
|
28
27
|
end
|
29
28
|
|
30
29
|
def lock
|
31
|
-
@lock ||= Lock.new
|
30
|
+
@lock ||= Lock.new(Dir.pwd)
|
32
31
|
end
|
33
32
|
|
34
|
-
def
|
35
|
-
@
|
33
|
+
def util
|
34
|
+
@util ||= ::Dply::Util.new
|
36
35
|
end
|
37
36
|
|
38
37
|
end
|
data/lib/dply/cli/deploy.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'dply/strategy'
|
2
2
|
require 'dply/logger'
|
3
3
|
require 'dply/lock'
|
4
|
-
require 'dply/
|
4
|
+
require 'dply/deploy_config'
|
5
5
|
|
6
6
|
module Dply
|
7
7
|
module Cli
|
@@ -26,18 +26,18 @@ module Dply
|
|
26
26
|
end
|
27
27
|
|
28
28
|
def lock
|
29
|
-
@lock ||= Lock.new
|
29
|
+
@lock ||= Lock.new(Dir.pwd)
|
30
30
|
end
|
31
31
|
|
32
32
|
def config
|
33
|
-
@config ||=
|
33
|
+
@config ||= DeployConfig.build("#{Dir.pwd}/deploy.rb")
|
34
34
|
end
|
35
35
|
|
36
36
|
def opts
|
37
37
|
OptionParser.new do |opts|
|
38
38
|
|
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
43
|
end
|
@@ -52,14 +52,10 @@ module Dply
|
|
52
52
|
|
53
53
|
opts.on("--skip-git", "Disable git") do |e|
|
54
54
|
options[:skip_git] = true
|
55
|
-
end
|
56
|
-
|
57
|
-
opts.on("--skip-bundler", "Skip bundle install") do |e|
|
58
|
-
options[:skip_bundler] = true
|
59
55
|
end
|
60
56
|
|
61
|
-
opts.on("--
|
62
|
-
options[:
|
57
|
+
opts.on("--skip-bundler", "Skip bundle install") do |e|
|
58
|
+
options[:skip_bundler] = true
|
63
59
|
end
|
64
60
|
|
65
61
|
opts.on("-h", "--help", "Help") do
|
data/lib/dply/cli/devbuild.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'dply/logger'
|
2
2
|
require 'dply/lock'
|
3
|
-
require 'dply/
|
3
|
+
require 'dply/util'
|
4
4
|
require 'fileutils'
|
5
5
|
|
6
6
|
module Dply
|
@@ -24,18 +24,18 @@ module Dply
|
|
24
24
|
FileUtils.mkdir_p build_artifacts
|
25
25
|
|
26
26
|
clear_bundle_config
|
27
|
-
|
28
|
-
|
27
|
+
util.install_pkgs(build_mode: true)
|
28
|
+
util.run :build
|
29
29
|
ensure
|
30
30
|
clear_bundle_config
|
31
31
|
end
|
32
32
|
|
33
|
-
def
|
34
|
-
@
|
33
|
+
def util
|
34
|
+
@util ||= ::Dply::Util.new
|
35
35
|
end
|
36
36
|
|
37
37
|
def lock
|
38
|
-
@lock ||=
|
38
|
+
@lock ||= Lock.new(Dir.pwd)
|
39
39
|
end
|
40
40
|
|
41
41
|
def clear_bundle_config
|
@@ -51,10 +51,6 @@ module Dply
|
|
51
51
|
@options[:revision] = r
|
52
52
|
end
|
53
53
|
|
54
|
-
opts.on("--use-yum", "use yum to install packages") do |e|
|
55
|
-
@options[:use_yum] = true
|
56
|
-
end
|
57
|
-
|
58
54
|
opts.on("-h", "--help", "Help") do
|
59
55
|
puts opts
|
60
56
|
exit
|
@@ -15,7 +15,7 @@ module Dply
|
|
15
15
|
def run
|
16
16
|
opts.parse!(@argv)
|
17
17
|
error "pkgs.yml cannot be a symlink" if File.symlink? "pkgs.yml"
|
18
|
-
pkgs = Pkgs.new
|
18
|
+
pkgs = Pkgs.new("pkgs.yml")
|
19
19
|
pkgs.install(build_mode: @options[:build_mode])
|
20
20
|
puts "installed"
|
21
21
|
end
|
@@ -24,7 +24,7 @@ module Dply
|
|
24
24
|
OptionParser.new do |opts|
|
25
25
|
|
26
26
|
opts.banner = "Usage: drake install-pkgs [options] [target]"
|
27
|
-
|
27
|
+
|
28
28
|
opts.on("-b" , "Build mode") do |b|
|
29
29
|
@options[:build_mode] = true
|
30
30
|
end
|
@@ -36,7 +36,6 @@ module Dply
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
|
40
39
|
end
|
41
40
|
end
|
42
41
|
end
|
data/lib/dply/cli/run.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
require 'dply/logger'
|
2
|
+
require 'dply/lock'
|
3
|
+
require 'dply/app_config'
|
4
|
+
|
5
|
+
module Dply
|
6
|
+
module Cli
|
7
|
+
class Run
|
8
|
+
|
9
|
+
include Logger
|
10
|
+
|
11
|
+
def initialize(argv)
|
12
|
+
@argv = argv
|
13
|
+
end
|
14
|
+
|
15
|
+
def run
|
16
|
+
lock.acquire
|
17
|
+
app_config = AppConfig.new
|
18
|
+
app_config.run_task @argv.shift
|
19
|
+
end
|
20
|
+
|
21
|
+
def lock
|
22
|
+
@lock ||= Lock.new(Dir.pwd)
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
data/lib/dply/cli/status.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
require 'dply/logger'
|
2
2
|
require 'dply/release_helper'
|
3
|
-
require 'dply/config'
|
4
3
|
|
5
4
|
module Dply
|
6
5
|
module Cli
|
@@ -19,7 +18,7 @@ module Dply
|
|
19
18
|
def print_status
|
20
19
|
r = current_release
|
21
20
|
color = r[:deployed] ? :green : :red
|
22
|
-
logger.info "#{r[:revision].send color} #{r[:project]} #{r[:branch]} #{r[:timestamp]}"
|
21
|
+
logger.info "#{r[:revision].send color} #{r[:project]} #{r[:branch]} #{r[:timestamp]}"
|
23
22
|
end
|
24
23
|
|
25
24
|
def current_release
|
data/lib/dply/cli/task.rb
CHANGED
@@ -1,7 +1,6 @@
|
|
1
1
|
require 'dply/logger'
|
2
2
|
require 'dply/lock'
|
3
|
-
require 'dply/
|
4
|
-
require 'dply/config'
|
3
|
+
require 'dply/app_config'
|
5
4
|
|
6
5
|
module Dply
|
7
6
|
module Cli
|
@@ -17,19 +16,14 @@ module Dply
|
|
17
16
|
task_name = @argv.shift
|
18
17
|
error "task name not specified" if not task_name
|
19
18
|
lock.acquire
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
@strategy ||= Strategy.load(config, {})
|
25
|
-
end
|
26
|
-
|
27
|
-
def config
|
28
|
-
@config ||= Config.new.to_struct
|
19
|
+
Dir.chdir "current" do
|
20
|
+
app_config = AppConfig.new
|
21
|
+
app_config.run_task task_name
|
22
|
+
end
|
29
23
|
end
|
30
24
|
|
31
25
|
def lock
|
32
|
-
@lock ||= Lock.new
|
26
|
+
@lock ||= Lock.new(Dir.pwd)
|
33
27
|
end
|
34
28
|
|
35
29
|
end
|