fulmar 1.5.0 → 1.5.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 357303751bffb6928eeef9a6ede80d964c80e7d4
4
- data.tar.gz: 1000737110dfedacbed455ae92ecc2557f014fa1
3
+ metadata.gz: 6bebeb9c011e4edea9e286d3c043eda55450a8b0
4
+ data.tar.gz: ba575c2d25770c7bc6cba9a8c15f109ee0882e53
5
5
  SHA512:
6
- metadata.gz: fcda7ec398917e283da2cfdeb71149f5d0d8c8ea6461a64bb324155653e31e51feca87a04a61a7bcf48ca52a08531fc4a3565c9de872d0b7f74965734560111b
7
- data.tar.gz: ad6e857457b377865895199132479c49fdd602fee73e6e2e4c600c4df0a11749fd508f293c4ab4355c98ad07289840a224836d5fe3170247a81152ec747d39d7
6
+ metadata.gz: 50d1eda6ab45889dfb9339c150e341ab7da250fc3d9537c5ccddb21e2e9336348cc85fd0c7bf7e5c79edee432dbe120804066aca15c4333f26f64a8abbde1fae
7
+ data.tar.gz: ace82db763333502091badee3701645ee686fefa59987dc2b87a84f3a431e316faf4e979155bd1297ca193e18386935723c8884896d84822da0314023b097749
@@ -0,0 +1,21 @@
1
+ module Fulmar
2
+ module Domain
3
+ module Service
4
+ module Helper
5
+ # Provides access helper to the database service from within a task
6
+ module VhostHelper
7
+ def vhost_name
8
+ branch = git.current_branch
9
+ match = branch.match(/f\d+_([a-zA-Z0-9]+)/)
10
+ if match
11
+ match[1]
12
+ else
13
+ error "Cannot deploy branch '#{branch}'"
14
+ fail 'Branch must match specification for feature branches (f1234_name)'
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -1,16 +1,21 @@
1
+ require 'fulmar/domain/service/helper/common_helper'
1
2
  include Fulmar::Domain::Service::Helper::CommonHelper
2
3
 
3
4
  if configuration.feature? :database
4
- require 'fulmar/service/helper/database_helper'
5
+ require 'fulmar/domain/service/helper/database_helper'
5
6
  include Fulmar::Domain::Service::Helper::DatabaseHelper
6
7
  end
7
8
 
8
9
  if configuration.feature? :flow
9
- require 'fulmar/service/helper/flow_helper'
10
+ require 'fulmar/domain/service/helper/flow_helper'
10
11
  include Fulmar::Domain::Service::Helper::FlowHelper
11
12
  end
12
13
 
13
14
  if full_configuration[:dependencies].any?
14
- require 'fulmar/service/helper/dependencies_helper'
15
+ require 'fulmar/domain/service/helper/dependencies_helper'
15
16
  include Fulmar::Domain::Service::Helper::DependenciesHelper
17
+ end
18
+
19
+ if configuration.feature?(:vhost) && configuration.any? { |data| !data[:vhost_template].blank? }
20
+ require 'fulmar/domain/task/optional/vhost'
16
21
  end
