Skip to content

Commit

Permalink
Add capistrano 3 and documentation
Browse files Browse the repository at this point in the history
  • Loading branch information
dsander committed Aug 18, 2015
1 parent b35efc2 commit a16fb09
Show file tree
Hide file tree
Showing 9 changed files with 146 additions and 3 deletions.
8 changes: 8 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -175,3 +175,11 @@ DELAYED_JOB_MAX_RUNTIME=2

# Amount of seconds for delayed_job to sleep before checking for new jobs
DELAYED_JOB_SLEEP_DELAY=10

##########################################################
# Capistrano deployment (read the documentation FIXME) #
##########################################################

#CAPISTRANO_DEPLOY_SERVER=
#CAPISTRANO_DEPLOY_USER=
#CAPISTRANO_DEPLOY_REPO_URL=
10 changes: 8 additions & 2 deletions Capfile
Original file line number Diff line number Diff line change
@@ -1,2 +1,8 @@
load 'deploy'
load 'config/deploy'
# Load DSL and set up stages
require 'capistrano/setup'
# Include default deployment tasks
require 'capistrano/deploy'

require 'capistrano/bundler'
require 'capistrano/rails/assets'
require 'capistrano/rails/migrations'
4 changes: 4 additions & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,10 @@ group :development do
gem 'guard-rspec'
gem 'letter_opener_web'

gem 'capistrano', '~> 3.4.0'
gem 'capistrano-rails', '~> 1.1'
gem 'capistrano-bundler', '~> 1.1.4'

group :test do
gem 'coveralls', require: false
gem 'delorean'
Expand Down
21 changes: 21 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,16 @@ GEM
rails (>= 3.1)
buftok (0.2.0)
builder (3.2.2)
capistrano (3.4.0)
i18n
rake (>= 10.0.0)
sshkit (~> 1.3)
capistrano-bundler (1.1.4)
capistrano (~> 3.1)
sshkit (~> 1.2)
capistrano-rails (1.1.3)
capistrano (~> 3.1)
capistrano-bundler (~> 1.1)
celluloid (0.16.0)
timers (~> 4.0.0)
chronic (0.10.2)
Expand All @@ -95,6 +105,7 @@ GEM
coffee-script-source
execjs
coffee-script-source (1.9.1)
colorize (0.7.7)
cookiejar (0.3.2)
coveralls (0.7.1)
multi_json (~> 1.3)
Expand Down Expand Up @@ -267,6 +278,9 @@ GEM
mysql2 (0.3.16)
naught (1.0.0)
net-ftp-list (3.2.8)
net-scp (1.2.1)
net-ssh (>= 2.6.5)
net-ssh (2.9.2)
netrc (0.10.3)
nokogiri (1.6.6.2)
mini_portile (~> 0.6.0)
Expand Down Expand Up @@ -425,6 +439,10 @@ GEM
actionpack (>= 3.0)
activesupport (>= 3.0)
sprockets (>= 2.8, < 4.0)
sshkit (1.7.1)
colorize (>= 0.7.0)
net-scp (>= 1.1.2)
net-ssh (>= 2.8.0)
string-scrub (0.0.5)
systemu (2.6.4)
term-ansicolor (1.3.0)
Expand Down Expand Up @@ -500,6 +518,9 @@ DEPENDENCIES
binding_of_caller
bootstrap-kaminari-views (~> 0.0.3)
bundler (>= 1.5.0)
capistrano (~> 3.4.0)
capistrano-bundler (~> 1.1.4)
capistrano-rails (~> 1.1)
coffee-rails (~> 4.1.0)
coveralls
daemons (~> 1.1.9)
Expand Down
54 changes: 54 additions & 0 deletions config/deploy.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
require 'dotenv'
Dotenv.load

# config valid only for current version of Capistrano
lock '3.4.0'

set :application, 'huginn'
set :repo_url, ENV['CAPISTRANO_DEPLOY_REPO_URL'] || 'https://github.com/cantino/huginn.git'

