[deploy] update

This commit is contained in:
2018-01-01 14:33:15 +03:00
parent 4db8f02bc5
commit 61b78ad4d9
7 changed files with 61 additions and 85 deletions

View File

@@ -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'

View File

@@ -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 }

22
config/npm.rb Normal file
View File

@@ -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'

View File

@@ -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