avm-tools 0.25.0 → 0.26.0

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
  SHA256:
3
- metadata.gz: b281c9ce7a6b01c3627f2176525badcb1e8da74db083a19e4a044183a81d5098
4
- data.tar.gz: bed6e84f9f7ffbc8cb04f801d946bb3d121aa037b091d3eb7674a003608766e0
3
+ metadata.gz: 5cd4428c87bbb4fa7c5e7e49f2324bae1f9c34a63adad1790ca84dd3e44726bc
4
+ data.tar.gz: 0f658f19e437688c90766266a69f9aede92bde9036804eaed08562c8bd8bf2b7
5
5
  SHA512:
6
- metadata.gz: a2f4351b55f7e26efa4db5e92f3c8d0cc559380cc17f38fc41881c202c57c6caec07ab357934cdf4bc46419c7881bea01f0fd7ddf17db9948339ef14a34ea81d
7
- data.tar.gz: 18357869454f75bd31b70e098a624beb3caa00a289ccc0bb15533aca7cb2ed3ac206503c26babc56660d9c09ec1471a42bab51d48114209df86a9102919f7613
6
+ metadata.gz: cce720c19266b3441dfd04c469179bad41e42e71d984b57ef32677d0a247637b829e2674c53f8e20f17a62f280d52e131da103db9b55f75d39ddf7b64893bb72
7
+ data.tar.gz: 9ae68611ffa2d35623a553ffb7d3b89ec0cb04878c472275544f33b17b7014c1a7bfe49c357eb78ebaf3361e3776aa40b268e50b3872618f943c0458ce6f8800
@@ -21,7 +21,7 @@ module Avm
21
21
  def uri_to_env(uri)
22
22
  case uri.scheme
23
23
  when 'file' then ::EacRubyUtils::Envs.local
24
- when 'ssh' then ::EacRubyUtils::Envs.ssh(uri.authority)
24
+ when 'ssh' then ::EacRubyUtils::Envs.ssh(uri)
25
25
  else "Invalid schema \"#{uri.schema}\" (URI: #{uri})"
26
26
  end
27
27
  end
@@ -12,6 +12,10 @@ module Avm
12
12
  def initialize(id)
13
13
  @id = id.to_s
14
14
  end
15
+
16
+ def instance(suffix)
17
+ ::Avm::Instances::Base.new(self, suffix)
18
+ end
15
19
  end
16
20
  end
17
21
  end
@@ -10,7 +10,7 @@ module Avm
10
10
  extend ::ActiveSupport::Concern
11
11
 
12
12
  included do
13
- %w[Access Admin Database Filesystem Source System Web].each do |class_name|
13
+ %w[Access Admin Database Filesystem Ruby Source System Web].each do |class_name|
14
14
  include const_get(class_name)
15
15
  end
16
16
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module Instances
5
+ class Base
6
+ module AutoValues
7
+ module Ruby
8
+ def auto_ruby_version
9
+ inherited_entry_value(:host_id, 'ruby.version')
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -7,9 +7,35 @@ module Avm
7
7
  class Base
8
8
  module AutoValues
9
9
  module Web
10
+ def auto_web_authority
11
+ web_url_as_uri(&:authority)
12
+ end
13
+
10
14
  def auto_web_hostname
15
+ web_url_as_uri(&:host)
16
+ end
17
+
18
+ def auto_web_path
19
+ web_url_as_uri(&:path)
20
+ end
21
+
22
+ def auto_web_port
23
+ web_url_as_uri(&:port)
24
+ end
25
+
26
+ def auto_web_scheme
27
+ web_url_as_uri(&:scheme)
28
+ end
29
+
30
+ def auto_web_userinfo
31
+ web_url_as_uri(&:userinfo)
32
+ end
33
+
34
+ private
35
+
36
+ def web_url_as_uri
11
37
  read_entry_optional('web.url').if_present do |v|
12
- ::Addressable::URI.parse(v).host
38
+ yield(::Addressable::URI.parse(v))
13
39
  end
14
40
  end
15
41
  end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/stereotypes/eac_webapp_base0/deploy'
