handsome_fencer-circle_c_i 0.1.17 → 0.1.19

Sign up to get free protection for your applications and to get access to all the features.
Files changed (28) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +2 -1
  3. data/bin/handsome_fencer-circle_c_i +1 -1
  4. data/lib/handsome_fencer/circle_c_i.rb +4 -2
  5. data/lib/handsome_fencer/circle_c_i/cli.rb +10 -21
  6. data/lib/handsome_fencer/circle_c_i/cli/expose.rb +14 -0
  7. data/lib/handsome_fencer/circle_c_i/cli/generate_key.rb +20 -0
  8. data/lib/handsome_fencer/circle_c_i/cli/install.rb +20 -0
  9. data/lib/handsome_fencer/circle_c_i/cli/obfuscate.rb +17 -0
  10. data/lib/handsome_fencer/circle_c_i/crypto.rb +9 -5
  11. data/lib/handsome_fencer/circle_c_i/templates/Gemfile +2 -0
  12. data/lib/handsome_fencer/circle_c_i/templates/Gemfile.lock +0 -0
  13. data/lib/handsome_fencer/circle_c_i/templates/circleci/circle.env +9 -0
  14. data/lib/handsome_fencer/circle_c_i/templates/circleci/config.yml +62 -0
  15. data/lib/handsome_fencer/circle_c_i/templates/circleci/containers/app/Dockerfile +11 -0
  16. data/lib/handsome_fencer/circle_c_i/templates/circleci/containers/app/development.env +9 -0
  17. data/lib/handsome_fencer/circle_c_i/templates/circleci/containers/app/production.env +9 -0
  18. data/lib/handsome_fencer/circle_c_i/templates/circleci/containers/app/staging.env +9 -0
  19. data/lib/handsome_fencer/circle_c_i/templates/circleci/containers/database/development.env +2 -0
  20. data/lib/handsome_fencer/circle_c_i/templates/circleci/containers/database/production.env +2 -0
  21. data/lib/handsome_fencer/circle_c_i/templates/circleci/containers/database/staging.env +2 -0
  22. data/lib/handsome_fencer/circle_c_i/templates/circleci/overrides/production.yml +46 -0
  23. data/lib/handsome_fencer/circle_c_i/templates/config/database.yml +20 -0
  24. data/lib/handsome_fencer/circle_c_i/templates/docker-compose.yml +77 -0
  25. data/lib/handsome_fencer/circle_c_i/templates/lib/tasks/deploy.rake +99 -0
  26. data/lib/handsome_fencer/circle_c_i/version.rb +1 -1
  27. metadata +22 -18
  28. data/lib/handsome_fencer/circle_c_i/cli/hn.rb +0 -13
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 51d6352c968c37c843273af6bd19aeca2bad0f3191f97eaad6ac81e4c7e60cc5
4
- data.tar.gz: 885aea28649d1f8a3ac765e75b841fd0ea9eea8746eb497deb79f7791238f26d
3
+ metadata.gz: 2acf42c963b88c0fef32cb3a6eca20fd6533ace92423b8edc5736a89d7957788
4
+ data.tar.gz: 54505ec7ecf23aa788e72a845070222b3668b69d2d32728e15928f453d9c6052
5
5
  SHA512:
6
- metadata.gz: 57e5277b7ee6e3e9571284f3c4a7746b4cdcf0881241770322740321f84ce8a2b1f61a3cebeed244f8139f93569bac53568e040e0e1039ebdfe39392d781355b
7
- data.tar.gz: f2d12c638fa19312f586dfb2ede52946818339ac2c74d9494ae4821dd878f3baa800ee3ba4acf6c7189d83870ee1855a69c0a135ec63f4b7b3709552ed709149
6
+ metadata.gz: 5ad35a8d7cbec0e393d6d9a14a49155b55df48b82f58cc4f86a3ee9986a621cf1d5d6fc3005777335ad70b75ad4f863da8059ba475e2030acdc7a0a2a36e5c46
7
+ data.tar.gz: 1b3108b65aab6f0f26c4002d2927660448edf994c6096ee0c9f746a2084e82fe6c587a3af4b80fb124fa0bd6b37cff98a00d000448ab67b5885fe4d39b834b5a
data/Rakefile CHANGED
@@ -20,7 +20,8 @@ require 'rake/testtask'
20
20
 
