dora_web_upgrader 1.0.0 → 2.0.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/CHANGELOG.md +25 -0
- data/README.md +7 -2
- data/app/controllers/dora_web_upgrader/upgrade_controller.rb +6 -10
- data/app/jobs/dora_web_upgrader/upgrade_job.rb +9 -8
- data/app/lib/reporter.rb +19 -0
- data/app/mailers/dora_web_upgrader/upgrade_mailer.rb +3 -11
- data/app/views/dora_web_upgrader/upgrade_mailer/upgrade_performed.text.erb +3 -1
- data/lib/dora_web_upgrader/version.rb +1 -1
- metadata +20 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1bd3bf840de8b4de445ff80c114f26907480ff26ff1db983bb5b5e70df0626ad
|
4
|
+
data.tar.gz: dec86c33da28054d4b4125a3404c53e853cc159398263b450684650e68e8d7ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '05128108627afeba66ddeffc7805d3765854865693b52c8565ba7840fa89865bfc14f4df1b6e7a591bc9a2c4a0163dae7884359b01ba7ecf6783e9fa88d1cb81'
|
7
|
+
data.tar.gz: d4e3dd88d9229165bbb8c1d5e9cdc0089a5ebab3beef144025237a5b84191c57fcd08e3f7538065c457119d0837c52584fc23791bbb58a0ca6def04ba071f9b7
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# Changelog
|
2
|
+
|
3
|
+
All notable changes to this project will be documented in this file.
|
4
|
+
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
7
|
+
|
8
|
+
## [2.0.0] -- 2023-01-20
|
9
|
+
|
10
|
+
- Require Ruby 3.1
|
11
|
+
- Require Rails 6-7.
|
12
|
+
|
13
|
+
## [1.0.1] -- 2023-01-19
|
14
|
+
|
15
|
+
### Fixed
|
16
|
+
|
17
|
+
- The e-mail report did not work reliably.
|
18
|
+
- Fixed "invalid authenticity token" errors
|
19
|
+
- Fixed several typos in the gemspec file.
|
20
|
+
|
21
|
+
## [1.0.0] -- 2021-05-13
|
22
|
+
|
23
|
+
- Initial release.
|
24
|
+
|
25
|
+
[1.0.0]: https://github.com/bovender/dora_web_upgrader/releases/tag/v1.0.0
|
data/README.md
CHANGED
@@ -20,7 +20,7 @@ e-mail is also send, but no further action is triggered.
|
|
20
20
|
Add this line to your application's Gemfile:
|
21
21
|
|
22
22
|
```ruby
|
23
|
-
gem 'dora_web_upgrader',
|
23
|
+
gem 'dora_web_upgrader', '~> 1.0'
|
24
24
|
```
|
25
25
|
|
26
26
|
And then execute:
|
@@ -74,7 +74,7 @@ in the Rails container and run the tests like so:
|
|
74
74
|
|
75
75
|
```bash
|
76
76
|
$ cd dora_web_upgrader/
|
77
|
-
$ docker
|
77
|
+
$ docker compose -f ../dora/docker-compose.yml --env-file .env up -d
|
78
78
|
Creating network "dora_default" with the default driver
|
79
79
|
Creating dora_selenium_1 ... done
|
80
80
|
Creating dora_db_1 ... done
|
@@ -94,6 +94,11 @@ Finished in 0.180743s, 33.1962 runs/s, 94.0560 assertions/s.
|
|
94
94
|
6 runs, 17 assertions, 0 failures, 0 errors, 0 skips
|
95
95
|
```
|
96
96
|
|
97
|
+
Note that with recent versions of docker compose, the `.env` file is no longer
|
98
|
+
read from the current working directory, but from the directory where the
|
99
|
+
`docker-compose.yml` file resides. Therefore, you must add the `--env-file`
|
100
|
+
option.
|
101
|
+
|
97
102
|
(There are several containers included in the `docker-compose.yml` file that
|
98
103
|
are not needed to test DoraWebUpgrader, but are part of [dora].)
|
99
104
|
|
@@ -2,22 +2,18 @@
|
|
2
2
|
|
3
3
|
module DoraWebUpgrader
|
4
4
|
class UpgradeController < ApplicationController
|
5
|
+
protect_from_forgery with: :null_session
|
5
6
|
layout false
|
6
7
|
|
7
8
|
def upgrade
|
8
9
|
secret = DoraWebUpgrader.config.secret
|
9
|
-
raise 'DoraWebUpgrader.secret is not configured!' if secret.blank?
|
10
|
+
raise 'DoraWebUpgrader.config.secret is not configured!' if secret.blank?
|
10
11
|
|
11
12
|
@payload = JSON.parse(request.raw_post)
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
@message = 'invalid secret'
|
17
|
-
end
|
18
|
-
|
19
|
-
UpgradeMailer.upgrade_started(@message, @payload).deliver_later
|
20
|
-
|
13
|
+
ok = @payload['secret'] == secret
|
14
|
+
@message = ok ? 'ok' : 'invalid secret'
|
15
|
+
UpgradeMailer.upgrade_started(@message, @payload).deliver_now
|
16
|
+
UpgradeJob.perform_now if ok
|
21
17
|
render json: { message: @message }
|
22
18
|
end
|
23
19
|
end
|
@@ -8,16 +8,17 @@ module DoraWebUpgrader
|
|
8
8
|
# Do not upgrade developement environemnts as this might inadvertently
|
9
9
|
# overwrite uncommitted changes.
|
10
10
|
if %w[production staging].include? Rails.env
|
11
|
-
logger.warn '******** PERFORMING APPLICATION UPGRADE ********'
|
12
|
-
|
13
|
-
|
14
|
-
|
11
|
+
logger.warn '******** DoraWebUpgrader: PERFORMING APPLICATION UPGRADE ********'
|
12
|
+
tempfile = Tempfile.new 'dora_web_upgrader_'
|
13
|
+
begin
|
14
|
+
tempfile.close
|
15
|
+
exec "/usr/local/bin/upgrade-app.sh '#{tempfile.path}'"
|
16
|
+
ensure
|
17
|
+
tempfile.unlink
|
18
|
+
end
|
15
19
|
else
|
16
|
-
|
17
|
-
logger.warn output
|
18
|
-
result = -1
|
20
|
+
logger.warn "Rails environment: #{Rails.env} -- not upgrading..."
|
19
21
|
end
|
20
|
-
UpgradeMailer.upgrade_performed(output, result).deliver_now
|
21
22
|
end
|
22
23
|
end
|
23
24
|
end
|
data/app/lib/reporter.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
module DoraWebUpgrader
|
2
|
+
# Sends an e-mail report of the upgrade process
|
3
|
+
# This is invoked by Dora's upgrade-app.sh script via rails runner.
|
4
|
+
class Reporter
|
5
|
+
class << self
|
6
|
+
def run(message, log_file)
|
7
|
+
log = File.read(log_file).sanitize
|
8
|
+
message = message.sanitize
|
9
|
+
UpgradeMailer.upgrade_performed(message, log).deliver_now
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def sanitize(str)
|
15
|
+
str.to_s.html_safe
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -9,17 +9,9 @@ module DoraWebUpgrader
|
|
9
9
|
mail subject: "[#{app_identifier} #{Rails.env}] upgrade started"
|
10
10
|
end
|
11
11
|
|
12
|
-
def upgrade_performed(
|
13
|
-
@
|
14
|
-
|
15
|
-
when -1
|
16
|
-
'dry run'
|
17
|
-
when 0
|
18
|
-
'succeeded'
|
19
|
-
else
|
20
|
-
'failed'
|
21
|
-
end
|
22
|
-
mail subject: "[#{app_identifier} #{Rails.env}] upgrade #{s}"
|
12
|
+
def upgrade_performed(message, log)
|
13
|
+
@message, @log = message, log
|
14
|
+
mail subject: "[#{app_identifier} #{Rails.env}] upgrade: #{message}"
|
23
15
|
end
|
24
16
|
|
25
17
|
private
|
metadata
CHANGED
@@ -1,36 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dora_web_upgrader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Kraus
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '6.0'
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '8.0'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
|
-
- - "
|
27
|
+
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '6.0'
|
27
|
-
|
28
|
-
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '8.0'
|
33
|
+
description: Make use of web hooks that are triggered by pushing code to a repository
|
34
|
+
and have your application taking care of upgrading itself.
|
29
35
|
email: bovender@bovender.de
|
30
36
|
executables: []
|
31
37
|
extensions: []
|
32
38
|
extra_rdoc_files: []
|
33
39
|
files:
|
40
|
+
- CHANGELOG.md
|
34
41
|
- MIT-LICENSE
|
35
42
|
- README.md
|
36
43
|
- Rakefile
|
@@ -40,6 +47,7 @@ files:
|
|
40
47
|
- app/controllers/dora_web_upgrader/upgrade_controller.rb
|
41
48
|
- app/jobs/dora_web_upgrader/application_job.rb
|
42
49
|
- app/jobs/dora_web_upgrader/upgrade_job.rb
|
50
|
+
- app/lib/reporter.rb
|
43
51
|
- app/mailers/dora_web_upgrader/application_mailer.rb
|
44
52
|
- app/mailers/dora_web_upgrader/upgrade_mailer.rb
|
45
53
|
- app/views/dora_web_upgrader/upgrade_mailer/upgrade_performed.text.erb
|
@@ -53,14 +61,14 @@ files:
|
|
53
61
|
- lib/dora_web_upgrader/version.rb
|
54
62
|
- lib/generators/dora_web_upgrader/install_generator.rb
|
55
63
|
- lib/generators/dora_web_upgrader/templates/config/initializers/dora_web_upgrader.rb
|
56
|
-
homepage: https://
|
64
|
+
homepage: https://github.com/bovender/dora_web_upgrader
|
57
65
|
licenses:
|
58
66
|
- MIT
|
59
67
|
metadata:
|
60
68
|
allowed_push_host: https://rubygems.org
|
61
|
-
homepage_uri: https://
|
62
|
-
source_code_uri: https://
|
63
|
-
changelog_uri: https://
|
69
|
+
homepage_uri: https://github.com/bovender/dora_web_upgrader
|
70
|
+
source_code_uri: https://github.com/bovender/dora_web_upgrader
|
71
|
+
changelog_uri: https://github.com/bovender/dora_web_upgrader/blob/main/CHANGELOG.md
|
64
72
|
post_install_message:
|
65
73
|
rdoc_options: []
|
66
74
|
require_paths:
|
@@ -69,14 +77,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
69
77
|
requirements:
|
70
78
|
- - ">="
|
71
79
|
- !ruby/object:Gem::Version
|
72
|
-
version: '
|
80
|
+
version: '3.1'
|
73
81
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
74
82
|
requirements:
|
75
83
|
- - ">="
|
76
84
|
- !ruby/object:Gem::Version
|
77
85
|
version: '0'
|
78
86
|
requirements: []
|
79
|
-
rubygems_version: 3.
|
87
|
+
rubygems_version: 3.3.5
|
80
88
|
signing_key:
|
81
89
|
specification_version: 4
|
82
90
|
summary: Dora Web Upgrader is a Rails engine that facilitates upgrading a dora-powered
|