Asp.net web api VSTS发布定义中的通配符

Asp.net web api VSTS发布定义中的通配符,asp.net-web-api,azure-devops,azure-webjobs,azure-pipelines-release-pipeline,Asp.net Web Api,Azure Devops,Azure Webjobs,Azure Pipelines Release Pipeline,我正在尝试将Webjobs(其中4个)部署到应用程序服务,但在部署它们时,我遇到了错误- 2017-12-11T11:44:09 ============================================================================== 2017-12-11T11:44:10 Got connection details for Azure App Service:'**********' 2017-12-11T11:44:10 ##[erro

我正在尝试将Webjobs(其中4个)部署到应用程序服务,但在部署它们时,我遇到了错误-

2017-12-11T11:44:09 ==============================================================================
2017-12-11T11:44:10 Got connection details for Azure App 
Service:'**********'
2017-12-11T11:44:10 ##[error]Error: More than one package 
matched with specified pattern. Please restrain the search 
pattern.
2017-12-11T11:44:13 Successfully updated deployment History 
at ***********
2017-12-11T11:44:13 ##[section]Finishing: Deploy Azure Webjob
以下是配置屏幕:-


知道如何从单个任务部署所有webjob而不是执行多个任务吗?

对于Azure App Service部署任务,它只能部署一个webjob

因为您有四个webjob,所以应该确保包的通配符只与唯一的webjob匹配

  • 如果要部署所有四个webjob,可以使用四个Azure应用程序服务部署任务(如Daniel所述),并确保每个任务只匹配一个webjob
  • 如果只想部署一个已更改的webjob,则可以检测已更改的webjob并对其进行部署。详细步骤,您可以参考

    • Azure应用程序部署任务确实需要通配符,但这并不意味着它可以部署多个包。通配符用于在多个文件夹中搜索Web部署包

      默认值为
      $(System.DefaultWorkingDirectory)/***/.zip
      。这意味着任务将在
      System.DefaultWorkingDirectory
      下的某个位置搜索.zip文件

      如果查看App Deploy任务的代码(是的!是),您会看到仅检查一个匹配文件:

       if(availableWebPackages.length > 1) {
            throw new Error(tl.loc('MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern'));
       }
       webDeployPkg = availableWebPackages[0];
      
      要部署多个Web部署包,最简单的方法是克隆任务并确保每个搜索模式与单个Web部署包匹配。然后,您将完成四项任务


      或者您在GitHub上发送一个pull请求来扩展任务,以便一次部署多个包。

      我认为这是不可能的。如果您查看源代码(),则此任务需要单个包,而不是包列表。但是我们可以使用通配符,以便在多个zip文件的情况下使用allNo,您可以使用通配符,这样就不必指定.zip文件的确切路径。通配符不适用于选择多个文件。默认值$(System.DefaultWorkingDirectory)/***.zip意味着它将搜索嵌套在DefaultWorkingDirectory中的某个zip文件,或者只使用同一个任务4次。感谢@WouterdeKort和Daniel抽出时间:)