aws_deploy 0.2.5.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.
Files changed (68) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/Rakefile +32 -0
  4. data/app/business/aws_deploy/tasks/generate_aws_deploy.rb +53 -0
  5. data/app/business/aws_deploy/tasks/generate_aws_send_rb.rb +49 -0
  6. data/app/business/aws_deploy/tasks/generate_git_version_tag_rb.rb +70 -0
  7. data/app/business/aws_deploy/tasks/generate_local_deploy_rb.rb +157 -0
  8. data/app/business/aws_deploy/tasks/generate_production_cron_check_updates.rb +134 -0
  9. data/app/business/aws_deploy/tasks/generate_production_deploy_sh.rb +146 -0
  10. data/app/business/aws_deploy/tasks/setup_yml.rb +89 -0
  11. data/app/business/deploy/deploy.rb +17 -0
  12. data/app/business/deploy/packing.rb +13 -0
  13. data/app/controllers/aws_deploy/aws_deploy_application_controller.rb +56 -0
  14. data/app/controllers/aws_deploy/index/version.rb +24 -0
  15. data/app/controllers/aws_deploy/index_controller.rb +70 -0
  16. data/app/views/aws_deploy/index/_config_file_not_found.html.erb +11 -0
  17. data/app/views/aws_deploy/index/index.html.erb +70 -0
  18. data/app/views/layouts/aws_deploy.html.erb +208 -0
  19. data/config/initializers/aws_deploy.rb +19 -0
  20. data/config/routes.rb +10 -0
  21. data/lib/aws_deploy/engine.rb +17 -0
  22. data/lib/aws_deploy/version.rb +3 -0
  23. data/lib/aws_deploy.rb +9 -0
  24. data/lib/tasks/aws_deploy_tasks.rake +47 -0
  25. data/test/aws_deploy_test.rb +7 -0
  26. data/test/dummy/README.rdoc +28 -0
  27. data/test/dummy/Rakefile +6 -0
  28. data/test/dummy/app/assets/javascripts/application.js +13 -0
  29. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  30. data/test/dummy/app/controllers/application_controller.rb +5 -0
  31. data/test/dummy/app/helpers/application_helper.rb +2 -0
  32. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  33. data/test/dummy/bin/bundle +3 -0
  34. data/test/dummy/bin/rails +4 -0
  35. data/test/dummy/bin/rake +4 -0
  36. data/test/dummy/config/application.rb +23 -0
  37. data/test/dummy/config/aws_deploy.yml +11 -0
  38. data/test/dummy/config/aws_deploy_.yml +23 -0
  39. data/test/dummy/config/boot.rb +5 -0
  40. data/test/dummy/config/database.yml +25 -0
  41. data/test/dummy/config/environment.rb +5 -0
  42. data/test/dummy/config/environments/development.rb +29 -0
  43. data/test/dummy/config/environments/production.rb +80 -0
  44. data/test/dummy/config/environments/test.rb +36 -0
  45. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  46. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  47. data/test/dummy/config/initializers/inflections.rb +16 -0
  48. data/test/dummy/config/initializers/mime_types.rb +5 -0
  49. data/test/dummy/config/initializers/secret_token.rb +12 -0
  50. data/test/dummy/config/initializers/session_store.rb +3 -0
  51. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  52. data/test/dummy/config/locales/en.yml +23 -0
  53. data/test/dummy/config/routes.rb +56 -0
  54. data/test/dummy/config.ru +4 -0
  55. data/test/dummy/db/development.sqlite3 +0 -0
  56. data/test/dummy/log/development.log +6379 -0
  57. data/test/dummy/log/local.log +0 -0
  58. data/test/dummy/public/404.html +58 -0
  59. data/test/dummy/public/422.html +58 -0
  60. data/test/dummy/public/500.html +57 -0
  61. data/test/dummy/public/favicon.ico +0 -0
  62. data/test/dummy/script/deploy.rb +116 -0
  63. data/test/dummy/script/lib/deploy/aws_send.rb +29 -0
  64. data/test/dummy/script/lib/deploy/git_version_tag.rb +48 -0
  65. data/test/dummy/script/production/cron_check_updates.rb +109 -0
  66. data/test/dummy/script/production/deploy.sh +127 -0
  67. data/test/test_helper.rb +15 -0
  68. metadata +180 -0
