【发布时间】:2020-03-05 01:31:55
【问题描述】:
我有一个 Azure DevOps Pipeline,其中包括一个 Azure App Service Deploy 任务 (AzureRmWebAppDeployment),用于部署 ASP.NET Core 3.1 项目:
- task: AzureRmWebAppDeployment@4
inputs:
ConnectionType: 'AzureRM'
azureSubscription: 'Azure Subscription(01234567-89ab-cdef-0123-456789abcdef)'
appType: 'webApp'
WebAppName: 'MyStagingSite'
packageForLinux: '$(Build.ArtifactStagingDirectory)/**/*.zip'
enableCustomDeployment: true
DeploymentType: 'webDeploy'
enableXmlTransform: false
enableXmlVariableSubstitution: true
RemoveAdditionalFilesFlag: false
Azure App Service 目标包含多个预先建立的文件夹中的文件,这些文件夹独立于持续交付过程进行管理。我们希望使用 Remove additional files at destination 标志 (RemoveAdditionalFilesFlag),同时保持这些文件夹不变。
免责声明:我认为这不是最佳做法,并且在未来,我们会将这些文件移至单独的存储位置。在那之前,我想找到一个可以解决这个问题的解决方案。
在 Visual Studio 2019 中,我们通过使用 csproj 文件中的 MsDeploySkipRules 从发布过程中排除这些文件来实现此目的:
<Project Sdk="Microsoft.NET.Sdk.Web">
…
<ItemGroup>
<MsDeploySkipRules Include="CustomSkipFolder">
<ObjectName>dirPath</ObjectName>
<AbsolutePath>wwwroot\\Uploads</AbsolutePath>
</MsDeploySkipRules>
</ItemGroup>
</Project>
此方法适用于 Visual Studio,并因其 Web 部署发布过程而备受赞誉。然而,AzureRmWebAppDeployment 任务似乎不遵守这些规则,即使使用“Web 部署”部署方法 (DeploymentType)。
在使用AzureRmWebAppDeployment 任务时,有没有办法兑现MsDeploySkipRules?如果没有,是否有办法提供在部署过程中应跳过或忽略的文件夹列表?或者,当发布到 Azure 应用服务时,是否有其他任务允许这些选项之一?
注意:我也将其发布到 DevOps Beta,但由于该站点尚未达到临界质量,因此我将其交叉发布在这里。
【问题讨论】:
标签: continuous-integration azure-pipelines azure-web-app-service webdeploy azure-deployment