dora_web_upgrader 1.0.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|