Primer commit
This commit is contained in:
201
Rakefile
Executable file
201
Rakefile
Executable file
@@ -0,0 +1,201 @@
|
||||
require 'yaml'
|
||||
require 'digest'
|
||||
|
||||
WOODPECKER_YML='.woodpecker.yml'
|
||||
DOCKER_COMPOSE='compose.test.yml'
|
||||
|
||||
desc 'iniciar entorno'
|
||||
task :up do
|
||||
compose('up', '--build', '-d', compose: 'compose.test.yml')
|
||||
end
|
||||
|
||||
desc 'poblar entorno'
|
||||
task :init => [:up] do
|
||||
compose('exec', 'test.dev', 'pip3 install psycopg2 flake8 trytond==7.0.0')
|
||||
compose('exec', 'test.dev', "bash .dev/install_module.sh")
|
||||
end
|
||||
|
||||
desc 'terminal'
|
||||
task :sh do
|
||||
compose('exec', 'test.dev', 'bash')
|
||||
end
|
||||
|
||||
desc 'iterar'
|
||||
task :tdd, [:name] do |_, args|
|
||||
|
||||
refresh_cache
|
||||
test_dir = ''
|
||||
if args.name
|
||||
test_dir = "modules/#{args.name}"
|
||||
compose('exec', 'test.dev', "bash -c 'cd #{test_dir} && flake8'")
|
||||
compose('exec', 'test.dev', "bash -c 'cd #{test_dir}/tests && python3 -m unittest'")
|
||||
else
|
||||
compose('exec', 'test.dev', "bash -c 'cd modules && flake8 *'")
|
||||
compose('exec', 'test.dev', "bash -c 'python -m unittest discover -s modules'")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
desc 'detener entorno'
|
||||
task :down do
|
||||
compose('down', compose: 'compose.test.yml')
|
||||
end
|
||||
|
||||
desc 'eliminar entorno'
|
||||
task :del do
|
||||
compose('down', '-v', '--rmi', 'all', compose: 'compose.test.yml')
|
||||
end
|
||||
|
||||
desc 'entorno vivo'
|
||||
namespace :live do
|
||||
|
||||
desc 'iniciar entorno'
|
||||
task :up do
|
||||
compose('up', '--build', '-d', compose: 'compose.live.yml')
|
||||
end
|
||||
|
||||
desc 'monitorear salida'
|
||||
task :tail do
|
||||
compose('logs', '-f', 'live.dev', compose: 'compose.live.yml')
|
||||
end
|
||||
|
||||
desc 'monitorear salida'
|
||||
task :tail_end do
|
||||
compose('logs', '-f', '-n 50', 'live.dev', compose: 'compose.live.yml')
|
||||
end
|
||||
|
||||
|
||||
desc 'detener entorno'
|
||||
task :down do
|
||||
compose('down', compose: 'compose.live.yml')
|
||||
end
|
||||
|
||||
desc 'detener entorno'
|
||||
task :stop do
|
||||
compose('stop', compose: 'compose.live.yml')
|
||||
end
|
||||
|
||||
desc 'eliminar entorno'
|
||||
task :del do
|
||||
compose('down', '-v', '--rmi', 'all', compose: 'compose.live.yml')
|
||||
end
|
||||
|
||||
desc 'reiniciar entorno'
|
||||
task :restart do
|
||||
compose('restart', compose: 'compose.live.yml')
|
||||
end
|
||||
|
||||
desc 'terminal'
|
||||
task :sh do
|
||||
compose('exec', 'live.dev', 'bash')
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
desc 'produccion'
|
||||
namespace :deploy do
|
||||
|
||||
desc 'iniciar entorno'
|
||||
task :up do
|
||||
compose('up', '--build', '-d', compose: 'docker-compose.yml')
|
||||
end
|
||||
|
||||
desc 'monitorear salida'
|
||||
task :tail do
|
||||
compose('logs', compose: 'docker-compose.yml')
|
||||
end
|
||||
|
||||
desc 'detener entorno'
|
||||
task :down do
|
||||
compose('down', compose: 'docker-compose.yml')
|
||||
end
|
||||
|
||||
desc 'eliminar entorno'
|
||||
task :del do
|
||||
compose('down', '-v', '--rmi', 'all', compose: 'docker-compose.yml')
|
||||
end
|
||||
|
||||
desc 'reiniciar entorno'
|
||||
task :restart do
|
||||
compose('restart', compose: 'docker-compose.yml')
|
||||
end
|
||||
|
||||
desc 'terminal-tryton'
|
||||
task :sh_tryton do
|
||||
compose('exec', '--user', 'root', 'tryton', '/entrypoint.sh', 'bash', compose: 'docker-compose.yml')
|
||||
end
|
||||
|
||||
desc 'terminal-worker'
|
||||
task :sh_worker do
|
||||
compose('exec', '--user', 'root', 'tryton_worker', '/entrypoint.sh', 'bash', compose: 'docker-compose.yml')
|
||||
end
|
||||
|
||||
desc 'terminal-cron'
|
||||
task :sh_cron do
|
||||
compose('exec', '--user', 'root', 'tryton_cron', '/entrypoint.sh', 'bash', compose: 'docker-compose.yml')
|
||||
end
|
||||
|
||||
desc 'terminal-db'
|
||||
task :sh_db do
|
||||
compose('exec', '--user', 'postgres', 'db', 'bash', compose: 'docker-compose.yml')
|
||||
end
|
||||
|
||||
desc 'terminal-nginx'
|
||||
task :sh_nginx do
|
||||
compose('exec', 'nginx', 'bash', compose: 'docker-compose.yml')
|
||||
end
|
||||
|
||||
desc 'top'
|
||||
task :top do
|
||||
compose('top', compose: 'docker-compose.yml')
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
def compose(*arg, compose: DOCKER_COMPOSE)
|
||||
sh "docker-compose -f #{compose} #{arg.join(' ')}"
|
||||
end
|
||||
|
||||
def refresh_cache
|
||||
# cuando se realizan cambios sobre los modelos
|
||||
# que afectan las tablas es necesario limpiar el cache
|
||||
# de trytond
|
||||
changes = []
|
||||
|
||||
has_git_dir = File.directory?(File.join(File.dirname(__FILE__), '.git'))
|
||||
try_git = `which git`.then { $? }.success? && has_git_dir
|
||||
try_fossil = system('fossil status', err: :close, out: :close)
|
||||
|
||||
if try_fossil
|
||||
changes = %x{fossil diff}.split("\n").grep(/^[-+]/)
|
||||
elsif try_git
|
||||
changes = %x{git diff}.split("\n").grep(/^[-+]/)
|
||||
else
|
||||
warn <<WARN
|
||||
no se detecta repositorio en control de versiones, debe manualmente
|
||||
limpiar el cache si ahi cambios en el esquema de los modelos.
|
||||
|
||||
Eliminando en el contenedor los archivo /tmp/*.dump
|
||||
WARN
|
||||
end
|
||||
|
||||
refresh_trytond_cache(changes)
|
||||
end
|
||||
|
||||
def refresh_trytond_cache(changes)
|
||||
num = changes.grep(/fields/).length
|
||||
hash = Digest::MD5.hexdigest(changes.flatten.join(''))
|
||||
|
||||
# touch
|
||||
File.open('.tdd_cache', 'a+').close
|
||||
|
||||
File.open('.tdd_cache', 'r+') do |cache|
|
||||
tdd_cache = cache.read()
|
||||
|
||||
if num > 0 && (tdd_cache != hash)
|
||||
compose('exec', 'test.dev', 'bash -c "rm -f /tmp/*.dump"')
|
||||
cache.seek(0); cache.write(hash)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user