From 61b78ad4d94cc618d8c01d3ce1ae5f93a9248df1 Mon Sep 17 00:00:00 2001 From: shmyga Date: Mon, 1 Jan 2018 14:33:15 +0300 Subject: [PATCH] [deploy] update --- capfile | 6 +++++ config/deploy.rb | 49 +++++++++++++------------------------ config/deploy/develop.rb | 1 + config/npm.rb | 22 +++++++++++++++++ config/service.rb | 52 ---------------------------------------- gemfile | 6 +++++ webapp/index.html | 10 ++++++++ 7 files changed, 61 insertions(+), 85 deletions(-) create mode 100644 config/npm.rb delete mode 100644 config/service.rb create mode 100644 gemfile create mode 100644 webapp/index.html diff --git a/capfile b/capfile index 08b04d7..ea45d00 100644 --- a/capfile +++ b/capfile @@ -1,5 +1,11 @@ require 'capistrano/setup' require 'capistrano/deploy' +require 'capistrano/scm/git' +install_plugin Capistrano::SCM::Git +require 'capistrano/scm/git-with-submodules' +install_plugin Capistrano::SCM::Git::WithSubmodules +require 'capistrano/npm' +require 'capistrano/gulp' require 'airbrussh/capistrano' Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r } diff --git a/config/deploy.rb b/config/deploy.rb index 66d805d..88b1b07 100644 --- a/config/deploy.rb +++ b/config/deploy.rb @@ -1,44 +1,27 @@ -require_relative 'service' +require_relative 'npm' app = 'tankz' user = 'holop' -set :scm, :git +# git set :application, app set :repo_url, "git@bitbucket.org:shmyga/#{app}.git" set :user, user set :deploy_to, "/home/#{user}/repo/#{app}" +# airbrussh +set :format, :airbrussh +set :format_options, command_output: false -namespace :build do - task :lib do - on roles(:app) do - execute "mkdir ~/haxelib 2>/dev/null || :" - execute "haxelib setup ~/haxelib" - execute "haxelib install lime" - execute "haxelib install openfl" - execute "haxelib install protohx" - execute "haxelib install orm" - execute "haxelib git haxework git@bitbucket.org:shmyga/haxework.git" - end - end +# npm +set :npm_target_path, -> { "/home/#{fetch(:user)}/npm" } +set :npm_flags, '--silent --no-spin' +set :npm_roles, :web +set :npm_env_variables, {} - task :gen do - on roles(:app) do - execute "cd #{release_path} && haxelib run protohx generate protohx.json" - execute "cd #{release_path} && haxelib run orm mysql://shmyga:xkbp8jh9z2@localhost:3306/armageddon -s src-gen/haxe -c ru.m.tankz.db -a ru.m.tankz.db" - end - end - - task :run do - on roles(:app) do - execute "cd #{release_path} && openfl build html5" - execute "cd #{release_path} && openfl build flash" - execute "cd #{release_path} && haxe server.hxml" - end - end -end - -# before 'build:run', 'build:lib' -# before 'build:run', 'build:gen' -# before 'deploy:updated', 'build:run' +# gulp +set :gulp_target_path, -> { release_path } +set :gulp_tasks, 'client' +set :gulp_flags, '--no-color' +set :gulp_roles, :web +# before 'deploy:updated', 'gulp' diff --git a/config/deploy/develop.rb b/config/deploy/develop.rb index cb4797b..e885918 100644 --- a/config/deploy/develop.rb +++ b/config/deploy/develop.rb @@ -2,6 +2,7 @@ role :app, %w{localhost} role :web, %w{localhost} role :db, %w{localhost} +set :user, ENV['USER'] user = fetch(:user) server 'localhost', ssh_options: { port: 22, user: user, forward_agent: true } diff --git a/config/npm.rb b/config/npm.rb new file mode 100644 index 0000000..ac98a33 --- /dev/null +++ b/config/npm.rb @@ -0,0 +1,22 @@ +set :npm_path, -> { release_path } + +namespace :npm do + task :prepare do + on roles(:all) do + npm_target_path = fetch(:npm_target_path) + npm_path = fetch(:npm_path) + execute "mkdir -p #{npm_target_path}" + execute "cp #{npm_path}/package.json #{npm_target_path}" + end + end + task :link do + on roles(:all) do + npm_target_path = fetch(:npm_target_path) + npm_path = fetch(:npm_path) + execute "ln -s #{npm_target_path}/node_modules #{npm_path}/" + end + end +end + +before 'npm:install', 'npm:prepare' +after 'npm:install', 'npm:link' \ No newline at end of file diff --git a/config/service.rb b/config/service.rb deleted file mode 100644 index 7b30f95..0000000 --- a/config/service.rb +++ /dev/null @@ -1,52 +0,0 @@ -module Service - class Manager - def initialize(env) - @env = env - end - - def execute(action, command) - Airbrussh.configure do |config| - config.command_output = true - end - service_role = "service_role_#{action}".to_sym - role = fetch(service_role) - on roles(role) do - execute :sudo, "/bin/systemctl #{command} #{action}" - end - end - end -end - -services = %w{tankz} - -namespace :service do - task :restart, :param do |task, args| - services = args[:param] ? [args[:param]] : services - services.each { |service| - Service::Manager.new(self).execute(service, 'restart') - } - end - - task :stop, :param do |task, args| - services = args[:param] ? [args[:param]] : services - services.each { |service| - Service::Manager.new(self).execute(service, 'stop') - } - end - - task :start, :param do |task, args| - services = args[:param] ? [args[:param]] : services - services.each { |service| - Service::Manager.new(self).execute(service, 'start') - } - end - - task :status, :param do |task, args| - services = args[:param] ? [args[:param]] : services - services.each { |service| - Service::Manager.new(self).execute(service, 'status') - } - end -end - -set :service_role_tankz, :app diff --git a/gemfile b/gemfile new file mode 100644 index 0000000..09d5843 --- /dev/null +++ b/gemfile @@ -0,0 +1,6 @@ +source 'https://rubygems.org' +gem 'capistrano', '~> 3.7.0' +gem 'capistrano-git-with-submodules', '~> 2.0' +gem 'capistrano-npm' +gem 'capistrano-gulp' +gem 'airbrussh', :require => false \ No newline at end of file diff --git a/webapp/index.html b/webapp/index.html new file mode 100644 index 0000000..e574d52 --- /dev/null +++ b/webapp/index.html @@ -0,0 +1,10 @@ + + + + + Tank'z + + +

Tank'z

+ + \ No newline at end of file