Parcourir la source

add capistrano

Marco Laubinger il y a 6 ans
Parent
commit
1c32e38833
7 fichiers modifiés avec 134 ajouts et 2 suppressions
  1. 39 0
      Capfile
  2. 1 0
      Gemfile
  3. 4 0
      Gemfile.lock
  4. 2 2
      config/database.yml
  5. 17 0
      config/deploy.rb
  6. 10 0
      config/deploy/production.rb
  7. 61 0
      config/deploy/staging.rb

+ 39 - 0
Capfile

@@ -0,0 +1,39 @@
+# Load DSL and set up stages
+require "capistrano/setup"
+
+# Include default deployment tasks
+require "capistrano/deploy"
+require 'capistrano/rails'
+
+# 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 }

+ 1 - 0
Gemfile

@@ -55,4 +55,5 @@ gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
 group :development do
   gem "capistrano", "~> 3.10", require: false
   gem "capistrano-rails", "~> 1.3", require: false
+  gem 'capistrano-rbenv'
 end

+ 4 - 0
Gemfile.lock

@@ -75,6 +75,9 @@ GEM
     capistrano-rails (1.5.0)
       capistrano (~> 3.1)
       capistrano-bundler (~> 1.1)
+    capistrano-rbenv (2.1.6)
+      capistrano (~> 3.1)
+      sshkit (~> 1.3)
     capybara (3.33.0)
       addressable
       mini_mime (>= 0.1.3)
@@ -220,6 +223,7 @@ DEPENDENCIES
   byebug
   capistrano (~> 3.10)
   capistrano-rails (~> 1.3)
+  capistrano-rbenv
   capybara (>= 2.15)
   jbuilder (~> 2.7)
   listen (~> 3.2)

+ 2 - 2
config/database.yml

@@ -49,6 +49,6 @@ test:
 #
 production:
   <<: *default
-  database: usr_web1_rails_demo_production
-  username: web1
+  database: <%= ENV['RAILS_DATABASE_NAME'] %>
+  username: <%= ENV['RAILS_DATABASE_USER'] %>
   password: <%= ENV['RAILS_DATABASE_PASSWORD'] %>

+ 17 - 0
config/deploy.rb

@@ -0,0 +1,17 @@
+# config valid for current version and patch releases of Capistrano
+#lock "~> 3.14.1"
+
+set :application, "capistrano-deployment"
+set :repo_url, "https://git.domaincamp.de/dc/capistrano-deployment.git"
+set :webserver, "web-fellow.de"
+
+# Deploy to the user's home directory
+set :deploy_to, "/var/www/htdocs/web1/html/web-fellow.de/#{fetch :application}"
+
+append :linked_dirs, 'log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle', '.bundle', 'public/system', 'public/uploads'
+append :linked_files, 'config/master.key'
+append :linked_files, 'config/database.yml'
+# Only keep the last 5 releases to save disk space
+set :keep_releases, 5
+
+set :rbenv_path, '/var/www/htdocs/web1/.rbenv/'

+ 10 - 0
config/deploy/production.rb

@@ -0,0 +1,10 @@
+set :rbenv_ruby, '2.7.1'
+set :rbenv_type, :user # or :system, depends on your rbenv setup
+set :rbenv_prefix, "RBENV_ROOT=#{fetch(:rbenv_path)} RBENV_VERSION=#{fetch(:rbenv_ruby)} /opt/rbenv/bin/rbenv exec"
+set :rbenv_map_bins, %w{rake gem bundle ruby rails}
+
+set :nvm_type, :user # or :system, depends on your nvm setup
+set :nvm_map_bins, %w{node npm yarn}
+
+set :ssh_options, { forward_agent: true, port: 981, user: 'web1' }
+server fetch(:webserver), roles: %w{web app db}, port: 981, user: 'web1'

+ 61 - 0
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"
+#   }