@@ -0,0 +1,74 @@
1
+ require 'fulmar/domain/service/helper/vhost_helper'
2
+ include Fulmar::Domain::Service::Helper::VhostHelper
3
+
4
+ VHOST_DEFAULT_CONFIG = {
5
+ webserver: 'nginx',
6
+ sites_enabled_dir: '../sites-enabled',
7
+
8
+ }
9
+
10
+ vhost_count = 0
11
+ configuration.each { |_env, _target, data| vhost_count += 1 unless data[:vhost_template].blank? }
12
+
13
+ namespace :vhost do
14
+ configuration.each do |env, target, data|
15
+ next if data[:vhost_template].blank?
16
+
17
+ desc "Create a vhost for #{env}"
18
+ task (vhost_count > 1 ? "create:#{env}" : 'create') do
19
+ configuration.environment = env
20
+ configuration.target = target
21
+ configuration.merge(VHOST_DEFAULT_CONFIG)
22
+
23
+ # Store remote_path for recovery
24
+ remote_path = configuration[:remote_path]
25
+
26
+ # Set some default variables:
27
+ configuration[:sites_available_dir] ||= "/etc/#{configuration[:webserver]}/sites-available"
28
+ configuration[:remote_path] = configuration[:sites_available_dir]
29
+ configuration[:vhost_name] = vhost_name
30
+
31
+ render_templates
32
+ rendered_vhost_config = File.dirname(configuration[:local_path] + '/' + configuration[:vhost_template]) + \
33
+ '/' + File.basename(configuration[:vhost_template], '.erb')
34
+ config_file_name = "#{File.dirname(rendered_vhost_config)}/auto_vhost_#{configuration[:vhost_name]}.conf"
35
+ FileUtils.mv rendered_vhost_config, config_file_name
36
+ upload config_file_name
37
+ config_remote_path = configuration[:sites_available_dir] + '/' + File.basename(config_file_name)
38
+ remote_shell.run [
39
+ "rm -f #{configuration[:sites_enabled_dir]}/#{File.basename(config_file_name)}", # remove any existing link
40
+ "ln -s #{config_remote_path} #{configuration[:sites_enabled_dir]}/#{File.basename(config_file_name)}",
41
+ "service #{configuration[:webserver]} reload"
42
+ ]
43
+
44
+ # recover remote path
45
+ configuration[:remote_path] = remote_path
46
+ end
47
+
48
+ desc "List existing vhosts for #{env}"
49
+ task (vhost_count > 1 ? "list:#{env}" : 'list') do
50
+ configuration.environment = env
51
+ configuration.target = target
52
+
53
+ remote_shell.run 'ls -1'
54
+ remote_shell.last_output.each do |line|
55
+ match = line.match(/auto_vhost_(.*)\.conf/)
56
+ if match
57
+ name = match[1]
58
+ puts "- #{name}, delete via 'fulmar vhost:delete[#{name}]'"
59
+ end
60
+ end
61
+ end
62
+
63
+ desc "Delete a vhost for #{env}"
64
+ task (vhost_count > 1 ? "delete:#{env}" : 'delete'), [:name] do |_t, argv|
65
+ configuration.environment = env
66
+ configuration.target = target
67
+
68
+ remote_shell.run [
69
+ "rm auto_vhost_#{argv[:name]}.conf",
70
+ "service #{configuration[:webserver] || 'nginx'} reload"
71
+ ]
72
+ end
73
+ end
74
+ end
@@ -9,7 +9,7 @@ module Fulmar
9
9
  # @param [String] remote_host SSH hostname
10
10
  # @param [String] remote_dir remote directory
11
11
  def self.upload(shell, local_file, remote_host, remote_dir)
12
- if shell.run "scp #{local_file} #{remote_host}:#{remote_dir.chomp('/')}/"
12
+ if shell.run "scp -r #{local_file} #{remote_host}:#{remote_dir.chomp('/')}/"
13
13
  "#{remote_dir.chomp('/')}/#{File.basename(local_file)}"
14
14
  end
15
15
  end
@@ -20,7 +20,7 @@ module Fulmar
20
20
  # @param [String] remote_file remote directory
21
21
  # @param [String] local_dir local filename, should be absolute
22
22
  def self.download(shell, remote_host, remote_file, local_dir = '.')
23
- if shell.run "scp #{remote_host}:#{remote_file} #{local_dir.chomp('/')}/"
23
+ if shell.run "scp -r #{remote_host}:#{remote_file} #{local_dir.chomp('/')}/"
24
24
  "#{local_dir.chomp('/')}/#{File.basename(remote_file)}"
25
25
  end
26
26
  end
@@ -29,7 +29,7 @@ module Fulmar
29
29
  end
30
30
  end
31
31
 
32
- @git = Rugged::Repository.new(@config[:local_path]) # :log => Logger.new(STDOUT)
32
+ @git = Rugged::Repository.new(@config[:git_path].blank? ? @config[:local_path] : @config[:git_path]) # :log => Logger.new(STDOUT)
33
33
  end
34
34
 
35
35
  def branches
@@ -8,8 +8,6 @@ require 'fulmar/domain/service/initialization_service'
8
8
  require 'fulmar/domain/service/application_service'
9
9
  require 'fulmar/domain/service/configuration_service'
10
10
  require 'fulmar/domain/service/config_rendering_service'
11
-
12
- require 'fulmar/service/helper/common_helper'
13
11
  require 'fulmar/domain/service/file_sync_service'
14
12
 
15
13
  require 'fulmar/infrastructure/service/composer_service'
@@ -1,4 +1,4 @@
1
1
  # Provides a global version number
