Azure devops 使用策略不适用于任何人AzureRmWebAppDeployment@4

Azure devops 使用策略不适用于任何人AzureRmWebAppDeployment@4,azure-devops,azure-pipelines,azure-pipelines-release-pipeline,Azure Devops,Azure Pipelines,Azure Pipelines Release Pipeline,我开始使用strategy runonce yaml模式,这样我就可以将环境标记添加到我的relase中,并添加批准步骤 但这样做AzureRmWebAppDeployment@4步骤:按以下格式部署whol文件 /site/wwwroot/mywebApi/Content/D_C/a/1/s/src/mywebApi/obj/Release/Package/PackageTmp/ 而不是将包解压缩到/site/wwwroot/mywebApi/ 在我没有使用策略的时候,这种方法曾经奏效 这曾经

我开始使用strategy runonce yaml模式,这样我就可以将环境标记添加到我的relase中,并添加批准步骤

但这样做AzureRmWebAppDeployment@4步骤:按以下格式部署whol文件

/site/wwwroot/mywebApi/Content/D_C/a/1/s/src/mywebApi/obj/Release/Package/PackageTmp/

而不是将包解压缩到/site/wwwroot/mywebApi/

在我没有使用策略的时候,这种方法曾经奏效

这曾经奏效


jobs:
  - job: Deploy
    variables:
      vmImage: 'windows-latest'   
    pool:
      vmImage: $(vmImage)  
    displayName: 'Deploy ${{ parameters.project }} ${{ parameters.envName }}'         
    continueOnError: "false"
    steps:
    - task: DownloadBuildArtifacts@0
      inputs:
        buildType: 'current'
        downloadType: 'single'
        artifactName: '${{ parameters.project }}${{ parameters.envName }}'
        downloadPath: '$(build.artifactStagingDirectory)'
    - task: AzureRmWebAppDeployment@4
      inputs:
        ConnectionType: 'AzureRM'
        azureSubscription: '****Azure'
        appType: 'webApp'
        WebAppName: '${{ parameters.webAppName }}'
        deployToSlotOrASE: true
        ResourceGroupName: '****'
        SlotName: '${{ parameters.slotName }}'
        VirtualApplication: '${{ parameters.virtualApplication }}'
        packageForLinux: '$(build.artifactStagingDirectory)/**/*.zip'

这不起作用,但这正是我想要用环境标记发布的内容

jobs:
  # track deployments on the environment
- deployment: DeployWeb
  displayName: deploy paystub Web App 
  environment: ${{ parameters.envName }}  
  variables:
    vmImage: 'windows-latest'   
  pool:
    vmImage: $(vmImage)  
  continueOnError: "false"
  strategy:
    runOnce:
      deploy:
        steps:
        - task: DownloadBuildArtifacts@0
          inputs:
            buildType: 'current'
            downloadType: 'single'
            artifactName: '${{ parameters.project }}${{ parameters.envName }}'
            downloadPath: '$(build.artifactStagingDirectory)'
        - task: AzureRmWebAppDeployment@4
          inputs:
            ConnectionType: 'AzureRM'
            azureSubscription: '***Azure'
            appType: 'webApp'
            WebAppName: '${{ parameters.webAppName }}'
            deployToSlotOrASE: true
            ResourceGroupName: '*****'
            SlotName: '${{ parameters.slotName }}'
            VirtualApplication: '${{ parameters.virtualApplication }}'
            packageForLinux: '$(build.artifactStagingDirectory)/**/*.zip'

我希望新的步骤也能在中部署代码 这个文件夹 包到/site/wwwroot/mywebApi/

而不是做一些库杜拷贝到


/site/wwwroot/mywebApi/Content/D_C/a/1/s/src/mywebApi/obj/Release/Package/PackageTmp/

我能够重现同样的场景。不幸的是,我没有找到通过配置任务AzureRmWebAppDeployment来修复它的方法。该任务似乎自动使用kudu将文件复制到Azure应用程序服务,而msdeploy用于在非策略管道中部署文件。你可以报告这个问题

我通过更改vsbuild任务的msbuild参数并添加zip存档任务找到了解决方法。检查以下内容:

使用
/t:publish
将生成发布到
$(build.artifactstagindirectory)\publish
文件夹中,以压缩到
归档文件
任务中

- task: VSBuild@1
      displayName: 'Build solution **\*.sln'
      inputs:
        msbuildArgs: '/t:publish /p:outputpath="$(build.artifactstagingdirectory)\\"'
        platform: '$(BuildPlatform)'
        configuration: '$(BuildConfiguration)'
        clean: true
        restoreNugetPackages: true
使用
archiveFiles
任务压缩上述步骤中
\publish
文件夹中的所有文件

 - task: ArchiveFiles@2
      inputs:
        rootFolderOrFile: '$(Build.ArtifactStagingDirectory)\\publish\\*'
        includeRootFolder: true
        archiveType: 'zip'
        archiveFile: '$(Build.ArtifactStagingDirectory)/package/$(Build.BuildId).zip'
        replaceExistingArchive: true
使用
PublishBuildArtifacts
task发布由上述步骤创建的zip文件

 - task: PublishBuildArtifacts@1
      displayName: 'Publish Artifact: drop'
      inputs:
        pathtoPublish: '$(Build.ArtifactStagingDirectory)\\package\\' 
        artifactName: 'strategy' 
通过以上步骤,在部署阶段下载的zip文件将只包含已部署的代码

希望以上步骤对您有所帮助