4
+
5
+ module Avm
6
+ module Stereotypes
7
+ module EacRedmineBase0
8
+ class Deploy < ::Avm::Stereotypes::EacWebappBase0::Deploy
9
+ set_callback :assert_instance_branch, :after, :run_installer
10
+
11
+ def run_installer
12
+ infom 'Running installer'
13
+ on_clean_ruby do
14
+ installer_command.system!
15
+ end
16
+ end
17
+
18
+ def installer_command
19
+ instance.host_env.command(installer_path, install_task)
20
+ end
21
+
22
+ def installer_path
23
+ ::File.join(instance.read_entry(:fs_path), 'plugins', 'redmine_installer', 'installer',
24
+ 'run.sh')
25
+ end
26
+
27
+ def install_task
28
+ if instance.read_entry_optional('web.path').present?
29
+ 'redmine_as_apache_path'
30
+ else
31
+ 'redmine_as_apache_base'
32
+ end
33
+ end
34
+
35
+ def on_clean_ruby
36
+ on_clear_envvars('BUNDLE', 'RUBY') { yield }
37
+ end
38
+
39
+ private
40
+
41
+ def on_clear_envvars(*start_with_vars)
42
+ old_values = envvars_starting_with(start_with_vars)
43
+ old_values.keys.each { |k| ENV.delete(k) }
44
+ yield
45
+ ensure
46
+ old_values&.each { |k, v| ENV[k] = v }
47
+ end
48
+
49
+ def envvars_starting_with(start_with_vars)
50
+ ENV.select { |k, _v| start_with_vars.any? { |var| k.start_with?(var) } }
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -1,12 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avm/instances/base'
4
3
  require 'avm/stereotypes/eac_ubuntu_base0/docker_image'
4
+ require 'avm/stereotypes/eac_webapp_base0/instance'
5
5
 
6
6
  module Avm
7
7
  module Stereotypes
8
8
  module EacRedmineBase0
9
- class Instance < ::Avm::Instances::Base
9
+ class Instance < ::Avm::Stereotypes::EacWebappBase0::Instance
10
+ FILES_UNITS = { files: 'files' }.freeze
11
+
10
12
  def docker_image_class
11
13
  ::Avm::Stereotypes::EacUbuntuBase0::DockerImage
12
14
  end
@@ -51,7 +51,7 @@ module Avm
51
51
  ::Avm::Git::Commit.new(git, commit_sha1).deploy_to_env_path(
52
52
  instance.host_env,
53
53
  instance.read_entry(:fs_path)
54
- ).append_directory(template_path).variables_source_set(instance).run
54
+ ).append_directory(template.path).variables_source_set(instance).run
55
55
  end
56
56
 
57
57
  def setup_files_units
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/console/docopt_runner'
4
+ require 'eac_ruby_utils/console/speaker'
5
+
6
+ module Avm
7
+ module Stereotypes
8
+ module EacWebappBase0
9
+ module Runner
10
+ class Deploy < ::EacRubyUtils::Console::DocoptRunner
11
+ include ::EacRubyUtils::Console::Speaker
12
+
13
+ DOC = <<~DOCOPT
14
+ Deploy for %%STEREOTYPE_NAME%% instance.
15
+
16
+ Usage:
17
+ __PROGRAM__ [options]
18
+ __PROGRAM__ -h | --help
19
+
20
+ Options:
21
+ -h --help Show this screen.
22
+ -r --reference=<git-reference> Git reference to deploy.
23
+ DOCOPT
24
+ def initialize(settings = {})
25
+ super settings.merge(doc: DOC.gsub('%%STEREOTYPE_NAME%%', stereotype_name))
26
+ end
27
+
28
+ def deploy_class
29
+ stereotype_module.const_get('Deploy')
30
+ end
31
+
32
+ def stereotype_module
33
+ "Avm::Stereotypes::#{stereotype_name}".constantize
34
+ end
35
+
36
+ def stereotype_name
37
+ self.class.name.deconstantize.demodulize
38
+ end
39
+
40
+ def run
41
+ result = deploy_class.new(context(:instance), options.fetch('--reference')).run
42
+ if result.error?
43
+ fatal_error result.to_s
44
+ else
45
+ infov 'Result', result.label
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -1,39 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_ruby_utils/console/docopt_runner'
4
- require 'eac_ruby_utils/console/speaker'
5
3
  require 'avm/stereotypes/eac_rails_base0/deploy'
4
+ require 'avm/stereotypes/eac_webapp_base0/runner/deploy'
6
5
 
7
6
  module Avm
8
7
  module Tools
9
8
  class Runner < ::EacRubyUtils::Console::DocoptRunner
10
9
  class EacRailsBase0 < ::EacRubyUtils::Console::DocoptRunner