@@ -0,0 +1,146 @@
1
+ module AwsDeploy::Tasks::GenerateProductionDeploySh
2
+
3
+ #
4
+ #
5
+ def generate_production_deploy_sh
6
+
7
+ content =
8
+ "#!/bin/bash \n " +
9
+ "# \n " +
10
+ "# Usage: \n " +
11
+ "# ./deploy.sh [app|test2] \n " +
12
+ "# \n " +
13
+ "# \n " +
14
+ " \n " +
15
+ " \n " +
16
+ "DATA_DIR=/app/deploy \n " +
17
+ "ZIP_FILE_NAME=zip_file.zip \n " +
18
+ "UNPACK_DIR=$DATA_DIR/tmp/npack_{@project_name} \n " +
19
+ "HOST=`hostname` \n " +
20
+ "NOW=$(date +\"%y%m%d-%H%M%S\") \n " +
21
+ " \n " +
22
+ "BASE_DEPLOY_DIR=/app/www \n " +
23
+ "clear screen \n " +
24
+ " \n " +
25
+ "TODAY=$(date) \n " +
26
+ " \n " +
27
+ " \n " +
28
+ "ENV=$1 \n " +
29
+ " \n " +
30
+ "if [ \"$1\" == \"\" ] \n " +
31
+ "then \n " +
32
+ " echo \"***********************************************************************************\" \n " +
33
+ " echo \" \" \n " +
34
+ " echo \" !!!! PROCESS CANCELED !!!! \" \n " +
35
+ " echo \" \" \n " +
36
+ " echo \" INFORM A VALID ENVIRONMENT [production|staging|development_remote|admin]\" \n " +
37
+ " echo \" \" \n " +
38
+ " echo \" onde:\" \n " +
39
+ " echo \" \" \n " +
40
+ " echo \" production => www.{@project_name}.com\" \n " +
41
+ " echo \" staging => staging.{@project_name}.com\" \n " +
42
+ " echo \" development_remote => test.{@project_name}.com\" \n " +
43
+ " echo \" admin => admin.{@project_name}.com\" \n " +
44
+ " echo \" \" \n " +
45
+ " echo \"***********************************************************************************\" \n " +
46
+ " exit \n " +
47
+ "else \n " +
48
+ " if [ \"$1\" == \"admin\" ] \n " +
49
+ " then \n " +
50
+ " export RAILS_ENV=production \n " +
51
+ " ZIP_FILE_NAME={@project_name}-admin.zip \n " +
52
+ " BASE_DEPLOY_DIR=$BASE_DEPLOY_DIR/admin.{@project_name}.com.br \n " +
53
+ " fi \n " +
54
+ " if [ \"$1\" == \"development_remote\" ] \n " +
55
+ " then \n " +
56
+ " export RAILS_ENV=development_remote \n " +
57
+ " ZIP_FILE_NAME={@project_name}-development_remote.zip \n " +
58
+ " BASE_DEPLOY_DIR=$BASE_DEPLOY_DIR/test.{@project_name}.com.br \n " +
59
+ " fi \n " +
60
+ " if [ \"$1\" == \"staging\" ] \n " +
61
+ " then \n " +
62
+ " export RAILS_ENV=staging \n " +
63
+ " ZIP_FILE_NAME={@project_name}-staging.zip \n " +
64
+ " BASE_DEPLOY_DIR=$BASE_DEPLOY_DIR/staging.{@project_name}.com.br \n " +
65
+ " fi \n " +
66
+ " if [ \"$1\" == \"production\" ] \n " +
67
+ " then \n " +
68
+ " export RAILS_ENV=production \n " +
69
+ " ZIP_FILE_NAME={@project_name}-production.zip \n " +
70
+ " BASE_DEPLOY_DIR=$BASE_DEPLOY_DIR/www.{@project_name}.com.br \n " +
71
+ " fi \n " +
72
+ " \n " +
73
+ "fi \n " +
74
+ " \n " +
75
+ " \n " +
76
+ "echo \"-----------------------------------------------------------------------------------\" \n " +
77
+ "echo \"BASE DEPLOY DIR: $BASE_DEPLOY_DIR \" \n " +
78
+ "echo \"--\" \n " +
79
+ "echo \"1 - Unpack .zip file ($ZIP_FILE_NAME) - $TODAY\" \n " +
80
+ "# echo \"-----------------------------------------------------------------------------------\" \n " +
81
+ " \n " +
82
+ "rm -rf $UNPACK_DIR-$ENV-$HOST \n " +
83
+ " \n " +
84
+ "unzip -q $DATA_DIR/$ZIP_FILE_NAME -d $UNPACK_DIR-$ENV-$HOST \n " +
85
+ " \n " +
86
+ " \n " +
87
+ " \n " +
88
+ "# echo \"-----------------------------------------------------------------------------------\" \n " +
89
+ "echo \"2 - Copy data to the app dir - $TODAY\" \n " +
90
+ "# echo \"-----------------------------------------------------------------------------------\" \n " +
91
+ " \n " +
92
+ "cp -rf $UNPACK_DIR-$ENV-$HOST/ $BASE_DEPLOY_DIR/$NOW \n " +
93
+ " \n " +
94
+ " \n " +
95
+ " \n " +
96
+ "# # echo \"-----------------------------------------------------------------------------------\" \n " +
97
+ "echo \"3 - relink 'current' - $TODAY\" \n " +
98
+ "# # echo \"-----------------------------------------------------------------------------------\" \n " +
99
+ " \n " +
100
+ "cd $BASE_DEPLOY_DIR \n " +
101
+ "rm html \n " +
102
+ "ln -s $NOW html \n " +
103
+ "cd - \n " +
104
+ " \n " +
105
+ " \n " +
106
+ " \n " +
107
+ "echo \"- run bundle exec rake assets:precompile - $TODAY\" \n " +
108
+ "cd $BASE_DEPLOY_DIR/html \n " +
109
+ " \n " +
110
+ " \n " +
111
+ "bundle update \n " +
112
+ " \n " +
113
+ " \n " +
114
+ "rake db:migrate \n " +
115
+ " \n " +
116
+ "export RAILS_ENV=production \n " +
117
+ "bundle exec rake assets:precompile \n " +
118
+ " \n " +
119
+ " \n " +
120
+ "# echo \"-----------------------------------------------------------------------------------\" \n " +
121
+ "echo \"4 - Restarting NGINX - $TODAY\" \n " +
122
+ "# echo \"-----------------------------------------------------------------------------------\" \n " +
123
+ " \n " +
124
+ "# nginx_restart \n " +
125
+ "sudo service nginx restart \n " +
126
+ " \n " +
127
+ " \n " +
128
+ " \n " +
129
+ "echo \"\" \n " +
130
+ "echo \"\" \n " +
131
+ "echo \"FINISHED! - $TODAY \" \n " +
132
+ "echo \"\" \n " +
133
+ "echo \"\" \n "
134
+
135
+ File.delete("#{Rails.root}/script/production/deploy.sh") if File.exists?("#{Rails.root}/script/production/deploy.sh")
136
+
137
+ File.open("#{Rails.root}/script/production/deploy.sh", "w") do |f|
138
+ f.write("#{content}")
139
+ end
140
+
141
+ "#{Rails.root}/script/production/deploy.sh"
142
+ end
143
+
144
+
145
+ end
146
+
@@ -0,0 +1,89 @@
1
+ class AwsDeploy::Tasks::SetupYml
2
+ include AwsDeploy::Tasks::GenerateAwsDeploy
3
+ include AwsDeploy::Tasks::GenerateLocalDeployRb
4
+ include AwsDeploy::Tasks::GenerateAwsSendRb
5
+ include AwsDeploy::Tasks::GenerateGitVersionTagRb
6
+ include AwsDeploy::Tasks::GenerateProductionCronCheckUpdates
7
+ include AwsDeploy::Tasks::GenerateProductionDeploySh
8
+
9
+ #
10
+ #
11
+ def run
12
+
13
+ #
14
+ # aws_deploy.yml
15
+ #
16
+ puts "\n1. aws_deploy.rb"
17
+ collect_inputs__aws_deploy
18
+ generate_aws_deploy
19
+
20
+
21
+
22
+ puts "\n2. script dir"
23
+ _script_dir
24
+
25
+
26
+ #
27
+ # deploy.rb
28
+ #
29
+ puts "\n3. deploy.rb"
30
+ collect_inputs__local_deploy_rb
31
+ generate_local_deploy_rb
32
+
33
+
34
+ #
35
+ # lib/deploy/aws_send.rb
36
+ #
37
+ puts "\n4. lib/deploy/aws_send.rb"
38
+ generate_local_aws_send_rb
39
+
40
+
41
+ #
42
+ # lib/deploy/git_version_tag.rb
43
+ #
44
+ puts "\n5. lib/deploy/git_version_tag.rb"
45
+ generate_local_git_version_tag_rb
46
+
47
+
48
+ #
49
+ # lib/production/cron_check_updates.rb
50
+ #
51
+ puts "\n6. lib/production/cron_check_updates.rb"
52
+ generate_production_cron_check_updates
53
+
54
+
55
+ #
56
+ # lib/production/deploy.sh
57
+ #
58
+ puts "\n7. lib/production/deploy.sh"
59
+ generate_production_deploy_sh
60
+
61
+
62
+ end
63
+
64
+
65
+
66
+ private
67
+
68
+ #
69
+ #
70
+ def _script_dir
71
+ if Dir.exists?("#{Rails.root}/script")
72
+ FileUtils.rm_r("#{Rails.root}/script")
73
+ end
74
+ puts "Creating script directory..."
75
+ puts " /script/lib/deploy"
76
+ FileUtils.mkdir_p("#{Rails.root}/script/lib/deploy")
77
+
78
+ puts " /script/production"
79
+ FileUtils.mkdir_p("#{Rails.root}/script/production")
80
+
81
+ puts " /script/security"
82
+ FileUtils.mkdir_p("#{Rails.root}/script/security")
83
+ end
84
+
85
+
86
+
87
+ end
88
+
89
+
@@ -0,0 +1,17 @@
1
+ class Deploy::Deploy
2
+
3
+ def initialize
4
+
5
+ end
6
+
7
+ def deploy_on_stage
8
+
9
+ # generate packaging
10
+ Deploy::Packing.new.run_all
11
+
12
+ "aaa"
13
+
14
+ end
15
+
16
+
17
+ end
@@ -0,0 +1,13 @@
1
+ class Deploy::Packing
2
+
3
+ def initialize
4
+
5
+ end
6
+
7
+ def run_all
8
+
9
+
10
+ end
11
+
12
+
13
+ end
@@ -0,0 +1,56 @@
1
+ class AwsDeploy::AwsDeployApplicationController < ActionController::Base
2
+
3
+ # private
4
+
5
+ #
6
+ #
7
+ def _exist_config?
8
+ File.exist?(Rails.root.join("config/aws_deploy.yml"))
9
+ end
10
+
11
+
12
+ #
13
+ #
14
+ def _aws_access_key_id
15
+ $aws_deploy['aws_access_key_id'].start_with?("ENV") ? eval($aws_deploy['aws_access_key_id']) : $aws_deploy['aws_access_key_id']
16
+ end
17
+
18
+ #
19
+ #
20
+ def _aws_secret_access_key
21
+ $aws_deploy['aws_secret_access_key'].start_with?("ENV") ? eval($aws_deploy['aws_secret_access_key']) : $aws_deploy['aws_secret_access_key']
22
+ end
23
+
24
+ #
25
+ #
26
+ def _aws_bucket
27
+ $aws_deploy['aws_bucket']
28
+ end
29
+
30
+ #
31
+ #
32
+ def _zip_file env=""
33
+ "#{$aws_deploy['file_pattern']}-#{env}.zip"
34
+ end
35
+
36
+ def _md5_file env=""
37
+ "#{$aws_deploy['file_pattern']}-#{env}.md5"
38
+ end
39
+
40
+ #
41
+ #
42
+ def aws_secret? aws_secret=""
43
+ _aws_secret_access_key == aws_secret
44
+ end
45
+
46
+ #
47
+ #
48
+ #
49
+ def authenticate
50
+ authenticate_or_request_with_http_basic do |username, password|
51
+ username == _aws_access_key_id && password == _aws_access_key_id
52
+ end
53
+ end
54
+
55
+
56
+ end
@@ -0,0 +1,24 @@
1
+ module AwsDeploy::Index::Version
2
+
3
+ #
4
+ #
5
+ def version
6
+ render :json => {:data => "#{_get_version_file}" }
7
+ end
8
+
9
+
10
+ private
11
+
12
+ #
13
+ #
14
+ def _get_version_file
15
+ version = "version.txt not found"
16
+ if File.exists?("./public/version.txt")
17
+ File.open('./public/version.txt') {|f| version = f.readline}
18
+ end
19
+ version
20
+ end
21
+
22
+
23
+
24
+ end
@@ -0,0 +1,70 @@
1
+ class AwsDeploy::IndexController < AwsDeploy::AwsDeployApplicationController
2
+ layout "aws_deploy"
3
+ require "aws-sdk"
4
+
5
+ include AwsDeploy::Index::Version
6
+
7
+ #
8
+ #
9
+ def index
10
+ @exist_config = _exist_config?
11
+ @version = _get_version_file
12
+ end
13
+
14
+ #
15
+ #
16
+ def send_to_production
17
+
18
+ if (aws_secret?(params[:aws_secret][0]))
19
+
20
+ message = _move_to params[:env]
21
+ flash[:message] = "#{message}"
22
+
23
+ else
24
+ flash[:message] = "AWS Secret is Invalid! ... #{params[:env]}"
25
+
26
+ end
27
+
28
+ redirect_to aws_deploy_root_awsdeploy_path
29
+ end
30
+
31
+
32
+ private
33
+
34
+
35
+ #
36
+ #
37
+ def _move_to environment
38
+
39
+ message = "File sent to S3"
40
+ if %w(admin staging production).include?(environment)
41
+
42
+ AWS.config(:access_key_id => "#{_aws_access_key_id}", :secret_access_key => "#{_aws_secret_access_key}")
43
+ s3 = AWS::S3.new
44
+ bucket = s3.buckets["#{_aws_bucket}"]
45
+
46
+ if bucket.objects[_md5_file("development_remote")].exists?
47
+
48
+ # remove files in production...
49
+ bucket.objects[_md5_file("#{environment}")].delete if bucket.objects[_md5_file("#{environment}")].exists?
50
+ bucket.objects[_zip_file("#{environment}")].delete if bucket.objects[_zip_file("#{environment}")].exists?
51
+
52
+ # copying files from test to production
53
+ bucket.objects[_zip_file("development_remote")].copy_to(_zip_file("#{environment}"))
54
+ bucket.objects[_md5_file("development_remote")].copy_to(_md5_file("#{environment}"))
55
+
56
+ message += " (#{environment})"
57
+
58
+ else
59
+ message = "DevelopmentRemote file not found. #{_md5_file("development_remote")}"
60
+ end
61
+
62
+ else
63
+ message = "Environment is not available!"
64
+ end
65
+
66
+ message
67
+ end
68
+
69
+
70
+ end
@@ -0,0 +1,11 @@
1
+ <p>
2
+ <h2>Ups, looks that you don't have the configuration file in your path. <br>
3
+ No worries, run:
4
+ </h2>
5
+
6
+ <pre>
7
+ rake aws:setup
8
+ </pre>
9
+
10
+ </p>
11
+ </ul>
@@ -0,0 +1,70 @@
1
+ <h1>AWS Deploy</h1>
2
+ <hr>
3
+
4
+ <%if @exist_config %>
5
+
6
+ <% if flash[:message] %>
7
+
8
+ <b>Message:</b> <br>
9
+ <h2><%= flash[:message]%></h2>
10
+ <hr>
11
+
12
+ <button class="sexybutton sexysimple" onclick="window.open('<%= aws_deploy_root_awsdeploy_path%>', '_self');">Back</button>
13
+
14
+ <% else %>
15
+
16
+
17
+ <%= form_tag(aws_deploy_send_to_production_awsdeploy_path, :onsubmit => "javascript:pushTo(event)") do %>
18
+ <b>AWS Secret Access Key:</b> <br>
19
+ <%= text_field(:aws_secret, "", size: "50" ) %><br>
20
+ &nbsp; <br>
21
+
22
+
23
+ <b>Environment:</b> <br>
24
+ <label ><%= radio_button_tag 'env', 'staging', true %> &nbsp; Staging </label> <br>
25
+ <label ><%= radio_button_tag 'env', 'admin' %> &nbsp; Admin </label> <br>
26
+ <label ><%= radio_button_tag 'env', 'production' %> &nbsp; Production </label> <br>
27
+
28
+ &nbsp; <br>
29
+
30
+ <button class="sexybutton sexysimple"><span class="ok">Deploy</span></button>
31
+
32
+
33
+ &nbsp; <br>
34
+ &nbsp; <br>
35
+ <div>Deployed version: <%= @version%></div>
36
+ <% end %>
37
+
38
+ <script type="text/javascript">
39
+ function pushTo(event) {
40
+
41
+ var _aws_key_value = document.getElementById('aws_secret_').value;
42
+ if (_aws_key_value == "") {
43
+ alert('Fill the AWS Secret.');
44
+ event.preventDefault();
45
+ return;
46
+ }
47
+
48
+ var radios = document.getElementsByName('env');
49
+ var value;
50
+ for (var i = 0; i < radios.length; i++) {
51
+ if (radios[i].type === 'radio' && radios[i].checked) {
52
+ value = radios[i].value;
53
+ }
54
+ }
55
+
56
+ if (!confirm('Do you really want to push to ' + value + '?')) {
57
+ event.preventDefault();
58
+ }
59
+
60
+ }
61
+ </script>
62
+
63
+
64
+
65
+
66
+ <% end %>
67
+
68
+ <% else %>
69
+ <%= render :partial => "config_file_not_found" %>
70
+ <% end %>