avm-eac_redmine_base0 0.1.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 +7 -0
- data/lib/avm/eac_redmine_base0.rb +9 -0
- data/lib/avm/eac_redmine_base0/apache_host.rb +10 -0
- data/lib/avm/eac_redmine_base0/core_update.rb +110 -0
- data/lib/avm/eac_redmine_base0/data_unit.rb +55 -0
- data/lib/avm/eac_redmine_base0/deploy.rb +36 -0
- data/lib/avm/eac_redmine_base0/instance.rb +37 -0
- data/lib/avm/eac_redmine_base0/instances/docker_image.rb +55 -0
- data/lib/avm/eac_redmine_base0/patches/object/template.rb +7 -0
- data/lib/avm/eac_redmine_base0/version.rb +7 -0
- metadata +92 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 96cb101bbbfb3397e390b6120b126b5aab0f04abc3e3ebced5518162bd32f5da
|
4
|
+
data.tar.gz: 53cca61ba5273402ea1e1de68c1fdb1c797cb54e859046477ef7bcd1a27ede07
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 0f8b7648564e59e10cc2d02b21f712298dcc6ab766a3e075b50183c3cc8adb17b46fa2b6ac71dcad0df58c244b6ec7ab7f968f95b06154928cd2632c541d89fe
|
7
|
+
data.tar.gz: 83007b7a9f97b31a3b1670beb29879baa3f9cbba693289ae15502d9f0a3d96380fba7cd570becbe26e985112d4d4f2ba6859a91f309384da68d9c25d15b006b9
|
@@ -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_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,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/data/instance/unit'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
require 'curb'
|
6
|
+
require 'open-uri'
|
7
|
+
|
8
|
+
module Avm
|
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 do_load(data_path)
|
22
|
+
do_load_by_web(data_path) || do_load_by_rake(data_path) || raise('Failed to load')
|
23
|
+
end
|
24
|
+
|
25
|
+
def do_load_by_web(data_path)
|
26
|
+
c = Curl::Easy.new(import_url)
|
27
|
+
c.multipart_form_post = true
|
28
|
+
c.http_post(Curl::PostField.file('redmine_with_git_tableless_load[path]', data_path))
|
29
|
+
c.perform
|
30
|
+
true
|
31
|
+
rescue Curl::Err::ConnectionFailedError
|
32
|
+
false
|
33
|
+
end
|
34
|
+
|
35
|
+
def do_load_by_rake(data_path)
|
36
|
+
instance.bundle('exec', 'rake', "redmine_with_git:load:all[#{data_path}]").system
|
37
|
+
true
|
38
|
+
end
|
39
|
+
|
40
|
+
def export_url
|
41
|
+
url('/backup/export')
|
42
|
+
end
|
43
|
+
|
44
|
+
def import_url
|
45
|
+
url('/backup/import.json')
|
46
|
+
end
|
47
|
+
|
48
|
+
def url(path)
|
49
|
+
uri = ::Addressable::URI.parse(instance.read_entry('web.url')) + path
|
50
|
+
uri.query_values = { key: instance.read_entry('admin.api_key') }
|
51
|
+
uri.to_s
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/eac_webapp_base0/deploy'
|
4
|
+
require 'eac_ruby_utils/ruby'
|
5
|
+
|
6
|
+
module Avm
|
7
|
+
module EacRedmineBase0
|
8
|
+
class Deploy < ::Avm::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(::Avm::Instances::EntryKeys::FS_PATH), 'plugins',
|
24
|
+
'redmine_installer', 'installer', '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,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/eac_redmine_base0/data_unit'
|
4
|
+
require 'avm/eac_redmine_base0/instances/docker_image'
|
5
|
+
require 'avm/eac_webapp_base0/instance'
|
6
|
+
require 'avm/eac_rails_base1/instance'
|
7
|
+
|
8
|
+
module Avm
|
9
|
+
module EacRedmineBase0
|
10
|
+
class Instance < ::Avm::EacRailsBase1::Instance
|
11
|
+
FILES_UNITS = { files: 'files' }.freeze
|
12
|
+
|
13
|
+
def docker_image_class
|
14
|
+
::Avm::EacRedmineBase0::Instances::DockerImage
|
15
|
+
end
|
16
|
+
|
17
|
+
def docker_run_arguments
|
18
|
+
[
|
19
|
+
'--volume',
|
20
|
+
"#{read_entry(::Avm::Instances::EntryKeys::FS_PATH)}:/home/myuser/eac_redmine_base0",
|
21
|
+
'--publish', "#{read_entry(:ssh_port)}:22",
|
22
|
+
'--publish', "#{read_entry(:http_port)}:80",
|
23
|
+
'--publish', "#{read_entry(:https_port)}:443"
|
24
|
+
]
|
25
|
+
end
|
26
|
+
|
27
|
+
def data_package
|
28
|
+
@data_package ||= ::Avm::Data::Instance::Package.new(
|
29
|
+
self,
|
30
|
+
units: {
|
31
|
+
all: ::Avm::EacRedmineBase0::DataUnit.new(self)
|
32
|
+
}
|
33
|
+
)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
require 'avm/instances/docker_image'
|
5
|
+
require 'avm/eac_redmine_base0/patches/object/template'
|
6
|
+
|
7
|
+
module Avm
|
8
|
+
module EacRedmineBase0
|
9
|
+
module Instances
|
10
|
+
class DockerImage < ::Avm::Instances::DockerImage
|
11
|
+
enable_simple_cache
|
12
|
+
|
13
|
+
REDMINE_SOURCE_HOST_SUBPATH = 'redmine_source'
|
14
|
+
|
15
|
+
def avm_fs_cache_object_id
|
16
|
+
instance.id
|
17
|
+
end
|
18
|
+
|
19
|
+
def redmine_user
|
20
|
+
'redmine'
|
21
|
+
end
|
22
|
+
|
23
|
+
def redmine_user_home
|
24
|
+
"/home/#{redmine_user}"
|
25
|
+
end
|
26
|
+
|
27
|
+
def redmine_path
|
28
|
+
"#{redmine_user_home}/redmine_app"
|
29
|
+
end
|
30
|
+
|
31
|
+
def start_path
|
32
|
+
'/start.sh'
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def git_repo_uncached
|
38
|
+
::EacGit::Local.new(instance.source_instance.fs_path)
|
39
|
+
end
|
40
|
+
|
41
|
+
def redmine_source_git_id
|
42
|
+
git_repo.rev_parse('HEAD')
|
43
|
+
end
|
44
|
+
|
45
|
+
def redmine_source_path_uncached
|
46
|
+
r = provide_dir.join(REDMINE_SOURCE_HOST_SUBPATH)
|
47
|
+
::FileUtils.rm_rf(r.to_path)
|
48
|
+
r.mkpath
|
49
|
+
git_repo.commit(redmine_source_git_id).archive_to_dir(r).system!
|
50
|
+
REDMINE_SOURCE_HOST_SUBPATH
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
metadata
ADDED
@@ -0,0 +1,92 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: avm-eac_redmine_base0
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Put here the authors
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-07-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: avm-eac_rails_base1
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: eac_ruby_utils
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.68'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.68'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: eac_ruby_gem_support
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.2'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.2'
|
55
|
+
description:
|
56
|
+
email:
|
57
|
+
executables: []
|
58
|
+
extensions: []
|
59
|
+
extra_rdoc_files: []
|
60
|
+
files:
|
61
|
+
- lib/avm/eac_redmine_base0.rb
|
62
|
+
- lib/avm/eac_redmine_base0/apache_host.rb
|
63
|
+
- lib/avm/eac_redmine_base0/core_update.rb
|
64
|
+
- lib/avm/eac_redmine_base0/data_unit.rb
|
65
|
+
- lib/avm/eac_redmine_base0/deploy.rb
|
66
|
+
- lib/avm/eac_redmine_base0/instance.rb
|
67
|
+
- lib/avm/eac_redmine_base0/instances/docker_image.rb
|
68
|
+
- lib/avm/eac_redmine_base0/patches/object/template.rb
|
69
|
+
- lib/avm/eac_redmine_base0/version.rb
|
70
|
+
homepage:
|
71
|
+
licenses: []
|
72
|
+
metadata: {}
|
73
|
+
post_install_message:
|
74
|
+
rdoc_options: []
|
75
|
+
require_paths:
|
76
|
+
- lib
|
77
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
requirements: []
|
88
|
+
rubygems_version: 3.0.9
|
89
|
+
signing_key:
|
90
|
+
specification_version: 4
|
91
|
+
summary: Put here de description.
|
92
|
+
test_files: []
|