roro 0.3.17 → 0.3.18

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 (141) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +11 -10
  3. data/.gitignore +3 -2
  4. data/Guardfile +8 -10
  5. data/README.md +2 -1
  6. data/lib/roro.rb +1 -0
  7. data/lib/roro/cli.rb +13 -7
  8. data/lib/roro/cli/generate/story.rb +18 -0
  9. data/lib/roro/cli/greenfield/rails.rb +2 -24
  10. data/lib/roro/cli/rollon.rb +135 -8
  11. data/lib/roro/cli/rollon/rails/base/base.rb +4 -0
  12. data/lib/roro/cli/{base → rollon/rails/base}/insert_gems.rb +2 -10
  13. data/lib/roro/cli/{base → rollon/rails/base}/insertions.rb +8 -0
  14. data/lib/roro/cli/rollon/rails/database.rb +4 -8
  15. data/lib/roro/cli/rollon/rails/database/with_mysql.rb +2 -2
  16. data/lib/roro/cli/rollon/rails/database/with_postgresql.rb +3 -4
  17. data/lib/roro/cli/rollon/ruby_gem/with_ci_cd.rb +7 -7
  18. data/lib/roro/configurator.rb +15 -0
  19. data/lib/roro/configurator/eligibility.rb +137 -0
  20. data/lib/roro/configurator/okonomi.rb +28 -0
  21. data/lib/roro/configurator/omakase.rb +170 -0
  22. data/lib/roro/stories/greenfield.yml +1 -0
  23. data/lib/roro/stories/greenfield/rails.yml +9 -0
  24. data/lib/roro/stories/rollon.yml +42 -0
  25. data/lib/roro/stories/rollon/rails.yml +76 -0
  26. data/lib/roro/stories/rollon/rails/ci_cd.yml +1 -0
  27. data/lib/roro/stories/rollon/rails/ci_cd/circleci.yml +2 -0
  28. data/lib/roro/stories/rollon/rails/database.yml +9 -0
  29. data/lib/roro/stories/rollon/rails/database/mysql.yml +17 -0
  30. data/lib/roro/stories/rollon/rails/database/postgresql.yml +15 -0
  31. data/lib/roro/stories/rollon/rails/kubernetes.yml +1 -0
  32. data/lib/roro/stories/rollon/rails/kubernetes/postgresql.yml +10 -0
  33. data/lib/roro/stories/rollon/rails/kubernetes/postgresql/default.yml +1 -0
  34. data/lib/roro/stories/rollon/rails/kubernetes/postgresql/edge.yml +1 -0
  35. data/lib/roro/stories/rollon/ruby_gem.yml +5 -0
  36. data/lib/roro/{cli/templates/rails → templates/base}/.circleci/_aliases.yml +0 -0
  37. data/lib/roro/templates/base/.circleci/_commands.yml +31 -0
  38. data/lib/roro/templates/base/.circleci/_defaults.yml +5 -0
  39. data/lib/roro/templates/base/.circleci/_executors.yml +11 -0
  40. data/lib/roro/templates/base/.circleci/_major_only.yml +4 -0
  41. data/lib/roro/templates/base/.circleci/_version.yml +1 -0
  42. data/lib/roro/{cli/templates → templates}/base/.circleci/_workflow.yml +0 -0
  43. data/lib/roro/{cli/templates → templates}/base/.circleci/config.job-example.yml +5 -5
  44. data/lib/roro/{cli/templates → templates}/base/.circleci/jobs/_build.yml +0 -0
  45. data/lib/roro/{cli/templates → templates}/base/.circleci/jobs/_release.yml +0 -0
  46. data/lib/roro/{cli/templates → templates}/base/.circleci/workflows/_build_release.yml +0 -0
  47. data/lib/roro/{cli/templates → templates}/base/.dockerignore +0 -0
  48. data/lib/roro/{cli/templates → templates}/base/dotenv +0 -0
  49. data/lib/roro/{cli/templates → templates}/base/jumpstart/.keep +0 -0
  50. data/lib/roro/{cli/templates → templates}/base/jumpstart/Dockerfile.tt +0 -0
  51. data/lib/roro/{cli/templates → templates}/base/jumpstart/docker-compose.yml +0 -0
  52. data/lib/roro/{cli/templates → templates}/base/jumpstart/docker-entrypoint.sh +0 -0
  53. data/lib/roro/{cli/templates → templates}/base/livereload/hosts.example +0 -0
  54. data/lib/roro/{cli/templates → templates}/base/roro/.keep +0 -0
  55. data/lib/roro/{cli/templates → templates}/base/roro/roro/.keep +0 -0
  56. data/lib/roro/{cli/templates → templates}/base/roro/roro/containers/.keep +0 -0
  57. data/lib/roro/{cli/templates → templates}/base/roro/roro/containers/app/.keep +0 -0
  58. data/lib/roro/{cli/templates → templates}/base/roro/roro/containers/frontend/.keep +0 -0
  59. data/lib/roro/{cli/templates → templates}/base/roro/roro/docker-entrypoint.sh.tt +0 -0
  60. data/lib/roro/{cli/templates → templates}/rails/.circleci/.keep +0 -0
  61. data/lib/roro/{cli/templates → templates}/rails/.circleci/config.yml.tt +4 -6
  62. data/lib/roro/{cli/templates → templates}/rails/.circleci/jobs/_build.yml +4 -6
  63. data/lib/roro/templates/rails/.circleci/jobs/_push.yml +11 -0
  64. data/lib/roro/templates/rails/.circleci/jobs/_test.yml +12 -0
  65. data/lib/roro/{cli/templates → templates}/rails/.circleci/setup-gem-credentials.sh +0 -0
  66. data/lib/roro/templates/rails/.circleci/workflows/_build_test_push.yml +12 -0
  67. data/lib/roro/{cli/templates → templates}/rails/.keep +0 -0
  68. data/lib/roro/templates/rails/Dockerfile.greenfield.tt +51 -0
  69. data/lib/roro/{cli/templates → templates}/rails/config/database.mysql.yml +0 -0
  70. data/lib/roro/{cli/templates → templates}/rails/config/database.pg.yml +2 -3
  71. data/lib/roro/{cli/templates/stories → templates/rails/database}/with_mysql/_service.yml +0 -0
  72. data/lib/roro/{cli/templates → templates}/rails/database/with_postgresql/.keep +0 -0
  73. data/lib/roro/{cli/templates/stories → templates/rails/database}/with_postgresql/_service.yml +0 -0
  74. data/lib/roro/{cli/templates → templates}/rails/docker-compose.yml.tt +3 -3
  75. data/lib/roro/{cli/templates → templates}/rails/dotenv/.keep +0 -0
  76. data/lib/roro/templates/rails/dotenv/database.mysql.env.tt +6 -0
  77. data/lib/roro/templates/rails/dotenv/database.pg.env.tt +4 -0
  78. data/lib/roro/{cli/templates → templates}/rails/dotenv/web.env.tt +0 -0
  79. data/lib/roro/templates/rails/kube.rake.tt +114 -0
  80. data/lib/roro/{cli/templates → templates}/rails/roro/.keep +0 -0
  81. data/lib/roro/{cli/templates → templates}/rails/roro/containers/.keep +0 -0
  82. data/lib/roro/{cli/templates → templates}/rails/roro/containers/app/.keep +0 -0
  83. data/lib/roro/templates/rails/roro/containers/app/Dockerfile.tt +34 -0
  84. data/lib/roro/{cli/templates → templates}/rails/roro/containers/frontend/.keep +0 -0
  85. data/lib/roro/{cli/templates/rails/roro/docker-entrypoint.sh.tt → templates/rails/roro/docker-entrypoint.sh} +0 -0
  86. data/lib/roro/{cli/templates/rails/roro/roro → templates/rails/roro/kube}/.keep +0 -0
  87. data/lib/roro/{cli/templates/rails/roro/roro/containers/.keep → templates/rails/roro/kube/certificate.yml.tt} +0 -0
  88. data/lib/roro/{cli/templates/rails/roro/roro/containers/app/.keep → templates/rails/roro/kube/cluster-issuer.yml.tt} +0 -0
  89. data/lib/roro/templates/rails/roro/kube/deployment.yml.tt +50 -0
  90. data/lib/roro/templates/rails/roro/kube/deployments/postgres_deploy.yaml +47 -0
  91. data/lib/roro/templates/rails/roro/kube/deployments/rails_deploy.yaml +62 -0
  92. data/lib/roro/templates/rails/roro/kube/deployments/redis_deploy.yaml +23 -0
  93. data/lib/roro/templates/rails/roro/kube/deployments/sidekiq_deploy.yaml +56 -0
  94. data/lib/roro/{cli/templates/rails/roro/roro/containers/frontend/.keep → templates/rails/roro/kube/ingress.yml.tt} +0 -0
  95. data/lib/roro/templates/rails/roro/kube/ingresses/ingress.yaml +13 -0
  96. data/lib/roro/{cli/templates/ruby_gem/.circleci/.keep → templates/rails/roro/kube/job-migrate.yml.tt} +0 -0
  97. data/lib/roro/templates/rails/roro/kube/jobs/setup.yaml +42 -0
  98. data/lib/roro/templates/rails/roro/kube/secret-digital-ocean.yml.tt +4 -0
  99. data/lib/roro/templates/rails/roro/kube/service.yml.tt +10 -0
  100. data/lib/roro/templates/rails/roro/kube/services/postgres_svc.yaml +13 -0
  101. data/lib/roro/templates/rails/roro/kube/services/rails_svc.yaml +13 -0
  102. data/lib/roro/templates/rails/roro/kube/services/redis_svc.yaml +13 -0
  103. data/lib/roro/templates/rails/roro/kube/volumes/postgres_volumes.yaml +25 -0
  104. data/lib/roro/{cli/templates/ruby_gem/roro/containers → templates/ruby_gem/.circleci}/.keep +0 -0
  105. data/lib/roro/{cli/templates → templates}/ruby_gem/.circleci/config.yml.tt +4 -4
  106. data/lib/roro/templates/ruby_gem/.circleci/jobs/_test.yml +4 -0
  107. data/lib/roro/{cli/templates → templates}/ruby_gem/.circleci/setup-gem-credentials.sh +0 -0
  108. data/lib/roro/{cli/templates → templates}/ruby_gem/docker-compose.yml +0 -0
  109. data/lib/roro/{cli/templates/ruby_gem/roro/keys → templates/ruby_gem/roro/containers}/.keep +0 -0
  110. data/lib/roro/{cli/templates → templates}/ruby_gem/roro/containers/ruby_image/Dockerfile.tt +1 -1
  111. data/lib/roro/templates/ruby_gem/roro/containers/ruby_image/ci.env.tt +1 -0
  112. data/lib/roro/{cli/templates/stories → templates/ruby_gem/roro/keys}/.keep +0 -0
  113. data/lib/roro/version.rb +1 -1
  114. metadata +101 -80
  115. data/lib/roro/cli/base/base.rb +0 -8
  116. data/lib/roro/cli/base/base_files.rb +0 -24
  117. data/lib/roro/cli/base/check_dependencies.rb +0 -97
  118. data/lib/roro/cli/base/continuous_integration.rb +0 -13
  119. data/lib/roro/cli/base/utilities.rb +0 -38
  120. data/lib/roro/cli/configuration.rb +0 -69
  121. data/lib/roro/cli/generate/config.rb +0 -11
  122. data/lib/roro/cli/generate/config/rails.rb +0 -17
  123. data/lib/roro/cli/rollon/rails.rb +0 -47
  124. data/lib/roro/cli/rollon/stories/stories.rb +0 -3
  125. data/lib/roro/cli/roro_configurator.yml +0 -157
  126. data/lib/roro/cli/templates/base/.circleci/_defaults.yml +0 -17
  127. data/lib/roro/cli/templates/base/.roro_config.yml +0 -15
  128. data/lib/roro/cli/templates/rails/.circleci/jobs/_push.yml +0 -23
  129. data/lib/roro/cli/templates/rails/.circleci/jobs/_test.yml +0 -13
  130. data/lib/roro/cli/templates/rails/.circleci/workflows/_build_test_push.yml +0 -9
  131. data/lib/roro/cli/templates/rails/Dockerfile.greenfield.tt +0 -47
  132. data/lib/roro/cli/templates/rails/database/with_mysql/_service.yml +0 -10
  133. data/lib/roro/cli/templates/rails/database/with_postgresql/_service.yml +0 -7
  134. data/lib/roro/cli/templates/rails/dotenv/database.mysql.env.tt +0 -3
  135. data/lib/roro/cli/templates/rails/dotenv/database.pg.env.tt +0 -4
  136. data/lib/roro/cli/templates/rails/roro/containers/app/Dockerfile.tt +0 -88
  137. data/lib/roro/cli/templates/rails/roro/roro/docker-entrypoint.sh.tt +0 -8
  138. data/lib/roro/cli/templates/ruby_gem/roro/containers/ruby_image/ci.env.tt +0 -1
  139. data/lib/roro/cli/templates/stories/ruby_gem/with_ci_cd/_build.yml +0 -11
  140. data/lib/roro/cli/templates/stories/with_postgresql/.keep +0 -0
  141. data/lib/tasks/deploy.rake +0 -126
