Envoy is a task runner originally developed for Laravel, but that you can also use on any other kind of project.
It’s a very easy way to define tasks with Blade syntax and simple terminal commands, which you can run on remote servers via SSH (including parallel execution) or locally.
Thanks to its simplicity, it’s great to quickly automate repetitive tasks. For instance, this is something I use for importing a replica of the production DB of a site:
@servers(['production' => 'foobar.com', 'local' => 'localhost']) @macro('sync-db') dump-production-db get-production-db import-production-db @endmacro @task('dump-production-db', ['on' => 'production']) echo 'Creating production DB dump'; cd ddbb mysqldump --no-autocommit --skip-extended-insert --single-transaction --ignore-table=foobar.wp_simple_history_contexts --ignore-table=foobar.wp_simple_history_history foobar_production | gzip > foobar.production.sql.gz @endtask @task('get-production-db', ['on' => 'local']) echo 'Copying DB dump from production server'; cd ddbb rsync -P foobar:~/ddbb/foobar.production.sql.gz . @endtask @task('import-production-db', ['on' => 'local', 'confirm' => true]) cd ddbb gzip -d -f foobar.production.sql.gz sed 's/www.foobar.com/www.foobar.lo/g' -i foobar.production.sql echo 'Importing production DB replica'; mysql -v foobar_development < foobar.production.sql @endtask