first commit
This commit is contained in:
		
							
								
								
									
										205
									
								
								Rakefile
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										205
									
								
								Rakefile
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,205 @@ | ||||
| require 'yaml' | ||||
| require 'digest' | ||||
|  | ||||
| WOODPECKER_YML='.woodpecker.yml' | ||||
| DOCKER_COMPOSE='compose.test.yml' | ||||
|  | ||||
|  | ||||
| desc 'Git - Submodules' | ||||
| namespace :git do | ||||
|  | ||||
|  desc 'Iniciar y actualizar submodules' | ||||
|  task :submodules_init do | ||||
|   sh "git submodule init && git submodule update" | ||||
|  end | ||||
|  | ||||
|  desc 'Actualizar submodules, últimos commits' | ||||
|  task :submodules_update do | ||||
|   sh "git submodule update --recursive --remote" | ||||
|  end | ||||
|  | ||||
|  desc 'Purgar submodules' | ||||
|  task :submodules_purge do | ||||
|   sh "git submodule deinit -f --all" | ||||
|  end | ||||
|  | ||||
|  desc 'Actualizar submodules a una rama específica' | ||||
|   task :submodules_update_branch, [:branch] do |t, args| | ||||
|     branch = args[:branch] || 'main' # Usar 'main' como rama predeterminada si no se especifica | ||||
|     sh "git submodule foreach 'git checkout #{branch} && git pull origin #{branch}'" | ||||
|   end | ||||
|  | ||||
|  end | ||||
|  | ||||
| desc 'iniciar entorno' | ||||
| task :up do | ||||
|   compose('up', '--build', '-d') | ||||
| end | ||||
|  | ||||
| desc 'poblar entorno' | ||||
| task :init => [:up] do | ||||
|   compose('exec', 'app.dev', "bash .dev/install_module.sh") | ||||
| end | ||||
|  | ||||
| desc 'terminal' | ||||
| task :sh do | ||||
|   compose('exec', 'app.dev', 'bash') | ||||
| end | ||||
|  | ||||
| desc 'iterar' | ||||
| task :tdd, [:name]  do |_, args| | ||||
|    | ||||
|   refresh_cache | ||||
|   test_dir = '' | ||||
|   if args.name | ||||
|     test_dir = "modules/#{args.name}" | ||||
|     compose('exec', 'app.dev', "bash -c 'cd #{test_dir} && flake8'") | ||||
|     compose('exec', 'app.dev', "bash -c 'cd #{test_dir}/tests && python3 -m unittest'") | ||||
|   else | ||||
|     compose('exec', 'app.dev', "bash -c 'cd modules && flake8 *'") | ||||
|     compose('exec', 'app.dev', "bash -c 'python -m unittest discover -s modules'") | ||||
|   end | ||||
|  | ||||
| end | ||||
|  | ||||
| desc 'detener entorno' | ||||
| task :down do | ||||
|   compose('down') | ||||
| end | ||||
|  | ||||
| desc 'entorno vivo' | ||||
| namespace :live do | ||||
|  | ||||
|   desc 'iniciar entorno' | ||||
|   task :up do | ||||
|     compose('up', '--build', '-d', compose: 'compose.yml') | ||||
|   end | ||||
|  | ||||
|   desc 'monitorear salida' | ||||
|   task :tail do | ||||
|     compose('logs', '-f', 'live.dev', compose: 'compose.yml') | ||||
|   end | ||||
|  | ||||
|   desc 'detener entorno' | ||||
|   task :down do | ||||
|     compose('down', compose: 'compose.yml') | ||||
|   end | ||||
|  | ||||
|   desc 'reiniciar entorno' | ||||
|   task :restart do | ||||
|     compose('restart', compose: 'compose.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 -- '*.xml' ':!*view*'}.split("\n").grep(/^[-+index]/) | ||||
|   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(//).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', 'app.dev', 'bash -c "rm -f /tmp/*.dump"') | ||||
|       cache.seek(0); cache.write(hash) | ||||
|     end | ||||
|   end | ||||
| end | ||||
		Reference in New Issue
	
	Block a user