avm-eac_redmine_base0 0.2.2 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2bde6b44c9b45789f145275adf552c902a8501384e9f389b730a848fa4951ef8
4
- data.tar.gz: 71a61503c6a7439752fc639816376304747812a656a0b25b27bfb6c494398e0f
3
+ metadata.gz: 2e3daee4662a3e04b16eac0ac803911eaacae3b4a8ea69ee1db9a15f4681debb
4
+ data.tar.gz: 3718377ec646aac5b91e61dbec2a3eaf64f634c1078a27f42a976e53ddbf46b3
5
5
  SHA512:
6
- metadata.gz: e6bbbde506a2669049707826bec5757b88615e940e398d4e5a9681aec9e3d987d7f7a9eaea34605116d80d3fc143f55c84256caddc456159306b0d601e1b091b
7
- data.tar.gz: c4c3c24837c2a82fe54818433ed650aee1e67c529be0b32207f59ad27b2fb85d23e2a2e9b764c6cff5467d2e42becbca6a446500c41c583cd442b71b07416914
6
+ metadata.gz: ed8cbaa1d5bb6af10cf5be4facc166de875a3a975288e3373423e4ec93a4e7f41c247447aaeb1edacf08a1cdb0449570720b0e9b91c8672fbd0e354e2ce66c97
7
+ data.tar.gz: 19cd2a503c4c4e13a915352af8ce2320e6e8c947d01d9d5afcdd81e4dc4cd352d8587deffb2de544b377c6a0afb08975896b36bb98fa7e40466e541b04095ea5
@@ -10,11 +10,13 @@ module Avm
10
10
  class DataUnit < ::Avm::Data::Instance::Unit
11
11
  common_constructor :instance
12
12
 
13
+ EXPORT_PATH = '/backup/export'
13
14
  EXTENSION = '.tar'
15
+ IMPORT_PATH = '/backup/import.json'
14
16
 
15
17
  def do_dump(data_path)
16
18
  ::File.open(data_path, 'wb') do |file|
17
- file << URI.parse(export_url).read
19
+ file << export_request.response.body_data_or_raise
18
20
  end
19
21
  end
20
22
 
@@ -37,18 +39,12 @@ module Avm
37
39
  true
38
40
  end
39
41
 
40
- def export_url
41
- url('/backup/export')
42
+ def export_request
43
+ instance.rest_api.request(EXPORT_PATH)
42
44
  end
43
45
 
44
46
  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
47
+ instance.rest_api.build_service_url(IMPORT_PATH).to_s
52
48
  end
53
49
  end
54
50
  end
@@ -1,13 +1,17 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'addressable/uri'
3
4
  require 'avm/eac_redmine_base0/data_unit'
4
5
  require 'avm/eac_redmine_base0/instances/docker_image'
6
+ require 'avm/eac_redmine_base0/rest_api'
5
7
  require 'avm/eac_webapp_base0/instance'
6
8
  require 'avm/eac_rails_base1/instance'
7
9
 
8
10
  module Avm
9
11
  module EacRedmineBase0
10
12
  class Instance < ::Avm::EacRailsBase1::Instance
13
+ enable_simple_cache
14
+
11
15
  FILES_UNITS = { files: 'files' }.freeze
12
16
 
13
17
  def docker_image_class
@@ -32,6 +36,22 @@ module Avm
32
36
  }
33
37
  )
34
38
  end
39
+
40
+ # @return [Addressable::URI]
41
+ def root_url
42
+ r = ::Addressable::URI.parse(read_entry(::Avm::Instances::EntryKeys::WEB_URL))
43
+ r.query_values = nil
44
+ r
45
+ end
46
+
47
+ private
48
+
49
+ # @return [Avm::EacRedmineBase0::RestApi]
50
+ def rest_api_uncached
51
+ url = root_url
52
+ url.query_values = { key: read_entry('api.key') }
53
+ ::Avm::EacRedmineBase0::RestApi.new(url)
54
+ end
35
55
  end
36
56
  end
37
57
  end
@@ -1,8 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'eac_ruby_utils/core_ext'
4
+ require 'avm/eac_ubuntu_base0/instances/base'
4
5
  require 'avm/instances/docker_image'
5
- require 'avm/eac_redmine_base0/patches/object/template'
6
+ require 'eac_templates/core_ext'
6
7
 
7
8
  module Avm
8
9
  module EacRedmineBase0
