diff --git a/.gitignore b/.gitignore index 7f51045aa..6d540c413 100644 --- a/.gitignore +++ b/.gitignore @@ -25,3 +25,6 @@ neo4j/ # Ignore Vagrant files .vagrant/ + +# Ignore Capistrano customizations +config/deploy/* diff --git a/Capfile b/Capfile new file mode 100644 index 000000000..4a3b6d675 --- /dev/null +++ b/Capfile @@ -0,0 +1,13 @@ +require 'capistrano/setup' +require 'capistrano/deploy' +require 'capistrano/scm/git' + +install_plugin Capistrano::SCM::Git + +require 'capistrano/rbenv' +require 'capistrano/bundler' +require 'capistrano/yarn' +require 'capistrano/rails/assets' +require 'capistrano/rails/migrations' + +Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r } diff --git a/Gemfile b/Gemfile index 4472f3306..6fd86ec48 100644 --- a/Gemfile +++ b/Gemfile @@ -78,6 +78,11 @@ group :development do gem 'letter_opener_web' gem 'bullet' gem 'active_record_query_trace' + + gem 'capistrano' + gem 'capistrano-rails' + gem 'capistrano-rbenv' + gem 'capistrano-yarn' end group :production do diff --git a/Gemfile.lock b/Gemfile.lock index bfed29072..dd3105b38 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -41,6 +41,8 @@ GEM tzinfo (~> 1.1) addressable (2.5.0) public_suffix (~> 2.0, >= 2.0.2) + airbrussh (1.1.2) + sshkit (>= 1.6.1, != 1.7.0) arel (7.1.4) ast (2.3.0) attr_encrypted (3.0.3) @@ -78,6 +80,24 @@ GEM bullet (5.3.0) activesupport (>= 3.0.0) uniform_notifier (~> 1.10.0) + capistrano (3.7.2) + airbrussh (>= 1.0.0) + capistrano-harrow + i18n + rake (>= 10.0.0) + sshkit (>= 1.9.0) + capistrano-bundler (1.2.0) + capistrano (~> 3.1) + sshkit (~> 1.2) + capistrano-harrow (0.5.3) + capistrano-rails (1.2.2) + capistrano (~> 3.1) + capistrano-bundler (~> 1.1) + capistrano-rbenv (2.1.0) + capistrano (~> 3.1) + sshkit (~> 1.3) + capistrano-yarn (2.0.2) + capistrano (~> 3.0) chunky_png (1.3.8) climate_control (0.1.0) cocaine (0.5.8) @@ -213,6 +233,9 @@ GEM minitest (5.10.1) multi_json (1.12.1) multi_xml (0.6.0) + net-scp (1.2.1) + net-ssh (>= 2.6.5) + net-ssh (4.0.1) nio4r (1.2.1) nokogiri (1.7.0.1) mini_portile2 (~> 2.1.0) @@ -389,6 +412,9 @@ GEM actionpack (>= 4.0) activesupport (>= 4.0) sprockets (>= 3.0.0) + sshkit (1.11.5) + net-scp (>= 1.1.2) + net-ssh (>= 2.8.0) statsd-instrument (2.1.2) temple (0.7.7) term-ansicolor (1.4.0) @@ -433,6 +459,10 @@ DEPENDENCIES binding_of_caller browserify-rails bullet + capistrano + capistrano-rails + capistrano-rbenv + capistrano-yarn coffee-rails (~> 4.1.0) devise devise-two-factor diff --git a/config/deploy.rb b/config/deploy.rb new file mode 100644 index 000000000..cbfb8ec9c --- /dev/null +++ b/config/deploy.rb @@ -0,0 +1,11 @@ +lock '3.7.2' + +set :application, 'mastodon' +set :repo_url, 'https://github.com/tootsuite/mastodon.git' +set :branch, 'master' +set :rbenv_type, :user +set :rbenv_ruby, File.read('.ruby-version').strip +set :migration_role, :app + +append :linked_files, '.env.production' +append :linked_dirs, 'vendor/bundle', 'node_modules', 'public/system'