21
21
  Rake::TestTask.new(:test) do |t|
22
22
  t.libs << 'test'
23
- t.pattern = 'test/**/*_test.rb'
23
+ t.pattern = 'test/generators/*_test.rb'
24
+
24
25
  t.verbose = false
25
26
  end
26
27
 
@@ -3,4 +3,4 @@
3
3
  require 'handsome_fencer/circle_c_i'
4
4
 
5
5
 
6
- HandsomeFencer::CircleCI::HammerOfTheGods.start( ARGV )
6
+ HandsomeFencer::CircleCI::CLI.start( ARGV )
@@ -1,10 +1,12 @@
1
- # require "handsome_fencer/circle_c_i/railtie"
2
1
  require "handsome_fencer/circle_c_i/version"
3
2
  require "handsome_fencer/circle_c_i/cli"
3
+ require "handsome_fencer/circle_c_i/cli/install"
4
4
  require "handsome_fencer/circle_c_i/crypto"
5
5
 
6
6
  module HandsomeFencer
7
7
  module CircleCI
8
- # Your code goes here...
8
+ # module Cli
9
+ # Your code goes here..
10
+ # end
9
11
  end
10
12
  end
@@ -1,31 +1,20 @@
1
1
  require 'thor'
2
- require 'handsome_fencer/circle_c_i/cli/hn'
2
+ require 'handsome_fencer/circle_c_i/cli/install'
3
+ require 'handsome_fencer/circle_c_i/cli/generate_key'
4
+ require 'handsome_fencer/circle_c_i/cli/generate_key'
5
+ require 'handsome_fencer/circle_c_i/cli/obfuscate'
6
+ require 'handsome_fencer/circle_c_i/cli/expose'
7
+ require 'byebug'
3
8
 
4
9
  module HandsomeFencer
5
10
  module CircleCI
6
- class HammerOfTheGods < Thor
7
- desc "hello NAME", "This will greet you"
8
- long_desc <<-HELLO_WORLD
11
+ class CLI < Thor
9
12
 
10
- `hello NAME` will print out a message to the person of your choosing.
13
+ include Thor::Actions
11
14
 
12
- Brian Kernighan actually wrote the first "Hello, World!" program
13
- as part of the documentation for the BCPL programming language
14
- developed by Martin Richards. BCPL was used while C was being
15
- developed at Bell Labs a few years before the publication of
16
- Kernighan and Ritchie's C book in 1972.
17
-
18
- http://stackoverflow.com/a/12785204
19
- HELLO_WORLD
20
- option :upcase
21
- def hello( name )
22
- greeting = "Hello, #{name}"
23
- greeting.upcase! if options[:upcase]
24
- puts greeting
15
+ def self.source_root
16
+ File.dirname(__FILE__) + '/templates/'
25
17
  end
26
-
27
- desc "hn COMMANDS", "Hacker News Control Module"
28
- subcommand "hn", HandsomeFencer::CircleCI::CLI::Hn
29
18
  end
30
19
  end
31
20
  end
