roro 0.3.13 → 0.3.21
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 +55 -11
- data/.gitignore +3 -2
- data/Guardfile +8 -10
- data/README.md +2 -1
- data/lib/roro.rb +3 -1
- data/lib/roro/cli.rb +16 -74
- data/lib/roro/cli/generate/exposed.rb +14 -0
- data/lib/roro/cli/generate/{generate_keys.rb → keys.rb} +24 -2
- data/lib/roro/cli/generate/obfuscated.rb +17 -0
- data/lib/roro/cli/generate/story.rb +18 -0
- data/lib/roro/cli/greenfield/rails.rb +14 -0
- data/lib/roro/cli/rollon.rb +126 -63
- data/lib/roro/cli/rollon/rails/base/base.rb +4 -0
- data/lib/roro/cli/{base → rollon/rails/base}/insert_gems.rb +2 -10
- data/lib/roro/cli/{base → rollon/rails/base}/insertions.rb +8 -0
- data/lib/roro/cli/rollon/rails/database.rb +26 -0
- data/lib/roro/cli/rollon/{stories/rails → rails}/database/with_mysql.rb +4 -4
- data/lib/roro/cli/rollon/{stories/rails → rails}/database/with_postgresql.rb +5 -6
- data/lib/roro/cli/rollon/ruby_gem.rb +1 -0
- data/lib/roro/cli/rollon/{stories/ruby_gem → ruby_gem}/with_ci_cd.rb +8 -8
- data/lib/roro/cli/rollon/stories.rb +2 -2
- data/lib/roro/configurator.rb +15 -0
- data/lib/roro/configurator/eligibility.rb +137 -0
- data/lib/roro/configurator/okonomi.rb +28 -0
- data/lib/roro/configurator/omakase.rb +170 -0
- data/lib/roro/crypto.rb +73 -0
- data/lib/roro/stories/greenfield.yml +1 -0
- data/lib/roro/stories/greenfield/rails.yml +9 -0
- data/lib/roro/stories/rollon.yml +42 -0
- data/lib/roro/stories/rollon/rails.yml +76 -0
- data/lib/roro/stories/rollon/rails/ci_cd.yml +1 -0
- data/lib/roro/stories/rollon/rails/ci_cd/circleci.yml +2 -0
- data/lib/roro/stories/rollon/rails/database.yml +9 -0
- data/lib/roro/stories/rollon/rails/database/mysql.yml +17 -0
- data/lib/roro/stories/rollon/rails/database/postgresql.yml +15 -0
- data/lib/roro/stories/rollon/rails/kubernetes.yml +1 -0
- data/lib/roro/stories/rollon/rails/kubernetes/postgresql.yml +10 -0
- data/lib/roro/stories/rollon/rails/kubernetes/postgresql/default.yml +1 -0
- data/lib/roro/stories/rollon/rails/kubernetes/postgresql/edge.yml +1 -0
- data/lib/roro/stories/rollon/ruby_gem.yml +5 -0
- data/lib/roro/templates/base/.circleci/_aliases.yml +8 -0
- data/lib/roro/templates/base/.circleci/_commands.yml +31 -0
- data/lib/roro/templates/base/.circleci/_defaults.yml +5 -0
- data/lib/roro/templates/base/.circleci/_executors.yml +11 -0
- data/lib/roro/templates/base/.circleci/_major_only.yml +4 -0
- data/lib/roro/templates/base/.circleci/_version.yml +1 -0
- data/lib/roro/templates/base/.circleci/_workflow.yml +2 -0
- data/lib/roro/templates/base/.circleci/config.job-example.yml +33 -0
- data/lib/roro/templates/base/.circleci/jobs/_build.yml +4 -0
- data/lib/roro/templates/base/.circleci/jobs/_release.yml +12 -0
- data/lib/roro/templates/base/.circleci/workflows/_build_release.yml +10 -0
- data/lib/roro/{cli/templates → templates}/base/.dockerignore +0 -0
- data/lib/roro/templates/base/dotenv +1 -0
- data/lib/roro/{cli/rollon/stories/rails → templates/base/jumpstart}/.keep +0 -0
- data/lib/roro/{cli/templates → templates/base}/jumpstart/Dockerfile.tt +0 -0
- data/lib/roro/{cli/templates → templates/base}/jumpstart/docker-compose.yml +0 -0
- data/lib/roro/{cli/templates → templates/base}/jumpstart/docker-entrypoint.sh +0 -0
- data/lib/roro/{cli/templates → templates/base}/livereload/hosts.example +0 -0
- data/lib/roro/{cli/templates/base → templates/base/roro}/.keep +0 -0
- data/lib/roro/{cli/templates/jumpstart → templates/base/roro/roro}/.keep +0 -0
- data/lib/roro/{cli/templates/roro → templates/base/roro/roro/containers}/.keep +0 -0
- data/lib/roro/{cli/templates/roro/roro → templates/base/roro/roro/containers/app}/.keep +0 -0
- data/lib/roro/{cli/templates/roro/roro/containers → templates/base/roro/roro/containers/frontend}/.keep +0 -0
- data/lib/roro/{cli/templates → templates/base}/roro/roro/docker-entrypoint.sh.tt +0 -0
- data/lib/roro/{cli/templates/roro/roro/containers/app → templates/rails/.circleci}/.keep +0 -0
- data/lib/roro/templates/rails/.circleci/config.yml.tt +11 -0
- data/lib/roro/templates/rails/.circleci/jobs/_build.yml +14 -0
- data/lib/roro/templates/rails/.circleci/jobs/_push.yml +11 -0
- data/lib/roro/templates/rails/.circleci/jobs/_test.yml +12 -0
- data/lib/roro/{cli/templates/ruby_gem → templates/rails}/.circleci/setup-gem-credentials.sh +0 -0
- data/lib/roro/templates/rails/.circleci/workflows/_build_test_push.yml +12 -0
- data/lib/roro/{cli/templates/roro/roro/containers/frontend → templates/rails}/.keep +0 -0
- data/lib/roro/templates/rails/Dockerfile.greenfield.tt +51 -0
- data/lib/roro/{cli/templates/base → templates/rails}/config/database.mysql.yml +0 -0
- data/lib/roro/{cli/templates/base → templates/rails}/config/database.pg.yml +2 -3
- data/lib/roro/templates/rails/database/with_mysql/_service.yml +10 -0
- data/lib/roro/{cli/templates/ruby_gem/.circleci → templates/rails/database/with_postgresql}/.keep +0 -0
- data/lib/roro/templates/rails/database/with_postgresql/_service.yml +7 -0
- data/lib/roro/{cli/templates/roro → templates/rails}/docker-compose.yml.tt +9 -10
- data/lib/roro/{cli/templates/ruby_gem/roro/containers → templates/rails/dotenv}/.keep +0 -0
- data/lib/roro/templates/rails/dotenv/database.mysql.env.tt +6 -0
- data/lib/roro/templates/rails/dotenv/database.pg.env.tt +4 -0
- data/lib/roro/templates/rails/dotenv/web.env.tt +2 -0
- data/lib/roro/templates/rails/kube.rake.tt +114 -0
- data/lib/roro/{cli/templates/ruby_gem/roro/keys → templates/rails/roro}/.keep +0 -0
- data/lib/roro/{cli/templates/stories → templates/rails/roro/containers}/.keep +0 -0
- data/lib/roro/{cli/templates/stories/rails/database/with_postgresql → templates/rails/roro/containers/app}/.keep +0 -0
- data/lib/roro/templates/rails/roro/containers/app/Dockerfile.tt +34 -0
- data/lib/roro/{cli/templates/stories/with_postgresql → templates/rails/roro/containers/frontend}/.keep +0 -0
- data/lib/roro/templates/rails/roro/docker-entrypoint.sh +8 -0
- data/lib/roro/{cli/rollon/stories/database.rb → templates/rails/roro/kube/.keep} +0 -0
- data/lib/roro/templates/rails/roro/kube/certificate.yml.tt +0 -0
- data/lib/roro/templates/rails/roro/kube/cluster-issuer.yml.tt +0 -0
- data/lib/roro/templates/rails/roro/kube/deployment.yml.tt +50 -0
- data/lib/roro/templates/rails/roro/kube/deployments/postgres_deploy.yaml +47 -0
- data/lib/roro/templates/rails/roro/kube/deployments/rails_deploy.yaml +62 -0
- data/lib/roro/templates/rails/roro/kube/deployments/redis_deploy.yaml +23 -0
- data/lib/roro/templates/rails/roro/kube/deployments/sidekiq_deploy.yaml +56 -0
- data/lib/roro/templates/rails/roro/kube/ingress.yml.tt +0 -0
- data/lib/roro/templates/rails/roro/kube/ingresses/ingress.yaml +13 -0
- data/lib/roro/templates/rails/roro/kube/job-migrate.yml.tt +0 -0
- data/lib/roro/templates/rails/roro/kube/jobs/setup.yaml +42 -0
- data/lib/roro/templates/rails/roro/kube/secret-digital-ocean.yml.tt +4 -0
- data/lib/roro/templates/rails/roro/kube/service.yml.tt +10 -0
- data/lib/roro/templates/rails/roro/kube/services/postgres_svc.yaml +13 -0
- data/lib/roro/templates/rails/roro/kube/services/rails_svc.yaml +13 -0
- data/lib/roro/templates/rails/roro/kube/services/redis_svc.yaml +13 -0
- data/lib/roro/templates/rails/roro/kube/volumes/postgres_volumes.yaml +25 -0
- data/lib/roro/templates/ruby_gem/.circleci/.keep +0 -0
- data/lib/roro/templates/ruby_gem/.circleci/config.yml.tt +16 -0
- data/lib/roro/templates/ruby_gem/.circleci/jobs/_test.yml +4 -0
- data/lib/roro/templates/ruby_gem/.circleci/setup-gem-credentials.sh +3 -0
- data/lib/roro/{cli/templates → templates}/ruby_gem/docker-compose.yml +0 -0
- data/lib/roro/templates/ruby_gem/roro/containers/.keep +0 -0
- data/lib/roro/{cli/templates → templates}/ruby_gem/roro/containers/ruby_image/Dockerfile.tt +1 -1
- data/lib/roro/templates/ruby_gem/roro/containers/ruby_image/ci.env.tt +1 -0
- data/lib/roro/templates/ruby_gem/roro/keys/.keep +0 -0
- data/lib/roro/version.rb +1 -1
- data/roro.gemspec +11 -21
- data/roro/containers/app/Dockerfile +51 -0
- metadata +165 -173
- data/lib/roro/cli/base/base.rb +0 -8
- data/lib/roro/cli/base/base_files.rb +0 -24
- data/lib/roro/cli/base/check_dependencies.rb +0 -98
- data/lib/roro/cli/base/continuous_integration.rb +0 -13
- data/lib/roro/cli/base/utilities.rb +0 -39
- data/lib/roro/cli/cli.rb +0 -99
- data/lib/roro/cli/configuration.rb +0 -69
- data/lib/roro/cli/expose.rb +0 -14
- data/lib/roro/cli/generate/config.rb +0 -13
- data/lib/roro/cli/generate/config/rails.rb +0 -17
- 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/rails/database.rb +0 -33
- data/lib/roro/cli/rollon/stories/ruby_gem.rb +0 -77
- data/lib/roro/cli/rollon/stories/stories.rb +0 -3
- data/lib/roro/cli/roro_configurator.yml +0 -157
- data/lib/roro/cli/ruby_gem.rb +0 -67
- data/lib/roro/cli/templates/base/.roro_config.yml +0 -15
- data/lib/roro/cli/templates/base/Dockerfile.tt +0 -82
- data/lib/roro/cli/templates/greenfield/Dockerfile.tt +0 -43
- data/lib/roro/cli/templates/ruby_gem/.circleci/config.yml.tt +0 -40
- data/lib/roro/cli/templates/ruby_gem/roro/containers/ruby_image/ci.env.tt +0 -1
- data/lib/roro/cli/templates/stories/rails/database/with_mysql/_service.yml +0 -10
- data/lib/roro/cli/templates/stories/rails/database/with_postgresql/_service.yml +0 -7
- data/lib/roro/cli/templates/stories/ruby_gem/with_ci_cd/_build.yml +0 -11
- data/lib/roro/cli/templates/stories/with_mysql/_service.yml +0 -10
- data/lib/roro/cli/templates/stories/with_postgresql/_service.yml +0 -7
- data/lib/tasks/deploy.rake +0 -126
- 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/activesupport-6.0.3.2.gem +0 -0
- data/vendor/cache/addressable-2.7.0.gem +0 -0
- data/vendor/cache/builder-3.2.4.gem +0 -0
- data/vendor/cache/byebug-11.1.3.gem +0 -0
- data/vendor/cache/coderay-1.1.3.gem +0 -0
- data/vendor/cache/concurrent-ruby-1.1.7.gem +0 -0
- data/vendor/cache/crass-1.0.6.gem +0 -0
- data/vendor/cache/em-websocket-0.5.1.gem +0 -0
- data/vendor/cache/erubi-1.9.0.gem +0 -0
- data/vendor/cache/eventmachine-1.2.7.gem +0 -0
- data/vendor/cache/ffi-1.13.1.gem +0 -0
- data/vendor/cache/formatador-0.2.5.gem +0 -0
- data/vendor/cache/gem-release-2.1.1.gem +0 -0
- data/vendor/cache/given_core-3.8.0.gem +0 -0
- data/vendor/cache/guard-2.16.2.gem +0 -0
- data/vendor/cache/guard-compat-1.2.1.gem +0 -0
- data/vendor/cache/guard-livereload-2.5.2.gem +0 -0
- data/vendor/cache/guard-minitest-2.4.6.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/http_parser.rb-0.6.0.gem +0 -0
- data/vendor/cache/i18n-1.8.5.gem +0 -0
- data/vendor/cache/launchy-2.5.0.gem +0 -0
- data/vendor/cache/listen-3.2.1.gem +0 -0
- data/vendor/cache/loofah-2.6.0.gem +0 -0
- data/vendor/cache/lumberjack-1.2.7.gem +0 -0
- data/vendor/cache/method_source-1.0.0.gem +0 -0
- data/vendor/cache/mini_portile2-2.4.0.gem +0 -0
- data/vendor/cache/minitest-5.14.1.gem +0 -0
- data/vendor/cache/minitest-given-3.8.0.gem +0 -0
- data/vendor/cache/minitest-matchers_vaccine-1.0.4.gem +0 -0
- data/vendor/cache/minitest-rails-6.0.1.gem +0 -0
- data/vendor/cache/mocha-1.11.2.gem +0 -0
- data/vendor/cache/multi_json-1.15.0.gem +0 -0
- data/vendor/cache/nenv-0.3.0.gem +0 -0
- data/vendor/cache/net-scp-3.0.0.gem +0 -0
- data/vendor/cache/net-ssh-6.1.0.gem +0 -0
- data/vendor/cache/nokogiri-1.10.10.gem +0 -0
- data/vendor/cache/notiffany-0.1.3.gem +0 -0
- data/vendor/cache/os-1.0.0.gem +0 -0
- data/vendor/cache/pry-0.13.1.gem +0 -0
- data/vendor/cache/public_suffix-4.0.5.gem +0 -0
- data/vendor/cache/rack-2.2.3.gem +0 -0
- data/vendor/cache/rack-livereload-0.3.17.gem +0 -0
- data/vendor/cache/rack-test-1.1.0.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/rake-13.0.1.gem +0 -0
- data/vendor/cache/rb-fsevent-0.10.4.gem +0 -0
- data/vendor/cache/rb-inotify-0.10.1.gem +0 -0
- data/vendor/cache/shellany-0.0.1.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
- data/vendor/cache/sorcerer-2.0.1.gem +0 -0
- data/vendor/cache/sshkit-1.18.2.gem +0 -0
- data/vendor/cache/thor-1.0.1.gem +0 -0
- data/vendor/cache/thread_safe-0.3.6.gem +0 -0
- data/vendor/cache/tzinfo-1.2.7.gem +0 -0
- data/vendor/cache/zeitwerk-2.4.0.gem +0 -0
data/lib/roro/crypto.rb
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
require "openssl"
|
|
2
|
+
require "base64"
|
|
3
|
+
module Roro::Crypto
|
|
4
|
+
|
|
5
|
+
class << self
|
|
6
|
+
|
|
7
|
+
def generate_key
|
|
8
|
+
@cipher = OpenSSL::Cipher.new 'AES-128-CBC'
|
|
9
|
+
@salt = '8 octets'
|
|
10
|
+
@new_key = @cipher.random_key
|
|
11
|
+
Base64.encode64(@new_key)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def write_to_file(data, filename)
|
|
15
|
+
File.open(filename, "w") { |io| io.write data }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def generate_key_file(directory, environment)
|
|
19
|
+
write_to_file(generate_key, directory + "/" + environment + ".key")
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def source_files(directory=nil, extension=nil)
|
|
23
|
+
Dir.glob(directory + "/**/*#{extension}")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def build_cipher(environment)
|
|
27
|
+
@cipher = OpenSSL::Cipher.new 'AES-128-CBC'
|
|
28
|
+
@salt = '8 octets'
|
|
29
|
+
@pass_phrase = get_key(environment)
|
|
30
|
+
@cipher.encrypt.pkcs5_keyivgen @pass_phrase, @salt
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def encrypt(file, environment=nil)
|
|
34
|
+
environment ||= file.split('.')[-2].split('/').last
|
|
35
|
+
build_cipher(environment)
|
|
36
|
+
encrypted = @cipher.update(File.read file) + @cipher.final
|
|
37
|
+
write_to_file(Base64.encode64(encrypted), file + '.enc')
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def decrypt(file, environment=nil)
|
|
41
|
+
environment ||= file.split('.')[-3].split('/').last
|
|
42
|
+
build_cipher(environment)
|
|
43
|
+
encrypted = Base64.decode64 File.read(file)
|
|
44
|
+
@cipher.decrypt.pkcs5_keyivgen @pass_phrase, @salt
|
|
45
|
+
decrypted = @cipher.update(encrypted) + @cipher.final
|
|
46
|
+
decrypted_file = file.split('.enc').first
|
|
47
|
+
write_to_file decrypted, decrypted_file
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def obfuscate(env=nil, dir=nil, ext=nil)
|
|
51
|
+
ext = ext || "#{env}.env"
|
|
52
|
+
source_files(dir, ext).each { |file| encrypt(file, env) }
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def expose(env=nil, dir=nil, ext=nil)
|
|
56
|
+
ext = ext || "#{env}.env.enc"
|
|
57
|
+
source_files(dir, ext).each { |file| decrypt(file, env) }
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def get_key(environment, directory=nil)
|
|
61
|
+
env_key = environment.upcase + '_KEY'
|
|
62
|
+
key_file = source_files('./.', "#{directory}/#{environment}.key").first
|
|
63
|
+
case
|
|
64
|
+
when ENV[env_key].nil? && key_file.nil?
|
|
65
|
+
raise DeployKeyError, "No #{env_key} set."
|
|
66
|
+
when ENV[env_key]
|
|
67
|
+
ENV[env_key]
|
|
68
|
+
when File.exist?(key_file)
|
|
69
|
+
File.read(key_file).strip
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
stories: rails
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
greenfield_actions:
|
|
2
|
+
- "@config.env['force'] = true"
|
|
3
|
+
- |
|
|
4
|
+
src = 'rails/Dockerfile.greenfield.tt'
|
|
5
|
+
dest = 'roro/containers/app/Dockerfile'
|
|
6
|
+
template src, dest, @config.env
|
|
7
|
+
|
|
8
|
+
greenfield_commands:
|
|
9
|
+
- system "DOCKER_BUILDKIT=1 docker build --file roro/containers/app/Dockerfile --output . ."
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
stories: rails
|
|
2
|
+
|
|
3
|
+
intentions:
|
|
4
|
+
|
|
5
|
+
env_vars:
|
|
6
|
+
main_app_name:
|
|
7
|
+
developer:
|
|
8
|
+
name: your-name
|
|
9
|
+
email: your.email@example.com
|
|
10
|
+
docker_email: your-docker-registry-email
|
|
11
|
+
docker_org: your-docker-registry-org-name
|
|
12
|
+
docker_password: your-docker-registry-password
|
|
13
|
+
docker_token: your-docker-registry-token
|
|
14
|
+
docker_username: your-docker-registry-user-name
|
|
15
|
+
|
|
16
|
+
choices:
|
|
17
|
+
|
|
18
|
+
generate_config_story:
|
|
19
|
+
question: |
|
|
20
|
+
Would you like to create a Roro Config file to help with debugging,
|
|
21
|
+
sharing your desired story, or both?
|
|
22
|
+
choices:
|
|
23
|
+
y: 'Yes'
|
|
24
|
+
n: 'No'
|
|
25
|
+
default: y
|
|
26
|
+
|
|
27
|
+
backup_existing_files:
|
|
28
|
+
question: |
|
|
29
|
+
RoRo will be generating a number of files, some of which will
|
|
30
|
+
replace existing ones. Would you like to back them up?
|
|
31
|
+
choices:
|
|
32
|
+
y: 'Yes'
|
|
33
|
+
n: 'No'
|
|
34
|
+
default: n
|
|
35
|
+
|
|
36
|
+
copy_dockerignore:
|
|
37
|
+
question: |
|
|
38
|
+
Would you like to create a .dockerignore file?
|
|
39
|
+
choices:
|
|
40
|
+
y: 'Yes'
|
|
41
|
+
n: 'No'
|
|
42
|
+
default: y
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
stories:
|
|
2
|
+
- database
|
|
3
|
+
- ci_cd
|
|
4
|
+
- kubernetes
|
|
5
|
+
|
|
6
|
+
actions:
|
|
7
|
+
- template 'rails/.circleci/config.yml.tt', './.circleci/config.yml'
|
|
8
|
+
- template 'rails/docker-compose.yml.tt', './docker-compose.yml', @config.env
|
|
9
|
+
- template 'base/dotenv', './.env', @config.env
|
|
10
|
+
- directory 'rails/roro', './roro', @config.env
|
|
11
|
+
- chmod "roro/docker-entrypoint.sh", 0755
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
startup:
|
|
15
|
+
success: "Your app should be available at http://localhost:3000"
|
|
16
|
+
commands:
|
|
17
|
+
- docker-compose build --no-cache
|
|
18
|
+
- docker-compose up -d
|
|
19
|
+
- docker-compose run app bin/rails db:create
|
|
20
|
+
- docker-compose run app bin/rails db:migrate
|
|
21
|
+
- 'docker-compose run app echo #{success_msg}'
|
|
22
|
+
|
|
23
|
+
env_vars:
|
|
24
|
+
ruby_version: '2.7'
|
|
25
|
+
database_host: database
|
|
26
|
+
frontend_service: frontend
|
|
27
|
+
database_service: database
|
|
28
|
+
|
|
29
|
+
choices:
|
|
30
|
+
config_std_out_true:
|
|
31
|
+
question: |
|
|
32
|
+
The team at Heroku, among others, recommend logging to STDOUT
|
|
33
|
+
and treating your logs as streams. We'll set this to
|
|
34
|
+
true as an environment variable but it may also be helpful
|
|
35
|
+
to configure './config/boot.rb' with '$stdout.sync = true'
|
|
36
|
+
just in case that doesn't work.
|
|
37
|
+
Would you like to configure this?
|
|
38
|
+
choices:
|
|
39
|
+
y: 'Yes'
|
|
40
|
+
n: 'No'
|
|
41
|
+
default: y
|
|
42
|
+
|
|
43
|
+
insert_roro_gem_into_gemfile:
|
|
44
|
+
question: |
|
|
45
|
+
Many developers believe it's good idea to secure sensitive
|
|
46
|
+
environment files and variables. You can use RoRo to
|
|
47
|
+
generate secret keys known only to you for use in any
|
|
48
|
+
environment, and then use them to encrypt and decrypt
|
|
49
|
+
these files. Would you like to add RoRo to your Gemfile?
|
|
50
|
+
choices:
|
|
51
|
+
y: 'Yes'
|
|
52
|
+
n: 'No'
|
|
53
|
+
default: n
|
|
54
|
+
|
|
55
|
+
gitignore_sensitive_files:
|
|
56
|
+
question: |
|
|
57
|
+
If you plan to use the environment files RoRo generates for
|
|
58
|
+
your own environment variables, it's a good idea to keep
|
|
59
|
+
these files out of source control. Would you like RoRo to
|
|
60
|
+
modify your .gitignore file to accomplish this for you ?
|
|
61
|
+
choices:
|
|
62
|
+
y: 'Yes'
|
|
63
|
+
n: 'No'
|
|
64
|
+
default: y
|
|
65
|
+
|
|
66
|
+
insert_hfci_gem_into_gemfile:
|
|
67
|
+
question: |
|
|
68
|
+
Jim Weirich passed too soon and remains missed. In addition
|
|
69
|
+
to Rake, Jim wrote a beautiful gem called 'Given' that makes
|
|
70
|
+
Rspec and Minitest less ugly and thus your tests more easy to
|
|
71
|
+
write. Would you like to install a gem called
|
|
72
|
+
handsome_fencer-test that allows you to try it out?
|
|
73
|
+
choices:
|
|
74
|
+
y: 'Yes'
|
|
75
|
+
n: 'No'
|
|
76
|
+
default: n
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
stories: circleci
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
env_vars:
|
|
2
|
+
mysql_root_password: 'root-mysql-password'
|
|
3
|
+
mysql_password: your-mysql-password
|
|
4
|
+
mysql_username: 'root'
|
|
5
|
+
mysql_database_port: '3306'
|
|
6
|
+
database_vendor: mysql
|
|
7
|
+
|
|
8
|
+
actions:
|
|
9
|
+
- copy_file 'rails/config/database.mysql.yml', 'config/database.yml', @config.env
|
|
10
|
+
- |
|
|
11
|
+
Roro::CLI.roro_environments.each do |e|
|
|
12
|
+
@config.env[:rails_env] = e
|
|
13
|
+
source = 'rails/dotenv/database.mysql.env.tt'
|
|
14
|
+
target = "roro/containers/database/#{e}.env"
|
|
15
|
+
template( source, target, @config.env)
|
|
16
|
+
end
|
|
17
|
+
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
env_vars:
|
|
2
|
+
postgres_username: postgres
|
|
3
|
+
postgres_password: your-postgres-password
|
|
4
|
+
database_vendor: postgresql
|
|
5
|
+
|
|
6
|
+
actions:
|
|
7
|
+
- copy_file 'rails/config/database.pg.yml', 'config/database.yml', @config.env
|
|
8
|
+
- |
|
|
9
|
+
Roro::CLI.roro_environments.each do |e|
|
|
10
|
+
@config.env[:rails_env] = e
|
|
11
|
+
source = 'rails/dotenv/database.pg.env.tt'
|
|
12
|
+
target = "roro/containers/database/#{e}.env"
|
|
13
|
+
template( source, target, @config.env)
|
|
14
|
+
end
|
|
15
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
stories: postgresql
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
stories:
|
|
2
|
+
- default
|
|
3
|
+
- edge
|
|
4
|
+
|
|
5
|
+
actions:
|
|
6
|
+
- template 'rails/.circleci/config.yml.tt', './.circleci/config.yml'
|
|
7
|
+
- template 'rails/docker-compose.yml.tt', './docker-compose.yml', @config.env
|
|
8
|
+
- template 'base/dotenv', './.env', @config.env
|
|
9
|
+
- directory 'rails/roro', './roro', @config.env
|
|
10
|
+
- template 'rails/kube.rake.tt', './lib/tasks/kube.rake', @config.env
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
actions:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
actions:
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
commands:
|
|
2
|
+
setup-docker-builds:
|
|
3
|
+
steps:
|
|
4
|
+
- setup_remote_docker:
|
|
5
|
+
docker_layer_caching: false
|
|
6
|
+
|
|
7
|
+
source-ci-vars:
|
|
8
|
+
steps:
|
|
9
|
+
- run: |
|
|
10
|
+
echo 'source roro/containers/app/ci.env' >> ${BASH_ENV}
|
|
11
|
+
source ${BASH_ENV}
|
|
12
|
+
|
|
13
|
+
attach-roro:
|
|
14
|
+
steps:
|
|
15
|
+
- attach_workspace:
|
|
16
|
+
at: workspace
|
|
17
|
+
- run: cp -rf workspace/roro .
|
|
18
|
+
- source-ci-vars
|
|
19
|
+
|
|
20
|
+
tag-and-push:
|
|
21
|
+
parameters:
|
|
22
|
+
deploy_tag:
|
|
23
|
+
type: string
|
|
24
|
+
default: latest
|
|
25
|
+
steps:
|
|
26
|
+
- run: |
|
|
27
|
+
SOURCE=$(docker images | grep project_app | awk '{ print $3 }')
|
|
28
|
+
DOCKER_REPO=${DOCKER_ORG}/${APP_NAME}_app
|
|
29
|
+
TAGGED_IMAGE=${DOCKER_REPO}:<< parameters.deploy_tag >>
|
|
30
|
+
docker tag ${SOURCE} ${TAGGED_IMAGE}
|
|
31
|
+
docker push ${TAGGED_IMAGE}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
version: 2.1
|
|
@@ -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 $docker_USER -p $DOCKER_PASS
|
|
22
|
+
- run:
|
|
23
|
+
name: Tag app image
|
|
24
|
+
command: docker tag $(docker images | grep project_app | awk '{ print $3 }') ${DOCKER_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 }') ${DOCKER_ORG_NAME}/${APP_NAME}_web:$DEPLOY_TAG
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
- run: docker push ${DOCKER_ORG_NAME}/${APP_NAME}_app:$DEPLOY_TAG
|
|
31
|
+
- run: docker push ${DOCKER_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
|
|
File without changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
RORO_ENV=development
|
|
File without changes
|