about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorStar Rauchenberger <fefferburbia@gmail.com>2023-11-30 15:22:55 -0500
committerStar Rauchenberger <fefferburbia@gmail.com>2023-11-30 15:22:55 -0500
commit52f60d1d022c82677274b2e984538d14a944bdd2 (patch)
treeed37c14353d8c83358fdc6e4aaa4a1870d1c56ab
parentf3465bb37892178398da7319c5ae287e9bf634de (diff)
downloadwittle-52f60d1d022c82677274b2e984538d14a944bdd2.tar.gz
wittle-52f60d1d022c82677274b2e984538d14a944bdd2.tar.bz2
wittle-52f60d1d022c82677274b2e984538d14a944bdd2.zip
Capistrano for deployment
-rw-r--r--Capfile19
-rw-r--r--config/deploy.rb55
-rw-r--r--config/deploy/production.rb62
-rw-r--r--config/deploy/staging.rb61
4 files changed, 197 insertions, 0 deletions
diff --git a/Capfile b/Capfile new file mode 100644 index 0000000..1ace4ce --- /dev/null +++ b/Capfile
@@ -0,0 +1,19 @@
1# Load DSL and set up stages
2require "capistrano/setup"
3
4# Include default deployment tasks
5require "capistrano/deploy"
6
7# Load the SCM plugin appropriate to your project:
8require "capistrano/scm/git"
9install_plugin Capistrano::SCM::Git
10
11# Include tasks from other gems included in your Gemfile
12require "capistrano/rvm"
13require "capistrano/bundler"
14require "capistrano/rails/assets"
15require "capistrano/rails/migrations"
16require "capistrano/passenger"
17
18# Load custom tasks from `lib/capistrano/tasks` if you have any defined
19Dir.glob("lib/capistrano/tasks/*.rake").each { |r| import r }
diff --git a/config/deploy.rb b/config/deploy.rb new file mode 100644 index 0000000..d64fc1a --- /dev/null +++ b/config/deploy.rb
@@ -0,0 +1,55 @@
1# config valid only for current version of Capistrano
2lock "3.18.0"
3
4set :application, "wittle"
5set :repo_url, "/srv/git/wittle"
6
7# Default branch is :master
8set :branch, "main"
9# ask :branch, `git rev-parse --abbrev-ref HEAD`.chomp
10
11# Default deploy_to directory is /var/www/my_app_name
12set :deploy_to, "/srv/www/wittle"
13
14# Default value for :format is :airbrussh.
15# set :format, :airbrussh
16
17# You can configure the Airbrussh format using :format_options.
18# These are the defaults.
19# set :format_options, command_output: true, log_file: "log/capistrano.log", color: :auto, truncate: :auto
20
21# Default value for :pty is false
22# set :pty, true
23
24# Default value for :linked_files is []
25append :linked_files, "config/database.yml", "config/master.key"
26
27# Default value for linked_dirs is []
28append :linked_dirs, "log", "tmp/pids", "tmp/cache", "tmp/sockets"
29
30# Default value for default_env is {}
31# set :default_env, { path: "/opt/ruby/bin:$PATH" }
32set :default_env, { 'RAILS_RELATIVE_URL_ROOT' => '/wittle2' }
33
34# Default value for keep_releases is 5
35# set :keep_releases, 5
36
37# rvm
38set :rvm_type, :system
39set :rvm_custom_path, '/usr/local/rvm'
40
41# rails
42set :rails_env, 'production'
43set :conditionally_migrate, true
44set :migration_role, :app
45set :assets_roles, [:app]
46
47namespace :deploy do
48 after :updated, :compile do
49 on primary(:app) do
50 within release_path do
51 rake "compile"
52 end
53 end
54 end
55end
diff --git a/config/deploy/production.rb b/config/deploy/production.rb new file mode 100644 index 0000000..3313458 --- /dev/null +++ b/config/deploy/production.rb
@@ -0,0 +1,62 @@
1# server-based syntax
2# ======================
3# Defines a single server with a list of roles and multiple properties.
4# You can define all roles on a single server, or split them:
5
6# server "example.com", user: "deploy", roles: %w{app db web}, my_property: :my_value
7# server "example.com", user: "deploy", roles: %w{app web}, other_property: :other_value
8# server "db.example.com", user: "deploy", roles: %w{db}
9server "fourisland.com", user: "thoughts", roles: %w{app db web}
10
11
12
13# role-based syntax
14# ==================
15
16# Defines a role with one or multiple servers. The primary server in each
17# group is considered to be the first unless any hosts have the primary
18# property set. Specify the username and a domain or IP for the server.
19# Don't use `:all`, it's a meta role.
20
21# role :app, %w{deploy@example.com}, my_property: :my_value
22# role :web, %w{user1@primary.com user2@additional.com}, other_property: :other_value
23# role :db, %w{deploy@example.com}
24
25
26
27# Configuration
28# =============
29# You can set any configuration variable like in config/deploy.rb
30# These variables are then only loaded and set in this stage.
31# For available Capistrano configuration variables see the documentation page.
32# http://capistranorb.com/documentation/getting-started/configuration/
33# Feel free to add new variables to customise your setup.
34
35
36
37# Custom SSH Options
38# ==================
39# You may pass any option but keep in mind that net/ssh understands a
40# limited set of options, consult the Net::SSH documentation.
41# http://net-ssh.github.io/net-ssh/classes/Net/SSH.html#method-c-start
42#
43# Global options
44# --------------
45# set :ssh_options, {
46# keys: %w(/home/user_name/.ssh/id_rsa),
47# forward_agent: false,
48# auth_methods: %w(password)
49# }
50#
51# The server-based syntax can be used to override options:
52# ------------------------------------
53# server "example.com",
54# user: "user_name",
55# roles: %w{web app},
56# ssh_options: {
57# user: "user_name", # overrides user setting above
58# keys: %w(/home/user_name/.ssh/id_rsa),
59# forward_agent: false,
60# auth_methods: %w(publickey password)
61# # password: "please use keys"
62# }
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 @@
1# server-based syntax
2# ======================
3# Defines a single server with a list of roles and multiple properties.
4# You can define all roles on a single server, or split them:
5
6# server "example.com", user: "deploy", roles: %w{app db web}, my_property: :my_value
7# server "example.com", user: "deploy", roles: %w{app web}, other_property: :other_value
8# server "db.example.com", user: "deploy", roles: %w{db}
9
10
11
12# role-based syntax
13# ==================
14
15# Defines a role with one or multiple servers. The primary server in each
16# group is considered to be the first unless any hosts have the primary
17# property set. Specify the username and a domain or IP for the server.
18# Don't use `:all`, it's a meta role.
19
20# role :app, %w{deploy@example.com}, my_property: :my_value
21# role :web, %w{user1@primary.com user2@additional.com}, other_property: :other_value
22# role :db, %w{deploy@example.com}
23
24
25
26# Configuration
27# =============
28# You can set any configuration variable like in config/deploy.rb
29# These variables are then only loaded and set in this stage.
30# For available Capistrano configuration variables see the documentation page.
31# http://capistranorb.com/documentation/getting-started/configuration/
32# Feel free to add new variables to customise your setup.
33
34
35
36# Custom SSH Options
37# ==================
38# You may pass any option but keep in mind that net/ssh understands a
39# limited set of options, consult the Net::SSH documentation.
40# http://net-ssh.github.io/net-ssh/classes/Net/SSH.html#method-c-start
41#
42# Global options
43# --------------
44# set :ssh_options, {
45# keys: %w(/home/user_name/.ssh/id_rsa),
46# forward_agent: false,
47# auth_methods: %w(password)
48# }
49#
50# The server-based syntax can be used to override options:
51# ------------------------------------
52# server "example.com",
53# user: "user_name",
54# roles: %w{web app},
55# ssh_options: {
56# user: "user_name", # overrides user setting above
57# keys: %w(/home/user_name/.ssh/id_rsa),
58# forward_agent: false,
59# auth_methods: %w(publickey password)
60# # password: "please use keys"
61# }