# Default branch is :master
set :branch, ENV['BRANCH'] || 'master'

set :deploy_to, '/home/huginn'

# Set to :debug for verbose ouput
set :log_level, :info

# Default value for :linked_files is []
set :linked_files, fetch(:linked_files, []).push('.env', 'Procfile', 'config/unicorn.rb')

# Default value for linked_dirs is []
set :linked_dirs, fetch(:linked_dirs, []).push('log', 'tmp/pids', 'tmp/cache', 'tmp/sockets', 'vendor/bundle')

# Default value for keep_releases is 5
# set :keep_releases, 5

set :bundle_jobs, 4

set :conditionally_migrate, true # Defaults to false. If true, it's skip migration if files in db/migrate not modified

task :deploy => [:production]

namespace :deploy do
after 'check:make_linked_dirs', :migrate_to_cap do
on roles(:all) do
# Try to migrate from the manual installation to capistrano directory structure
next if test('[ -L ~/huginn ]')
fetch(:linked_files).each do |f|
if !test("[ -f ~/shared/#{f} ] ") && test("[ -f ~/huginn/#{f} ]")
execute("cp ~/huginn/#{f} ~/shared/#{f}")
end
end
execute('mv ~/huginn ~/huginn.manual')
execute('ln -s ~/current ~/huginn')
end
end
after :publishing, :restart do
on roles(:all) do
within release_path do
execute :rake, 'production:restart'
end
end
end
end
1 change: 1 addition & 0 deletions config/deploy/production.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
server ENV['CAPISTRANO_DEPLOY_SERVER'], user: ENV['CAPISTRANO_DEPLOY_USER'] || 'huginn', roles: %w{app db web}
1 change: 1 addition & 0 deletions doc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ Manual installation which will guide through the steps to install Huginn on any

- [Install](manual/README.md) Requirements, directory structures and installation from source.
- [Update](manual/update.md) Update your installation.
- Deploy updates via [Capistrano](manual/capistrano.md).

### Heroku

Expand Down
3 changes: 2 additions & 1 deletion doc/manual/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@

- [Requirements](requirements.md) Software and hardware requirements to run the Huginn installation
- [Install](installation.md) Installation guide for Ubundu/Debian
- [Update](update.md) Update an existing Huginn installation
- [Update](update.md) Update an existing Huginn installation
- Deploy updates via [Capistrano](capistrano.md)
47 changes: 47 additions & 0 deletions doc/manual/capistrano.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Deploy updates via Capistrano

After you followed the [manual installation guide](installation.md) it is simple to push updates to your huginn instance using capistrano.

### 1. Ensure you have SSH access to your server via the huginn user

Either set a password for the huginn user or add your public SSH key:

# Set password
sudo passwd huginn

# Or add a SSH key
sudo -u huginn -H mkdir -p /home/huginn/.ssh
sudo -u huginn -H editor /home/huginn/.ssh/authorized_keys
sudo -u huginn -H chmod -R 700 /home/huginn/.ssh

### 2. Configure Capistrano on your local machine

Add Capistrano configuration to you local `.env`:

CAPISTRANO_DEPLOY_SERVER=<IP or FQDN of your server>
CAPISTRANO_DEPLOY_USER=huginn
CAPISTRANO_DEPLOY_REPO_URL=https://github.com/cantino/huginn.git


### 3. Run Capistrano

You can now run Capistrano and update your server:

cap production deploy

If you want to deploy a different branch, pass it as environment variable:

cap production deploy BRANCH=awesome-feature

### Changes to remote .env and Procfile

If you want to change the `.env`, `Procfile` or `config/unicorn.rb` of your installation you still need to do it on your server, do not forget to export the init scripts after your are done:

cd /home/huginn/huginn
# Whichever you want to change
sudo -u huginn -H editor Procfile
sudo -u huginn -H editor .env
sudo -u huginn -H editor config/unicorn.rb
# Export init scripts and restart huginn
sudo rake production:export

0 comments on commit a16fb09

Please sign in to comment.