roro 0.3.17 → 0.3.18

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