在Azure管道发布符号任务中,如何指定多个搜索模式?多个、管道、符号、任务

2023-09-03 10:26:38 作者:奋不顾身

我们的管道中有以下PublishSymbols任务,它正在正常工作。

  - task: PublishSymbols@2
inputs:
  symbolsFolder: $(Pipeline.Workspace)/s/Server
  searchPattern: "**/*.pdb"
  indexSources: true
  publishSymbols: true
  symbolServerType: TeamServices
  symbolsProduct: "ACM"
  symbolsVersion: $(major).$(minor).$(revision)
  symbolsArtifactName: "Symbols_ACM.$(major).$(minor).$(revision)_$(buildConfiguration)"
enabled: true
condition: eq(variables['doPublishSymbols'], 'true')
displayName: Create symbol table

但是,我们希望微调searchPattern输入,以便它只查找以abc或xyz开头的PDB文件。我该怎么做?

如何在Azure DevOps中构建CI CD管道

逗号分隔的字符串?

搜索模式:";**/abc*pdb";,&*/xyz*pdb";

数组?

搜索模式:@(";**/abc*pdb";,&*/xyz*pdb";)

某种OR符号?

搜索模式:";**/abc*pdb";|";**/xyz*pdb";

PowerShell新行如何?从the source files on Github,我推断这可能是解决方案:

搜索模式:";**/abc*pdb`n**/xyz*pdb";

但这就是结果:

找到0个文件。

##[警告]未选择要编制索引的文件。

处理其他文件类型的相关问题:

我的同事建议我包括与PDB文件相关联的EXE或DLL文件,因此搜索模式还将包括";abc*exe";、";abc*dll";等等。PublishSymbols是否需要这些附加文件?或者,PDB文件是否包含任务所需的所有信息?

我已经在Web上搜索了符号、symstore.exe和symbol.exe,但我还没有找到这个问题的良好答案。

推荐答案

在Azure管道发布符号任务中,如何指定多个搜索模式?

您可以直接用换行符指定多个搜索模式:

- task: PublishSymbols@2
  displayName: 'Publish symbols path'
  inputs:
    SearchPattern: |
     **in**abc*.pdb
     **in**xyz*.pdb
    indexSources: true

因此,搜索模式还将包括";abcexe;、";abcdll";等 在……上面。PublishSymbols是否需要这些附加文件?或者做PDB 文件包含任务所需的所有信息?

根据文档Publish symbols for debugging:

使用Azure管道,您可以将符号发布到Azure项目 使用索引源和发布符号任务的符号服务器。

因此,PublishSymbols需要这些附加文件,这些文件应该包含在相应的Nuget包中,而不是符号包中。