@@ -1,69 +0,0 @@
1
- require 'yaml'
2
- module Roro
3
- class Configuration < Thor
4
-
5
- attr_reader :master, :app, :choices, :thor_actions
6
-
7
- def initialize(options={})
8
- @options = options || {}
9
- @master = YAML.load_file(File.dirname(__FILE__) + '/roro_configurator.yml')
10
- @master['services']['server_app']['vendors']['rails']['version'] = `ruby -v`.scan(/\d.\d/).first
11
- @choices = @master['services']['server_app']['vendors']['rails']['choices']
12
- @app = {}
13
- @thor_actions = {}
14
- configure
15
- end
16
-
17
- no_commands do
18
-
19
- def configure
20
- set_from_defaults
21
- case
22
- when @options['interactive'] && File.exist?('.roro_config.yml')
23
- set_from_roro_config
24
- set_from_interactive
25
- when File.exist?('.roro_config.yml')
26
- set_from_roro_config
27
- when @options['interactive']
28
- set_from_interactive
29
- end
30
- end
31
-
32
- def set_from_defaults
33
- svcs = @master['services']
34
- rails = svcs['server_app']['vendors']['rails']
35
- @app = {
36
- 'main_app_name' => Dir.pwd.split('/').last,
37
- 'database_host' => rails['env_vars']['DATABASE_HOST'],
38
- 'ruby_version' => rails['version'],
39
- 'frontend_service' => svcs['frontend']['name'],
40
- 'webserver_service' => svcs['webserver']['default'],
41
- 'database_service' => svcs['database']['name'],
42
- 'database_vendor' => svcs['database']['vendor'],
43
- }
44
- @choices.each { |key, value| @thor_actions[key] = value["default"] }
45
- end
46
-
47
- def set_from_roro_config
48
- yaml = YAML.load_file(Dir.pwd + '/.roro_config.yml')
49
- yaml.each { |key, value| @app[key] = value }
50
- if yaml['thor_actions']
51
- yaml['thor_actions'].each do |key, value|
52
- @thor_actions[key] = value
53
- end
54
- end
55
- end
56
-
57
- def set_from_interactive
58
- @choices.each do |key, v|
59
- prompt = ["\n\n" + v['question']]
60
- v['choices'].each { |k,v| prompt << "(#{k}) #{v.to_s}" }
61
- answer = ask((prompt.join("\n\n") + "\n\n"),
62
- default: v['default'],
63
- limited_to: v['choices'].keys)
64
- @thor_actions[key] = answer
65
- end
66
- end
67
- end
68
- end
69
- end
@@ -1,11 +0,0 @@
1
- module Roro
2
- class CLI < Thor
3
-
4
- desc "generate::config", "Generate a config file at .roro_config.yml"
5
- map "generate::config" => "generate_config"
6
-
7
- def generate_config
8
- create_file ".roro_config.yml", @config.app.to_yaml
9
- end
10
- end
11
- end
@@ -1,17 +0,0 @@
1
- # module Roro
2
- # class CLI < Thor
3
- # include Thor::Actions
4
-
5
- # desc "generate::config::rails", "Generates a config file to use roro with
6
- # a rails app at .roro.yml"
7
- # map "generate::config::rails" => "generate_config_rails"
8
-
9
- # def generate_config_rails
10
- # master_config = YAML.load_file(ENV['PWD'] + "/lib/roro/cli/roro_configurator.yml")
11
- # template 'base/.roro_config.yml', '.roro_config.yml'
12
- # end
13
-
14
- # no_commands do
15
- # end
16
- # end
17
- # end
@@ -1,47 +0,0 @@
1
- require 'roro/cli/rollon/stories'
2
- require 'roro/cli/rollon/rails/database'
3
-
4
- module Roro
5
-
6
- class CLI < Thor
7
-
8
- desc "rollon::rails", "Generates files for and makes changes to your app
9
- so it can run using Docker containers."
10
- method_option :interactive, desc: "Set up your environment variables as
11
- you go."
12
- map "rollon::rails" => "rollon_rails"
13
-
14
- def rollon_rails(*args)
15
- confirm_directory_not_empty
16
- confirm_dependencies
17
- configure_for_rollon
18
- copy_rails_files
19
- generate_config
20
- startup_commands
21
- end
22
-
23
- no_commands do
24
-
25
- def copy_rails_files
26
- template 'rails/.circleci/config.yml.tt', './.circleci/config.yml'
27
- configure_database
28
- template 'rails/docker-compose.yml.tt', './docker-compose.yml', @config.app
29
- template 'base/dotenv', './.env', @config.app
30
- directory 'rails/roro', './roro', @config.app
31
- take_thor_actions
32
- end
33
-
34
- def startup_commands
35
- success_msg = "'\n\n#{'*' * 5 }\n\nYour Rails app is available at http://localhost:3000/'\n\n#{'*' * 5 }"
36
- system 'docker-compose build'
37
- system 'docker-compose run web bundle'
38
- system 'docker-compose run web bin/rails webpacker:install'
39
- system 'docker-compose run web bin/rails yarn:install'
40
- system 'docker-compose run web bin/rails db:create'
41
- system 'docker-compose run web bin/rails db:migrate'
42
- system 'docker-compose up -d'
43
- system "docker-compose run web echo '\n\nYour Rails app is available at http://localhost:3000/'"
44
- end
45
- end
46
- end
47
- end
@@ -1,3 +0,0 @@
1
- require_relative 'ruby_gem/ruby_gem'
2
-
3
-
@@ -1,157 +0,0 @@
1
- ---
2
- main_app_name: <%= Dir.pwd.split('/').last %>
3
- developer:
4
- name: your-name
5
- email: your.email@example.com
6
-
7
- services:
8
- server_app:
9
- name: app
10
- vendors:
11
- rails:
12
- version:
13
- image:
14
- official_name: ruby
15
- variants:
16
- - alpine
17
- - buster
18
- - slim
19
- - slim-buster
20
- - stretch
21
-
22
- choices:
23
-
24
- config_std_out_true:
25
- question: |
26
- The team at Heroku, among others, recommend logging to STDOUT
27
- and treating your logs as streams. We'll set this to
28
- true as an environment variable but it may also be helpful
29
- to configure './config/boot.rb' with '$stdout.sync = true'
30
- just in case that doesn't work.
31
- Would you like to configure this?
32
- choices:
33
- y: 'Yes'
34
- n: 'No'
35
- default: y
36
-
37
- insert_roro_gem_into_gemfile:
38
- question: |
39
- Many developers believe it's good idea to secure sensitive
40
- environment files and variables. You can use RoRo to
41
- generate secret keys known only to you for use in any
42
- environment, and then use them to encrypt and decrypt
43
- these files. Would you like to add RoRo to your Gemfile?
44
- choices:
45
- y: 'Yes'
46
- n: 'No'
47
- default: y
48
-
49
- gitignore_sensitive_files:
50
- question: |
51
- If you plan to use the environment files RoRo generates for
52
- your own environment variables, it's a good idea to keep
53
- these files out of source control. Would you like RoRo to
54
- modify your .gitignore file to accomplish this for you ?
55
- choices:
56
- y: 'Yes'
57
- n: 'No'
58
- default: y
59
-
60
- insert_hfci_gem_into_gemfile:
61
- question: |
62
- Jim Weirich passed too soon and remains missed. In addition
63
- to Rake, Jim wrote a beautiful gem called 'Given' that makes
64
- Rspec and Minitest less ugly and thus your tests more easy to
65
- write. Would you like to install a gem called
66
- handsome_fencer-test that allows you to try it out?
67
- choices:
68
- y: 'Yes'
69
- n: 'No'
70
- default: n
71
-
72
- backup_existing_files:
73
- question: |
74
- RoRo will be generating a number of files, some of which will
75
- replace existing ones. Would you like to back them up?
76
- choices:
77
- y: 'Yes'
78
- n: 'No'
79
- default: n
80
-
81
- copy_dockerignore:
82
- question: |
83
- Would you like to create a .dockerignore file?
84
- choices:
85
- y: 'Yes'
86
- n: 'No'
87
- default: y
88
-
89
- configure_database:
90
- question: |
91
- RoRo can reliably dockerize your Rails app with either
92
- MySQL or PostgreSQL stories. Which story would you prefer
93
- to roll on?
94
- choices:
95
- p: PostgreSQL
96
- m: MySQL
97
- default: p
98
-
99
- env_vars:
100
- DATABASE_HOST: database
101
-
102
- database:
103
- name: database
104
- vendor: postgresql
105
- vendors:
106
- postgresql:
107
- images:
108
- official_name:
109
- versions:
110
- - latest
111
- env_vars:
112
- POSTGRES_USER: postgres
113
- POSTGRES_PASSWORD: your-postgres-password
114
-
115
- mysql:
116
- env_vars:
117
- MYSQL_ROOT_PASSWORD: root
118
- MYSQL_PASSWORD: root
119
- MYSQL_USERNAME: root
120
- MYSQL_DATABASE_PORT: '3306'
121
-
122
- frontend:
123
- name: frontend
124
- vendors:
125
-
126
- - frontend
127
- - vuejs
128
- - react
129
- - angular
130
- webserver:
131
- default: nginx
132
- vendors:
133
- - nginx
134
- application_server:
135
- name: appserver
136
- vendors:
137
- - unicorn:
138
- - puma:
139
- registries:
140
- dockerhub:
141
- env_vars:
142
- DOCKERHUB_EMAIL: your-docker-hub-email
143
- DOCKERHUB_ORG: your-docker-hub-org-name
144
- DOCKERHUB_PASSWORD: your-docker-hub-password
145
- DOCKERHUB_USER: your-docker-hub-user-name
146
-
147
- ci_cd:
148
- semaphore:
149
- circleci:
150
- env_vars:
151
- DEPLOY_TAG: "${CIRCLE_SHA1:0:7}"
152
-
153
- deployment:
154
- env_vars:
155
- SERVER_HOST: "ip-address-of-your-server"
156
- SERVER_PORT: '22'
157
- SERVER_USER: root
@@ -1,17 +0,0 @@
1
- defaults: &defaults
2
- executor: machine-layer-caching
3
- working_directory: ~/project
4
-
5
- version: 2.1
6
-
7
- executors:
8
- machine-layer-caching:
9
- machine:
10
- docker_layer_caching: true
11
- machine-executor:
12
- machine: true
13
- ruby-executor:
14
- docker:
15
- - image: cimg/ruby:2.7
16
-
17
- jobs:
@@ -1,15 +0,0 @@
1
- ---
2
- main_app_name: greenfield
3
- database_host: database
4
- ruby_version: '2.7'
5
- frontend_service: frontend
6
- webserver_service: nginx
7
- database_service: database
8
- database_vendor: mysql
9
- mysql_env_vars:
10
- MYSQL_ROOT_PASSWORD: root
11
- MYSQL_PASSWORD: root
12
- MYSQL_USERNAME: root
13
- MYSQL_DATABASE_PORT: '3306'
14
- thor_actions:
15
- insert_hfci_gem_into_gemfile: y
@@ -1,23 +0,0 @@
1
- push:
2
- machine: true
3
- steps:
4
- - checkout
5
- - run: gem install handsome_fencer-circle_c_i
6
- - run: handsome_fencer-circle_c_i expose circleci
7
- - run: handsome_fencer-circle_c_i expose development
8
- - run: echo 'source docker/env_files/circleci.env' >> $BASH_ENV
9
- - run: cp docker/overrides/circleci.yml docker-compose.override.yml
10
- - run: docker-compose build
11
- - run: docker login -u $DOCKERHUB_USER -p $DOCKERHUB_PASS
12
- - run:
13
- name: Tag app image
14
- command: docker tag $(docker images | grep project_app | awk '{ print $3 }') ${DOCKERHUB_ORG}/${APP_NAME}_app:$DEPLOY_TAG
15
- # - run: docker tag $(docker images | grep project_app | awk '{ print $3 }') ${DOCKERHUB_ORG}/${APP_NAME}_app:latest
16
- - run:
17
- name: Tag app image
18
- command: docker tag $(docker images | grep project_web | awk '{ print $3 }') ${DOCKERHUB_ORG}/${APP_NAME}_web:$DEPLOY_TAG
19
- # - run: docker tag $(docker images | grep project_web | awk '{ print $3 }') ${DOCKERHUB_ORG}/${APP_NAME}_web:latest
20
- - run: docker push ${DOCKERHUB_ORG}/${APP_NAME}_app:$DEPLOY_TAG
21
- - run: docker push ${DOCKERHUB_ORG}/${APP_NAME}_app:latest
22
- - run: docker push ${DOCKERHUB_ORG}/${APP_NAME}_web:$DEPLOY_TAG
23
- - run: docker push ${DOCKERHUB_ORG}/${APP_NAME}_web:latest
@@ -1,13 +0,0 @@
1
- test:
2
- <<: *defaults
3
- steps:
4
- - checkout
5
- - attach_workspace: *workspace-location
6
- - run: *copy-ci-dotenv
7
- - run: *source-ci-variables
8
- - run: RORO_ENV=ci docker-compose build
9
- - run: RORO_ENV=ci docker-compose run web bundle
10
- - run: RORO_ENV=ci docker-compose run web yarn
11
- - run: RORO_ENV=ci docker-compose run web bin/rails db:create
12
- - run: RORO_ENV=ci docker-compose run web bin/rails db:migrate
13
- - run: RORO_ENV=ci docker-compose run web bin/rails test
@@ -1,9 +0,0 @@
1
- build-and-test:
2
- jobs:
3
- - build
4
- - test:
5
- requires:
6
- - build
7
- filters:
8
- branches:
9
- only: development
@@ -1,47 +0,0 @@
1
- FROM ruby:<%= config['ruby_version'] %> AS builder
2
-
3
- ## Make sure we have yarn properly sourced:
4
- RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
5
- RUN echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list
6
-
7
- ## Update OS and download yarm from source specified above:
8
- RUN apt-get update -qq && apt-get install -y build-essential git nodejs yarn
9
-
10
- ## Set up our workspace directories:
11
- ENV APP_HOME /usr/src/app/
12
- RUN mkdir ${APP_HOME}
13
-
14
- ## Tell bundler where to store downloaded gems:
15
- ENV BUNDLE_PATH /gems
16
- RUN mkdir ${BUNDLE_PATH}
17
-
18
- ## Tell Docker to create volumes for our workspace and gems
19
- ## so other containers can access them.
20
- VOLUME ${APP_HOME}
21
- VOLUME ${BUNDLE_PATH}
22
-
23
- ## Switch to the the work directory from container root:
24
- WORKDIR ${APP_HOME}
25
-
26
- ## Create a Gemfile with just the Rails gem inside:
27
- RUN echo "source 'https://rubygems.org'\ngem 'rails'" > Gemfile
28
-
29
- ## Bundle to install rails:
30
- RUN bundle install
31
-
32
- ## Use Rails to generate a new app. We'll configure it later.
33
- RUN bundle exec rails new .
34
-
35
- ## setup yarn for rails:
36
- RUN bundle exec rails yarn:install
37
-
38
-
39
- ## Tell docker not to create a layer:
40
- FROM scratch AS export-stage
41
-
42
- ## Copy the generated files onto the host. Note that because we are in a
43
- ## new container, we don't have access to the previous ${APP_HOME}
44
- ## variable and so we must hard code it as our source:
45
- COPY --from=builder /usr/src/app/ .
46
-
47
-
@@ -1,10 +0,0 @@
1
- database:
2
- image: mysql:5.7
3
- env_file:
4
- - roro/containers/database/development.env
5
- - roro/containers/app/development.env
6
- volumes:
7
- - db_data:/var/lib/mysql
8
- restart: always
9
- ports:
10
- - '3307:3306'