1
1
desc 'Build rubydata/discourse image'
2
+ task build : 'prepare:environment'
2
3
task :build do
3
4
begin
4
5
Rake ::Task [ 'build:backends:up' ] . invoke
@@ -13,6 +14,23 @@ task :push do
13
14
sh 'docker' , 'push' , 'rubydata/discourse'
14
15
end
15
16
17
+ namespace :prepare do
18
+ task environment : :check
19
+ task :environment do
20
+ ENV [ 'DISCOURSE_SMTP_USER_NAME' ] = ENV [ 'AWS_ACCESS_KEY_ID' ]
21
+ ENV [ 'DISCOURSE_SMTP_PASSWORD' ] = ses_smtp_password
22
+ end
23
+
24
+ task :check do
25
+ unless ENV [ 'AWS_ACCESS_KEY_ID' ]
26
+ raise 'AWS_ACCESS_KEY_ID is required'
27
+ end
28
+ unless ENV [ 'AWS_SECRET_ACCESS_KEY' ]
29
+ raise 'AWS_ACCESS_KEY_ID is required'
30
+ end
31
+ end
32
+ end
33
+
16
34
namespace :build do
17
35
namespace :backends do
18
36
task up : 'compose:up:detached:postgres'
@@ -22,6 +40,14 @@ namespace :build do
22
40
end
23
41
24
42
namespace :compose do
43
+ namespace :run do
44
+ task 'discourse:db:migrate' => 'compose:up:detached:backends'
45
+ task 'discourse:db:migrate' do
46
+ sh 'docker-compose' , 'run' , 'discourse' ,
47
+ 'su' , 'discourse' , '-c' , 'cd /var/www/discourse && bundle exec rake db:migrate'
48
+ end
49
+ end
50
+
25
51
namespace :up do
26
52
namespace :detached do
27
53
task :postgres do
@@ -36,18 +62,31 @@ namespace :compose do
36
62
task backends : :redis
37
63
end
38
64
39
- task detached : 'compose:up:detached:backends' do
40
- sh 'docker-compose' , 'run' , 'discourse' , 'su' , 'discourse' , '-c' , 'cd /var/www/discourse && bundle exec rake db:migrate'
65
+ task detached : 'prepare:environment'
66
+ task detached : 'compose:run:discourse:db:migrate'
67
+ task :detached do
41
68
sh 'docker-compose' , 'up' , '-d' , 'discourse'
42
69
end
43
70
end
44
71
45
- task up : 'compose:up:detached:backends' do
46
- sh 'docker-compose' , 'run' , 'discourse' , 'su' , 'discourse' , '-c' , 'cd /var/www/discourse && bundle exec rake db:migrate'
72
+ task up : 'prepare:environment'
73
+ task up : 'compose:run:discourse:db:migrate'
74
+ task :up do
47
75
sh 'docker-compose' , 'up'
48
76
end
49
77
50
78
task :down do
51
79
sh 'docker-compose' , 'down'
52
80
end
53
81
end
82
+
83
+ def ses_smtp_password
84
+ require 'openssl'
85
+ require 'base64'
86
+ key = ENV [ 'AWS_SECRET_ACCESS_KEY' ]
87
+ message = 'SendRawEmail'
88
+ signature = OpenSSL ::HMAC . digest ( 'sha256' , key , message )
89
+ versioned_signature = "\x02 #{ signature } "
90
+ password = Base64 . strict_encode64 ( versioned_signature )
91
+ return password
92
+ end
0 commit comments