kikubari 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.travis.yml +5 -0
- data/Gemfile +1 -12
- data/Gemfile.lock +36 -17
- data/README.md +69 -0
- data/Rakefile +6 -34
- data/VERSION +1 -1
- data/bin/kikubari +1 -10
- data/kikubari.gemspec +25 -43
- data/lib/configuration/deploy_configuration.rb +19 -4
- data/lib/deploy_dir.rb +8 -8
- data/lib/deploy_logger.rb +28 -24
- data/lib/deployer/deployer.rb +41 -44
- data/lib/deployer/deployer_git.rb +1 -2
- data/lib/kikubari.rb +17 -8
- data/{test → spec}/deploy_files/databases.yml +0 -0
- data/{test → spec}/deploy_files/deploy.yml +0 -0
- data/{test → spec}/deploy_files/deploy_git.yml +5 -5
- data/{test → spec}/deploy_files/deploy_git_test_file.yml +5 -5
- data/{test → spec}/deploy_files/deploy_symlink.yml +6 -5
- data/{test → spec}/deploy_files/empty.yml +0 -0
- data/{test → spec}/deploy_files/one_file_test.yml +0 -0
- data/{test → spec}/deploy_files/one_folder.yml +0 -0
- data/spec/lib/deploy_spec.rb +146 -0
- data/spec/lib/deployers/git.rb +32 -0
- data/spec/spec_helper.rb +23 -0
- metadata +88 -126
- data/README.rdoc +0 -25
- data/lib/deployer/deployer_git_symfony.rb +0 -15
- data/test/helper.rb +0 -18
- data/test/lib/deploy_spec.rb +0 -94
- data/test/lib/deployers/git.rb +0 -29
- data/test/lib/deployers/mysql_backup.rb +0 -7
- data/test/lib/deployers/symfony_git.rb +0 -29
- data/test/spec_helper.rb +0 -20
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Kikubari::Deploy::GitDeployer do
|
4
|
+
let(:git_config) do
|
5
|
+
Kikubari::Deploy::Configuration.new(
|
6
|
+
"#{RSpec.configuration.deploy_files}/deploy_git.yml",
|
7
|
+
deploy_folder: RSpec.configuration.target_folder,
|
8
|
+
debug: false,
|
9
|
+
dry_run: false,
|
10
|
+
environment: 'production',
|
11
|
+
rollback: false)
|
12
|
+
end
|
13
|
+
|
14
|
+
let(:deployer) { Kikubari::Deploy::GitDeployer.new(git_config) }
|
15
|
+
|
16
|
+
before :all do
|
17
|
+
clear_target_project
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
it "clones the repository in the version folder" do
|
22
|
+
deployer.create_deploy_structure
|
23
|
+
deployer.deploy
|
24
|
+
expect(Dir.glob("#{deployer.config.env_time_folder}/*").count).to be > 0
|
25
|
+
end
|
26
|
+
|
27
|
+
it "removes the .git folder after cloning" do
|
28
|
+
deployer.create_deploy_structure
|
29
|
+
deployer.deploy
|
30
|
+
expect(Dir.exist?("#{deployer.config.env_time_folder}/.git")).to be_falsy
|
31
|
+
end
|
32
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'pry'
|
2
|
+
require 'kikubari'
|
3
|
+
|
4
|
+
root_folder = Pathname.new(File.expand_path(__dir__))
|
5
|
+
|
6
|
+
module ProjectHelper
|
7
|
+
def clear_target_project
|
8
|
+
FileUtils.mkdir_p(RSpec.configuration.target_folder) unless Dir.exist?(RSpec.configuration.target_folder)
|
9
|
+
FileUtils.rm_rf(Dir.glob("#{RSpec.configuration.target_folder}/*"))
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
RSpec.configure do |c|
|
14
|
+
c.add_setting :src_folder
|
15
|
+
c.add_setting :target_folder
|
16
|
+
c.add_setting :deploy_files
|
17
|
+
|
18
|
+
c.src_folder = root_folder.join('project')
|
19
|
+
c.target_folder = root_folder.join('project_dfolder')
|
20
|
+
c.deploy_files = root_folder.join('deploy_files')
|
21
|
+
c.include ProjectHelper
|
22
|
+
|
23
|
+
end
|
metadata
CHANGED
@@ -1,111 +1,87 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: kikubari
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 3
|
10
|
-
version: 0.0.3
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.4
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Jose Antonio Pio Gil
|
14
8
|
autorequire:
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
- - ~>
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
hash: 25
|
29
|
-
segments:
|
30
|
-
- 1
|
31
|
-
- 3
|
32
|
-
- 1
|
33
|
-
version: 1.3.1
|
34
|
-
version_requirements: *id001
|
35
|
-
name: rspec
|
36
|
-
- !ruby/object:Gem::Dependency
|
37
|
-
prerelease: false
|
11
|
+
date: 2016-04-15 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: pry
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.10'
|
38
20
|
type: :development
|
39
|
-
requirement: &id002 !ruby/object:Gem::Requirement
|
40
|
-
none: false
|
41
|
-
requirements:
|
42
|
-
- - ">="
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
hash: 3
|
45
|
-
segments:
|
46
|
-
- 0
|
47
|
-
version: "0"
|
48
|
-
version_requirements: *id002
|
49
|
-
name: bundler
|
50
|
-
- !ruby/object:Gem::Dependency
|
51
21
|
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.10'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.4'
|
52
34
|
type: :development
|
53
|
-
requirement: &id003 !ruby/object:Gem::Requirement
|
54
|
-
none: false
|
55
|
-
requirements:
|
56
|
-
- - ~>
|
57
|
-
- !ruby/object:Gem::Version
|
58
|
-
hash: 49
|
59
|
-
segments:
|
60
|
-
- 1
|
61
|
-
- 8
|
62
|
-
- 3
|
63
|
-
version: 1.8.3
|
64
|
-
version_requirements: *id003
|
65
|
-
name: jeweler
|
66
|
-
- !ruby/object:Gem::Dependency
|
67
35
|
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.4'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '11.1'
|
68
48
|
type: :development
|
69
|
-
requirement: &id004 !ruby/object:Gem::Requirement
|
70
|
-
none: false
|
71
|
-
requirements:
|
72
|
-
- - ">="
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
hash: 3
|
75
|
-
segments:
|
76
|
-
- 0
|
77
|
-
version: "0"
|
78
|
-
version_requirements: *id004
|
79
|
-
name: rcov
|
80
|
-
- !ruby/object:Gem::Dependency
|
81
49
|
prerelease: false
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
hash: 3
|
89
|
-
segments:
|
90
|
-
- 0
|
91
|
-
version: "0"
|
92
|
-
version_requirements: *id005
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '11.1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
93
56
|
name: git
|
94
|
-
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.3'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.3'
|
69
|
+
description: " Naive multiframework deployer for handle server deployments with some
|
70
|
+
care about the code replacement. Also an experimental project."
|
95
71
|
email: josetonyp@latizana.com
|
96
|
-
executables:
|
72
|
+
executables:
|
97
73
|
- kikubari
|
98
74
|
extensions: []
|
99
|
-
|
100
|
-
extra_rdoc_files:
|
75
|
+
extra_rdoc_files:
|
101
76
|
- LICENSE.txt
|
102
|
-
- README.
|
103
|
-
files:
|
104
|
-
- .document
|
77
|
+
- README.md
|
78
|
+
files:
|
79
|
+
- ".document"
|
80
|
+
- ".travis.yml"
|
105
81
|
- Gemfile
|
106
82
|
- Gemfile.lock
|
107
83
|
- LICENSE.txt
|
108
|
-
- README.
|
84
|
+
- README.md
|
109
85
|
- Rakefile
|
110
86
|
- VERSION
|
111
87
|
- bin/kikubari
|
@@ -115,55 +91,41 @@ files:
|
|
115
91
|
- lib/deploy_logger.rb
|
116
92
|
- lib/deployer/deployer.rb
|
117
93
|
- lib/deployer/deployer_git.rb
|
118
|
-
- lib/deployer/deployer_git_symfony.rb
|
119
94
|
- lib/deployer/deployer_git_wordpress.rb
|
120
95
|
- lib/kikubari.rb
|
121
|
-
-
|
122
|
-
-
|
123
|
-
-
|
124
|
-
-
|
125
|
-
-
|
126
|
-
-
|
127
|
-
-
|
128
|
-
-
|
129
|
-
-
|
130
|
-
-
|
131
|
-
-
|
132
|
-
- test/lib/deployers/mysql_backup.rb
|
133
|
-
- test/lib/deployers/symfony_git.rb
|
134
|
-
- test/spec_helper.rb
|
96
|
+
- spec/deploy_files/databases.yml
|
97
|
+
- spec/deploy_files/deploy.yml
|
98
|
+
- spec/deploy_files/deploy_git.yml
|
99
|
+
- spec/deploy_files/deploy_git_test_file.yml
|
100
|
+
- spec/deploy_files/deploy_symlink.yml
|
101
|
+
- spec/deploy_files/empty.yml
|
102
|
+
- spec/deploy_files/one_file_test.yml
|
103
|
+
- spec/deploy_files/one_folder.yml
|
104
|
+
- spec/lib/deploy_spec.rb
|
105
|
+
- spec/lib/deployers/git.rb
|
106
|
+
- spec/spec_helper.rb
|
135
107
|
homepage: https://github.com/josetonyp/kikubari
|
136
|
-
licenses:
|
108
|
+
licenses:
|
137
109
|
- MIT
|
110
|
+
metadata: {}
|
138
111
|
post_install_message:
|
139
112
|
rdoc_options: []
|
140
|
-
|
141
|
-
require_paths:
|
113
|
+
require_paths:
|
142
114
|
- lib
|
143
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
144
|
-
|
145
|
-
requirements:
|
115
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
116
|
+
requirements:
|
146
117
|
- - ">="
|
147
|
-
- !ruby/object:Gem::Version
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
version: "0"
|
152
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
153
|
-
none: false
|
154
|
-
requirements:
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: 2.0.0
|
120
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
155
122
|
- - ">="
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
|
158
|
-
segments:
|
159
|
-
- 0
|
160
|
-
version: "0"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
161
125
|
requirements: []
|
162
|
-
|
163
126
|
rubyforge_project:
|
164
|
-
rubygems_version:
|
127
|
+
rubygems_version: 2.5.1
|
165
128
|
signing_key:
|
166
|
-
specification_version:
|
129
|
+
specification_version: 4
|
167
130
|
summary: Naive multiframework deploy system
|
168
131
|
test_files: []
|
169
|
-
|
data/README.rdoc
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
= kikubari
|
2
|
-
|
3
|
-
Naive deploy system for deploy agnostic code. Kikubari only take care about repository, folder structure and file configurations. It also will run before an after task from commmand line and log it to the deployment log.
|
4
|
-
|
5
|
-
Usage:
|
6
|
-
|
7
|
-
* Create a deploy.yml file in your deploy folder
|
8
|
-
* Run deploy "path_folder" "environment"
|
9
|
-
* Have a beer and see it work
|
10
|
-
|
11
|
-
|
12
|
-
== Contributing to kikubari
|
13
|
-
|
14
|
-
* Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.
|
15
|
-
* Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.
|
16
|
-
* Fork the project.
|
17
|
-
* Start a feature/bugfix branch.
|
18
|
-
* Commit and push until you are happy with your contribution.
|
19
|
-
* Make sure to add tests for it. This is important so I don't break it in a future version unintentionally.
|
20
|
-
* Please try not to mess with the Rakefile, version, or history. If you want to have your own version, or is otherwise necessary, that is fine, but please isolate to its own commit so I can cherry-pick around it.
|
21
|
-
|
22
|
-
== Copyright
|
23
|
-
|
24
|
-
Copyright (c) 2012 Jose Antonio Pio Gil. See LICENSE.txt for further details.
|
25
|
-
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# Bridge Class to link a deployer with it's deploy strategies.
|
2
|
-
# Framewokr:: Symfony 1.2 - 1.4
|
3
|
-
# Repository:: Git
|
4
|
-
#
|
5
|
-
# Could be simply extend Dir class with extra functions but this class meant to be a Deploy System Directory class handler
|
6
|
-
# Author:: Jose A Pio (mailto:josetonyp@gmail.com)
|
7
|
-
# Copyright:: Copyright (c) 2011
|
8
|
-
# License:: Distributes under the same terms as Ruby
|
9
|
-
module Kikubari
|
10
|
-
class Deploy
|
11
|
-
class SymfonyGitDeployer < GitDeployer
|
12
|
-
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
data/test/helper.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler'
|
3
|
-
begin
|
4
|
-
Bundler.setup(:default, :development)
|
5
|
-
rescue Bundler::BundlerError => e
|
6
|
-
$stderr.puts e.message
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
-
exit e.status_code
|
9
|
-
end
|
10
|
-
require 'test/unit'
|
11
|
-
require 'shoulda'
|
12
|
-
|
13
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
15
|
-
require 'kikubari'
|
16
|
-
|
17
|
-
class Test::Unit::TestCase
|
18
|
-
end
|
data/test/lib/deploy_spec.rb
DELETED
@@ -1,94 +0,0 @@
|
|
1
|
-
require File.expand_path( File.join( File.dirname(__FILE__), '..', 'spec_helper.rb' ) ).to_s
|
2
|
-
|
3
|
-
describe Kikubari::Deploy::Deployer do
|
4
|
-
|
5
|
-
before :each do
|
6
|
-
@folder = "test/project_dfolder"
|
7
|
-
@df_folder = "test/deploy_files"
|
8
|
-
`rm -fR #{@folder}/*`
|
9
|
-
|
10
|
-
@config = Kikubari::Deploy::Configuration.new( "#{@df_folder}/deploy_symlink.yml", :deploy_folder => @folder, :debug => false, :dry_run => false , :environment => "production", :rollback => false )
|
11
|
-
@deployer = Kikubari::Deploy::Deployer.new(@config)
|
12
|
-
|
13
|
-
end
|
14
|
-
|
15
|
-
after :all do
|
16
|
-
`rm -fR #{@folder}/*`
|
17
|
-
end
|
18
|
-
|
19
|
-
it "should create an environment folder" do
|
20
|
-
@deployer.create_environment_folder.should satisfy{ |deployer| File.directory?(deployer.config.environment_folder) }
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should create a deploy version folder" do
|
24
|
-
@deployer.create_version_folder.should satisfy{ |deployer| File.directory?(deployer.config.env_time_folder) }
|
25
|
-
end
|
26
|
-
|
27
|
-
it "should create the symlink to current folder" do
|
28
|
-
@deployer.create_version_folder.create_current_symlink_folder.should satisfy{ |deployer| File.symlink?(deployer.config.current_deploy_folder) }
|
29
|
-
end
|
30
|
-
|
31
|
-
it "sould create a folder in the folder structure" do
|
32
|
-
@deployer.create_environment_folder.create_version_folder.create_current_symlink_folder
|
33
|
-
@deployer.create_structure.should satisfy{ |deployer| File.directory?( "#{deployer.config.deploy_folder}/cache/#{@config.environment}") }
|
34
|
-
end
|
35
|
-
|
36
|
-
it "should create a Symlinked Strcuture folder" do
|
37
|
-
@deployer.create_environment_folder.create_version_folder.create_current_symlink_folder
|
38
|
-
@deployer.create_structure.create_sylinked_folders.should satisfy{ |deployer| File.symlink?( "#{deployer.config.env_time_folder}/cache") }
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should not create the symlinked folder is folder already exist" do
|
42
|
-
@deployer.create_environment_folder.create_version_folder.create_current_symlink_folder
|
43
|
-
@deployer.create_structure
|
44
|
-
FileUtils.mkdir_p "#{@config.env_time_folder}/cache"
|
45
|
-
expect {
|
46
|
-
@deployer.create_sylinked_folders
|
47
|
-
}.should raise_error
|
48
|
-
end
|
49
|
-
|
50
|
-
it "should verify a file in the folder and raise an error" do
|
51
|
-
@deployer.create_environment_folder.create_version_folder.create_current_symlink_folder
|
52
|
-
expect{@deployer.test_files}.should raise_error
|
53
|
-
end
|
54
|
-
|
55
|
-
it "should verify a file in the folder" do
|
56
|
-
@deployer.create_environment_folder.create_version_folder.create_current_symlink_folder
|
57
|
-
expect{@deployer.test_files}.should raise_error
|
58
|
-
end
|
59
|
-
|
60
|
-
it "should create a symlink file from tested files" do
|
61
|
-
@deployer.create_deploy_structure
|
62
|
-
`mkdir -p #{@config.env_time_folder}/config` ## Faking the canfig folder that should come with the repository
|
63
|
-
`echo "hola" >> #{@folder}/config/#{@config.environment}/databases.yml`
|
64
|
-
@deployer.create_symlinked_files.should satisfy do |deployer|
|
65
|
-
File.symlink?( "#{@config.env_time_folder}/config/databases.yml")
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
it "should execute the after run tasks" do
|
70
|
-
@deployer.create_deploy_structure
|
71
|
-
`mkdir -p #{@config.env_time_folder}/config` ## Faking the canfig folder that should come with the repository
|
72
|
-
`echo "hola" >> #{@folder}/config/#{@config.environment}/databases.yml`
|
73
|
-
@deployer.after_deploy_run.should satisfy { |deployer| File.directory?("#{@config.env_time_folder}/new_folder") }
|
74
|
-
end
|
75
|
-
|
76
|
-
it "should capture STDERR messages in a variable is command is not valid" do
|
77
|
-
@deployer.create_deploy_structure
|
78
|
-
@deployer.config.after['run'] = [ 'This is not a command' ]
|
79
|
-
out = @deployer.after_deploy_run
|
80
|
-
out.count.should == 1
|
81
|
-
out[0][:stdout].should == ""
|
82
|
-
out[0][:stderr].should_not == ""
|
83
|
-
end
|
84
|
-
|
85
|
-
it "should not capture STDERR messages in a variable if command is valid" do
|
86
|
-
@deployer.create_deploy_structure
|
87
|
-
@deployer.config.after['run'] = [ 'ls -lah' ]
|
88
|
-
out = @deployer.after_deploy_run
|
89
|
-
out.count.should == 1
|
90
|
-
out[0][:stdout].should_not == ""
|
91
|
-
out[0][:stderr].should == ""
|
92
|
-
end
|
93
|
-
|
94
|
-
end
|