@@ -0,0 +1,14 @@
1
+ module HandsomeFencer
2
+ module CircleCI
3
+ class CLI < Thor
4
+
5
+ desc "expose", "expose .env files inside .circleci directory"
6
+
7
+ def expose(*args)
8
+ environment = args.first
9
+ @cipher = HandsomeFencer::CircleCI::Crypto.new(environment: environment)
10
+ @cipher.expose('.circleci', "#{environment}.env.enc")
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,20 @@
1
+ require 'byebug'
2
+
3
+ module HandsomeFencer
4
+ module CircleCI
5
+ class CLI < Thor
6
+
7
+ desc "generate_key", "(Re)generate a key for each environment"
8
+
9
+ def generate_key(*args)
10
+ environment = args.first ? args.first : "deploy"
11
+
12
+ @cipher = OpenSSL::Cipher.new 'AES-128-CBC'
13
+ @salt = '8 octets'
14
+ @new_key = @cipher.random_key
15
+
16
+ create_file ".circleci/keys/#{environment}.key", Base64.encode64(@new_key)
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ module HandsomeFencer
2
+ module CircleCI
3
+ class CLI < Thor
4
+
5
+ desc "install", "This will generate a .circleci directory in your project root, along with a set of files for continuous deployments using docker and CircleCI"
6
+
7
+ def install
8
+ directory "circleci", "./.circleci", recursive: true
9
+ directory 'lib/', 'lib', recursive: true
10
+ copy_file "docker-compose.yml", "docker-compose.yml"
11
+ copy_file "Gemfile", "Gemfile"
12
+ copy_file "Gemfile.lock", "Gemfile.lock"
13
+ copy_file "config/database.yml", "config/database.yml"
14
+ create_file '.gitignore' unless File.exist? '.gitignore'
15
+ append_to_file '.gitignore', "\n.circleci/**/*.env"
16
+ append_to_file '.gitignore', "\n.circleci/**/*.key"
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,17 @@
1
+ require 'byebug'
2
+
3
+ module HandsomeFencer
4
+ module CircleCI
5
+ class CLI < Thor
6
+
7
+ desc "obfuscate", "obfuscate .env files inside .circleci directory"
8
+
9
+ def obfuscate(*args)
10
+
11
+ environment = args.first
12
+ @cipher = HandsomeFencer::CircleCI::Crypto.new(environment: environment)
13
+ @cipher.obfuscate('.circleci', "#{environment}.env")
14
+ end
15
+ end
16
+ end
17
+ end
@@ -10,18 +10,21 @@ module HandsomeFencer
10
10
  def initialize(options={})
11
11
  @cipher = OpenSSL::Cipher.new 'AES-128-CBC'
12
12
  @salt = '8 octets'
13
- @dkfile = options[:dkfile] ? ('.circleci/' + options[:dkfile] + '.key') : dkfile
13
+ @dkfile = '.circleci/keys/' + options[:environment] + '.key'
14
+ @deploy_key = (options[:environment] + '_key').upcase
14
15
  @pass_phrase = get_deploy_key
15
16
  end
16
17
 
17
18
  def get_deploy_key
18
19
  case
19
- when ENV['DEPLOY_KEY'].nil? && !File.exist?(@dkfile)
20
- raise DeployKeyError, "No deploy key set. Please generate a deploy key using '$ bin/rails generate handsome_fencer:circle_c_i:deploy_key' or set it using '$ export ENV['DEPLOY_KEY'] = some-complicated-key'"
20
+ when ENV[@deploy_key].nil? && !File.exist?(@dkfile)
21
+ raise DeployKeyError, "No #{@deploy_key} set. Please generate using '$ handsome_fencer-circle_c_i generate_key :circle' or '$ export
22
+ ENV['CIRCLE_KEY'] = some-complicated-key'"
21
23
  when File.exist?(@dkfile)
22
24
  Base64.decode64(File.read(@dkfile))
23
- when !ENV['DEPLOY_KEY'].nil?
24
- Base64.decode64(ENV['DEPLOY_KEY'])
25
+ when !ENV[@deploy_key].nil?
26
+
27
+ Base64.decode64(ENV[@deploy_key])
25
28
  end
26
29
  end
27
30
 
@@ -68,6 +71,7 @@ module HandsomeFencer
68
71
  end
69
72
 
70
73
  def obfuscate(directory=nil, extension=nil)
74
+
71
75
  extension = extension || '.env'
72
76
  directory = directory || '.circleci'
