簡體   English   中英

在Windows .bat文件中運行“ composer update”

[英]Running “composer update” within a Windows .bat file

我最近更新了我的應用程序,使其所有依賴項都使用composer。 作為此過程的一部分,我已經更新了我的部署腳本-Grunt任務和批處理文件的組合-在執行“ git pull”之后包括“ composer update”。

但是,我發現盡管composer更新成功運行,但是該行之后其余批處理文件中的任何命令都沒有運行。 如果我刪除“ composer update”行,則其他所有內容都可以正常運行(但是,我當然會冒過時/缺少依賴項的風險)。

編輯:完整的.bat文件。 如果沒有composer更新行,它將完全運行-有了它,它將跳到部署過程的下一部分。

這會在\\ versions \\中創建一個新的帶日期戳的文件夾,更新存儲庫並更新主repo文件夾中的composer依賴項,對新版本文件夾執行git checkout-index,使用xcopy將具有composer依賴項的Vendor文件夾復制到新版本(因為它被git忽略),然后更新一些符號鏈接,包括IIS用作站點根文件夾的\\ current \\符號鏈接。

@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”,例如call composer install

聽起來像腳本中的錯字。 是否可以將腳本粘貼到要點或某些代碼共享上? 如果composer更新正常運行,則說明編寫腳本的方式有所不同。 另外,您永遠不要在部署腳本中運行composer update。 部署腳本應僅使用“ composer install”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM