summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Capfile38
-rw-r--r--Gemfile8
-rw-r--r--Gemfile.lock32
-rw-r--r--config/database.yml4
-rw-r--r--config/deploy.rb57
-rw-r--r--config/deploy/production.rb62
-rw-r--r--config/deploy/staging.rb61
-rw-r--r--config/environments/production.rb2
8 files changed, 260 insertions, 4 deletions
diff --git a/Capfile b/Capfile
new file mode 100644
index 0000000..508e77e
--- /dev/null
+++ b/Capfile
@@ -0,0 +1,38 @@
+# Load DSL and set up stages
+require "capistrano/setup"
+
+# Include default deployment tasks
+require "capistrano/deploy"
+
+# Load the SCM plugin appropriate to your project:
+#
+# require "capistrano/scm/hg"
+# install_plugin Capistrano::SCM::Hg
+# or
+# require "capistrano/scm/svn"
+# install_plugin Capistrano::SCM::Svn
+# or
+require "capistrano/scm/git"
+install_plugin Capistrano::SCM::Git
+
+# Include tasks from other gems included in your Gemfile
+#
+# For documentation on these, see for example:
+#
+# https://github.com/capistrano/rvm
+# https://github.com/capistrano/rbenv
+# https://github.com/capistrano/chruby
+# https://github.com/capistrano/bundler
+# https://github.com/capistrano/rails
+# https://github.com/capistrano/passenger
+#
+require "capistrano/rvm"
+# require "capistrano/rbenv"
+# require "capistrano/chruby"
+require "capistrano/bundler"
+# require "capistrano/rails/assets"
+# require "capistrano/rails/migrations"
+# require "capistrano/passenger"
+
+# Load custom tasks from `lib/capistrano/tasks` if you have any defined
+Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
diff --git a/Gemfile b/Gemfile
index c2aaec6..1f3e508 100644
--- a/Gemfile
+++ b/Gemfile
@@ -49,6 +49,14 @@ group :development do
gem "rubocop-packaging", require: false
gem "rubocop-performance", require: false
gem "rubocop-rails", require: false
+ # Capistrano
+ gem "capistrano", require: false
+ gem "capistrano-rails", require: false
+ gem "capistrano-bundler", require: false
+ gem "capistrano-rvm", require: false
+ gem "capistrano-puma", require: false
+ gem "ed25519", ">= 1.2", "< 2.0", require: false # Needed for cap ed25519 support
+ gem "bcrypt_pbkdf", ">= 1.0", "< 2.0", require: false # Needed for cap ed25519 support
end
group :test do
diff --git a/Gemfile.lock b/Gemfile.lock
index d499c57..e29108f 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -62,13 +62,31 @@ GEM
zeitwerk (~> 2.3)
addressable (2.7.0)
public_suffix (>= 2.0.2, < 5.0)
+ airbrussh (1.4.0)
+ sshkit (>= 1.6.1, != 1.7.0)
ast (2.4.2)
bcrypt (3.1.16)
+ bcrypt_pbkdf (1.1.0)
bindex (0.8.1)
bootsnap (1.7.5)
msgpack (~> 1.0)
builder (3.2.4)
byebug (11.1.3)
+ capistrano (3.16.0)
+ airbrussh (>= 1.0.0)
+ i18n
+ rake (>= 10.0.0)
+ sshkit (>= 1.9.0)
+ capistrano-bundler (2.0.1)
+ capistrano (~> 3.1)
+ capistrano-puma (0.2.3)
+ capistrano (>= 3.0)
+ capistrano-rails (1.6.1)
+ capistrano (~> 3.1)
+ capistrano-bundler (>= 1.1, < 3)
+ capistrano-rvm (0.1.2)
+ capistrano (~> 3.0)
+ sshkit (~> 1.2)
capybara (3.35.3)
addressable
mini_mime (>= 0.1.3)
@@ -86,6 +104,7 @@ GEM
railties (>= 4.1.0)
responders
warden (~> 1.2.3)
+ ed25519 (1.2.4)
erubi (1.10.0)
ffi (1.15.1)
globalid (0.4.2)
@@ -108,6 +127,9 @@ GEM
mini_portile2 (2.5.1)
minitest (5.14.4)
msgpack (1.4.2)
+ net-scp (3.0.0)
+ net-ssh (>= 2.6.5, < 7.0.0)
+ net-ssh (6.1.0)
nio4r (2.5.7)
nokogiri (1.11.5)
mini_portile2 (~> 2.5.0)
@@ -209,6 +231,9 @@ GEM
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
+ sshkit (1.21.2)
+ net-scp (>= 1.1.2)
+ net-ssh (>= 2.8.0)
thor (1.1.0)
tilt (2.0.10)
turbolinks (5.2.1)
@@ -244,10 +269,17 @@ PLATFORMS
ruby
DEPENDENCIES
+ bcrypt_pbkdf (>= 1.0, < 2.0)
bootsnap (>= 1.4.4)
byebug
+ capistrano
+ capistrano-bundler
+ capistrano-puma
+ capistrano-rails
+ capistrano-rvm
capybara (>= 3.26)
devise
+ ed25519 (>= 1.2, < 2.0)
jbuilder (~> 2.7)
listen (~> 3.3)
pg (~> 1.1)
diff --git a/config/database.yml b/config/database.yml
index b7be9d6..bf858ca 100644
--- a/config/database.yml
+++ b/config/database.yml
@@ -81,9 +81,5 @@ test:
#
production:
<<: *default
- host: <%= ENV["ESOTERRA_DATABASE_HOST"] %>
- port: <%= ENV["ESOTERRA_DATABASE_PORT"] %>
- database: <%= ENV["ESOTERRA_DATABASE_NAME"] %>
username: <%= ENV["ESOTERRA_DATABASE_USERNAME"] %>
password: <%= ENV["ESOTERRA_DATABASE_PASSWORD"] %>
- sslmode: "require"
diff --git a/config/deploy.rb b/config/deploy.rb
new file mode 100644
index 0000000..8384427
--- /dev/null
+++ b/config/deploy.rb
@@ -0,0 +1,57 @@
+# config valid for current version and patch releases of Capistrano
+lock "~> 3.16.0"
+
+set :application, "esoterra"
+set :repo_url, "https://#{ENV['GITHUB_OAUTH']}:@github.com/dtgay/esoterra.git"
+set :user, "rails"
+
+set :branch, "main"
+
+set :deploy_to, "/home/#{fetch :user}/#{fetch :application}"
+
+append :linked_dirs, "log", "tmp/pids", "tmp/cache", "tmp/sockets", "vendor/bundle", ".bundle",
+ "public/system", "public/uploads", ".bundle"
+
+append :linked_files, "config/database.yml", "config/master.key"
+
+set :keep_assets, 2
+set :keep_releases, 5
+
+set :rvm_custom_path, "/usr/share/rvm" # Needed for DO one-click Rails install setup
+
+# upload master.key and database.yml
+namespace :deploy do
+ namespace :check do
+ before :linked_files, :copy_linked_files_if_needed do
+ on roles(:app), in: :sequence, wait: 10 do
+ %w{master.key database.yml}.each do |config_filename|
+ unless test("[ -f #{shared_path}/config/#{config_filename} ]")
+ upload! "config/#{config_filename}", "#{shared_path}/config/#{config_filename}"
+ end
+ end
+ end
+ end
+ end
+end
+
+# Default branch is :master
+# ask :branch, `git rev-parse --abbrev-ref HEAD`.chomp
+
+# Default value for :format is :airbrussh.
+# set :format, :airbrussh
+
+# You can configure the Airbrussh format using :format_options.
+# These are the defaults.
+# set :format_options, command_output: true, log_file: "log/capistrano.log", color: :auto, truncate: :auto
+
+# Default value for :pty is false
+# set :pty, true
+
+# Default value for default_env is {}
+# set :default_env, { path: "/opt/ruby/bin:$PATH" }
+
+# Default value for local_user is ENV['USER']
+# set :local_user, -> { `git config user.name`.chomp }
+
+# Uncomment the following to require manually verifying the host key before first deploy.
+# set :ssh_options, verify_host_key: :secure
diff --git a/config/deploy/production.rb b/config/deploy/production.rb
new file mode 100644
index 0000000..b526c90
--- /dev/null
+++ b/config/deploy/production.rb
@@ -0,0 +1,62 @@
+# server-based syntax
+# ======================
+# Defines a single server with a list of roles and multiple properties.
+# You can define all roles on a single server, or split them:
+
+# server "example.com", user: "deploy", roles: %w{app db web}, my_property: :my_value
+# server "example.com", user: "deploy", roles: %w{app web}, other_property: :other_value
+# server "db.example.com", user: "deploy", roles: %w{db}
+
+
+server "playesoterra.com", user: "rails", roles: %w{app db web}
+
+# role-based syntax
+# ==================
+
+# Defines a role with one or multiple servers. The primary server in each
+# group is considered to be the first unless any hosts have the primary
+# property set. Specify the username and a domain or IP for the server.
+# Don't use `:all`, it's a meta role.
+
+# role :app, %w{deploy@example.com}, my_property: :my_value
+# role :web, %w{user1@primary.com user2@additional.com}, other_property: :other_value
+# role :db, %w{deploy@example.com}
+
+
+
+# Configuration
+# =============
+# You can set any configuration variable like in config/deploy.rb
+# These variables are then only loaded and set in this stage.
+# For available Capistrano configuration variables see the documentation page.
+# http://capistranorb.com/documentation/getting-started/configuration/
+# Feel free to add new variables to customise your setup.
+
+
+
+# Custom SSH Options
+# ==================
+# You may pass any option but keep in mind that net/ssh understands a
+# limited set of options, consult the Net::SSH documentation.
+# http://net-ssh.github.io/net-ssh/classes/Net/SSH.html#method-c-start
+#
+# Global options
+# --------------
+# set :ssh_options, {
+# keys: %w(/home/user_name/.ssh/id_rsa),
+# forward_agent: false,
+# auth_methods: %w(password)
+# }
+#
+# The server-based syntax can be used to override options:
+# ------------------------------------
+# server "example.com",
+# user: "user_name",
+# roles: %w{web app},
+# ssh_options: {
+# user: "user_name", # overrides user setting above
+# keys: %w(/home/user_name/.ssh/id_rsa),
+# forward_agent: false,
+# auth_methods: %w(publickey password)
+# # password: "please use keys"
+# }
diff --git a/config/deploy/staging.rb b/config/deploy/staging.rb
new file mode 100644
index 0000000..0a3f086
--- /dev/null
+++ b/config/deploy/staging.rb
@@ -0,0 +1,61 @@
+# server-based syntax
+# ======================
+# Defines a single server with a list of roles and multiple properties.
+# You can define all roles on a single server, or split them:
+
+# server "example.com", user: "deploy", roles: %w{app db web}, my_property: :my_value
+# server "example.com", user: "deploy", roles: %w{app web}, other_property: :other_value
+# server "db.example.com", user: "deploy", roles: %w{db}
+
+
+
+# role-based syntax
+# ==================
+
+# Defines a role with one or multiple servers. The primary server in each
+# group is considered to be the first unless any hosts have the primary
+# property set. Specify the username and a domain or IP for the server.
+# Don't use `:all`, it's a meta role.
+
+# role :app, %w{deploy@example.com}, my_property: :my_value
+# role :web, %w{user1@primary.com user2@additional.com}, other_property: :other_value
+# role :db, %w{deploy@example.com}
+
+
+
+# Configuration
+# =============
+# You can set any configuration variable like in config/deploy.rb
+# These variables are then only loaded and set in this stage.
+# For available Capistrano configuration variables see the documentation page.
+# http://capistranorb.com/documentation/getting-started/configuration/
+# Feel free to add new variables to customise your setup.
+
+
+
+# Custom SSH Options
+# ==================
+# You may pass any option but keep in mind that net/ssh understands a
+# limited set of options, consult the Net::SSH documentation.
+# http://net-ssh.github.io/net-ssh/classes/Net/SSH.html#method-c-start
+#
+# Global options
+# --------------
+# set :ssh_options, {
+# keys: %w(/home/user_name/.ssh/id_rsa),
+# forward_agent: false,
+# auth_methods: %w(password)
+# }
+#
+# The server-based syntax can be used to override options:
+# ------------------------------------
+# server "example.com",
+# user: "user_name",
+# roles: %w{web app},
+# ssh_options: {
+# user: "user_name", # overrides user setting above
+# keys: %w(/home/user_name/.ssh/id_rsa),
+# forward_agent: false,
+# auth_methods: %w(publickey password)
+# # password: "please use keys"
+# }
diff --git a/config/environments/production.rb b/config/environments/production.rb
index ba79845..beef772 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -117,4 +117,6 @@ Rails.application.configure do
# config.active_record.database_selector = { delay: 2.seconds }
# config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver
# config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session
+
+ config.hosts << "playesoterra.com"
end