如何使文件在应用服务部署任务期间不被覆盖?

How to make files not get overwritten during app service deployment task?

我们在根目录中有 Android/Apple 个 png,如屏幕截图所示。根文件夹中需要这些图标,因为移动设备上发生了一些 404 请求,将图标包含在根文件夹中可以解决问题。它们不致力于源代码控制,这就是为什么我们不希望发布管道在部署新构建工件时删除它们。

它们不致力于源代码控制的原因是因为代码实际上并未使用它们,但有时移动设备会请求它们,而这些请求会抛出 404 错误,从而破坏警报通道。所以它们只是暂时复制到根目录以停止那些 404 警报。

在发布管道应用服务部署期间,我们需要确保这些文件不会被覆盖。这是当前的应用服务部署 YAML:

steps:

task: AzureRmWebAppDeployment@4
displayName: ‘Azure App Service Deploy: edge-dev’
inputs:
azureSubscription: ‘Azure Dev Service Connection’
WebAppName: ‘edge-dev’
packageForLinux: ‘$(System.DefaultWorkingDirectory)/Build Artifact/Release’
enableCustomDeployment: true
AdditionalArguments: ‘-skip:objectName=filePath,absolutePath=“Web.Dev.config|Web.Test.config|Web.Beta.config|Web.Prod.config|\*.zip” -retryAttempts:6 -retryInterval:10000’
enableXmlTransform: true

是否可以添加某种选项,使 Android/Apple png 文件不被覆盖?目前,每次新构建触发发布部署时,图标都会被删除,开发人员必须在部署后继续手动上传它们,以确保不会发生 404 错误。

防止图标被覆盖的解决方案:

实际上有两种方式:

  1. 我们可以在 Azure 应用服务中传递 -enableRule:DoNotDeleteRule 部署附加参数。 DoNotDeleteRule 规则块 删除目标计算机上不存在的文件 源计算机。此规则适用于 contentPath、dirPath、 和文件路径提供商。

  2. 我们可以利用 -skip:objectName=filePath,absolutePath=android-icon-144x144.png|android-icon-72x72.png|etc. 在 Azure 应用服务部署附加参数中。它还会阻止 删除目标计算机上的文件,我们已经 今天实际上对某些文件使用参数,例如 web.config

    -skip:objectName=filePath,absolutePath="Web.Dev.config|Web.Test.config|Web.Beta.config|Web.Prod.config|android-icon-144x144.png|android-icon-192x192.png|android-icon-36x36.png|android-icon-48x48.png|android-icon-72x72.png|android-icon-96x96.png|apple-touch-icon-114x114.png|apple-touch-icon-120x120.png|apple-touch-icon-144x144.png|apple-touch-icon-152x152.png|apple-touch-icon-180x180.png|apple-touch-icon-57x57.png|apple-touch-icon-60x60.png|apple-touch-icon-72x72.png|apple-touch-icon-76x76.png|apple-touch-icon-precomposed.png|apple-touch-icon.png|favicon-16x16.png|favicon-32x32.png|favicon-96x96.png|apple-icon.png|ms-icon-144x144.png|ms-icon-150x150.png|ms-icon-310x310.png|ms-icon-70x70.png|\*.zip"
    

    -retryAttempts:6 -retryInterval:10000