avm-tools 0.61.0 → 0.62.0
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/lib/avm/cached_download.rb +39 -0
- data/lib/avm/eac_redmine_base0/core_update.rb +110 -0
- data/lib/avm/eac_redmine_base0/data_unit.rb +27 -0
- data/lib/avm/eac_redmine_base0/deploy.rb +36 -0
- data/lib/avm/eac_redmine_base0/instance.rb +38 -0
- data/lib/avm/sync.rb +94 -0
- data/lib/avm/tools/runner/eac_redmine_base0.rb +2 -2
- data/lib/avm/tools/runner/eac_redmine_base0/core_update.rb +67 -0
- data/lib/avm/tools/runner/eac_redmine_base0/deploy.rb +1 -1
- data/lib/avm/tools/version.rb +1 -1
- metadata +10 -6
- data/lib/avm/stereotypes/eac_redmine_base0/data_unit.rb +0 -29
- data/lib/avm/stereotypes/eac_redmine_base0/deploy.rb +0 -38
- data/lib/avm/stereotypes/eac_redmine_base0/instance.rb +0 -40
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 37ce02b35f53298066d48205ff8442084a1d702baecb901c91ba3dffe5d2cd0d
|
4
|
+
data.tar.gz: f4bf6b545744791267fdbdc0eb47f4dc1f0d6b5c1ebef912dd1cbaa8c06b6bfe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2c271e9d1e95373e7957b55d26b3ffc87b227e1fe4a4d90d94b686e16d4bbf90e40e9be639ab4ea2063698aa42d5e43284472e5e271e3d8e55d4a68acc2e5e3
|
7
|
+
data.tar.gz: 58d5924ed8c0e329292240d866b7c567bd1eec97f1774d4ef8573fa4d77b09477a07aa6c90e4ae99806f235af4892d752653667d5d9de7dc3806dee507d2a774
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/fs_cache'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
|
6
|
+
module Avm
|
7
|
+
class CachedDownload
|
8
|
+
attr_reader :url, :fs_cache
|
9
|
+
|
10
|
+
def initialize(url, parent_fs_cache = nil)
|
11
|
+
@url = url
|
12
|
+
@fs_cache = (parent_fs_cache || ::Avm.fs_cache).child(url.parameterize)
|
13
|
+
end
|
14
|
+
|
15
|
+
def assert
|
16
|
+
download unless fs_cache.cached?
|
17
|
+
end
|
18
|
+
|
19
|
+
def download
|
20
|
+
::EacRubyUtils::Fs::Temp.on_file do |temp|
|
21
|
+
download_to(temp)
|
22
|
+
fs_cache.content_path.to_pathname.dirname.mkpath
|
23
|
+
::FileUtils.mv(temp.to_path, fs_cache.content_path)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def path
|
28
|
+
@path ||= fs_cache.content_path.to_pathname
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def download_to(local_file)
|
34
|
+
::URI.parse(url).open do |remote|
|
35
|
+
local_file.open('wb') { |handle| handle.write(remote.read) }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/eac_redmine_base0/core_update'
|
4
|
+
require 'avm/cached_download'
|
5
|
+
require 'avm/sync'
|
6
|
+
require 'eac_ruby_utils/core_ext'
|
7
|
+
|
8
|
+
module Avm
|
9
|
+
module EacRedmineBase0
|
10
|
+
class CoreUpdate
|
11
|
+
enable_console_speaker
|
12
|
+
enable_simple_cache
|
13
|
+
common_constructor :instance, :version, :url
|
14
|
+
|
15
|
+
GITIGNORE_ADD = %w[/public/assets/**/* /config/install.sh /log/**/*].freeze
|
16
|
+
GITIGNORE_DEL = %w[/Gemfile.lock /plugins/* /public/themes/*].freeze
|
17
|
+
TARGET_KEEP = %w[/Gemfile.lock].freeze
|
18
|
+
|
19
|
+
def run
|
20
|
+
::EacRubyUtils::Fs::Temp.on_directory do |dir|
|
21
|
+
@tempdir = dir
|
22
|
+
assert_source_package
|
23
|
+
extract_package_to_tempdir
|
24
|
+
sync_content
|
25
|
+
change_git_ignore
|
26
|
+
validate_empty_dir
|
27
|
+
end
|
28
|
+
git_commit
|
29
|
+
success 'Done!'
|
30
|
+
end
|
31
|
+
|
32
|
+
def assert_source_package
|
33
|
+
infom 'Asserting source package...'
|
34
|
+
source_package.assert
|
35
|
+
infov 'Package cache path', source_package.path
|
36
|
+
infov 'Package size', source_package.path.size
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
attr_reader :tempdir
|
42
|
+
|
43
|
+
def change_git_ignore
|
44
|
+
file = target_path.join('.gitignore')
|
45
|
+
file.write(
|
46
|
+
(file.read.each_line.map(&:strip).reject { |line| GITIGNORE_DEL.include?(line) } +
|
47
|
+
['', '#eac_redmine_base0'] + GITIGNORE_ADD).map { |line| "#{line}\n" }.join
|
48
|
+
)
|
49
|
+
end
|
50
|
+
|
51
|
+
def extract_package_to_tempdir
|
52
|
+
infom "Extracting package to tempdir #{tempdir}..."
|
53
|
+
::EacRubyUtils::Envs.local.command(
|
54
|
+
'tar', '-xf', source_package.path.to_path, '-C', tempdir.to_path,
|
55
|
+
'--strip-components', '1'
|
56
|
+
).execute!
|
57
|
+
end
|
58
|
+
|
59
|
+
def git_commit
|
60
|
+
if git_repo.dirty?
|
61
|
+
infom 'Git commiting...'
|
62
|
+
git_repo.command('add', '--', target_path).execute!
|
63
|
+
git_repo.command('commit', '-m', git_commit_message, '--', target_path).execute!
|
64
|
+
else
|
65
|
+
infom 'Nothing to commit'
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def git_commit_message
|
70
|
+
"Core: update to #{version}."
|
71
|
+
end
|
72
|
+
|
73
|
+
def git_repo_uncached
|
74
|
+
::EacGit::Local.new(target_path)
|
75
|
+
end
|
76
|
+
|
77
|
+
def sync_content
|
78
|
+
::Avm::Sync.new(source_path, target_path)
|
79
|
+
.add_exclude('/*').add_includes(*target_files_to_remove).move_mode(true).run
|
80
|
+
end
|
81
|
+
|
82
|
+
def source_package_uncached
|
83
|
+
::Avm::CachedDownload.new(url, ::Avm.fs_cache.child('eac_redmine_base0', 'core_update'))
|
84
|
+
end
|
85
|
+
|
86
|
+
def validate_empty_dir
|
87
|
+
if source_path.children.empty?
|
88
|
+
infom 'No content left in source directory'
|
89
|
+
else
|
90
|
+
fatal_error 'Found entries in source directory: ' +
|
91
|
+
source_path.children.map { |c| c.basename.to_path }.join(', ')
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def source_path_uncached
|
96
|
+
::Pathname.new(tempdir.to_path)
|
97
|
+
end
|
98
|
+
|
99
|
+
def target_files_to_remove
|
100
|
+
git_repo.command('ls-files').execute!
|
101
|
+
.each_line.map { |v| "/#{v.strip}" }
|
102
|
+
.without(*TARGET_KEEP)
|
103
|
+
end
|
104
|
+
|
105
|
+
def target_path_uncached
|
106
|
+
instance.read_entry('fs_path').to_pathname
|
107
|
+
end
|
108
|
+
end
|
109
|
+
end
|
110
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/data/instance/unit'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
require 'open-uri'
|
6
|
+
|
7
|
+
module Avm
|
8
|
+
module EacRedmineBase0
|
9
|
+
class DataUnit < ::Avm::Data::Instance::Unit
|
10
|
+
common_constructor :instance
|
11
|
+
|
12
|
+
EXTENSION = '.tar'
|
13
|
+
|
14
|
+
def do_dump(data_path)
|
15
|
+
::File.open(data_path, 'wb') do |file|
|
16
|
+
file << URI.parse(export_url).read
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def export_url
|
21
|
+
uri = ::Addressable::URI.parse(instance.read_entry('web.url')) + '/backup/export'
|
22
|
+
uri.query_values = { key: instance.read_entry('admin.api_key') }
|
23
|
+
uri.to_s
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/stereotypes/eac_webapp_base0/deploy'
|
4
|
+
require 'eac_ruby_utils/ruby'
|
5
|
+
|
6
|
+
module Avm
|
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
|
+
::EacRubyUtils::Ruby.on_clean_environment 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
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/eac_redmine_base0/data_unit'
|
4
|
+
require 'avm/stereotypes/eac_ubuntu_base0/docker_image'
|
5
|
+
require 'avm/stereotypes/eac_webapp_base0/instance'
|
6
|
+
require 'avm/stereotypes/rails/instance'
|
7
|
+
|
8
|
+
module Avm
|
9
|
+
module EacRedmineBase0
|
10
|
+
class Instance < ::Avm::Stereotypes::EacWebappBase0::Instance
|
11
|
+
include ::Avm::Stereotypes::Rails::Instance
|
12
|
+
|
13
|
+
FILES_UNITS = { files: 'files' }.freeze
|
14
|
+
|
15
|
+
def docker_image_class
|
16
|
+
::Avm::Stereotypes::EacUbuntuBase0::DockerImage
|
17
|
+
end
|
18
|
+
|
19
|
+
def docker_run_arguments
|
20
|
+
[
|
21
|
+
'--volume', "#{read_entry(:fs_path)}:/home/myuser/eac_redmine_base0",
|
22
|
+
'--publish', "#{read_entry(:ssh_port)}:22",
|
23
|
+
'--publish', "#{read_entry(:http_port)}:80",
|
24
|
+
'--publish', "#{read_entry(:https_port)}:443"
|
25
|
+
]
|
26
|
+
end
|
27
|
+
|
28
|
+
def data_package
|
29
|
+
@data_package ||= ::Avm::Data::Instance::Package.new(
|
30
|
+
self,
|
31
|
+
units: {
|
32
|
+
all: ::Avm::EacRedmineBase0::DataUnit.new(self)
|
33
|
+
}
|
34
|
+
)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
data/lib/avm/sync.rb
ADDED
@@ -0,0 +1,94 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module Avm
|
6
|
+
class Sync
|
7
|
+
attr_reader :excludes, :includes
|
8
|
+
|
9
|
+
common_constructor :source_path, :target_path do
|
10
|
+
self.source_path = source_path.to_pathname
|
11
|
+
self.target_path = target_path.to_pathname
|
12
|
+
@excludes = []
|
13
|
+
@includes = []
|
14
|
+
end
|
15
|
+
|
16
|
+
def run
|
17
|
+
clear_target
|
18
|
+
copy
|
19
|
+
end
|
20
|
+
|
21
|
+
def add_exclude(exclude)
|
22
|
+
excludes << exclude
|
23
|
+
|
24
|
+
self
|
25
|
+
end
|
26
|
+
|
27
|
+
def add_excludes(*excludes)
|
28
|
+
excludes.each { |exclude| add_exclude(exclude) }
|
29
|
+
|
30
|
+
self
|
31
|
+
end
|
32
|
+
|
33
|
+
def add_include(include)
|
34
|
+
includes << include
|
35
|
+
|
36
|
+
self
|
37
|
+
end
|
38
|
+
|
39
|
+
def add_includes(*includes)
|
40
|
+
includes.each { |include| add_include(include) }
|
41
|
+
|
42
|
+
self
|
43
|
+
end
|
44
|
+
|
45
|
+
def move_mode(value)
|
46
|
+
@move_mode = value
|
47
|
+
|
48
|
+
self
|
49
|
+
end
|
50
|
+
|
51
|
+
def move_mode?
|
52
|
+
@move_mode ? true : false
|
53
|
+
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def clear_target
|
58
|
+
target_remove(target_path)
|
59
|
+
target_path.children.each { |tchild| target_remove(tchild) }
|
60
|
+
end
|
61
|
+
|
62
|
+
def copy
|
63
|
+
source_path.children.each do |schild|
|
64
|
+
::FileUtils.cp_r(schild.to_path, target_path.to_path)
|
65
|
+
schild.rmtree if move_mode?
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def source_to_target_path(source_path)
|
70
|
+
source_path.relative_path_from(self.source_path).expand_path(target_path)
|
71
|
+
end
|
72
|
+
|
73
|
+
def target_remove(tpath)
|
74
|
+
return if skip_target_path?(tpath)
|
75
|
+
|
76
|
+
if tpath.directory?
|
77
|
+
tpath.children.each { |tchild| target_remove(tchild) }
|
78
|
+
tpath.rmdir if tpath.children.empty?
|
79
|
+
elsif tpath.file?
|
80
|
+
tpath.unlink
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def skip_target_path?(tpath)
|
85
|
+
skip_path?(tpath.relative_path_from(target_path))
|
86
|
+
end
|
87
|
+
|
88
|
+
def skip_path?(relpath)
|
89
|
+
relpath = relpath.expand_path('/')
|
90
|
+
excludes.any? { |exclude| relpath.fnmatch?(exclude) } &&
|
91
|
+
includes.none? { |include| relpath.fnmatch?(include) }
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'eac_ruby_utils/console/docopt_runner'
|
4
4
|
require 'eac_ruby_utils/simple_cache'
|
5
|
-
require 'avm/
|
5
|
+
require 'avm/eac_redmine_base0/instance'
|
6
6
|
require 'eac_ruby_utils/require_sub'
|
7
7
|
::EacRubyUtils.require_sub(__FILE__)
|
8
8
|
|
@@ -26,7 +26,7 @@ module Avm
|
|
26
26
|
private
|
27
27
|
|
28
28
|
def instance_uncached
|
29
|
-
::Avm::
|
29
|
+
::Avm::EacRedmineBase0::Instance.by_id(options['<instance_id>'])
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/eac_redmine_base0/core_update'
|
4
|
+
require 'eac_cli/default_runner'
|
5
|
+
require 'eac_ruby_utils/console/docopt_runner'
|
6
|
+
require 'eac_ruby_utils/core_ext'
|
7
|
+
|
8
|
+
module Avm
|
9
|
+
module Tools
|
10
|
+
class Runner < ::EacRubyUtils::Console::DocoptRunner
|
11
|
+
class EacRedmineBase0 < ::EacRubyUtils::Console::DocoptRunner
|
12
|
+
class CoreUpdate < ::EacRubyUtils::Console::DocoptRunner
|
13
|
+
include ::EacCli::DefaultRunner
|
14
|
+
|
15
|
+
runner_definition do
|
16
|
+
arg_opt '-u', '--url', 'Core\'s package URL.'
|
17
|
+
arg_opt '-v', '--version', 'Core\'s version.'
|
18
|
+
desc 'Update instance\' core.'
|
19
|
+
end
|
20
|
+
|
21
|
+
def run
|
22
|
+
start_banner
|
23
|
+
validate
|
24
|
+
update
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def start_banner
|
30
|
+
infov 'URL', url
|
31
|
+
infov 'Version', version
|
32
|
+
end
|
33
|
+
|
34
|
+
def update
|
35
|
+
::Avm::EacRedmineBase0::CoreUpdate.new(context(:instance), version, url).run
|
36
|
+
end
|
37
|
+
|
38
|
+
def url
|
39
|
+
options.fetch('--url') || url_by_version
|
40
|
+
end
|
41
|
+
|
42
|
+
def url_by_version
|
43
|
+
options.fetch('--version').if_present do |v|
|
44
|
+
"https://www.redmine.org/releases/redmine-#{v}.tar.gz"
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def validate
|
49
|
+
%w[url version].each do |attr|
|
50
|
+
fatal_error "\"#{attr}\" is blank. See avaiable options." if send(attr).blank?
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def version
|
55
|
+
options.fetch('--version') || version_by_url
|
56
|
+
end
|
57
|
+
|
58
|
+
def version_by_url
|
59
|
+
options.fetch('--url').if_present do |v|
|
60
|
+
/(\d+.\d+.\d+)/.if_match(v, false) { |m| m[1] }
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
data/lib/avm/tools/version.rb
CHANGED
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.
|
4
|
+
version: 0.62.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: 2020-07-
|
11
|
+
date: 2020-07-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aranha-parsers
|
@@ -274,6 +274,7 @@ files:
|
|
274
274
|
- Gemfile
|
275
275
|
- exe/avm
|
276
276
|
- lib/avm.rb
|
277
|
+
- lib/avm/cached_download.rb
|
277
278
|
- lib/avm/configs.rb
|
278
279
|
- lib/avm/data.rb
|
279
280
|
- lib/avm/data/instance.rb
|
@@ -289,6 +290,10 @@ files:
|
|
289
290
|
- lib/avm/docker/image.rb
|
290
291
|
- lib/avm/docker/registry.rb
|
291
292
|
- lib/avm/docker/runner.rb
|
293
|
+
- lib/avm/eac_redmine_base0/core_update.rb
|
294
|
+
- lib/avm/eac_redmine_base0/data_unit.rb
|
295
|
+
- lib/avm/eac_redmine_base0/deploy.rb
|
296
|
+
- lib/avm/eac_redmine_base0/instance.rb
|
292
297
|
- lib/avm/executables.rb
|
293
298
|
- lib/avm/files.rb
|
294
299
|
- lib/avm/files/formatter.rb
|
@@ -405,9 +410,6 @@ files:
|
|
405
410
|
- lib/avm/stereotypes/eac_rails_base0/deploy.rb
|
406
411
|
- lib/avm/stereotypes/eac_rails_base0/instance.rb
|
407
412
|
- lib/avm/stereotypes/eac_redmine_base0.rb
|
408
|
-
- lib/avm/stereotypes/eac_redmine_base0/data_unit.rb
|
409
|
-
- lib/avm/stereotypes/eac_redmine_base0/deploy.rb
|
410
|
-
- lib/avm/stereotypes/eac_redmine_base0/instance.rb
|
411
413
|
- lib/avm/stereotypes/eac_ubuntu_base0.rb
|
412
414
|
- lib/avm/stereotypes/eac_ubuntu_base0/apache.rb
|
413
415
|
- lib/avm/stereotypes/eac_ubuntu_base0/apache/site.rb
|
@@ -433,6 +435,7 @@ files:
|
|
433
435
|
- lib/avm/stereotypes/postgresql/instance_with.rb
|
434
436
|
- lib/avm/stereotypes/rails.rb
|
435
437
|
- lib/avm/stereotypes/rails/instance.rb
|
438
|
+
- lib/avm/sync.rb
|
436
439
|
- lib/avm/tools.rb
|
437
440
|
- lib/avm/tools/runner.rb
|
438
441
|
- lib/avm/tools/runner/eac_rails_base0.rb
|
@@ -443,6 +446,7 @@ files:
|
|
443
446
|
- lib/avm/tools/runner/eac_rails_base0/runner.rb
|
444
447
|
- lib/avm/tools/runner/eac_redmine_base0.rb
|
445
448
|
- lib/avm/tools/runner/eac_redmine_base0/bundle.rb
|
449
|
+
- lib/avm/tools/runner/eac_redmine_base0/core_update.rb
|
446
450
|
- lib/avm/tools/runner/eac_redmine_base0/data.rb
|
447
451
|
- lib/avm/tools/runner/eac_redmine_base0/data/dump.rb
|
448
452
|
- lib/avm/tools/runner/eac_redmine_base0/deploy.rb
|
@@ -966,7 +970,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
966
970
|
- !ruby/object:Gem::Version
|
967
971
|
version: '0'
|
968
972
|
requirements: []
|
969
|
-
rubygems_version: 3.0.
|
973
|
+
rubygems_version: 3.0.8
|
970
974
|
signing_key:
|
971
975
|
specification_version: 4
|
972
976
|
summary: Tools for AVM.
|
@@ -1,29 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'avm/data/instance/unit'
|
4
|
-
require 'eac_ruby_utils/core_ext'
|
5
|
-
require 'open-uri'
|
6
|
-
|
7
|
-
module Avm
|
8
|
-
module Stereotypes
|
9
|
-
module EacRedmineBase0
|
10
|
-
class DataUnit < ::Avm::Data::Instance::Unit
|
11
|
-
common_constructor :instance
|
12
|
-
|
13
|
-
EXTENSION = '.tar'
|
14
|
-
|
15
|
-
def do_dump(data_path)
|
16
|
-
::File.open(data_path, 'wb') do |file|
|
17
|
-
file << URI.parse(export_url).read
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def export_url
|
22
|
-
uri = ::Addressable::URI.parse(instance.read_entry('web.url')) + '/backup/export'
|
23
|
-
uri.query_values = { key: instance.read_entry('admin.api_key') }
|
24
|
-
uri.to_s
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'avm/stereotypes/eac_webapp_base0/deploy'
|
4
|
-
require 'eac_ruby_utils/ruby'
|
5
|
-
|
6
|
-
module Avm
|
7
|
-
module Stereotypes
|
8
|
-
module EacRedmineBase0
|
9
|
-
class Deploy < ::Avm::Stereotypes::EacWebappBase0::Deploy
|
10
|
-
set_callback :assert_instance_branch, :after, :run_installer
|
11
|
-
|
12
|
-
def run_installer
|
13
|
-
infom 'Running installer'
|
14
|
-
::EacRubyUtils::Ruby.on_clean_environment do
|
15
|
-
installer_command.system!
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def installer_command
|
20
|
-
instance.host_env.command(installer_path, install_task)
|
21
|
-
end
|
22
|
-
|
23
|
-
def installer_path
|
24
|
-
::File.join(instance.read_entry(:fs_path), 'plugins', 'redmine_installer', 'installer',
|
25
|
-
'run.sh')
|
26
|
-
end
|
27
|
-
|
28
|
-
def install_task
|
29
|
-
if instance.read_entry_optional('web.path').present?
|
30
|
-
'redmine_as_apache_path'
|
31
|
-
else
|
32
|
-
'redmine_as_apache_base'
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'avm/stereotypes/eac_redmine_base0/data_unit'
|
4
|
-
require 'avm/stereotypes/eac_ubuntu_base0/docker_image'
|
5
|
-
require 'avm/stereotypes/eac_webapp_base0/instance'
|
6
|
-
require 'avm/stereotypes/rails/instance'
|
7
|
-
|
8
|
-
module Avm
|
9
|
-
module Stereotypes
|
10
|
-
module EacRedmineBase0
|
11
|
-
class Instance < ::Avm::Stereotypes::EacWebappBase0::Instance
|
12
|
-
include ::Avm::Stereotypes::Rails::Instance
|
13
|
-
|
14
|
-
FILES_UNITS = { files: 'files' }.freeze
|
15
|
-
|
16
|
-
def docker_image_class
|
17
|
-
::Avm::Stereotypes::EacUbuntuBase0::DockerImage
|
18
|
-
end
|
19
|
-
|
20
|
-
def docker_run_arguments
|
21
|
-
[
|
22
|
-
'--volume', "#{read_entry(:fs_path)}:/home/myuser/eac_redmine_base0",
|
23
|
-
'--publish', "#{read_entry(:ssh_port)}:22",
|
24
|
-
'--publish', "#{read_entry(:http_port)}:80",
|
25
|
-
'--publish', "#{read_entry(:https_port)}:443"
|
26
|
-
]
|
27
|
-
end
|
28
|
-
|
29
|
-
def data_package
|
30
|
-
@data_package ||= ::Avm::Data::Instance::Package.new(
|
31
|
-
self,
|
32
|
-
units: {
|
33
|
-
all: ::Avm::Stereotypes::EacRedmineBase0::DataUnit.new(self)
|
34
|
-
}
|
35
|
-
)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|