Asp.net web api VSTS发布定义中的通配符
我正在尝试将Webjobs(其中4个)部署到应用程序服务,但在部署它们时,我遇到了错误-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
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抽出时间:)