Как сделать сценарий сценария фона, пока работает сборка NPM?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Как сделать сценарий сценария фона, пока работает сборка NPM?

Сообщение Anonymous »

Я настраиваю новый метод развертывания моего личного веб -сайта , который использует Vite для объединения. Моя идея: < /p>
  • Я нажимаю без замены изменений от локального в удаленное репо < /li>
    Веб-крюк информирует мой сервер (который имеет скрипт PHP прослушивания
  • Сценарий PHP запускает сценарий Bash , который: 1) запускает установку NPM , 2) Запуск NPM Run Build и 3) запускает rsync , чтобы скопировать содержимое сборки в живую папку в Интернете
Когда я Запустите скрипт Bash вручную через замазку, он работает нормально. Я могу наблюдать, как вывод вита Vite's Build Scills в терминале и в конечном итоге запускается RSYNC . Но когда скрипт Bash запускается через скрипт PHP , он, похоже, не ожидает завершения сборки (и, возможно, даже установки). Он просто копирует все, что находится в папке сборки в живой сайт (что всегда является результатом сборки последнего , потому что сборка Current еще не завершена). /p>
Есть ли способ, чтобы сценарий Bash ждал установки и сборка? Я попытался добавить паузу 120 после операторов установки и сборки, и я пробовал цепочку команд, например, что -то вроде
npm install && npm run build && rsync ......

Ни один из них не достигает цели, когда сценарий запускается через php , но оба работают отлично, когда я работаю вручную ..
Соответствует соответствующему Строка из скрипта PHP , который вызывает скрипт Bash :
$commandOutput = shell_exec("/bin/bash ./sync.sh --repo=" . $hook["repo"] . " --branch=" . $hook["branch"] . " --subdomain=" . $subdomain);
< /code>
$hook["repo"] - это имя репо, $ hook ["branch"] - текущая филиал, а $ subdomain - это субдомен, над которым обрабатывается (у меня есть несколько настроек).
Сценарий Bash начинается с поднятия репо, ветви и субдомена, а затем делает различные команды git и npm . Соответствующие строки: < /p>
if [[ ${repo} && ${branch} && ${subdomain} ]]; then
git -C /path/"${repo}"/ checkout "${branch}"
git -C /path/"${repo}"/ fetch
git -C /path/"${repo}"/ pull origin "${branch}"
npm --prefix /path/"${repo}"/ install
npm --prefix /path/"${repo}"/ run build;
rsync -auv /path/"${repo}"/htdocs/* /path/"${subdomain}"/htdocs;
else
echo "repo, branch and subdomain were not provided, I will not do anything.";
fi


Подробнее здесь: https://stackoverflow.com/questions/794 ... build-runs
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»