如何从Azure DevOps中的文件夹(不是zip)部署WebApp

时间:2020-05-20 09:56:06

标签: azure deployment azure-devops

我无法使用文件夹部署DevOps,这给了我这个错误:

[错误]错误:找不到具有指定模式的软件包: d:\ a \ 1 \ a * .deploy.cmd
检查任务中是否提到了软件包 在构建或上一阶段作为工件发布,并且 已下载到当前职位。

Azure App Service部署任务文档中有关Package参数的说明如下:

程序包或包含App Service的文件夹的文件路径 MSBuild生成的内容,或压缩的zip或war文件中的内容。

这是我的发布任务:

  - task: DotNetCoreCLI@2
    inputs:
      command: publish
      publishWebProjects: false
      arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
      zipAfterPublish: false
      modifyOutputPath: true
      projects: |
        src/Company/Project.csproj 

和我的部署任务:

  - task: AzureRmWebAppDeployment@4
    inputs:
      ConnectionType: 'PublishProfile'
      PublishProfilePath: '$(System.DefaultWorkingDirectory)/src/Company/Properties/PublishProfiles/WebDeploy.pubxml'
      PublishProfilePassword: '$(password)'
      Package: '$(Build.ArtifactStagingDirectory)/Company'

为什么要查找deploy.cmd?我在做什么错了?

2 个答案:

答案 0 :(得分:1)

错误:找不到指定格式的软件包:d:\ a \ 1 \ a * .deploy.cmd

根据错误消息,此问题的根本原因可能是您的路径中没有这样的文件(xxx.deploy.cmd)。

“ Dotnet发布”任务将不会生成此文件。

要解决此问题,您需要添加“ Dotnet构建”任务。此任务将生成必要的文件(例如deploy.cmd):

同时,您还需要在参数字段中添加配置参数。

/p:DeployOnBuild=true /p:WebPublishMethod=package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)

这里是一个例子:

- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    projects: '**/*.csproj'
    arguments: '/p:DeployOnBuild=true /p:WebPublishMethod=package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)'

- task: DotNetCoreCLI@2
  displayName: Publish
  inputs:
    command: publish
....

然后将添加xxx.deploy.cmd。

enter image description here

希望这会有所帮助。

答案 1 :(得分:0)

请尝试

  - task: AzureRmWebAppDeployment@4
    inputs:
      ConnectionType: 'PublishProfile'
      PublishProfilePath: '$(System.DefaultWorkingDirectory)/src/Company/Properties/PublishProfiles/WebDeploy.pubxml'
      PublishProfilePassword: '$(password)'
      Package: '$(Build.ArtifactStagingDirectory)/Company/*'

区别在于Package输入。

相关问题