【问题标题】:using strategy does not work for AzureRmWebAppDeployment@4使用策略不适用于 AzureRmWebAppDeployment@4
【发布时间】:2019-10-08 18:27:37
【问题描述】:

我开始使用策略 runonce yaml 模式,因此我可以将环境标签添加到我的版本中并添加批准步骤。 https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema

但是这样做 AzureRmWebAppDeployment@4 步骤以下面的格式部署整个文件

/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/

而不是做一些 kudu 复制到

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

【问题讨论】:

    标签: azure-devops azure-pipelines azure-pipelines-release-pipeline


    【解决方案1】:

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

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

    使用/t: publish 将构建发布到$(build.artifactstagingdirectory)\publish 文件夹以压缩到ArchiveFiles 任务中。

    - 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任务发布上述步骤创建的zip文件

     - task: PublishBuildArtifacts@1
          displayName: 'Publish Artifact: drop'
          inputs:
            pathtoPublish: '$(Build.ArtifactStagingDirectory)\\package\\' 
            artifactName: 'strategy' 
    

    通过上述步骤,在 Deploy 阶段下载的 zip 文件将只包含已部署的代码。

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

    【讨论】:

      猜你喜欢
      • 2020-07-10
      • 2017-04-09
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 2019-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多