Herramienta de automatización de despliegue [deployment] como clonar repositorios, instalar dependencias, reiniciar servicios, etc. escrita en Ruby y diseñada para simplificar y agilizar la implementación de aplicaciones en servidores remotos. Su principal característica es que genera scripts Bash a partir de tareas definidas en Ruby, y luego ejecuta esos scripts en el servidor remoto a través de una única sesión SSH, lo que optimiza el rendimiento y reduce la sobrecarga de múltiples conexiones SSH.
Crear un archivo en el directorio del proyecto donde se define la configuración básica y las tareas de despliegue. Un ejemplo mínimo:
$ nano config/deploy.rb
require 'mina/bundler'
require 'mina/rails'
require 'mina/git'
set :domain, 'tuservidor.com'
set :deploy_to, '/var/www/mi_app'
set :repository, 'git@github.com:usuario/mi_app.git'
set :branch, 'main'
task :setup do
command %[mkdir -p "#{deploy_to}/shared/log"]
command %[mkdir -p "#{deploy_to}/shared/config"]
command %[touch "#{deploy_to}/shared/config/database.yml"]
end
task :deploy do
deploy do
invoke :'git:clone'
invoke :'deploy:link_shared_paths'
invoke :'bundle:install'
invoke :'rails:db_migrate'
invoke :'rails:assets_precompile'
invoke :'deploy:cleanup'
to :launch do
invoke :'puma:restart'
end
end
end
$ mina setup
$ mina deploy
1.-
Ejemplo de tareas personalizadas
Definir tus propias tareas. Por ejemplo, para reiniciar un servicio de Nginx:
task :restart_nginx do
command %[sudo systemctl restart nginx]
end
Y luego invocarla desde otra tarea:
task :deploy do
deploy do
# ... otras tareas ...
invoke :restart_nginx
end
end