VSTS版本定义中的通配符

时间:2017-12-11 12:05:06

标签: asp.net-web-api azure-devops azure-webjobs azure-pipelines-release-pipeline

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

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

以下是配置屏幕: - Configuration

任何想法如何从单个任务部署所有webjobs而不是执行多个任务?

2 个答案:

答案 0 :(得分:1)

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

由于你有四个webjobs,你应该确保包的通配符只能匹配一个独特的webjob。

  • 如果要部署所有四个webjobs,可以使用四个Azure App Service Deploy任务(如Daniel所述),并确保每个任务仅匹配一个webjob。
  • 如果您只想部署一个已更改的webjob,您可以检测更改的wenjob并为其进行部署。详细步骤,您可以参考this post

答案 1 :(得分:1)

Azure App Deploy任务确实采用外卡,但这并不意味着它可以部署多个软件包。通配符用于在多个文件夹中搜索Web部署包。

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

如果您查看App Deploy Task的代码(是!它是open source on GitHub),您会看到只检查一个匹配文件:

 if(availableWebPackages.length > 1) {
      throw new Error(tl.loc('MorethanonepackagematchedwithspecifiedpatternPleaserestrainthesearchpattern'));
 }
 webDeployPkg = availableWebPackages[0];

要部署多个Web部署包,最简单的方法是克隆任务并确保每个搜索模式与单个Web部署包匹配。然后,您将完成四项任务。

或者您在GitHub上发送拉取请求以将任务扩展为一次部署多个包。