11
- class Deploy < ::EacRubyUtils::Console::DocoptRunner
12
- include ::EacRubyUtils::Console::Speaker
13
-
14
- DOC = <<~DOCOPT
15
- Deploy for EacRailsBase0 instance.
16
-
17
- Usage:
18
- __PROGRAM__ [options]
19
- __PROGRAM__ -h | --help
20
-
21
- Options:
22
- -h --help Show this screen.
23
- -r --reference=<git-reference> Git reference to deploy.
24
- DOCOPT
25
-
26
- def run
27
- result = ::Avm::Stereotypes::EacRailsBase0::Deploy.new(
28
- context(:instance),
29
- options.fetch('--reference')
30
- ).run
31
- if result.error?
32
- fatal_error result.to_s
33
- else
34
- infov 'Result', result.label
35
- end
36
- end
10
+ class Deploy < ::Avm::Stereotypes::EacWebappBase0::Runner::Deploy
37
11
  end
38
12
  end
39
13
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/stereotypes/eac_redmine_base0/deploy'
4
+ require 'avm/stereotypes/eac_webapp_base0/runner/deploy'
5
+
6
+ module Avm
7
+ module Tools
8
+ class Runner < ::EacRubyUtils::Console::DocoptRunner
9
+ class EacRedmineBase0 < ::EacRubyUtils::Console::DocoptRunner
10
+ class Deploy < ::Avm::Stereotypes::EacWebappBase0::Runner::Deploy
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -1,39 +1,13 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'eac_ruby_utils/console/docopt_runner'
4
- require 'eac_ruby_utils/console/speaker'
3
+ require 'avm/stereotypes/eac_webapp_base0/runner/deploy'
5
4
  require 'avm/stereotypes/eac_wordpress_base0/deploy'
6
5
 
7
6
  module Avm
8
7
  module Tools
9
8
  class Runner < ::EacRubyUtils::Console::DocoptRunner
10
9
  class EacWordpressBase0 < ::EacRubyUtils::Console::DocoptRunner
11
- class Deploy < ::EacRubyUtils::Console::DocoptRunner
12
- include ::EacRubyUtils::Console::Speaker
13
-
14
- DOC = <<~DOCOPT
15
- Deploy for EacWordpressBase0 instance.
16
-
17
- Usage:
18
- __PROGRAM__ [options]
19
- __PROGRAM__ -h | --help
20
-
21
- Options:
22
- -h --help Show this screen.
23
- -r --reference=<git-reference> Git reference to deploy.
24
- DOCOPT
25
-
26
- def run
27
- result = ::Avm::Stereotypes::EacWordpressBase0::Deploy.new(
28
- context(:instance),
29
- options.fetch('--reference')
30
- ).run
31
- if result.error?
32
- fatal_error result.to_s
33
- else
34
- infov 'Result', result.label
35
- end
36
- end
10
+ class Deploy < ::Avm::Stereotypes::EacWebappBase0::Runner::Deploy
37
11
  end
38
12
  end
39
13
  end
@@ -18,11 +18,15 @@ module Avm
18
18
 
19
19
  Options:
20
20
  -h --help Show this screen.
21
- -C <path> Path to Git repository [default: .].
21
+ -C <path> Path to Git repository.
22
22
  DOCOPT
23
23
 
24
24
  def repository_path
25
- options.fetch('-C')
25
+ repository_path? ? options.fetch('-C') : '.'
26
+ end
27
+
28
+ def repository_path?
29
+ options.fetch('-C').present?
26
30
  end
27
31
 
28
32
  def git
@@ -33,6 +33,7 @@ module Avm
33
33
  validate
34
34
  main_info_banner
35
35
  deploy
36
+ success 'Done'
36
37
  end
37
38
 
38
39
  private
@@ -65,7 +66,21 @@ module Avm
65
66
  end
66
67
 
67
68
  def git_uncached
68
- ::EacLauncher::Git::Base.new(context(:repository_path))
69
+ ::EacLauncher::Git::Base.new(git_repository_path)
70
+ end
71
+
72
+ def git_repository_path
73
+ if context('repository_path?') || dev_instance_fs_path.blank?
74
+ return context(:repository_path)
75
+ end
76
+
77
+ dev_instance_fs_path
78
+ end
79
+
80
+ def dev_instance_fs_path
81
+ instance.if_present do |v|
82
+ v.application.instance('dev').read_entry_optional(:fs_path)
83
+ end
69
84
  end
70
85
 
71
86
  def deploy
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module Tools
5
- VERSION = '0.25.0'
5
+ VERSION = '0.26.0'
6
6
  end
7
7
  end
