2017-08-15 148 views
4

我有一些問題,使用Visual Studio團隊服務(VSTS)部署Azure的WebJob。部署Azure的WebJob使用VSTS

的WebJob似乎是成功部署,但它打破了Azure的網站在相同的應用服務託管!我沒有這個問題,如果我部署使用VS2013。

這是產生WebJob部署包我的構建任務:

Build task - generate Azure WebJob deployment package

這是我的部署任務:

Deploy WebJob task

當我部署在Azure上有沒有錯誤WebJob。如果我轉到Azure門戶,我會看到WebJob在那裏,並且它運行成功。 WebJob文件複製到wwwroot\App_Data\jobs\triggered\RemoveExpiredDids文件夾預期,但問題是,一些其他的文件將被複制到文件夾​​,這將打破一個已經部署到該應用程序服務的現有的網站!

所以我決定找出爲什麼這發生。下載並解壓縮只見部署包後有2個文件夾(app_databin)和調度文件(settings.job):

WebJob deployment package

這就解釋了爲什麼一些組件coppied進入App服務的​​。奇怪的是,這從VS2013部署時不會發生!我接過來一看進入的MSBuild日誌,發現下面一行:

Object dirPath ([app service name]\bin) skipped due to skip directive 'SkipBinFolderOnDeploy'.

結論,部署從VSTS在Azure WebJob但是從VS2013部署時,它被排除在bin包含文件夾時。

所以我的問題是:如何防止在使用VSTS時部署bin文件夾?有沒有任何MSBuild參數/標誌來做到這一點?

+0

你用我的解決方案解決了嗎? –

+0

我還沒有機會嘗試一下呢@strain-MSFT,我在官僚問題上「卡住」了 –

回答

1

參考這些方式來部署webjob天青:

  1. 修改的Visual Studio生成的任務是用文件系統部署webjob(MSBuild的參數:/p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:publishUrl="$(build.artifactstagingdirectory)\\WebJob" /p:DeployDefaultTarget=WebPublish
  2. 添加刪除文件的任務,釋放定義刪除bin文件夾(源文件夾:$(System.DefaultWorkingDirectory)/WebJobVnext/drop/WebJob);內容:bin
  3. 修改Azure的應用服務部署的任務(1.取消發佈使用Web部署選項2.包或文件夾:$(System.DefaultWorkingDirectory)/[artifact name] /drop/WebJob
+0

謝謝@strain-MSFT,我會盡可能地嘗試一下。 –

+0

隨時在嘗試後發佈結果。 –

+0

我終於有機會嘗試解決這個問題,謝謝@strain-MSFT。正如我的回答中所述,我必須做一些小的修改。 –

2

我已經受夠了這方面的問題的問題,以及。

當您在發佈定義中創建您的Azure部署任務時,我發現的最新方法是使用Web Deploy Operation Settings,-skip:Directory =(在這種情況下,它將是-skip:Directory ='\\ bin' )。我已經看到,這確實排除了更新操作中的bin文件夾(result)。

讓我知道這是否以任何方式幫助你。

+0

謝謝@ vlad-apetre,很高興知道。無論如何,我能夠把它整理出來。任務「Azure App Service Deploy」的BTW v3沒有指定額外參數的選項。 –

+0

@RuiJarimba有趣的是,我確定它是在v3上我自己做了修改。無論如何,我很高興你設法把它整理出來。祝一切順利。 –

+2

@RuiJarimba,當您選擇選項「使用Web Deploy發佈」時,您只會在v3任務中獲得選項。然後您會得到一個名爲「附加參數」的額外字段。值'-skip:Directory ='\\ bin''起作用。 –

0

我終於可以修復它了,謝謝@strain-MSFT指引我朝着正確的方向前進。不過,我不得不做一些小的改動。這是創建部署包任務:

Generate Azure WebJob deployment package

的MSBuild參數:

/p:DeployOnBuild=true /p:WebPublishMethod=FileSystem /p:DeployDefaultTarget=WebPublish /p:Configuration=$(BuildConfiguration) /p:OutputPath=.\bin\ /p:publishUrl="$(build.artifactstagingdirectory)\\temp\\WebJob"

這裏的差別比較@ starain-MSFT的回答是,我不得不添加的/p:OutputPath=參數,否則我會得到以下錯誤:

The OutputPath property is not set for project 

生成p我刪除了bin文件夾並將其壓縮(這縮短了構建時間)。

這是我的部署任務:

Deploy Azure WebJob using VSTS

請注意,$(DeploymentPackagePath)是路徑到包含部署包,如前面提到的zip文件。將包部署爲zip文件或者解壓縮並部署文件夾無關緊要,它可以同時工作。

相關問題