73
77
  source_files(directory, extension).each { |file| encrypt file }
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gem 'rails', '5.2.0'
@@ -0,0 +1,9 @@
1
+ DOCKERHUB_PASS="set me"
2
+ DOCKERHUB_EMAIL="set me"
3
+ DOCKERHUB_USER="set me"
4
+ PUSH_DEPLOY_TAG=${CIRCLE_PREVIOUS_BUILD_NUM}_${CIRCLE_SHA1:0:7}
5
+ DEPLOY_TAG=${CIRCLE_BUILD_NUM}_${CIRCLE_SHA1:0:7}
6
+ DEPLOY_PATH="name of our app"
7
+ SERVER_HOST="server ip address"
8
+ SERVER_USER="probably root"
9
+ SERVER_PORT="probably 22"
@@ -0,0 +1,62 @@
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
+ - run: gem install handsome_fencer-circle_c_i
13
+ - run: ruby .circleci/expose_env.rb
14
+ - run: docker-compose build dev_app database
15
+ - run: docker-compose run dev_app bin/rails db:create db:migrate test
16
+
17
+ push:
18
+ docker:
19
+ - image: circleci/ruby:2.5.1-node-browsers
20
+ environment:
21
+ BASH_ENV: .env/circle/deploy.env
22
+ steps:
23
+ - checkout
24
+ - setup_remote_docker
25
+ - run: gem install handsomefencer-environment
26
+ - run: ruby expose_env.rb
27
+ - run: docker-compose up -d --build
28
+ - run:
29
+ name: Tag web image
30
+ command: docker tag $(docker images | grep project_web | awk '{ print $3 }') rennmappe/bacchanal_web:$DEPLOY_TAG
31
+ - run: docker login -u $DOCKERHUB_USER -p $DOCKERHUB_PASS
32
+ - run: docker push rennmappe/bacchanal_web:$DEPLOY_TAG
33
+
34
+ deploy:
35
+ docker:
36
+ - image: circleci/ruby:2.5.1-node-browsers
37
+ environment:
38
+ BASH_ENV: .env/circle/deploy.env
39
+ steps:
40
+ - checkout
41
+ - add_ssh_keys
42
+ - run: bundle install --without production
43
+ - run: ruby expose_env.rb
44
+ - run: bin/rails docker:deploy
45
+
46
+ workflows:
47
+ version: 2
48
+ build-and-deploy:
49
+ jobs:
50
+ - build
51
+ - push:
52
+ requires:
53
+ - build
54
+ filters:
55
+ branches:
56
+ only: master
57
+ - deploy:
58
+ requires:
59
+ - push
60
+ filters:
61
+ branches:
62
+ only: master
@@ -0,0 +1,11 @@
1
+ FROM ruby:2.5-alpine
2
+
3
+ LABEL maintainer="your-email-here@gmail.com"
4
+
5
+ RUN apk add --no-cache --update build-base linux-headers \
6
+ postgresql-dev nodejs tzdata libxml2-dev libxslt-dev
7
+
8
+ COPY Gemfile* /usr/src/app/
9
+ WORKDIR /usr/src/app
10
+ RUN bundle install
11
+ COPY . /usr/src/app/
@@ -0,0 +1,9 @@
1
+ DOCKERHUB_PASS="set me"
2
+ DOCKERHUB_EMAIL="set me"
3
+ DOCKERHUB_USER="set me"
4
+ PUSH_DEPLOY_TAG=${CIRCLE_PREVIOUS_BUILD_NUM}_${CIRCLE_SHA1:0:7}
5
+ DEPLOY_TAG=${CIRCLE_BUILD_NUM}_${CIRCLE_SHA1:0:7}
6
+ DEPLOY_PATH="name of our app"
7
+ SERVER_HOST="server ip address"
8
+ SERVER_USER="probably root"
9
+ SERVER_PORT="probably 22"
@@ -0,0 +1,9 @@
1
+ DOCKERHUB_PASS="set me"
2
+ DOCKERHUB_EMAIL="set me"
3
+ DOCKERHUB_USER="set me"
4
+ PUSH_DEPLOY_TAG=${CIRCLE_PREVIOUS_BUILD_NUM}_${CIRCLE_SHA1:0:7}
5
+ DEPLOY_TAG=${CIRCLE_BUILD_NUM}_${CIRCLE_SHA1:0:7}
6
+ DEPLOY_PATH="name of our app"
7
+ SERVER_HOST="server ip address"
8
+ SERVER_USER="probably root"
9
+ SERVER_PORT="probably 22"
@@ -0,0 +1,9 @@
1
+ DOCKERHUB_PASS="set me"
2
+ DOCKERHUB_EMAIL="set me"
3
+ DOCKERHUB_USER="set me"
4
+ PUSH_DEPLOY_TAG=${CIRCLE_PREVIOUS_BUILD_NUM}_${CIRCLE_SHA1:0:7}
5
+ DEPLOY_TAG=${CIRCLE_BUILD_NUM}_${CIRCLE_SHA1:0:7}
6
+ DEPLOY_PATH="name of our app"
7
+ SERVER_HOST="server ip address"
8
+ SERVER_USER="probably root"
9
+ SERVER_PORT="probably 22"
@@ -0,0 +1,2 @@
1
+ POSTGRES_USER="postgres"
2
+ POSTGRES_PASSWORD="some-long-secure-password"
@@ -0,0 +1,2 @@
1
+ POSTGRES_USER="postgres"
2
+ POSTGRES_PASSWORD="some-long-secure-password"
@@ -0,0 +1,2 @@
1
+ POSTGRES_USER="postgres"
2
+ POSTGRES_PASSWORD="some-long-secure-password"
@@ -0,0 +1,46 @@
1
+ version: '3.1'
2
+
3
+ services:
4
+
5
+ app:
6
+ image: rennmappe/handsomefencer_app:$DEPLOY_TAG
7
+ secrets:
8
+ - host_ssh_key
9
+ command: [ "bundle", "exec", "puma", "-C", "config/puma.rb" ]
10
+
11
+ depends_on:
12
+ - database
13
+
14
+ volumes:
15
+ - app-data:/handsomefencer
16
+ environment:
17
+ - RAILS_MASTER_KEY
18
+ env_file:
19
+ - .env/development/database.env
20
+ - .env/development/app.env
21
+ expose:
22
+ - '3000'
23
+
24
+ database:
25
+ image: postgres
26
+ env_file:
27
+ - .env/development/database.env
28
+
29
+ volumes:
30
+ - db-data:/var/lib/postgresql/data
31
+
32
+ web:
33
+ image: rennmappe/handsomefencer_web:$DEPLOY_TAG
34
+ command: [ "nginx", "-g", "daemon off;" ]
35
+ depends_on:
36
+ - app
37
+ ports:
38
+ - "80:80"
39
+
40
+ volumes:
41
+ db-data:
42
+ app-data:
43
+
44
+ secrets:
45
+ host_ssh_key:
46
+ file: ~/.ssh/id_rsa
@@ -0,0 +1,20 @@
1
+ default: &default
2
+ adapter: postgresql
3
+ encoding: unicode
4
+ host: <%= ENV.fetch('DATABASE_HOST') %>
5
+ username: <%= ENV.fetch('POSTGRES_USER') %>
6
+ password: <%= ENV.fetch('POSTGRES_PASSWORD') %>
7
+ database: <%= ENV.fetch('POSTGRES_DB') %>
8
+ pool: 5
9
+ variables:
10
+ statement_timeout: 5000
11
+
12
+ development:
13
+ <<: *default
14
+
15
+ test:
16
+ <<: *default
17
+
18
+
19
+ production:
20
+ <<: *default
@@ -0,0 +1,77 @@
1
+ version: '3.1'
2
+
3
+ services:
4
+
5
+ dev_app:
6
+ build:
7
+ context: .
8
+ dockerfile: ./docker/app/Dockerfile
9
+
10
+ depends_on:
11
+ - database
12
+ ports:
13
+ - "35729:35729"
14
+ - "3000:3000"
15
+ volumes:
16
+ - .:/usr/src/app
17
+ - gem_cache:/gems
18
+ env_file:
19
+ - .env/development/database.env
20
+ - .env/development/app.env
21
+ command: [ "bin/rails", "s" ]
22
+
23
+ stdin_open: true
24
+ tty: true
25
+ secrets:
26
+ - host_ssh_key
27
+
28
+ app:
29
+
30
+ build:
31
+ context: .
32
+ dockerfile: ./docker/app/Dockerfile
33
+
34
+ depends_on:
35
+ - database
36
+ ports:
37
+ - "3000:3000"
38
+ volumes:
39
+ - .:/usr/src/app
40
+ - gem_cache:/gems
41
+ environment:
42
+ - RAILS_ENV=production
43
+ env_file:
44
+ - .env/development/database.env
45
+ - .env/development/app.env
46
+
47
+ command: [ "bundle", "exec", "puma", "-C", "config/puma.rb" ]
48
+
49
+ secrets:
50
+ - host_ssh_key
51
+
52
+ web:
53
+ build:
54
+ context: .
55
+ dockerfile: ./docker/web/Dockerfile
56
+ command: [ "nginx", "-g", "daemon off;" ]
57
+
58
+ depends_on:
59
+ - app
60
+ expose:
61
+ - 80
62
+
63
+ database:
64
+ image: postgres
65
+ env_file:
66
+ - .env/development/database.env
67
+
68
+ volumes:
69
+ - db-data:/var/lib/postgresql/data
70
+
71
+ volumes:
72
+ db-data:
73
+ gem_cache:
74
+
75
+ secrets:
76
+ host_ssh_key:
77
+ file: ~/.ssh/id_rsa
@@ -0,0 +1,99 @@
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
+ port = ENV['SERVER_PORT']
12
+ deploy_env = ENV['DEPLOY_ENV'] || :production
13
+ deploy_path = ENV['DEPLOY_PATH']
14
+
15
+ server = SSHKit::Host.new(hostname: hostname, port: port, user: user)
16
+
17
+ namespace :deploy do
18
+
19
+ desc 'copy to server files needed to run and manage Docker containers'
20
+
21
+ task :configs do
22
+
23
+ on server do
24
+ within deploy_path do
25
+ upload! File.expand_path('../../config/containers/docker-compose.yml', __dir__), '.'
26
+ upload! File.expand_path('../../.env', __dir__), '.', recursive: true
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+
33
+ namespace :docker do
34
+
35
+ desc 'logs into Docker Hub for pushing and pulling'
36
+
37
+ task :login do
38
+ on server do
39
+ execute "mkdir -p #{deploy_path}"
40
+ within deploy_path do
41
+ execute 'docker', 'login', '-u', dockerhub_user, '-p', dockerhub_pass
42
+ end
43
+ end
44
+ end
45
+
46
+ desc 'stops all Docker containers via Docker Compose'
47
+
48
+ task stop: 'deploy:configs' do
49
+ on server do
50
+ within deploy_path do
51
+ with rails_env: deploy_env, deploy_tag: deploy_tag do
52
+ execute 'docker-compose', 'stop'
53
+
54
+ end
55
+ end
56
+ end
57
+ end
58
+
59
+ desc 'starts all Docker containers via Docker Compose'
60
+
61
+ task start: 'deploy:configs' do
62
+ on server do
63
+ within deploy_path do
64
+ with rails_env: deploy_env, deploy_tag: deploy_tag do
65
+ execute 'docker-compose', 'up', '-d'
66
+ execute 'echo', deploy_tag , '>', 'deploy.tag'
67
+ end
68
+ end
69
+ end
70
+ end
71
+
72
+ desc 'pulls images from Docker Hub'
73
+
74
+ task pull: 'docker:login' do
75
+ on server do
76
+ within deploy_path do
77
+ ["#{deploy_path}_app", "#{deploy_path}_web"].each do |image_name|
78
+ execute 'docker', 'pull', "rennmappe/#{image_name}:#{deploy_tag}"
79
+ end
80
+ execute 'docker', 'pull', 'postgres:9.4.5'
81
+ end
82
+ end
83
+ end
84
+
85
+
86
+ desc 'runs database migrations in application container via Docker Compose'
87
+ task migrate: 'deploy:configs' do
88
+ on server do
89
+ within deploy_path do
90
+ with rails_env: deploy_env, deploy_tag: deploy_tag do
91
+ execute 'docker-compose', 'run', 'app', "bin/rails", 'db:create', 'db:migrate'
92
+ end
93
+ end
94
+ end
95
+ end
96
+
97
+ desc 'pulls images, stops old containers, updates the database, and starts new containers'
98
+ task deploy: %w{docker:pull docker:stop docker:migrate docker:start }
99
+ end
@@ -1,5 +1,5 @@
1
1
  module HandsomeFencer
