Script makefile qui permet de raccourcir les commandes de développement, de déploiement en production et de rapatriement en local pour Laravel.
Récupère séparément les fichiers ou la base de données.
PHONY: dev deploy_to_prod dbdeploy import dbimport help
ssh_port=
ssh_user=
ssh_add=
path=
mysql_user=
mysql_pass=
mysql_db=
name=
git_name=
git_repo=
laDate=date +%Y_%m_%d_%H_%M_%S
help: ## Affiche cette aide
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
dev: ## Lance le serveur de développement
php artisan serve
import: ## Importe les fihciers distants
rsync -av -e "ssh -p $(ssh_port)" $(ssh_user)@$(ssh_add):$(path) ./ \
--exclude vendor \
--exclude node_modules \
--exclude /public/hot \
--exclude /public/storage \
--exclude /public/modules \
--exclude /storage/logs \
--exclude /storage/*.key \
--exclude .env \
--exclude .phpunit.result.cache \
--exclude Homestead.json \
--exclude Homestead.yaml \
--exclude npm-debug.log \
--exclude yarn-error.log
deploy_to_prod: ## Déploie une nouvelle version de l'application sur le serveur de production
cd ../; mkdir -p Save/`$(laDate)`_$(name);
rsync -av -e "ssh -p $(ssh_port)" $(ssh_user)@$(ssh_add):$(path) ../Save/`$(laDate)`_$(name)/ \
--exclude vendor \
--exclude node_modules \
--exclude /public/hot \
--exclude /public/storage \
--exclude /public/modules \
--exclude /storage/logs \
--exclude /storage/*.key \
--exclude .env \
--exclude .phpunit.result.cache \
--exclude Homestead.json \
--exclude Homestead.yaml \
--exclude npm-debug.log \
--exclude yarn-error.log
ssh $(ssh_user)@$(ssh_add) -p $(ssh_port) "cd $(path); mysqldump -u $(mysql_user) -p$(mysql_pass) $(mysql_db) > dump.sql"
rsync -av -e "ssh -p $(ssh_port)" $(ssh_user)@$(ssh_add):$(path)/dump.sql ../Save/`$(laDate)`_$(name)/
ssh $(ssh_user)@$(ssh_add) -p $(ssh_port) "cd $(path); rm dump.sql"
ssh $(ssh_user)@$(ssh_add) -p $(ssh_port) "cd; git clone $(git_repo); cd $(git_name); cp -R * $(path)/; cd $(path); composer install; php artisan migrate --force"
dbdeploy: ## Envoie les données sur le serveur
mysqldump -u $(mysql_user) -p$(mysql_pass) $(mysql_db) > dump.sql
rsync -av ./dump.sql -e "ssh -p $(ssh_port)" $(ssh_user)@$(ssh_add):$(path)
ssh $(ssh_user)@$(ssh_add) -p $(ssh_port) "cd $(path); mysql -u $(mysql_user) -p$(mysql_pass) $(mysql_db) < dump.sql; rm dump.sql"
rm dump.sql
rsync -av ./ -e "ssh -p $(ssh_port)" $(ssh_user)@$(ssh_add):$(path) \
--exclude Makefile \
--exclude vendor \
--exclude .git \
--exclude .idea \
--exclude node_modules \
--exclude /public/hot \
--exclude /public/storage \
--exclude /public/modules \
--exclude /storage/logs \
--exclude /storage/*.key \
--exclude .env \
--exclude .phpunit.result.cache \
--exclude Homestead.json \
--exclude Homestead.yaml \
--exclude npm-debug.log \
--exclude yarn-error.log
ssh $(ssh_user)@$(ssh_add) -p $(ssh_port) "cd $(path); composer install"
dbimport: ## Récupère les données depuis le serveur
ssh $(ssh_user)@$(ssh_add) -p $(ssh_port) "cd $(path); mysqldump -u $(mysql_user) -p$(mysql_pass) $(mysql_db) > dump.sql"
rsync -av -e "ssh -p $(ssh_port)" $(ssh_user)@$(ssh_add):$(path)dump.sql ./
ssh $(ssh_user)@$(ssh_add) -p $(ssh_port) "cd $(path); rm dump.sql"
mysql -u $(mysql_user) -p$(mysql_pass) $(mysql_db) < dump.sql
rm dump.sql