在 Windows .bat 文件中运行"composer update"



我最近更新了我的应用程序,使其所有依赖项都使用composer。作为这项工作的一部分,我更新了我的部署脚本——Grunt任务和批处理文件的组合——在执行"git pull"后包含一个"composer update"。

然而,我发现,尽管composer更新成功运行,但在该行之后,批处理文件的其余部分中没有任何命令运行。如果我去掉"composer update"行,其他一切都会正常运行(但当然,我有过时/缺少依赖项的风险)。

编辑:完整的.bat文件。如果没有composer更新行,它将完全运行——有了它,它将跳到部署过程的下一部分。

这将在\version\中创建一个新的带日期戳的文件夹,更新存储库&更新主repo文件夹中的composer依赖项,在新版本文件夹中执行git签出索引,使用xcopy将具有composer依存项的Vendor文件夹复制到新版本(因为git忽略了它),然后更新一些符号链接,包括IIS用作站点根文件夹的\current\symlink。

@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:inetpubappnameversions%date%"
cd "C:inetpubappnamerepository"
git pull origin master
composer update
git checkout-index -a -f --prefix="C:inetpubappnameversions%date%\"
cd "C:inetpubappnameversions%date%\"
xcopy /E /y /q "C:inetpubappnamerepositorywwwappVendor" "wwwappVendor"
del /Q wwwappwebrootfiles
rmdir wwwappwebrootfiles
cd "C:inetpubappname"
MKLINK /D "C:inetpubappnameversions%date%wwwapptmp" "C:inetpubappname_tmp"
MKLINK /D "C:inetpubappnameversions%date%wwwappwebrootfiles" "E:appname_files"
rmdir current
MKLINK /D current "C:inetpubappnameversions%date%www"
appcmd recycle apppool /apppool.name:"Localhost"

更新答案:

为了使上述操作正常工作,您必须在执行另一个批处理文件的任何行的开头添加"call",例如call composer install

听起来像是脚本中的拼写错误。你有可能把脚本粘贴到要点或一些代码共享上吗?如果composer更新运行正确,那么它就是脚本编写方式的一部分。此外,您永远不应该在部署脚本中运行composer更新。部署脚本应仅使用"composer-install"

最新更新