2
2
  module CircleCI
3
- VERSION = '0.1.17'
3
+ VERSION = '0.1.19'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: handsome_fencer-circle_c_i
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.17
4
+ version: 0.1.19
5
5
  platform: ruby
6
6
  authors:
7
7
  - schadenfred
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-10-08 00:00:00.000000000 Z
11
+ date: 2018-10-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sshkit
@@ -52,20 +52,6 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: sqlite3
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
55
  - !ruby/object:Gem::Dependency
70
56
  name: minitest-given
71
57
  requirement: !ruby/object:Gem::Requirement
@@ -128,12 +114,30 @@ files:
128
114
  - lib/handsome_fencer/circle_c_i.rb
129
115
  - lib/handsome_fencer/circle_c_i/Rakefile
130
116
  - lib/handsome_fencer/circle_c_i/cli.rb
131
- - lib/handsome_fencer/circle_c_i/cli/hn.rb
117
+ - lib/handsome_fencer/circle_c_i/cli/expose.rb
118
+ - lib/handsome_fencer/circle_c_i/cli/generate_key.rb
119
+ - lib/handsome_fencer/circle_c_i/cli/install.rb
120
+ - lib/handsome_fencer/circle_c_i/cli/obfuscate.rb
132
121
  - lib/handsome_fencer/circle_c_i/crypto.rb