@@ -0,0 +1,14 @@
1
+ export postgresql_database='%%DATABASE.NAME%%'
2
+ export postgresql_database_test='%%DATABASE.NAME%%_test'
3
+ export postgresql_user='%%DATABASE.USERNAME%%'
4
+ export postgresql_password='%%DATABASE.PASSWORD%%'
5
+ export rvm_ruby='ruby-%%RUBY.VERSION%%'
6
+ export redmine_git_hosting_ssh_key_name=redmine_git_hosting_id
7
+ if [ '%%WEB.SCHEME%%' == 'https' ]; then
8
+ export address_https='true'
9
+ else
10
+ export address_https='false'
11
+ fi
12
+ export address_host='%%WEB.AUTHORITY%%'
13
+ export address_path='%%WEB.PATH%%'
14
+ export git_repositories_hierarchical_organisation=false
@@ -0,0 +1,8 @@
1
+ development:
2
+ secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
3
+
4
+ test:
5
+ secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
6
+
7
+ production:
8
+ secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avm-tools
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.25.0
4
+ version: 0.26.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esquilo Azul Company
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-12-21 00:00:00.000000000 Z
11
+ date: 2019-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aranha-parsers
@@ -212,6 +212,7 @@ files:
212
212
  - lib/avm/instances/base/auto_values/admin.rb
213
213
  - lib/avm/instances/base/auto_values/database.rb
214
214
  - lib/avm/instances/base/auto_values/filesystem.rb
215
+ - lib/avm/instances/base/auto_values/ruby.rb
215
216
  - lib/avm/instances/base/auto_values/source.rb
216
217
  - lib/avm/instances/base/auto_values/system.rb
217
218
  - lib/avm/instances/base/auto_values/web.rb
@@ -231,6 +232,7 @@ files:
231
232
  - lib/avm/stereotypes/eac_rails_base0/deploy.rb
232
233
  - lib/avm/stereotypes/eac_rails_base0/instance.rb
233
234
  - lib/avm/stereotypes/eac_redmine_base0.rb
235
+ - lib/avm/stereotypes/eac_redmine_base0/deploy.rb
234
236
  - lib/avm/stereotypes/eac_redmine_base0/instance.rb
235
237
  - lib/avm/stereotypes/eac_ubuntu_base0.rb
236
238
  - lib/avm/stereotypes/eac_ubuntu_base0/apache.rb
@@ -240,6 +242,7 @@ files:
240
242
  - lib/avm/stereotypes/eac_webapp_base0/apache_host.rb
241
243
  - lib/avm/stereotypes/eac_webapp_base0/deploy.rb
242
244
  - lib/avm/stereotypes/eac_webapp_base0/instance.rb
245
+ - lib/avm/stereotypes/eac_webapp_base0/runner/deploy.rb
243
246
  - lib/avm/stereotypes/eac_wordpress_base0/apache_host.rb
244
247
  - lib/avm/stereotypes/eac_wordpress_base0/deploy.rb
245
248
  - lib/avm/stereotypes/eac_wordpress_base0/instance.rb
@@ -248,12 +251,12 @@ files:
248
251
  - lib/avm/stereotypes/postgresql/instance/data_unit.rb
249
252
  - lib/avm/stereotypes/postgresql/instance_with.rb
250
253
  - lib/avm/tools.rb
251
- - lib/avm/tools/git.rb
252
254
  - lib/avm/tools/runner.rb
253
255
  - lib/avm/tools/runner/eac_rails_base0.rb
254
256
  - lib/avm/tools/runner/eac_rails_base0/apache_host.rb
255
257
  - lib/avm/tools/runner/eac_rails_base0/deploy.rb
256
258
  - lib/avm/tools/runner/eac_redmine_base0.rb
259
+ - lib/avm/tools/runner/eac_redmine_base0/deploy.rb
257
260
  - lib/avm/tools/runner/eac_redmine_base0/docker.rb
258
261
  - lib/avm/tools/runner/eac_wordpress_base0.rb
259
262
  - lib/avm/tools/runner/eac_wordpress_base0/apache_host.rb
@@ -276,6 +279,8 @@ files:
276
279
  - template/avm/self/docker_image/Dockerfile
277
280
  - template/avm/self/docker_image/entrypoint.sh
278
281
  - template/avm/stereotypes/eac_rails_base0/deploy/config/database.yml.template
282
+ - template/avm/stereotypes/eac_redmine_base0/deploy/config/install.sh.template
283
+ - template/avm/stereotypes/eac_redmine_base0/deploy/config/secrets.yml
279
284
  - template/avm/stereotypes/eac_ubuntu_base0/docker_image/Dockerfile
280
285
  - template/avm/stereotypes/eac_webapp_base0/apache_host/no_ssl.conf
281
286
  - template/avm/stereotypes/eac_wordpress_base0/deploy/wp-config.php.template
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Avm
4
- module Tools
5
- module Git
6
- require 'avm/tools/git/complete_issue'
7
- end
8
- end
9
- end