roro 0.3.14 → 0.3.16
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +35 -10
- data/Guardfile +7 -7
- data/lib/roro.rb +1 -1
- data/lib/roro/cli.rb +12 -76
- data/lib/roro/cli/base/check_dependencies.rb +0 -1
- data/lib/roro/cli/base/utilities.rb +0 -1
- data/lib/roro/cli/generate/config.rb +6 -8
- data/lib/roro/cli/generate/exposed.rb +14 -0
- data/lib/roro/cli/generate/{generate_keys.rb → keys.rb} +22 -0
- data/lib/roro/cli/generate/obfuscated.rb +17 -0
- data/lib/roro/cli/greenfield/rails.rb +36 -0
- data/lib/roro/cli/rollon.rb +2 -66
- data/lib/roro/cli/rollon/rails.rb +47 -0
- data/lib/roro/cli/rollon/{stories/rails → rails}/database.rb +3 -6
- data/lib/roro/cli/rollon/{stories/rails → rails}/database/with_mysql.rb +2 -2
- data/lib/roro/cli/rollon/{stories/rails → rails}/database/with_postgresql.rb +2 -2
- data/lib/roro/cli/rollon/ruby_gem.rb +1 -0
- data/lib/roro/cli/rollon/{stories/ruby_gem → ruby_gem}/with_ci_cd.rb +1 -1
- data/lib/roro/cli/rollon/stories.rb +2 -2
- data/lib/roro/cli/templates/base/.circleci/_defaults.yml +15 -0
- data/lib/roro/cli/templates/base/.circleci/_workflow.yml +2 -0
- data/lib/roro/cli/templates/base/.circleci/config.job-example.yml +33 -0
- data/lib/roro/cli/templates/base/.circleci/jobs/_build.yml +4 -0
- data/lib/roro/cli/templates/base/.circleci/jobs/_release.yml +12 -0
- data/lib/roro/cli/templates/base/.circleci/workflows/_build_release.yml +10 -0
- data/lib/roro/cli/templates/base/dotenv +1 -0
- data/lib/roro/cli/{rollon/stories/rails → templates/rails/.circleci}/.keep +0 -0
- data/lib/roro/cli/templates/rails/.circleci/_aliases.yml +8 -0
- data/lib/roro/cli/templates/rails/.circleci/config.yml.tt +15 -0
- data/lib/roro/cli/templates/rails/.circleci/jobs/_build.yml +16 -0
- data/lib/roro/cli/templates/rails/.circleci/jobs/_push.yml +23 -0
- data/lib/roro/cli/templates/rails/.circleci/jobs/_test.yml +10 -0
- data/lib/roro/cli/templates/rails/.circleci/setup-gem-credentials.sh +3 -0
- data/lib/roro/cli/templates/rails/.circleci/workflows/_build_test_push.yml +9 -0
- data/lib/roro/cli/templates/{base → rails}/.keep +0 -0
- data/lib/roro/cli/templates/{greenfield/Dockerfile.tt → rails/Dockerfile.greenfield.tt} +11 -7
- data/lib/roro/cli/templates/{base → rails}/config/database.mysql.yml +0 -0
- data/lib/roro/cli/templates/{base → rails}/config/database.pg.yml +0 -0
- data/lib/roro/cli/templates/{stories/rails → rails}/database/with_mysql/_service.yml +0 -0
- data/lib/roro/cli/templates/{stories/rails → rails}/database/with_postgresql/.keep +0 -0
- data/lib/roro/cli/templates/{stories/rails → rails}/database/with_postgresql/_service.yml +0 -0
- data/lib/roro/cli/{rollon/stories/database.rb → templates/rails/dotenv/.keep} +0 -0
- data/lib/roro/cli/templates/rails/dotenv/database.mysql.env.tt +3 -0
- data/lib/roro/cli/templates/rails/dotenv/database.pg.env.tt +4 -0
- data/lib/roro/cli/templates/rails/dotenv/web.env.tt +2 -0
- data/lib/roro/cli/templates/rails/roro/.keep +0 -0
- data/lib/roro/cli/templates/rails/roro/containers/.keep +0 -0
- data/lib/roro/cli/templates/rails/roro/containers/app/.keep +0 -0
- data/lib/roro/cli/templates/{base → rails/roro/containers/app}/Dockerfile.tt +18 -9
- data/lib/roro/cli/templates/rails/roro/containers/frontend/.keep +0 -0
- data/lib/roro/cli/templates/rails/roro/docker-compose.yml.tt +59 -0
- data/lib/roro/cli/templates/rails/roro/docker-entrypoint.sh.tt +8 -0
- data/lib/roro/cli/templates/rails/roro/roro/.keep +0 -0
- data/lib/roro/cli/templates/rails/roro/roro/containers/.keep +0 -0
- data/lib/roro/cli/templates/rails/roro/roro/containers/app/.keep +0 -0
- data/lib/roro/cli/templates/rails/roro/roro/containers/frontend/.keep +0 -0
- data/lib/roro/cli/templates/rails/roro/roro/docker-entrypoint.sh.tt +8 -0
- data/lib/roro/cli/templates/roro/docker-compose.yml.tt +4 -4
- data/lib/roro/cli/templates/ruby_gem/.circleci/config.yml.tt +9 -33
- data/lib/roro/cli/templates/stories/with_mysql/_service.yml +2 -2
- data/lib/roro/cli/templates/stories/with_postgresql/_service.yml +2 -2
- data/lib/roro/version.rb +1 -1
- data/roro.gemspec +5 -5
- data/vendor/cache/apparition-0.6.0.gem +0 -0
- data/vendor/cache/capybara-3.33.0.gem +0 -0
- data/vendor/cache/childprocess-3.0.0.gem +0 -0
- data/vendor/cache/handsome_fencer-crypto-0.1.9.gem +0 -0
- data/vendor/cache/handsome_fencer-test-0.2.2.gem +0 -0
- data/vendor/cache/mini_mime-1.0.2.gem +0 -0
- data/vendor/cache/regexp_parser-1.7.1.gem +0 -0
- data/vendor/cache/rubyzip-2.3.0.gem +0 -0
- data/vendor/cache/selenium-webdriver-3.142.7.gem +0 -0
- data/vendor/cache/shoulda-2.11.3.gem +0 -0
- data/vendor/cache/shoulda-context-2.0.0.rc2.gem +0 -0
- data/vendor/cache/shoulda-matchers-4.4.1.gem +0 -0
- data/vendor/cache/websocket-driver-0.7.3.gem +0 -0
- data/vendor/cache/websocket-extensions-0.1.5.gem +0 -0
- data/vendor/cache/xpath-3.2.0.gem +0 -0
- metadata +94 -72
- data/lib/roro/cli/cli.rb +0 -99
- data/lib/roro/cli/expose.rb +0 -14
- data/lib/roro/cli/greenfield.rb +0 -31
- data/lib/roro/cli/obfuscate.rb +0 -19
- data/lib/roro/cli/rollon/stories/rails.rb +0 -1
- data/lib/roro/cli/rollon/stories/ruby_gem.rb +0 -77
- data/lib/roro/cli/ruby_gem.rb +0 -67
- data/vendor/cache/actionpack-6.0.3.2.gem +0 -0
- data/vendor/cache/actionview-6.0.3.2.gem +0 -0
- data/vendor/cache/builder-3.2.4.gem +0 -0
- data/vendor/cache/crass-1.0.6.gem +0 -0
- data/vendor/cache/erubi-1.9.0.gem +0 -0
- data/vendor/cache/handsome_fencer-crypto-0.1.6.gem +0 -0
- data/vendor/cache/handsome_fencer-test-0.1.1.gem +0 -0
- data/vendor/cache/loofah-2.6.0.gem +0 -0
- data/vendor/cache/minitest-rails-6.0.1.gem +0 -0
- data/vendor/cache/rails-dom-testing-2.0.3.gem +0 -0
- data/vendor/cache/rails-html-sanitizer-1.3.0.gem +0 -0
- data/vendor/cache/railties-6.0.3.2.gem +0 -0
- data/vendor/cache/shoulda-4.0.0.gem +0 -0
- data/vendor/cache/shoulda-context-2.0.0.gem +0 -0
- data/vendor/cache/shoulda-matchers-4.3.0.gem +0 -0
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'roro/cli/rollon/stories/rails/database/with_mysql'
|
2
|
-
require 'roro/cli/rollon/stories/rails/database/with_postgresql'
|
3
1
|
module Roro
|
4
2
|
|
5
3
|
class CLI < Thor
|
@@ -21,10 +19,9 @@ module Roro
|
|
21
19
|
end
|
22
20
|
|
23
21
|
%w(development production test staging ci).each do |environment|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
)
|
22
|
+
src = 'rails/dotenv/web.env.tt'
|
23
|
+
dest = "roro/containers/app/#{environment}.env"
|
24
|
+
template src, dest, @config.app
|
28
25
|
end
|
29
26
|
end
|
30
27
|
end
|
@@ -6,13 +6,13 @@ module Roro
|
|
6
6
|
|
7
7
|
def configure_for_mysql
|
8
8
|
insert_db_gem('mysql2')
|
9
|
-
copy_file '
|
9
|
+
copy_file 'rails/config/database.mysql.yml', 'config/database.yml', force: true
|
10
10
|
config = @config.app.clone
|
11
11
|
|
12
12
|
%w(development production test staging ci).each do |environment|
|
13
13
|
config['rails_env'] = environment
|
14
14
|
|
15
|
-
source = '
|
15
|
+
source = 'rails/dotenv/database.mysql.env.tt'
|
16
16
|
target = "roro/containers/database/#{environment}.env"
|
17
17
|
template( source, target, config )
|
18
18
|
end
|
@@ -6,12 +6,12 @@ module Roro
|
|
6
6
|
|
7
7
|
def configure_for_pg
|
8
8
|
insert_db_gem('pg')
|
9
|
-
copy_file '
|
9
|
+
copy_file 'rails/config/database.pg.yml', 'config/database.yml', force: true
|
10
10
|
config = @config.app.clone
|
11
11
|
%w(development production test staging ci).each do |environment|
|
12
12
|
config['rails_env'] = environment
|
13
13
|
|
14
|
-
source = '
|
14
|
+
source = 'rails/dotenv/database.pg.env.tt'
|
15
15
|
target = "roro/containers/database/#{environment}.env"
|
16
16
|
template( source, target, config )
|
17
17
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'roro/cli/rollon/ruby_gem/with_ci_cd.rb'
|
@@ -6,11 +6,11 @@ module Roro
|
|
6
6
|
|
7
7
|
def rollon_ruby_gem_with_ci_cd(*args)
|
8
8
|
ruby_gem_with_ci_cd(*args)
|
9
|
+
configure_for_rollon
|
9
10
|
end
|
10
11
|
|
11
12
|
no_commands do
|
12
13
|
def ruby_gem_with_ci_cd(*args)
|
13
|
-
configure_for_rollon
|
14
14
|
answer = ask("\nYou can add your rubygems api key in\n\t
|
15
15
|
'./roro/containers/ruby_gem/ci.env' \n\nlater, or we'll try to add it here:",
|
16
16
|
default: '')
|
@@ -1,2 +1,2 @@
|
|
1
|
-
require 'roro/cli/rollon/
|
2
|
-
require 'roro/cli/rollon/
|
1
|
+
require 'roro/cli/rollon/ruby_gem'
|
2
|
+
require 'roro/cli/rollon/rails'
|
@@ -0,0 +1,33 @@
|
|
1
|
+
defaults: &defaults
|
2
|
+
working_directory: /tmp
|
3
|
+
|
4
|
+
version: 2
|
5
|
+
|
6
|
+
jobs:
|
7
|
+
|
8
|
+
build:
|
9
|
+
machine: true
|
10
|
+
steps:
|
11
|
+
- checkout
|
12
|
+
- add_ssh_keys
|
13
|
+
|
14
|
+
- run: gem install handsome_fencer-circle_c_i
|
15
|
+
- run: handsome_fencer-circle_c_i expose circleci
|
16
|
+
- run: handsome_fencer-circle_c_i expose development
|
17
|
+
- run: echo 'source docker/env_files/circleci.env' >> $BASH_ENV
|
18
|
+
- run: docker-compose build
|
19
|
+
- run: docker-compose up -d
|
20
|
+
- run: docker-compose exec app bin/rails db:create db:migrate
|
21
|
+
- run: docker login -u $DOCKERHUB_USER -p $DOCKERHUB_PASS
|
22
|
+
- run:
|
23
|
+
name: Tag app image
|
24
|
+
command: docker tag $(docker images | grep project_app | awk '{ print $3 }') ${DOCKERHUB_ORG_NAME}/${APP_NAME}_app:$DEPLOY_TAG
|
25
|
+
- run:
|
26
|
+
name: Tag web image
|
27
|
+
command: docker tag $(docker images | grep project_web | awk '{ print $3 }') ${DOCKERHUB_ORG_NAME}/${APP_NAME}_web:$DEPLOY_TAG
|
28
|
+
|
29
|
+
|
30
|
+
- run: docker push ${DOCKERHUB_ORG_NAME}/${APP_NAME}_app:$DEPLOY_TAG
|
31
|
+
- run: docker push ${DOCKERHUB_ORG_NAME}/${APP_NAME}_web:$DEPLOY_TAG
|
32
|
+
|
33
|
+
- run: rake --rakefile .circleci/Rakefile
|
@@ -0,0 +1,12 @@
|
|
1
|
+
release:
|
2
|
+
machine: true
|
3
|
+
steps:
|
4
|
+
- checkout
|
5
|
+
- run: gem install roro
|
6
|
+
- run: roro generate::exposed ci
|
7
|
+
- run: echo 'source roro/containers/ruby_image/ci.env' >> $BASH_ENV
|
8
|
+
- run: chmod +x ./.circleci/setup-gem-credentials.sh
|
9
|
+
- run: ./.circleci/setup-gem-credentials.sh
|
10
|
+
- run: cat ~/.gem/credentials
|
11
|
+
- run: git checkout .
|
12
|
+
- run: gem release
|
@@ -0,0 +1 @@
|
|
1
|
+
RORO_ENV=development
|
File without changes
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<%= yaml_from_template("rails/.circleci/_aliases.yml") %>
|
2
|
+
|
3
|
+
<%= yaml_from_template("base/.circleci/_defaults.yml") %>
|
4
|
+
|
5
|
+
<%= yaml_from_template("rails/.circleci/jobs/_build.yml") %>
|
6
|
+
|
7
|
+
<%= yaml_from_template("rails/.circleci/jobs/_test.yml") %>
|
8
|
+
|
9
|
+
<%= yaml_from_template("rails/.circleci/jobs/_push.yml") %>
|
10
|
+
|
11
|
+
<%= yaml_from_template("base/.circleci/_workflow.yml") %>
|
12
|
+
|
13
|
+
<%= yaml_from_template("rails/.circleci/workflows/_build_test_push.yml") %>
|
14
|
+
|
15
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
build:
|
2
|
+
<<: *defaults
|
3
|
+
steps:
|
4
|
+
- checkout
|
5
|
+
- run: |
|
6
|
+
gem install roro
|
7
|
+
roro generate::exposed ci
|
8
|
+
- run: |
|
9
|
+
mkdir -p workspace
|
10
|
+
cp -r roro workspace/
|
11
|
+
- persist_to_workspace:
|
12
|
+
root: workspace
|
13
|
+
paths:
|
14
|
+
- roro
|
15
|
+
- run: *source-ci-variables
|
16
|
+
- run: RORO_ENV=ci docker-compose up -d --build
|
@@ -0,0 +1,23 @@
|
|
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
|
File without changes
|
@@ -13,24 +13,28 @@ RUN mkdir ${APP_HOME}
|
|
13
13
|
|
14
14
|
## Tell bundler where to store downloaded gems:
|
15
15
|
ENV BUNDLE_PATH /gems
|
16
|
-
RUN mkdir ${BUNDLE_PATH}
|
16
|
+
RUN mkdir ${BUNDLE_PATH}
|
17
17
|
|
18
18
|
## Tell Docker to create volumes for our workspace and gems
|
19
19
|
## so other containers can access them.
|
20
20
|
VOLUME ${APP_HOME}
|
21
|
-
VOLUME
|
21
|
+
VOLUME ${BUNDLE_PATH}
|
22
|
+
|
23
|
+
## Switch to the the work directory from container root:
|
24
|
+
WORKDIR ${APP_HOME}
|
22
25
|
|
23
26
|
## Create a Gemfile with just the Rails gem inside:
|
24
27
|
RUN echo "source 'https://rubygems.org'\ngem 'rails'" > Gemfile
|
25
28
|
|
26
29
|
## Bundle to install rails:
|
27
|
-
|
28
|
-
## Switch to the the work directory from container root:
|
29
|
-
WORKDIR ${APP_HOME}
|
30
|
-
|
31
30
|
RUN bundle install
|
31
|
+
|
32
32
|
## Use Rails to generate a new app. We'll configure it later.
|
33
|
-
RUN bundle exec rails new .
|
33
|
+
RUN bundle exec rails new .
|
34
|
+
|
35
|
+
## setup yarn for rails:
|
36
|
+
RUN bundle exec rails yarn:install
|
37
|
+
|
34
38
|
|
35
39
|
## Tell docker not to create a layer:
|
36
40
|
FROM scratch AS export-stage
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -58,25 +58,34 @@ VOLUME ${BUNDLE_PATH}
|
|
58
58
|
## with slow-building layers that don't change often underneath smaller,
|
59
59
|
## lighter, qucker oens that might change a lot.
|
60
60
|
|
61
|
-
## Build your big, slow gem layer by first copying your Gemfile && Gemfile.lock:
|
62
|
-
COPY Gemfile* ./
|
63
|
-
|
64
61
|
## Set your work directory:
|
65
62
|
WORKDIR ${APP_HOME}
|
66
63
|
|
64
|
+
## You may need to adjust the bundler version based on your app Gemfile.lock's
|
65
|
+
## bundler version:
|
66
|
+
RUN gem install bundler:2.1.4
|
67
|
+
|
68
|
+
## Set your work directory. After this line you will be running commands in
|
69
|
+
## ${APP_HOME}. COPY instructions will move files from host to ${APP_HOME}:
|
70
|
+
WORKDIR ${APP_HOME}
|
71
|
+
|
72
|
+
## Build your big, slow gem layer by first copying your Gemfile && Gemfile.lock:
|
73
|
+
COPY package.json ./
|
74
|
+
COPY Gemfile* ./
|
75
|
+
|
67
76
|
## build the bundle layer, which now only runs if your Gemfile changes:
|
68
77
|
RUN bundle
|
69
78
|
|
70
|
-
## Now build a layer
|
79
|
+
## Now build a layer with everything in your app that's likely to change
|
71
80
|
## frequently. If you make a change to any of these files, only this layer has
|
72
|
-
## to rebuild
|
81
|
+
## to rebuild:
|
73
82
|
COPY . ${APP_HOME}
|
74
83
|
|
84
|
+
## Now make your entrypoint executable.
|
85
|
+
RUN chmod +x roro/docker-entrypoint.sh
|
75
86
|
|
76
|
-
|
77
|
-
RUN
|
78
|
-
ENTRYPOINT ["docker-entrypoint.sh"]
|
79
|
-
|
87
|
+
## Now update node modules:
|
88
|
+
RUN yarn
|
80
89
|
|
81
90
|
|
82
91
|
|
File without changes
|
@@ -0,0 +1,59 @@
|
|
1
|
+
version: '3.2'
|
2
|
+
|
3
|
+
services:
|
4
|
+
|
5
|
+
web:
|
6
|
+
build:
|
7
|
+
context: .
|
8
|
+
dockerfile: roro/containers/app/Dockerfile
|
9
|
+
depends_on:
|
10
|
+
- database
|
11
|
+
- redis
|
12
|
+
|
13
|
+
command: ["bin/rails", "s", "-b", "0.0.0.0"]
|
14
|
+
ports:
|
15
|
+
- "3000:3000"
|
16
|
+
- "4000:4000"
|
17
|
+
volumes:
|
18
|
+
- .:/usr/src/app
|
19
|
+
- gem_cache:/gems
|
20
|
+
env_file:
|
21
|
+
- roro/containers/app/${RORO_ENV:-development}.env
|
22
|
+
- roro/containers/database/${RORO_ENV:-development}.env
|
23
|
+
environment:
|
24
|
+
- WEBPACKER_DEV_SERVER_HOST=webpack_dev_server
|
25
|
+
|
26
|
+
webpack_dev_server:
|
27
|
+
build:
|
28
|
+
context: .
|
29
|
+
dockerfile: roro/containers/app/Dockerfile
|
30
|
+
|
31
|
+
|
32
|
+
command: ./bin/webpack-dev-server
|
33
|
+
ports:
|
34
|
+
- 3035:3035
|
35
|
+
volumes:
|
36
|
+
- .:/usr/src/app
|
37
|
+
- gem_cache:/gems
|
38
|
+
env_file:
|
39
|
+
- roro/containers/app/${RORO_ENV:-development}.env
|
40
|
+
- roro/containers/database/${RORO_ENV:-development}.env
|
41
|
+
environment:
|
42
|
+
- WEBPACKER_DEV_SERVER_HOST=0.0.0.0
|
43
|
+
|
44
|
+
redis:
|
45
|
+
image: redis
|
46
|
+
|
47
|
+
<%= yaml_from_template("stories/with_#{config['database_vendor']}/_service.yml") %>
|
48
|
+
|
49
|
+
system_tests:
|
50
|
+
image: selenium/standalone-chrome-debug
|
51
|
+
logging:
|
52
|
+
driver: none
|
53
|
+
ports:
|
54
|
+
- "35729:35729"
|
55
|
+
- "5900:5900"
|
56
|
+
|
57
|
+
volumes:
|
58
|
+
db_data:
|
59
|
+
gem_cache:
|