133
122
  - lib/handsome_fencer/circle_c_i/generators/install_generator.rb
134
123
  - lib/handsome_fencer/circle_c_i/tasks/generate_key.rake
135
124
  - lib/handsome_fencer/circle_c_i/tasks/install.rake
136
125
  - lib/handsome_fencer/circle_c_i/tasks/obfuscate.rake
126
+ - lib/handsome_fencer/circle_c_i/templates/Gemfile
127
+ - lib/handsome_fencer/circle_c_i/templates/Gemfile.lock
128
+ - lib/handsome_fencer/circle_c_i/templates/circleci/circle.env
129
+ - lib/handsome_fencer/circle_c_i/templates/circleci/config.yml
130
+ - lib/handsome_fencer/circle_c_i/templates/circleci/containers/app/Dockerfile
131
+ - lib/handsome_fencer/circle_c_i/templates/circleci/containers/app/development.env
132
+ - lib/handsome_fencer/circle_c_i/templates/circleci/containers/app/production.env
133
+ - lib/handsome_fencer/circle_c_i/templates/circleci/containers/app/staging.env
134
+ - lib/handsome_fencer/circle_c_i/templates/circleci/containers/database/development.env
135
+ - lib/handsome_fencer/circle_c_i/templates/circleci/containers/database/production.env
136
+ - lib/handsome_fencer/circle_c_i/templates/circleci/containers/database/staging.env
137
+ - lib/handsome_fencer/circle_c_i/templates/circleci/overrides/production.yml
138
+ - lib/handsome_fencer/circle_c_i/templates/config/database.yml
139
+ - lib/handsome_fencer/circle_c_i/templates/docker-compose.yml
140
+ - lib/handsome_fencer/circle_c_i/templates/lib/tasks/deploy.rake
137
141
  - lib/handsome_fencer/circle_c_i/version.rb
138
142
  homepage: https://github.com/schadenfred/handsome_fencer-circle_c_i
139
143
  licenses:
@@ -158,5 +162,5 @@ rubyforge_project:
158
162
  rubygems_version: 2.7.7
159
163
  signing_key:
160
164
  specification_version: 4
161
- summary: Handsome deployment of Rails apps using Circle and Docker
165
+ summary: Handsome deployment of apps using Circle and Docker
162
166
  test_files: []
@@ -1,13 +0,0 @@
1
- module HandsomeFencer
2
- module CircleCI
3
- module CLI
4
- class Hn < Thor
5
- desc "search URL", "Search hn.algolia.com for a url mentioned on Hackernews"
6
- option :tags
7
- def search( url )
8
- puts "Looks like you are looking for #{url} with tags #{options[:tags]}"
9
- end
10
- end
11
- end
12
- end
13
- end