Laravel очереди заданий и ловушки развертывания bitbucket
Мы используем конвейеры bitbucket для установки perms, установки композитора, и, что важно, после развертывания мы делаем следующее:
php artisan migrate
nohup php artisan queue:work --daemon >/dev/null 2>&1 &
php artisan up
Отлично, поэтому, когда работает конвейер, мы создаем новый фоновый процесс для queue:work
,
Моя проблема возникает, когда сначала запускается ловушка перед развертыванием. Перед всем этим мы запускаем:
php /var/www/html/artisan queue:restart
php /var/www/html/artisan down
Я ожидаю, что очередь будет остановлена: рабочие будут остановлены, так как это доказано при локальном запуске или даже при непосредственном выполнении queue:restart
на сервере. Однако каждый раз, когда конвейеры запускаются, кажется, что queue: restart ничего не делает, и мы создаем другой работающий процесс. Сейчас у нас 15 запущенных процессов очереди заданий laravel, потому что конвейер не убивает старые.
Вот фрагмент из сценариев в файле конвейера:
script:
- apt-get update && apt-get install -y git rsync unzip libmcrypt-dev
- curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
- composer install
- ssh $DEPLOY_USER@$STAGING_EC2_INSTANCE "[ -f /var/www/html/pre-deploy-hook ] && /var/www/html/pre-deploy-hook" || echo "No pre deploy hook found."
- rsync -v -a -z --delete --exclude "storage/" --exclude ".git" . $DEPLOY_USER@$STAGING_EC2_INSTANCE:/var/www/html
- ssh $DEPLOY_USER@$STAGING_EC2_INSTANCE "/var/www/html/post-deploy-hook-staging"
Кто-нибудь знает, как остановить работников очереди на работу Laravel? queue:restart
должен непременно работать. У кого-нибудь, кто реализовал это в конвейере, есть ответ?
Спасибо!