@@ -10,30 +11,56 @@ module Avm
10
11
  class DockerImage < ::Avm::Instances::DockerImage
11
12
  enable_simple_cache
12
13
 
14
+ BASE_IMAGE = 'ubuntu:20.04'
15
+ INSTALLER_TARGET_TASK = 'redmine_as_apache_base'
16
+ DATABASE_INTERNAL_HOSTNAME = 'localhost'
13
17
  REDMINE_SOURCE_HOST_SUBPATH = 'redmine_source'
14
18
 
15
19
  def avm_fs_cache_object_id
16
20
  instance.id
17
21
  end
18
22
 
23
+ def base_image
24
+ eac_ubuntu_base0_instance.docker_image.provide.id
25
+ end
26
+
27
+ def database_internal
28
+ instance.entry(::Avm::Instances::EntryKeys::DATABASE_HOSTNAME).value ==
29
+ DATABASE_INTERNAL_HOSTNAME
30
+ end
31
+
32
+ def installer_target_task
33
+ INSTALLER_TARGET_TASK
34
+ end
35
+
19
36
  def redmine_user
20
- 'redmine'
37
+ eac_ubuntu_base0_instance.docker_image.user_name
21
38
  end
22
39
 
23
40
  def redmine_user_home
24
- "/home/#{redmine_user}"
41
+ eac_ubuntu_base0_instance.docker_image.user_home
25
42
  end
26
43
 
27
44
  def redmine_path
28
45
  "#{redmine_user_home}/redmine_app"
29
46
  end
30
47
 
48
+ def skip_database
49
+ ENV['SKIP_DATABASE']
50
+ end
51
+
31
52
  def start_path
32
53
  '/start.sh'
33
54
  end
34
55
 
35
56
  private
36
57
 
58
+ def eac_ubuntu_base0_instance
59
+ r = ::Avm::EacUbuntuBase0::Instances::Base.by_id(instance.id)
60
+ r.docker_image_options = instance.docker_image_options
61
+ r
62
+ end
63
+
37
64
  def git_repo_uncached
38
65
  ::EacGit::Local.new(instance.source_instance.fs_path)
39
66
  end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_rest/api'
5
+
6
+ module Avm
7
+ module EacRedmineBase0
8
+ class RestApi < ::EacRest::Api
9
+ end
10
+ end
11
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacRedmineBase0
5
- VERSION = '0.2.2'
5
+ VERSION = '0.4.0'
6
6
  end
7
7
  end
