Initial commit

This commit is contained in:
Yaser
2026-08-13 19:42:08 +03:30
commit d59bf30ef0
173 changed files with 11702 additions and 0 deletions

347
lib/tasks/service.rake Normal file
View File

@@ -0,0 +1,347 @@
namespace :service do
ENV['APP_DOMAIN'] = @config['app']['domain']
@switch = Proc.new do |args, start, stop|
case args.command
when 'start'
start.call
when 'stop'
stop.call
when 'restart'
stop.call
start.call
else
puts "unknown command #{args.command}"
end
end
desc 'Run Traefik (reverse-proxy)'
task :proxy, [:command] do |task, args|
args.with_defaults(:command => 'start')
def start
puts '----- Starting the proxy -----'
File.new('config/acme.json', File::CREAT, 0600) unless File.exist? 'config/acme.json'
sh 'docker-compose up -d proxy'
end
def stop
puts '----- Stopping the proxy -----'
sh 'docker-compose rm -fs proxy'
end
@switch.call(args, method(:start), method(:stop))
end
desc 'Run backend (vault db redis rabbitmq)'
task :backend, [:command] do |task, args|
args.with_defaults(:command => 'start')
def start
puts '----- Starting dependencies -----'
sh 'docker-compose up -d vault db redis rabbitmq'
sleep 7 # time for db to start, we can get connection refused without sleeping
end
def stop
puts '----- Stopping dependencies -----'
sh 'docker-compose rm -fs vault db redis rabbitmq'
end
@switch.call(args, method(:start), method(:stop))
end
desc 'Run influxdb'
task :influxdb, [:command] do |task, args|
args.with_defaults(:command => 'start')
def start
puts '----- Starting influxdb -----'
sh 'docker-compose up -d influxdb'
puts 'Wait 5 second for influx'
sleep(5)
sh 'docker-compose exec influxdb bash -c "cat peatio.sql | influx"'
end
def stop
puts '----- Stopping influxdb -----'
sh 'docker-compose rm -fs influxdb'
end
@switch.call(args, method(:start), method(:stop))
end
desc '[Optional] Run arke-maker'
task :arke_maker, [:command] do |task, args|
args.with_defaults(:command => 'start')
def start
puts '----- Starting arke -----'
sh 'docker-compose up -d arke-maker'
end
def stop
puts '----- Stopping arke -----'
sh 'docker-compose rm -fs arke-maker'
end
@switch.call(args, method(:start), method(:stop))
end
desc '[Optional] Run daemons (rango, peatio daemons, barong sidekiq)'
task :daemons, [:command] do |_task, args|
@daemons = %w[rango blockchain cron_job upstream deposit deposit_coin_address withdraw_coin influx_writer barong_sidekiq]
if @config['finex']['enabled']
@daemons |= %w[finex-engine finex-api]
else
@daemons |= %w[matching order_processor trade_executor]
end
args.with_defaults(:command => 'start')
def start
puts '----- Starting daemons -----'
sh "docker-compose up -d #{@daemons.join(' ')}"
end
def stop
puts '----- Stopping daemons -----'
sh "docker-compose rm -fs #{@daemons.join(' ')}"
end
@switch.call(args, method(:start), method(:stop))
end
desc '[Optional] Run cryptonodes'
task :cryptonodes, [:command] do |task, args|
args.with_defaults(:command => 'start')
def start
puts '----- Starting cryptonodes -----'
sh 'docker-compose up -d parity'
if @config['bitcoind']['enabled']
sh 'docker-compose up -d bitcoind'
end
end
def stop
puts '----- Stopping cryptonodes -----'
sh 'docker-compose rm -fs parity'
if @config['bitcoind']['enabled']
sh 'docker-compose rm -fs bitcoind'
end
end
@switch.call(args, method(:start), method(:stop))
end
desc 'Run setup hooks for peatio, barong'
task :setup, [:command] => ['vault:setup', 'vault:load_policies'] do |task, args|
if args.command != 'stop'
Rake::Task["render:config"].execute
puts '----- Running hooks -----'
sh 'docker-compose run --rm peatio bash -c "./bin/link_config && bundle exec rake db:create db:migrate"'
sh 'docker-compose run --rm peatio bash -c "./bin/link_config && bundle exec rake db:seed"'
sh 'docker-compose run --rm barong bash -c "./bin/init_config && bundle exec rake db:create db:migrate"'
sh 'docker-compose run --rm barong bash -c "./bin/link_config && bundle exec rake db:seed"'
if ENV.fetch('FIBITEX_SEED_TEST_USERS', 'true') != 'false'
puts '----- Seeding test users and balances -----'
sh 'docker-compose run --rm barong bash -c "bundle exec rails runner ./lib/seed_test_users.rb"'
sh 'docker-compose run --rm peatio bash -c "ruby ./bin/link_config && bundle exec rails runner ./lib/seed_test_balances.rb"'
end
end
end
desc 'Run mikro app (barong, peatio)'
task :app, [:command] => [:backend, :setup] do |task, args|
args.with_defaults(:command => 'start')
def start
puts '----- Starting app -----'
sh 'docker-compose up -d peatio barong gateway'
end
def stop
puts '----- Stopping app -----'
sh 'docker-compose rm -fs peatio barong gateway'
end
@switch.call(args, method(:start), method(:stop))
end
desc 'Run the frontend application'
task :frontend, [:command] do |task, args|
args.with_defaults(:command => 'start')
def start
puts '----- Starting the frontend -----'
sh 'docker-compose up -d frontend'
end
def stop
puts '----- Stopping the frontend -----'
sh 'docker-compose rm -fs frontend'
end
@switch.call(args, method(:start), method(:stop))
end
desc 'Run the tower application'
task :AdminTower, [:command] do |task, args|
args.with_defaults(:command => 'start')
def start
puts '----- Starting the AdminTower -----'
sh 'docker-compose up -d AdminTower'
end
def stop
puts '----- Stopping the AdminTower -----'
sh 'docker-compose rm -fs AdminTower'
end
@switch.call(args, method(:start), method(:stop))
end
desc 'Run Mailer'
task :mailer, [:command] do |task, args|
args.with_defaults(:command => 'start')
def start
puts '----- Starting Mailer -----'
sh 'docker-compose up -d mailer'
end
def stop
puts '----- Stopping Mailer -----'
sh 'docker-compose rm -fs mailer'
end
@switch.call(args, method(:start), method(:stop))
end
desc '[Optional] Run monitoring'
task :monitoring, [:command] do |task, args|
args.with_defaults(:command => 'start')
def start
puts '----- Starting monitoring -----'
sh 'docker-compose up -d prometheus'
sh 'docker-compose up -d grafana'
sh 'docker-compose up -d alertmanager'
sh 'docker-compose up -d loki'
sh 'docker-compose up -d promtail'
sh 'docker-compose up -d scope'
sh 'docker-compose up -d node-exporter'
sh 'docker-compose up -d cadvisor'
end
def stop
puts '----- Stopping monitoring -----'
sh 'docker-compose rm -fs prometheus'
sh 'docker-compose rm -fs grafana'
sh 'docker-compose rm -fs alertmanager'
sh 'docker-compose rm -fs loki'
sh 'docker-compose rm -fs promtail'
sh 'docker-compose rm -fs scope'
sh 'docker-compose rm -fs node-exporter'
sh 'docker-compose rm -fs cadvisor'
end
@switch.call(args, method(:start), method(:stop))
end
desc '[Optional] Run superset'
task :superset, [:command] do |task, args|
args.with_defaults(:command => 'start')
def start
conf = @utils['superset']
init_params = [
'--app', 'superset',
'--firstname', 'Admin',
'--lastname', 'Superset',
'--username', conf['username'],
'--email', conf['email'],
'--password', conf['password']
].join(' ')
puts '----- Initializing Superset -----'
sh [
'docker-compose run --rm superset',
'sh -c "',
"fabmanager create-admin #{init_params}",
'&& superset db upgrade',
# '&& superset load_examples',
'&& superset init"'
].join(' ')
puts '----- Starting Superset -----'
sh 'docker-compose up -d superset'
end
def stop
puts '----- Stopping Superset -----'
sh 'docker-compose rm -fs superset'
end
@switch.call(args, method(:start), method(:stop))
end
desc '[Optional] Run Blog'
task :blog, [:command] do |task, args|
args.with_defaults(:command => 'start')
def start
puts '----- Starting Blog_db -----'
sh 'docker-compose up -d blog_db'
puts '----- Starting Blog -----'
sh 'docker-compose up -d blog'
end
def stop
puts '----- Stopping Blog -----'
sh 'docker-compose rm -fs blog'
puts '----- Stopping Blog_db -----'
sh 'docker-compose rm -fs blog_db'
end
@switch.call(args, method(:start), method(:stop))
end
desc 'Set up and start all services with dependencies (does not run optional ones)'
task :all, [:command] => ['versions:update', 'render:config'] do |task, args|
args.with_defaults(:command => 'start')
def start
Rake::Task["service:proxy"].invoke('start')
Rake::Task["service:backend"].invoke('start')
Rake::Task["service:influxdb"].invoke('start')
puts 'Wait 5 second for backend'
sleep(5)
Rake::Task["service:setup"].invoke('start')
Rake::Task["service:app"].invoke('start')
Rake::Task["service:frontend"].invoke('start')
Rake::Task["service:AdminTower"].invoke('start')
Rake::Task["service:mailer"].invoke('start')
Rake::Task["service:daemons"].invoke('start')
end
def stop
Rake::Task["service:proxy"].invoke('stop')
Rake::Task["service:backend"].invoke('stop')
Rake::Task["service:influxdb"].invoke('stop')
Rake::Task["service:setup"].invoke('stop')
Rake::Task["service:app"].invoke('stop')
Rake::Task["service:frontend"].invoke('stop')
Rake::Task["service:AdminTower"].invoke('stop')
Rake::Task["service:mailer"].invoke('stop')
Rake::Task["service:daemons"].invoke('stop')
end
@switch.call(args, method(:start), method(:stop))
end
end