Я недавно обновил свое приложение, чтобы использовать composer для всех его зависимостей. В рамках этого я обновил свой сценарий развертывания — набор задач Grunt и командный файл — для включения «обновления композитора» после выполнения «git pull».
Тем не менее, я обнаружил, что, хотя обновление композитора выполняется успешно, ни одна из команд в остальной части командного файла после этой строки не выполняется. Если я вычеркну строку «Обновление композитора», все остальное будет работать нормально (но, конечно, я рискую иметь устаревшие / отсутствующие зависимости).
редактировать:
Полный .bat файл. Без строки обновления композитора он работает полностью — с ним он пропускает следующую часть процесса развертывания.
Это создаст новую папку с отметкой даты в \ version \, обновит хранилище & обновляет зависимости композитора в основной папке репозитория, выполняет git checkout-index в папке новой версии, использует xcopy для копирования папки Vendor с зависимостями композитора в новую версию (потому что она игнорируется git), а затем обновляет некоторые символические ссылки, включая \ current \ symlink, который используется IIS в качестве корневой папки сайта.
@echo off
For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b)
For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b)
set date=%mydate%_%mytime%
mkdir "C:\inetpub\appname\versions\%date%"
cd "C:\inetpub\appname\repository"git pull origin master
composer update
git checkout-index -a -f --prefix="C:\inetpub\appname\versions\%date%\\"
cd "C:\inetpub\appname\versions\%date%\\"
xcopy /E /y /q "C:\inetpub\appname\repository\www\app\Vendor" "www\app\Vendor"
del /Q www\app\webroot\files
rmdir www\app\webroot\files
cd "C:\inetpub\appname\"
MKLINK /D "C:\inetpub\appname\versions\%date%\www\app\tmp" "C:\inetpub\appname_tmp"MKLINK /D "C:\inetpub\appname\versions\%date%\www\app\webroot\files" "E:\appname_files"
rmdir current
MKLINK /D current "C:\inetpub\appname\versions\%date%\www"
appcmd recycle apppool /apppool.name:"Localhost"
Обновленный ответ:
Для того, чтобы вышеперечисленное работало правильно, вы должны добавить «вызов» в начало любой строки, которая выполняет другой пакетный файл, например, call composer install
Похоже на опечатку в сценарии. Можно ли вставить скрипт в суть или какой-то общий код? Если обновление композитора работает правильно, то это что-то вроде написания скрипта. Кроме того, вы никогда не должны запускать обновление композитора в сценариях развертывания. Сценарии развертывания должны использовать только «установку композитора»