roro 0.1.0 → 0.1.1
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 +5 -5
- data/.circleci/config.yml +99 -0
- data/.circleci/setup-gem-credentials.sh +3 -0
- data/.gitignore +7 -1
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile.lock +24 -10
- data/Guardfile +46 -0
- data/bin/roro +5 -0
- data/docker/env_files/.keep +0 -0
- data/docker/env_files/circleci.env.enc +2 -0
- data/docker/keys/.keep +0 -0
- data/lib/roro.rb +2 -0
- data/lib/roro/cli.rb +18 -0
- data/lib/roro/cli/base.rb +124 -0
- data/lib/roro/cli/dockerize.rb +30 -0
- data/lib/roro/cli/expose.rb +13 -0
- data/lib/roro/cli/generate_keys.rb +79 -0
- data/lib/roro/cli/greenfield.rb +37 -0
- data/lib/roro/cli/obfuscate.rb +20 -0
- data/lib/roro/cli/rollon.rb +21 -0
- data/lib/roro/cli/templates/Gemfile.lock +0 -0
- data/lib/roro/cli/templates/Guardfile +81 -0
- data/lib/roro/cli/templates/circleci/Rakefile +4 -0
- data/lib/roro/cli/templates/circleci/config.job-example.yml +33 -0
- data/lib/roro/cli/templates/circleci/config.yml +69 -0
- data/lib/roro/cli/templates/circleci/config.yml.workflow-example +62 -0
- data/lib/roro/cli/templates/circleci/deploy.rake +127 -0
- data/lib/roro/cli/templates/config.yml +71 -0
- data/lib/roro/cli/templates/config/database.yml +20 -0
- data/lib/roro/cli/templates/docker-compose.yml +51 -0
- data/lib/roro/cli/templates/docker/containers/app/Dockerfile.tt +12 -0
- data/lib/roro/cli/templates/docker/containers/database/.keep +0 -0
- data/lib/roro/cli/templates/docker/containers/web/Dockerfile.tt +18 -0
- data/lib/roro/cli/templates/docker/containers/web/app.conf.tt +23 -0
- data/lib/roro/cli/templates/docker/env_files/.keep +0 -0
- data/lib/roro/cli/templates/docker/keys/.keep +0 -0
- data/lib/roro/cli/templates/docker/overrides/circleci.yml.tt +19 -0
- data/lib/roro/cli/templates/docker/overrides/production.yml.tt +26 -0
- data/lib/roro/cli/templates/docker/web/Dockerfile +20 -0
- data/lib/roro/cli/templates/docker/web/app.conf +23 -0
- data/lib/roro/cli/templates/gitignore +27 -0
- data/lib/roro/cli/templates/greenfield/Dockerfile +8 -0
- data/lib/roro/cli/templates/greenfield/Gemfile +2 -0
- data/lib/roro/cli/templates/greenfield/Gemfile.lock +0 -0
- data/lib/roro/cli/templates/greenfield/config/database.yml.example +16 -0
- data/lib/roro/cli/templates/greenfield/docker-compose.yml +15 -0
- data/lib/roro/cli/templates/lib/tasks/deploy.rake +126 -0
- data/lib/roro/version.rb +1 -1
- data/lib/tasks/deploy.rake +126 -0
- data/roro.gemspec +9 -2
- data/test_apps/dummy/.gitignore +27 -0
- data/test_apps/dummy/Gemfile +61 -0
- data/test_apps/dummy/README.md +24 -0
- data/test_apps/dummy/Rakefile +6 -0
- data/test_apps/dummy/app/assets/config/manifest.js +3 -0
- data/test_apps/dummy/app/assets/images/.keep +0 -0
- data/test_apps/dummy/app/assets/javascripts/application.js +16 -0
- data/test_apps/dummy/app/assets/javascripts/cable.js +13 -0
- data/test_apps/dummy/app/assets/javascripts/channels/.keep +0 -0
- data/test_apps/dummy/app/assets/stylesheets/application.css +15 -0
- data/test_apps/dummy/app/channels/application_cable/channel.rb +4 -0
- data/test_apps/dummy/app/channels/application_cable/connection.rb +4 -0
- data/test_apps/dummy/app/controllers/application_controller.rb +2 -0
- data/test_apps/dummy/app/controllers/concerns/.keep +0 -0
- data/test_apps/dummy/app/helpers/application_helper.rb +2 -0
- data/test_apps/dummy/app/jobs/application_job.rb +2 -0
- data/test_apps/dummy/app/mailers/application_mailer.rb +4 -0
- data/test_apps/dummy/app/models/application_record.rb +3 -0
- data/test_apps/dummy/app/models/concerns/.keep +0 -0
- data/test_apps/dummy/app/views/layouts/application.html.erb +15 -0
- data/test_apps/dummy/app/views/layouts/mailer.html.erb +13 -0
- data/test_apps/dummy/app/views/layouts/mailer.text.erb +1 -0
- data/test_apps/dummy/bin/bundle +3 -0
- data/test_apps/dummy/bin/rails +4 -0
- data/test_apps/dummy/bin/rake +4 -0
- data/test_apps/dummy/bin/setup +36 -0
- data/test_apps/dummy/bin/update +31 -0
- data/test_apps/dummy/bin/yarn +11 -0
- data/test_apps/dummy/config.ru +5 -0
- data/test_apps/dummy/config/application.rb +19 -0
- data/test_apps/dummy/config/boot.rb +4 -0
- data/test_apps/dummy/config/cable.yml +10 -0
- data/test_apps/dummy/config/credentials.yml.enc +1 -0
- data/test_apps/dummy/config/database.yml +85 -0
- data/test_apps/dummy/config/environment.rb +5 -0
- data/test_apps/dummy/config/environments/development.rb +61 -0
- data/test_apps/dummy/config/environments/production.rb +94 -0
- data/test_apps/dummy/config/environments/test.rb +46 -0
- data/test_apps/dummy/config/initializers/application_controller_renderer.rb +8 -0
- data/test_apps/dummy/config/initializers/assets.rb +14 -0
- data/test_apps/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test_apps/dummy/config/initializers/content_security_policy.rb +25 -0
- data/test_apps/dummy/config/initializers/cookies_serializer.rb +5 -0
- data/test_apps/dummy/config/initializers/filter_parameter_logging.rb +4 -0
- data/test_apps/dummy/config/initializers/inflections.rb +16 -0
- data/test_apps/dummy/config/initializers/mime_types.rb +4 -0
- data/test_apps/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test_apps/dummy/config/locales/en.yml +33 -0
- data/test_apps/dummy/config/puma.rb +34 -0
- data/test_apps/dummy/config/routes.rb +3 -0
- data/test_apps/dummy/config/spring.rb +6 -0
- data/test_apps/dummy/config/storage.yml +34 -0
- data/test_apps/dummy/db/seeds.rb +7 -0
- data/test_apps/dummy/lib/assets/.keep +0 -0
- data/test_apps/dummy/lib/tasks/.keep +0 -0
- data/test_apps/dummy/log/.keep +0 -0
- data/test_apps/dummy/package.json +5 -0
- data/test_apps/dummy/public/404.html +67 -0
- data/test_apps/dummy/public/422.html +67 -0
- data/test_apps/dummy/public/500.html +66 -0
- data/test_apps/dummy/public/apple-touch-icon-precomposed.png +0 -0
- data/test_apps/dummy/public/apple-touch-icon.png +0 -0
- data/test_apps/dummy/public/favicon.ico +0 -0
- data/test_apps/dummy/public/robots.txt +1 -0
- data/test_apps/dummy/storage/.keep +0 -0
- data/test_apps/dummy/test/application_system_test_case.rb +5 -0
- data/test_apps/dummy/test/controllers/.keep +0 -0
- data/test_apps/dummy/test/fixtures/.keep +0 -0
- data/test_apps/dummy/test/fixtures/files/.keep +0 -0
- data/test_apps/dummy/test/helpers/.keep +0 -0
- data/test_apps/dummy/test/integration/.keep +0 -0
- data/test_apps/dummy/test/mailers/.keep +0 -0
- data/test_apps/dummy/test/models/.keep +0 -0
- data/test_apps/dummy/test/system/.keep +0 -0
- data/test_apps/dummy/test/test_helper.rb +10 -0
- data/test_apps/dummy/vendor/.keep +0 -0
- data/test_apps/dummy_roro/.circleci/Rakefile +4 -0
- data/test_apps/dummy_roro/.circleci/config.job-example.yml +33 -0
- data/test_apps/dummy_roro/.circleci/config.yml +69 -0
- data/test_apps/dummy_roro/.circleci/config.yml.workflow-example +62 -0
- data/test_apps/dummy_roro/.circleci/deploy.rake +127 -0
- data/test_apps/dummy_roro/.gitignore +27 -0
- data/test_apps/dummy_roro/Gemfile +64 -0
- data/test_apps/dummy_roro/README.md +24 -0
- data/test_apps/dummy_roro/Rakefile +6 -0
- data/test_apps/dummy_roro/app/assets/config/manifest.js +3 -0
- data/test_apps/dummy_roro/app/assets/images/.keep +0 -0
- data/test_apps/dummy_roro/app/assets/javascripts/application.js +16 -0
- data/test_apps/dummy_roro/app/assets/javascripts/cable.js +13 -0
- data/test_apps/dummy_roro/app/assets/javascripts/channels/.keep +0 -0
- data/test_apps/dummy_roro/app/assets/stylesheets/application.css +15 -0
- data/test_apps/dummy_roro/app/channels/application_cable/channel.rb +4 -0
- data/test_apps/dummy_roro/app/channels/application_cable/connection.rb +4 -0
- data/test_apps/dummy_roro/app/controllers/application_controller.rb +2 -0
- data/test_apps/dummy_roro/app/controllers/concerns/.keep +0 -0
- data/test_apps/dummy_roro/app/helpers/application_helper.rb +2 -0
- data/test_apps/dummy_roro/app/jobs/application_job.rb +2 -0
- data/test_apps/dummy_roro/app/mailers/application_mailer.rb +4 -0
- data/test_apps/dummy_roro/app/models/application_record.rb +3 -0
- data/test_apps/dummy_roro/app/models/concerns/.keep +0 -0
- data/test_apps/dummy_roro/app/views/layouts/application.html.erb +15 -0
- data/test_apps/dummy_roro/app/views/layouts/mailer.html.erb +13 -0
- data/test_apps/dummy_roro/app/views/layouts/mailer.text.erb +1 -0
- data/test_apps/dummy_roro/bin/bundle +3 -0
- data/test_apps/dummy_roro/bin/rails +4 -0
- data/test_apps/dummy_roro/bin/rake +4 -0
- data/test_apps/dummy_roro/bin/setup +36 -0
- data/test_apps/dummy_roro/bin/update +31 -0
- data/test_apps/dummy_roro/bin/yarn +11 -0
- data/test_apps/dummy_roro/config.ru +5 -0
- data/test_apps/dummy_roro/config/application.rb +19 -0
- data/test_apps/dummy_roro/config/boot.rb +4 -0
- data/test_apps/dummy_roro/config/cable.yml +10 -0
- data/test_apps/dummy_roro/config/credentials.yml.enc +1 -0
- data/test_apps/dummy_roro/config/database.yml +20 -0
- data/test_apps/dummy_roro/config/environment.rb +5 -0
- data/test_apps/dummy_roro/config/environments/development.rb +61 -0
- data/test_apps/dummy_roro/config/environments/production.rb +94 -0
- data/test_apps/dummy_roro/config/environments/test.rb +46 -0
- data/test_apps/dummy_roro/config/initializers/application_controller_renderer.rb +8 -0
- data/test_apps/dummy_roro/config/initializers/assets.rb +14 -0
- data/test_apps/dummy_roro/config/initializers/backtrace_silencers.rb +7 -0
- data/test_apps/dummy_roro/config/initializers/content_security_policy.rb +25 -0
- data/test_apps/dummy_roro/config/initializers/cookies_serializer.rb +5 -0
- data/test_apps/dummy_roro/config/initializers/filter_parameter_logging.rb +4 -0
- data/test_apps/dummy_roro/config/initializers/inflections.rb +16 -0
- data/test_apps/dummy_roro/config/initializers/mime_types.rb +4 -0
- data/test_apps/dummy_roro/config/initializers/wrap_parameters.rb +14 -0
- data/test_apps/dummy_roro/config/locales/en.yml +33 -0
- data/test_apps/dummy_roro/config/puma.rb +34 -0
- data/test_apps/dummy_roro/config/routes.rb +3 -0
- data/test_apps/dummy_roro/config/spring.rb +6 -0
- data/test_apps/dummy_roro/config/storage.yml +34 -0
- data/test_apps/dummy_roro/db/seeds.rb +7 -0
- data/test_apps/dummy_roro/docker-compose.yml +51 -0
- data/test_apps/dummy_roro/docker/containers/app/Dockerfile +12 -0
- data/test_apps/dummy_roro/docker/containers/app/circleci.env +2 -0
- data/test_apps/dummy_roro/docker/containers/app/development.env +2 -0
- data/test_apps/dummy_roro/docker/containers/app/production.env +2 -0
- data/test_apps/dummy_roro/docker/containers/app/staging.env +2 -0
- data/test_apps/dummy_roro/docker/containers/database/.keep +0 -0
- data/test_apps/dummy_roro/docker/containers/database/circleci.env +3 -0
- data/test_apps/dummy_roro/docker/containers/database/development.env +3 -0
- data/test_apps/dummy_roro/docker/containers/database/production.env +3 -0
- data/test_apps/dummy_roro/docker/containers/database/staging.env +3 -0
- data/test_apps/dummy_roro/docker/containers/web/Dockerfile +18 -0
- data/test_apps/dummy_roro/docker/containers/web/app.conf +23 -0
- data/test_apps/dummy_roro/docker/containers/web/circleci.env +1 -0
- data/test_apps/dummy_roro/docker/containers/web/development.env +1 -0
- data/test_apps/dummy_roro/docker/containers/web/production.env +1 -0
- data/test_apps/dummy_roro/docker/containers/web/staging.env +1 -0
- data/test_apps/dummy_roro/docker/env_files/circleci.env +12 -0
- data/test_apps/dummy_roro/docker/env_files/circleci.env.enc +14 -0
- data/test_apps/dummy_roro/docker/env_files/production.env +2 -0
- data/test_apps/dummy_roro/docker/env_files/production.env.enc +2 -0
- data/test_apps/dummy_roro/docker/keys/.keep +0 -0
- data/test_apps/dummy_roro/docker/overrides/circleci.yml +19 -0
- data/test_apps/dummy_roro/docker/overrides/production.yml +26 -0
- data/test_apps/dummy_roro/lib/assets/.keep +0 -0
- data/test_apps/dummy_roro/lib/tasks/.keep +0 -0
- data/test_apps/dummy_roro/lib/tasks/deploy.rake +126 -0
- data/test_apps/dummy_roro/log/.keep +0 -0
- data/test_apps/dummy_roro/package.json +5 -0
- data/test_apps/dummy_roro/public/404.html +67 -0
- data/test_apps/dummy_roro/public/422.html +67 -0
- data/test_apps/dummy_roro/public/500.html +66 -0
- data/test_apps/dummy_roro/public/apple-touch-icon-precomposed.png +0 -0
- data/test_apps/dummy_roro/public/apple-touch-icon.png +0 -0
- data/test_apps/dummy_roro/public/favicon.ico +0 -0
- data/test_apps/dummy_roro/public/robots.txt +1 -0
- data/test_apps/dummy_roro/storage/.keep +0 -0
- data/test_apps/dummy_roro/test/application_system_test_case.rb +5 -0
- data/test_apps/dummy_roro/test/controllers/.keep +0 -0
- data/test_apps/dummy_roro/test/fixtures/.keep +0 -0
- data/test_apps/dummy_roro/test/fixtures/files/.keep +0 -0
- data/test_apps/dummy_roro/test/helpers/.keep +0 -0
- data/test_apps/dummy_roro/test/integration/.keep +0 -0
- data/test_apps/dummy_roro/test/mailers/.keep +0 -0
- data/test_apps/dummy_roro/test/models/.keep +0 -0
- data/test_apps/dummy_roro/test/system/.keep +0 -0
- data/test_apps/dummy_roro/test/test_helper.rb +10 -0
- data/test_apps/dummy_roro/vendor/.keep +0 -0
- data/test_apps/greenfield/.keep +0 -0
- metadata +292 -5
|
File without changes
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# use SSHKit directly instead of Capistrano
|
|
2
|
+
require 'sshkit'
|
|
3
|
+
require 'sshkit/dsl'
|
|
4
|
+
include SSHKit::DSL
|
|
5
|
+
|
|
6
|
+
deploy_tag = ENV['DEPLOY_TAG']
|
|
7
|
+
hostname = ENV['SERVER_HOST']
|
|
8
|
+
user = ENV['SERVER_USER']
|
|
9
|
+
dockerhub_user = ENV['DOCKERHUB_USER']
|
|
10
|
+
dockerhub_pass = ENV['DOCKERHUB_PASS']
|
|
11
|
+
dockerhub_org = ENV['DOCKERHUB_ORG']
|
|
12
|
+
port = ENV['SERVER_PORT']
|
|
13
|
+
deploy_env = ENV['DEPLOY_ENV'] || :production
|
|
14
|
+
deploy_path = ENV['APP_NAME']
|
|
15
|
+
|
|
16
|
+
server = SSHKit::Host.new(hostname: hostname, port: port, user: user)
|
|
17
|
+
|
|
18
|
+
namespace :deploy do
|
|
19
|
+
|
|
20
|
+
desc 'copy to server files needed to run and manage Docker containers'
|
|
21
|
+
task :configs do
|
|
22
|
+
|
|
23
|
+
on server do
|
|
24
|
+
within deploy_path do
|
|
25
|
+
upload! File.expand_path('../../docker/overrides/production.docker-compose.yml', __dir__), 'docker-compose.yml'
|
|
26
|
+
upload! File.expand_path('../../docker', __dir__), '.', recursive: true
|
|
27
|
+
execute 'apt', 'install', 'ruby'
|
|
28
|
+
execute 'gem', 'install', 'handsome_fencer-circle_c_i'
|
|
29
|
+
execute 'handsome_fencer-circle_c_i', 'expose', 'production'
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
desc 'copy production key to server'
|
|
35
|
+
task :production_key do
|
|
36
|
+
|
|
37
|
+
on server do
|
|
38
|
+
within deploy_path do
|
|
39
|
+
|
|
40
|
+
upload! '.circleci/keys/production.key', '.circleci/keys/production.key'
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
desc 'expose production environment'
|
|
46
|
+
task :expose_production_environment do
|
|
47
|
+
|
|
48
|
+
on server do
|
|
49
|
+
within deploy_path do
|
|
50
|
+
|
|
51
|
+
execute 'apt', 'install', 'ruby'
|
|
52
|
+
execute 'gem', 'install', 'handsome_fencer-circle_c_i'
|
|
53
|
+
execute 'handsome_fencer-circle_c_i', 'expose', 'production'
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
namespace :docker do
|
|
61
|
+
|
|
62
|
+
desc 'logs into Docker Hub for pushing and pulling'
|
|
63
|
+
|
|
64
|
+
task :login do
|
|
65
|
+
on server do
|
|
66
|
+
execute "mkdir -p #{deploy_path}"
|
|
67
|
+
within deploy_path do
|
|
68
|
+
execute 'docker', 'login', '-u', dockerhub_user, '-p', dockerhub_pass
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
desc 'stops all Docker containers via Docker Compose'
|
|
74
|
+
|
|
75
|
+
task stop: 'deploy:configs' do
|
|
76
|
+
on server do
|
|
77
|
+
within deploy_path do
|
|
78
|
+
with rails_env: deploy_env, deploy_tag: deploy_tag do
|
|
79
|
+
execute 'docker-compose', 'stop'
|
|
80
|
+
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
desc 'starts all Docker containers via Docker Compose'
|
|
87
|
+
|
|
88
|
+
task start: 'deploy:configs' do
|
|
89
|
+
on server do
|
|
90
|
+
within deploy_path do
|
|
91
|
+
with rails_env: deploy_env, deploy_tag: deploy_tag do
|
|
92
|
+
execute 'docker-compose', 'up', '-d'
|
|
93
|
+
execute 'echo', deploy_tag , '>', 'deploy.tag'
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
desc 'pulls images from Docker Hub'
|
|
100
|
+
|
|
101
|
+
task pull: 'docker:login' do
|
|
102
|
+
on server do
|
|
103
|
+
within deploy_path do
|
|
104
|
+
["#{deploy_path}_app", "#{deploy_path}_web"].each do |image_name|
|
|
105
|
+
execute 'docker', 'pull', "#{dockerhub_org}/#{image_name}:#{deploy_tag}"
|
|
106
|
+
end
|
|
107
|
+
execute 'docker', 'pull', 'postgres:9.4.5'
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
desc 'runs database migrations in application container via Docker Compose'
|
|
114
|
+
task migrate: 'deploy:configs' do
|
|
115
|
+
on server do
|
|
116
|
+
within deploy_path do
|
|
117
|
+
with rails_env: deploy_env, deploy_tag: deploy_tag do
|
|
118
|
+
execute 'docker-compose', 'run', 'app', "bin/rails", 'db:create', 'db:migrate'
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
desc 'pulls images, stops old containers, updates the database, and starts new containers'
|
|
125
|
+
task deploy: %w{docker:pull docker:stop docker:migrate docker:start }
|
|
126
|
+
end
|
data/lib/roro/version.rb
CHANGED
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# use SSHKit directly instead of Capistrano
|
|
2
|
+
require 'sshkit'
|
|
3
|
+
require 'sshkit/dsl'
|
|
4
|
+
include SSHKit::DSL
|
|
5
|
+
|
|
6
|
+
deploy_tag = ENV['DEPLOY_TAG']
|
|
7
|
+
hostname = ENV['SERVER_HOST']
|
|
8
|
+
user = ENV['SERVER_USER']
|
|
9
|
+
dockerhub_user = ENV['DOCKERHUB_USER']
|
|
10
|
+
dockerhub_pass = ENV['DOCKERHUB_PASS']
|
|
11
|
+
dockerhub_org = ENV['DOCKERHUB_ORG']
|
|
12
|
+
port = ENV['SERVER_PORT']
|
|
13
|
+
deploy_env = ENV['DEPLOY_ENV'] || :production
|
|
14
|
+
deploy_path = ENV['APP_NAME']
|
|
15
|
+
|
|
16
|
+
server = SSHKit::Host.new(hostname: hostname, port: port, user: user)
|
|
17
|
+
|
|
18
|
+
namespace :deploy do
|
|
19
|
+
|
|
20
|
+
desc 'copy to server files needed to run and manage Docker containers'
|
|
21
|
+
task :configs do
|
|
22
|
+
|
|
23
|
+
on server do
|
|
24
|
+
within deploy_path do
|
|
25
|
+
upload! File.expand_path('../../docker/overrides/production.docker-compose.yml', __dir__), 'docker-compose.yml'
|
|
26
|
+
upload! File.expand_path('../../docker', __dir__), '.', recursive: true
|
|
27
|
+
execute 'apt', 'install', 'ruby'
|
|
28
|
+
execute 'gem', 'install', 'handsome_fencer-circle_c_i'
|
|
29
|
+
execute 'handsome_fencer-circle_c_i', 'expose', 'production'
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
desc 'copy production key to server'
|
|
35
|
+
task :production_key do
|
|
36
|
+
|
|
37
|
+
on server do
|
|
38
|
+
within deploy_path do
|
|
39
|
+
|
|
40
|
+
upload! '.circleci/keys/production.key', '.circleci/keys/production.key'
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
desc 'expose production environment'
|
|
46
|
+
task :expose_production_environment do
|
|
47
|
+
|
|
48
|
+
on server do
|
|
49
|
+
within deploy_path do
|
|
50
|
+
|
|
51
|
+
execute 'apt', 'install', 'ruby'
|
|
52
|
+
execute 'gem', 'install', 'handsome_fencer-circle_c_i'
|
|
53
|
+
execute 'handsome_fencer-circle_c_i', 'expose', 'production'
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
namespace :docker do
|
|
61
|
+
|
|
62
|
+
desc 'logs into Docker Hub for pushing and pulling'
|
|
63
|
+
|
|
64
|
+
task :login do
|
|
65
|
+
on server do
|
|
66
|
+
execute "mkdir -p #{deploy_path}"
|
|
67
|
+
within deploy_path do
|
|
68
|
+
execute 'docker', 'login', '-u', dockerhub_user, '-p', dockerhub_pass
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
desc 'stops all Docker containers via Docker Compose'
|
|
74
|
+
|
|
75
|
+
task stop: 'deploy:configs' do
|
|
76
|
+
on server do
|
|
77
|
+
within deploy_path do
|
|
78
|
+
with rails_env: deploy_env, deploy_tag: deploy_tag do
|
|
79
|
+
execute 'docker-compose', 'stop'
|
|
80
|
+
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
desc 'starts all Docker containers via Docker Compose'
|
|
87
|
+
|
|
88
|
+
task start: 'deploy:configs' do
|
|
89
|
+
on server do
|
|
90
|
+
within deploy_path do
|
|
91
|
+
with rails_env: deploy_env, deploy_tag: deploy_tag do
|
|
92
|
+
execute 'docker-compose', 'up', '-d'
|
|
93
|
+
execute 'echo', deploy_tag , '>', 'deploy.tag'
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
desc 'pulls images from Docker Hub'
|
|
100
|
+
|
|
101
|
+
task pull: 'docker:login' do
|
|
102
|
+
on server do
|
|
103
|
+
within deploy_path do
|
|
104
|
+
["#{deploy_path}_app", "#{deploy_path}_web"].each do |image_name|
|
|
105
|
+
execute 'docker', 'pull', "#{dockerhub_org}/#{image_name}:#{deploy_tag}"
|
|
106
|
+
end
|
|
107
|
+
execute 'docker', 'pull', 'postgres:9.4.5'
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
desc 'runs database migrations in application container via Docker Compose'
|
|
114
|
+
task migrate: 'deploy:configs' do
|
|
115
|
+
on server do
|
|
116
|
+
within deploy_path do
|
|
117
|
+
with rails_env: deploy_env, deploy_tag: deploy_tag do
|
|
118
|
+
execute 'docker-compose', 'run', 'app', "bin/rails", 'db:create', 'db:migrate'
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
desc 'pulls images, stops old containers, updates the database, and starts new containers'
|
|
125
|
+
task deploy: %w{docker:pull docker:stop docker:migrate docker:start }
|
|
126
|
+
end
|
data/roro.gemspec
CHANGED
|
@@ -31,11 +31,18 @@ Gem::Specification.new do |spec|
|
|
|
31
31
|
spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
|
|
32
32
|
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
33
33
|
end
|
|
34
|
-
spec.
|
|
35
|
-
|
|
34
|
+
spec.executables << 'roro'
|
|
35
|
+
|
|
36
|
+
# spec.bindir = "exe"
|
|
37
|
+
# spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
36
38
|
spec.require_paths = ["lib"]
|
|
37
39
|
|
|
40
|
+
spec.add_dependency "thor"
|
|
41
|
+
spec.add_dependency "sshkit"
|
|
42
|
+
spec.add_dependency "handsome_fencer-crypto", "0.1.4"
|
|
38
43
|
spec.add_development_dependency "bundler", "~> 1.17"
|
|
39
44
|
spec.add_development_dependency "rake", "~> 10.0"
|
|
45
|
+
spec.add_development_dependency "byebug"
|
|
40
46
|
spec.add_development_dependency "handsome_fencer-test"
|
|
47
|
+
|
|
41
48
|
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# See https://help.github.com/articles/ignoring-files for more about ignoring files.
|
|
2
|
+
#
|
|
3
|
+
# If you find yourself ignoring temporary files generated by your text editor
|
|
4
|
+
# or operating system, you probably want to add a global ignore instead:
|
|
5
|
+
# git config --global core.excludesfile '~/.gitignore_global'
|
|
6
|
+
|
|
7
|
+
# Ignore bundler config.
|
|
8
|
+
/.bundle
|
|
9
|
+
|
|
10
|
+
# Ignore all logfiles and tempfiles.
|
|
11
|
+
/log/*
|
|
12
|
+
/tmp/*
|
|
13
|
+
!/log/.keep
|
|
14
|
+
!/tmp/.keep
|
|
15
|
+
|
|
16
|
+
# Ignore uploaded files in development
|
|
17
|
+
/storage/*
|
|
18
|
+
!/storage/.keep
|
|
19
|
+
|
|
20
|
+
/node_modules
|
|
21
|
+
/yarn-error.log
|
|
22
|
+
|
|
23
|
+
/public/assets
|
|
24
|
+
.byebug_history
|
|
25
|
+
|
|
26
|
+
# Ignore master key for decrypting credentials and more.
|
|
27
|
+
/config/master.key
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
source 'https://rubygems.org'
|
|
2
|
+
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
|
|
6
|
+
gem 'rails', '~> 5.2.2'
|
|
7
|
+
# Use postgresql as the database for Active Record
|
|
8
|
+
gem 'pg', '>= 0.18', '< 2.0'
|
|
9
|
+
# Use Puma as the app server
|
|
10
|
+
gem 'puma', '~> 3.11'
|
|
11
|
+
# Use SCSS for stylesheets
|
|
12
|
+
gem 'sass-rails', '~> 5.0'
|
|
13
|
+
# Use Uglifier as compressor for JavaScript assets
|
|
14
|
+
gem 'uglifier', '>= 1.3.0'
|
|
15
|
+
# See https://github.com/rails/execjs#readme for more supported runtimes
|
|
16
|
+
# gem 'mini_racer', platforms: :ruby
|
|
17
|
+
|
|
18
|
+
# Use CoffeeScript for .coffee assets and views
|
|
19
|
+
gem 'coffee-rails', '~> 4.2'
|
|
20
|
+
# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
|
|
21
|
+
gem 'turbolinks', '~> 5'
|
|
22
|
+
# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
|
|
23
|
+
gem 'jbuilder', '~> 2.5'
|
|
24
|
+
# Use Redis adapter to run Action Cable in production
|
|
25
|
+
# gem 'redis', '~> 4.0'
|
|
26
|
+
# Use ActiveModel has_secure_password
|
|
27
|
+
# gem 'bcrypt', '~> 3.1.7'
|
|
28
|
+
|
|
29
|
+
# Use ActiveStorage variant
|
|
30
|
+
# gem 'mini_magick', '~> 4.8'
|
|
31
|
+
|
|
32
|
+
# Use Capistrano for deployment
|
|
33
|
+
# gem 'capistrano-rails', group: :development
|
|
34
|
+
|
|
35
|
+
# Reduces boot times through caching; required in config/boot.rb
|
|
36
|
+
gem 'bootsnap', '>= 1.1.0', require: false
|
|
37
|
+
|
|
38
|
+
group :development, :test do
|
|
39
|
+
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
|
|
40
|
+
gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
group :development do
|
|
44
|
+
# Access an interactive console on exception pages or by calling 'console' anywhere in the code.
|
|
45
|
+
gem 'web-console', '>= 3.3.0'
|
|
46
|
+
gem 'listen', '>= 3.0.5', '< 3.2'
|
|
47
|
+
# Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
|
|
48
|
+
gem 'spring'
|
|
49
|
+
gem 'spring-watcher-listen', '~> 2.0.0'
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
group :test do
|
|
53
|
+
# Adds support for Capybara system testing and selenium driver
|
|
54
|
+
gem 'capybara', '>= 2.15'
|
|
55
|
+
gem 'selenium-webdriver'
|
|
56
|
+
# Easy installation and use of chromedriver to run system tests with Chrome
|
|
57
|
+
gem 'chromedriver-helper'
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
|
|
61
|
+
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# README
|
|
2
|
+
|
|
3
|
+
This README would normally document whatever steps are necessary to get the
|
|
4
|
+
application up and running.
|
|
5
|
+
|
|
6
|
+
Things you may want to cover:
|
|
7
|
+
|
|
8
|
+
* Ruby version
|
|
9
|
+
|
|
10
|
+
* System dependencies
|
|
11
|
+
|
|
12
|
+
* Configuration
|
|
13
|
+
|
|
14
|
+
* Database creation
|
|
15
|
+
|
|
16
|
+
* Database initialization
|
|
17
|
+
|
|
18
|
+
* How to run the test suite
|
|
19
|
+
|
|
20
|
+
* Services (job queues, cache servers, search engines, etc.)
|
|
21
|
+
|
|
22
|
+
* Deployment instructions
|
|
23
|
+
|
|
24
|
+
* ...
|