2
2
  module Fulmar
3
- VERSION = '1.5.0'
3
+ VERSION = '1.5.1'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fulmar
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonas Siegl
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-04-17 00:00:00.000000000 Z
12
+ date: 2015-04-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -142,13 +142,18 @@ files:
142
142
  - lib/fulmar/domain/service/configuration_service.rb
143
143
  - lib/fulmar/domain/service/dependency_service.rb
144
144
  - lib/fulmar/domain/service/file_sync_service.rb
145
+ - lib/fulmar/domain/service/helper/common_helper.rb
146
+ - lib/fulmar/domain/service/helper/database_helper.rb
147
+ - lib/fulmar/domain/service/helper/dependencies_helper.rb
148
+ - lib/fulmar/domain/service/helper/flow_helper.rb
149
+ - lib/fulmar/domain/service/helper/vhost_helper.rb
145
150
  - lib/fulmar/domain/service/initialization_service.rb
146
151
  - lib/fulmar/domain/task/base.rake
147
152
  - lib/fulmar/domain/task/console.rake
148
153
  - lib/fulmar/domain/task/database_sync.rake
149
154
  - lib/fulmar/domain/task/environment.rake
155
+ - lib/fulmar/domain/task/optional/vhost.rb
150
156
  - lib/fulmar/domain/task/versions.rake
151
- - lib/fulmar/domain/task/vhost.rake
152
157
  - lib/fulmar/infrastructure/service/composer_service.rb
153
158
  - lib/fulmar/infrastructure/service/copy_service.rb
154
159
  - lib/fulmar/infrastructure/service/database/database_service.rb
@@ -161,10 +166,6 @@ files:
161
166
  - lib/fulmar/infrastructure/service/transfer/tar.rb
162
167
  - lib/fulmar/infrastructure/service/tunnel_service.rb
163
168
  - lib/fulmar/service/bootstrap_service.rb
164
- - lib/fulmar/service/helper/common_helper.rb
165
- - lib/fulmar/service/helper/database_helper.rb
166
- - lib/fulmar/service/helper/dependencies_helper.rb
167
- - lib/fulmar/service/helper/flow_helper.rb
168
169
  - lib/fulmar/service/helper_service.rb
169
170
  - lib/fulmar/service/logger_service.rb
170
171
  - lib/fulmar/task_manager.rb
@@ -1,55 +0,0 @@
1
- if configuration.any? { |data| data[:type] == 'vhost' }
2
- namespace :vhost do
3
- configuration.each do |env, target, data|
4
- next if data[:type] != 'vhost'
5
-
6
- desc "Create a vhost for #{env}"
7
- task :create do
8
- configuration.environment = env
9
- configuration.target = target
10
- branch = git.current_branch
11
- match = branch.match(/f\d+_([a-zA-Z0-9]+)/)
12
- unless match
13
- STDERR.puts "Cannot deploy branch '#{branch}'"
14
- return
15
- end
16
- configuration[:branch_name] = branch
17
- configuration[:vhost_name] = match[1]
18
- render_templates
19
- upload configuration[:vhost_template]
20
- sites_enabled_dir = configuration[:sites_enabled_dir] || '../sites_enabled'
21
- remote_shell.run [
22
- "ln -s #{configuration[:vhost_template]} #{sites_enabled_dir}/#{configuration[:vhost_template]}",
23
- "service #{configuration[:webserver] || 'nginx'} reload"
24
- ]
25
- end
26
-
27
- desc "List existing vhosts for #{env}"
28
- task :list do
29
- configuration.environment = env
30
- configuration.target = target
31
-
32
- remote_shell.run 'ls -1'
33
- remote_shell.last_output.each do |line|
34
- match = line.match(/auto_vhost_(.*)\.conf/)
35
- if match
36
- name = match[1]
37
- puts "- #{name}, delete via 'fulmar vhost:delete[#{name}]'"
38
- end
39
- end
40
- end
41
-
42
- desc "Delete a vhost for #{env}"
43
- task :delete, [:name] do |_t, argv|
44
- configuration.environment = env
45
- configuration.target = target
46
-
47
- remote_shell.run [
48
- "rm auto_vhost_#{argv[:name]}.conf",
49
- "service #{configuration[:webserver] || 'nginx'} reload"
50
- ]
51
- end
52
- end
53
- end
54
-
55
- end