vendredi 29 juin 2018

Only run commands in deploy script when specific files have been changed

I just started running npm install and npm run production through my Laravel Forge deploy script to compile my assets on the production site. However I noticed that running npm install slows down my deployment by a couple minutes, and I don't think it should need to be run every time I need to push up an update.

Here's my current deploy script:

cd /home/forge/website.com
git pull origin master
npm install
npm run production # Run build process
composer install --no-interaction --prefer-dist --optimize-autoloader
echo "" | sudo -S service php7.2-fpm reload
if [ -f artisan ]
then
    php artisan route:clear
    php artisan route:cache
    php artisan migrate --force
    php artisan cache:clear
    php artisan config:clear
    php artisan config:cache
    php artisan horizon:terminate
fi

Is there a way to check if the package.json file has been changed before running npm install?

Here's something I've tried, but breaks the deploy script and I'm having trouble figuring out why it doesn't work.

cd /home/forge/website.com
changed_files="$(git diff-tree -r --name-only --no-commit-id ORIG_HEAD HEAD)"
check_run() {
    echo "$changed_files" | grep --quiet "$1" && eval "$2"
}
git pull origin master
check_run package.json "npm install"
npm run production # Run build process
composer install --no-interaction --prefer-dist --optimize-autoloader
echo "" | sudo -S service php7.2-fpm reload
if [ -f artisan ]
then
    php artisan route:clear
    php artisan route:cache
    php artisan migrate --force
    php artisan cache:clear
    php artisan config:clear
    php artisan config:cache
    php artisan horizon:terminate
fi



via Chebli Mohamed

Aucun commentaire:

Enregistrer un commentaire