2017-02-21 55 views
1

我正在嘗試將配置連續部署到Azure上的測試服務器。該應用程序是一個ASP.Net應用程序,但在這種情況下,這應該無關緊要。Azure AppService使用錯誤的文件deploy.cmd

我的構建過程(團隊城市)生成一個文件夾,其中包含部署所需的所有內容(減去一些連接字符串信息)。如果你指向那個目錄的IIS,它的效果很好。如果您將該目錄FTP到Azure,它也可以工作。

我正在跟蹤這些構建中的每個構建,並將它們推送到Github。所以我嘗試使用Azure部署選項從github進行部署。一切都在git中。包含/ bin文件夾。

Kudu應該不需要做任何事情,只需從git中拉出並將所有文件複製到wwwroot。

所以,我已經把我的.deployment文件是這樣的:

[config] 
project = . 

每次我這樣做,雖然,部署給我的留言:

Using cached version of deployment script (command: 'azure -y --no-dot-deployment -r "D:\home\site\repository" -o "D:\home\site\deployments\tools" --aspWAP "D:\home\site\repository\MyProj.csproj" --no-solution'). 

,它運行一些通用自動生成的deploy.cmd。

如果我從緩存中刪除了deploy.cmd,它會重新生成一些通用的。

而且,最重要的是,在做所有這些工作時,錯誤組裝正在部署中!

我的應用依賴於System.Web.Helpers.dll。這個DLL的正確版本在github中。我已多次驗證過這一點。

然而,Kudu正在從NuGet中獲取一個OLDER並將其部署。當然,我也遇到了無法加載該文件的可怕YSOD錯誤。

我需要做些什麼才能讓Kudu將文件從我的github存儲庫複製到wwwroot,而不是其他任何東西?

回答

1

我最終通過手工編輯生成在kudu的\home\site\deployments\tools\deploy.cmd的自動生成的deploy.cmd文件。

我註釋的2個自動生成行:

:: 1. Restore NuGet packages 
:: 2. Build to the temporary path 

(註釋所有的它們下面的代碼,太)

然後手工編輯的第三部分從DEPLOYMENT_SOURCE運行捻同步而不是像這樣的臨時文件:

:: 3. KuduSync 
IF /I "%IN_PLACE_DEPLOYMENT%" NEQ "1" (
    call :ExecuteCmd "%KUDU_SYNC_CMD%" -v 50 -f "%DEPLOYMENT_SOURCE%" -t "%DEPLOYMENT_TARGET%" -n "%NEXT_MANIFEST_PATH%" -p "%PREVIOUS_MANIFEST_PATH%" -i ".git;.hg;.deployment;deploy.cmd" 
    IF !ERRORLEVEL! NEQ 0 goto error 
) 
相關問題