@@ -0,0 +1,27 @@
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 postgresql_version='%%POSTGRESQL.VERSION%%'
6
+ export rvm_ruby='ruby-%%RUBY.VERSION%%'
7
+ export redmine_git_hosting_ssh_key_name=redmine_git_hosting_id
8
+ if [ '%%WEB.SCHEME%%' == 'https' ]; then
9
+ export address_https='true'
10
+ else
11
+ export address_https='false'
12
+ fi
13
+ export address_host='%%WEB.AUTHORITY%%'
14
+ export address_path='%%WEB.PATH%%'
15
+ export git_repositories_hierarchical_organisation=false
16
+
17
+ # Mail settings
18
+ export smtp_server='%%MAILER.SMTP.ADDRESS%%'
19
+ export smtp_port='%%MAILER.SMTP.PORT%%'
20
+ export smtp_domain='%%MAILER.SMTP.DOMAIN%%'
21
+ export smtp_tls='%%MAILER_SMTP_TLS%%'
22
+ export smtp_enable_starttls_auto='%%MAILER_SMTP_STARTTLS_AUTO%%'
23
+ export smtp_openssl_verify_mode='%%MAILER_SMTP_OPENSSL_VERIFY_MODE%%'
24
+ export smtp_authentication='%%MAILER.SMTP.AUTHENTICATION%%'
25
+ export smtp_username='%%MAILER.SMTP.USERNAME%%'
26
+ export smtp_password='%%MAILER.SMTP.PASSWORD%%'
27
+ export mail_from='%%MAILER.FROM%%'
@@ -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"] %>
@@ -0,0 +1,43 @@
1
+ FROM '%%base_image%%'
2
+ USER root
3
+ RUN apt-get update -y
4
+ RUN DEBIAN_FRONTEND=noninteractive apt-get install -y sudo tzdata git apt-utils
5
+ RUN ln -fs /usr/share/zoneinfo/America/Sao_Paulo /etc/localtime
6
+ RUN dpkg-reconfigure --frontend noninteractive tzdata
7
+
8
+ # Redmine / Código-fonte
9
+ RUN echo '%%redmine_source_git_id%%' '%%redmine_user_home%%/redmine_source_git_id'
10
+ ADD '%%redmine_source_path%%' '%%redmine_path%%/'
11
+ RUN chown -R '%%redmine_user%%:%%redmine_user%%' '%%redmine_user_home%%'
12
+
13
+ # Redmine / Configuração de instalação
14
+ USER '%%redmine_user%%'
15
+ WORKDIR '%%redmine_user_home%%'
16
+ COPY install_settings.sh "%%redmine_path%%/config/install.sh"
17
+
18
+ # Redmine / Instalação
19
+ USER '%%redmine_user%%'
20
+ WORKDIR '%%redmine_user_home%%'
21
+ RUN SKIP_DATABASE='%%skip_database%%' \
22
+ '%%redmine_path%%/plugins/redmine_installer/installer/run.sh' '%%installer_target_task%%'
23
+
24
+ # Apache / Configuração do virtualhost
25
+ COPY apache_http_virtualhost.conf /etc/apache2/sites-available/redmine.conf
26
+ COPY apache_https_virtualhost.conf /etc/apache2/sites-available/redmine_ssl.conf
27
+ USER root
28
+ RUN a2ensite redmine
29
+ RUN a2ensite redmine_ssl
30
+ RUN a2dissite 000-default
31
+ RUN a2enmod ssl
32
+ RUN service apache2 restart
33
+
34
+ # Portas
35
+ EXPOSE 80/tcp 443/tcp 22/tcp
36
+
37
+ # Execução
38
+ COPY start.sh '%%start_path%%'
39
+ RUN /bin/chmod +x '%%start_path%%'
40
+ RUN /bin/chown '%%redmine_user%%:%%redmine_user%%' '%%start_path%%'
41
+ USER '%%redmine_user%%'
42
+ WORKDIR '%%redmine_user_home%%'
43
+ CMD '%%start_path%%'
@@ -0,0 +1,10 @@
1
+ <VirtualHost _default_:80>
2
+ DocumentRoot "%%redmine_path%%/public"
3
+ PassengerEnabled On
4
+
5
+ <Directory "%%redmine_path%%/public" >
6
+ Allow from all
7
+ Options -MultiViews
8
+ Require all granted
9
+ </Directory>
10
+ </VirtualHost>
@@ -0,0 +1,16 @@
1
+ <IfModule mod_ssl.c>
2
+ <VirtualHost _default_:443>
3
+ SSLEngine on
4
+ SSLCertificateFile /etc/ssl/certs/ssl-cert-snakeoil.pem
5
+ SSLCertificateKeyFile /etc/ssl/private/ssl-cert-snakeoil.key
6
+
7
+ DocumentRoot "%%redmine_path%%/public"
8
+ PassengerEnabled On
9
+
10
+ <Directory "%%redmine_path%%/public" >
11
+ Allow from all
12
+ Options -MultiViews
13
+ Require all granted
14
+ </Directory>
15
+ </VirtualHost>
16
+ </IfModule>
@@ -0,0 +1,33 @@
1
+ # Database
2
+ export postgresql_internal='%%database_internal%%'
3
+ export postgresql_host='%%DATABASE.HOSTNAME%%'
4
+ export postgresql_port='%%DATABASE.PORT%%'
5
+ export postgresql_user='%%DATABASE.USERNAME%%'
6
+ export postgresql_password='%%DATABASE.PASSWORD%%'
7
+ export postgresql_database='%%DATABASE.NAME%%'
8
+ export postgresql_extra_settings='%%DATABASE.EXTRA%%'
9
+
10
+ # Git Hosting
11
+ export redmine_git_hosting_ssh_key_name=redmine_git_hosting_id
12
+ export git_repositories_hierarchical_organisation=false
13
+
14
+ # Web
15
+ if [ '%%WEB.SCHEME%%' == 'https' ]; then
16
+ export address_https='true'
17
+ else
18
+ export address_https='false'
19
+ fi
20
+ export address_host='%%WEB.AUTHORITY%%'
21
+ export address_path='%%WEB.PATH%%'
22
+
23
+ # Mail settings
24
+ export smtp_server='%%MAILER.SMTP.ADDRESS%%'
25
+ export smtp_port='%%MAILER.SMTP.PORT%%'
26
+ export smtp_domain='%%MAILER.SMTP.DOMAIN%%'
27
+ export smtp_tls='%%MAILER.SMTP.TLS%%'
28
+ export smtp_enable_starttls_auto='%%MAILER.SMTP.STARTTLS_AUTO%%'
29
+ export smtp_openssl_verify_mode='%%MAILER.SMTP.OPENSSL_VERIFY_MODE%%'
30
+ export smtp_authentication='%%MAILER.SMTP.AUTHENTICATION%%'
31
+ export smtp_username='%%MAILER.SMTP.USERNAME%%'
32
+ export smtp_password='%%MAILER.SMTP.PASSWORD%%'
33
+ export mail_from='%%MAILER.FROM%%'
@@ -0,0 +1,52 @@
1
+ #!/bin/bash
2
+
3
+ set -u
4
+ set -e
5
+
6
+ source '%%redmine_path%%/plugins/redmine_installer/installer/environment.sh'
7
+
8
+ function title() {
9
+ infom ">>>> $1 <<<<"
10
+ }
11
+
12
+ function redmine_install() {
13
+ title 'Installing Redmine...'
14
+ "$INSTALL_ROOT/run.sh" '%%installer_target_task%%'
15
+ }
16
+
17
+ function apache_start() {
18
+ title 'Restarting Apache HTTPD service...'
19
+ sudo service apache2 restart
20
+ }
21
+
22
+ function ssh_start() {
23
+ title 'Restarting SSH service...'
24
+ sudo service ssh restart
25
+ }
26
+
27
+ function postgresql_start() {
28
+ if bool_r "$SKIP_DATABASE"; then return 0; fi
29
+ if ! bool_r "$postgresql_internal"; then return 0; fi
30
+
31
+ title 'Restarting PostgresSQL service...'
32
+ sudo service postgresql restart
33
+ }
34
+
35
+ function request_http_interface() {
36
+ title 'Requesting web interface...'
37
+ wget 'http://localhost' &> /dev/null
38
+ }
39
+
40
+ function redmine_log() {
41
+ title 'Reading production log...'
42
+ LOG_FILE='%%redmine_path%%/log/production.log'
43
+ printf " * tail -f \"$LOG_FILE\":\n"
44
+ sudo tail -f "$LOG_FILE"
45
+ }
46
+
47
+ redmine_install
48
+ apache_start
49
+ ssh_start
50
+ postgresql_start
51
+ request_http_interface
52
+ redmine_log
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avm-eac_redmine_base0
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Put here the authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-25 00:00:00.000000000 Z
11
+ date: 2022-02-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avm-eac_rails_base1
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0.1'
27
+ - !ruby/object:Gem::Dependency
28
+ name: avm-eac_ubuntu_base0
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.2'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.2'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: curb
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +66,20 @@ dependencies:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
68
  version: '0.4'
69
+ - !ruby/object:Gem::Dependency
70
+ name: eac_rest
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.4'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.4'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: eac_ruby_utils
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -93,8 +121,15 @@ files:
93
121
  - lib/avm/eac_redmine_base0/deploy.rb
94
122
  - lib/avm/eac_redmine_base0/instance.rb
95
123
  - lib/avm/eac_redmine_base0/instances/docker_image.rb
96
- - lib/avm/eac_redmine_base0/patches/object/template.rb
124
+ - lib/avm/eac_redmine_base0/rest_api.rb
97
125
  - lib/avm/eac_redmine_base0/version.rb
126
+ - template/avm/eac_redmine_base0/deploy/config/install.sh.template
127
+ - template/avm/eac_redmine_base0/deploy/config/secrets.yml
128
+ - template/avm/eac_redmine_base0/instances/docker_image/Dockerfile.template
129
+ - template/avm/eac_redmine_base0/instances/docker_image/apache_http_virtualhost.conf.template
130
+ - template/avm/eac_redmine_base0/instances/docker_image/apache_https_virtualhost.conf.template
131
+ - template/avm/eac_redmine_base0/instances/docker_image/install_settings.sh.template
132
+ - template/avm/eac_redmine_base0/instances/docker_image/start.sh.template
98
133
  homepage:
99
134
  licenses: []
100
135
  metadata: {}
@@ -1,7 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/core_ext'
4
- require 'eac_templates/patches/object/template'
5
-
6
- ::EacTemplates::Searcher.default.included_paths <<
7
- __dir__.to_pathname.expand_path.parent_n(5).join('template')