PublishSymbols@2 — задача индексирования источников и публикации символов версии 2

Используйте эту задачу для индексирования исходного кода и публикации символов в общей папке или на сервере символов Azure Artifacts.

Индексирование исходного кода позволяет использовать файлы символов для отладки приложения на компьютере, отличном от того, который использовался для сборки приложения. Например, можно выполнить отладку приложения, созданного агентом сборки, с компьютера разработки, на котором отсутствует исходный код.

Серверы символов позволяют отладчику автоматически получать правильные файлы символов, не зная названий продуктов, номеров сборки или имен пакетов.

Синтаксис

# Index sources and publish symbols v2
# Index your source code and publish symbols to a file share or Azure Artifacts symbol server.
- task: PublishSymbols@2
  inputs:
    #SymbolsFolder: '$(Build.SourcesDirectory)' # string. Path to symbols folder. Default: $(Build.SourcesDirectory).
    SearchPattern: '**/bin/**/*.pdb' # string. Required. Search pattern. Default: **/bin/**/*.pdb.
    #IndexSources: true # boolean. Index sources. Default: true.
    #PublishSymbols: true # boolean. Publish symbols. Default: true.
    SymbolServerType: # 'TeamServices' | 'FileShare'. Required when PublishSymbols = true. Symbol server type. 
    #SymbolsPath: # string. Optional. Use when PublishSymbols = true && SymbolServerType = FileShare. Path to publish symbols. 
    #CompressSymbols: false # boolean. Optional. Use when SymbolServerType = FileShare. Compress symbols. Default: false.
    #SymbolExpirationInDays: '36530' # string. Optional. Use when PublishSymbols = true && SymbolServerType = TeamServices. Symbol Expiration (in days). Default: 36530.
  # Advanced
    #IndexableFileFormats: 'Default' # 'Default' | 'Pdb' | 'SourceMap' | 'All'. Optional. Use when PublishSymbols = true && SymbolServerType = TeamServices. Symbol file formats to publish. Default: Default.
    #DetailedLog: true # boolean. Verbose logging. Default: true.
    #TreatNotIndexedAsWarning: false # boolean. Warn if not indexed. Default: false.
    #UseNetCoreClientTool: false # boolean. Use NetCore client tool. Default: false.
    #SymbolsMaximumWaitTime: # string. Max wait time (min). 
    #SymbolsProduct: # string. Product. 
    #SymbolsVersion: # string. Version. 
    #SymbolsArtifactName: 'Symbols_$(BuildConfiguration)' # string. Artifact name. Default: Symbols_$(BuildConfiguration).
# Index sources and publish symbols v2
# Index your source code and publish symbols to a file share or Azure Artifacts symbol server.
- task: PublishSymbols@2
  inputs:
    #SymbolsFolder: '$(Build.SourcesDirectory)' # string. Path to symbols folder. Default: $(Build.SourcesDirectory).
    SearchPattern: '**/bin/**/*.pdb' # string. Required. Search pattern. Default: **/bin/**/*.pdb.
    #IndexSources: true # boolean. Index sources. Default: true.
    #PublishSymbols: true # boolean. Publish symbols. Default: true.
    SymbolServerType: # 'TeamServices' | 'FileShare'. Required when PublishSymbols = true. Symbol server type. 
    #SymbolsPath: # string. Optional. Use when PublishSymbols = true && SymbolServerType = FileShare. Path to publish symbols. 
    #CompressSymbols: false # boolean. Optional. Use when SymbolServerType = FileShare. Compress symbols. Default: false.
  # Advanced
    #DetailedLog: true # boolean. Verbose logging. Default: true.
    #TreatNotIndexedAsWarning: false # boolean. Warn if not indexed. Default: false.
    #SymbolsMaximumWaitTime: # string. Max wait time (min). 
    #SymbolsProduct: # string. Product. 
    #SymbolsVersion: # string. Version. 
    #SymbolsArtifactName: 'Symbols_$(BuildConfiguration)' # string. Artifact name. Default: Symbols_$(BuildConfiguration).
# Index sources and publish symbols v2
# Index your source code and publish symbols to a file share or Azure Artifacts Symbol Server.
- task: PublishSymbols@2
  inputs:
    #SymbolsFolder: '$(Build.SourcesDirectory)' # string. Path to symbols folder. Default: $(Build.SourcesDirectory).
    SearchPattern: '**/bin/**/*.pdb' # string. Required. Search pattern. Default: **/bin/**/*.pdb.
    #IndexSources: true # boolean. Index sources. Default: true.
    #PublishSymbols: true # boolean. Publish symbols. Default: true.
    SymbolServerType: # 'TeamServices' | 'FileShare'. Required when PublishSymbols = true. Symbol server type. 
    #SymbolsPath: # string. Optional. Use when PublishSymbols = true && SymbolServerType = FileShare. Path to publish symbols. 
    #CompressSymbols: false # boolean. Optional. Use when SymbolServerType = FileShare. Compress symbols. Default: false.
  # Advanced
    #DetailedLog: true # boolean. Verbose logging. Default: true.
    #TreatNotIndexedAsWarning: false # boolean. Warn if not indexed. Default: false.
    #SymbolsMaximumWaitTime: # string. Max wait time (min). 
    #SymbolsProduct: # string. Product. 
    #SymbolsVersion: # string. Version. 
    #SymbolsArtifactName: 'Symbols_$(BuildConfiguration)' # string. Artifact name. Default: Symbols_$(BuildConfiguration).

Входные данные

SymbolsFolder - Путь к папке символов
string. Значение по умолчанию: $(Build.SourcesDirectory).

Указывает путь к папке, в которую выполняется поиск с помощью файлов символов. Значение по умолчанию — $(Build.SourcesDirectory). В противном случае укажите путь с корнем, например $(Build.BinariesDirectory)/MyProject.

Примечание

UNC-пути не поддерживаются, если в качестве типа сервера выбран сервер символов Azure Artifacts.


SearchPattern - шаблон Поиск
string. Обязательный. Значение по умолчанию: **/bin/**/*.pdb.

Указывает шаблон, используемый для обнаружения PDB-файлов для публикации. Дополнительные сведения см. в справочнике по шаблонам сопоставления файлов .


IndexSources - Источники индексов
boolean. Значение по умолчанию: true.

Указывает, следует ли внедрять сведения о исходном сервере в PDB-файлы. Этот параметр поддерживается только в агентах Windows.


PublishSymbols - Публикация символов
boolean. Значение по умолчанию: true.

Указывает, следует ли публиковать файлы символов.


SymbolServerType - Тип сервера символов
string. Требуется, если PublishSymbols = true. Допустимые значения: TeamServices (Сервер символов в этой организации или коллекции (требуется Azure Artifacts)), FileShare (общая папка).

Указывает место публикации символов. Символы, опубликованные на сервере символов Azure Artifacts, доступны любому пользователю с доступом к организации или коллекции. Azure DevOps Server поддерживает File share только параметр . См. инструкции по публикации символов для отладки для использования сервера символов в Azure Artifacts.


SymbolsPath - Путь к публикации символов
string. Необязательный элемент. Используйте при PublishSymbols = true && SymbolServerType = FileShare.

Указывает общую папку, в которую размещаются символы. Это значение будет использоваться в вызове в symstore.exe add качестве /s параметра . Чтобы подготовить хранилище символов SymStore, выполните приведенные далее действия.

  1. Настройте папку для хранения символов на общем файловом сервере. Например, настройте \fabrikam-share\symbols.
  2. Предоставьте разрешение на полный доступ к учетной записи службы агента сборки.

Если оставить этот аргумент пустым, символы будут индексированы, но не опубликованы. Вы также можете хранить символы с помощью капель. См. статью Публикация артефактов сборки.


CompressSymbols - Сжатие символов
boolean. Необязательный элемент. Используйте при SymbolServerType = FileShare. Значение по умолчанию: false.

Сжимает символы при публикации в общей папке.


SymbolExpirationInDays - Срок действия символов (в днях)
string. Необязательный элемент. Используйте при PublishSymbols = true && SymbolServerType = TeamServices. Значение по умолчанию: 36530.

Указывает количество дней, в течение которых должны храниться символы.


IndexableFileFormats - Форматы файлов символов для публикации
string. Необязательный элемент. Используйте при PublishSymbols = true && SymbolServerType = TeamServices. Допустимые значения: Default (Набор символов по умолчанию для отправки), Pdb (Только символы на основе PDB windows и управляемые переносимые pdb-файлы).), SourceMap (Только символы SourceMap на основе JavaScript (*.js.map)), All (Все поддерживаемые форматы символов). Значение по умолчанию: Default.

Указывает форматы отладки для публикации на сервере символов.


DetailedLog - Подробное ведение журнала
boolean. Значение по умолчанию: true.

Задает подробное ведение журнала.


TreatNotIndexedAsWarning - Предупреждать, если не индексировано
boolean. Значение по умолчанию: false.

Указывает, следует ли предупреждать, если источники не индексируются для PDB-файла. В противном случае сообщения регистрируются как обычные выходные данные.


UseNetCoreClientTool - Использование клиентского средства NetCore
boolean. Значение по умолчанию: false.

Указывает, следует ли использовать версию средства отправки символов, поддерживающую файлы DWARF и ELF. Этот параметр имеет значение только для агентов Windows. На агентах, отличных от Windows, всегда будет использоваться версия средства отправки символов, поддерживающая файлы DWARF и ELF.


SymbolsMaximumWaitTime - Максимальное время ожидания (мин)
string.

Указывает время ожидания в минутах перед сбоем этой задачи.


SymbolsProduct - Продукта
string.

Указывает для параметра продукта значение symstore.exe. Значение по умолчанию — $(Build.DefinitionName).


SymbolsVersion - Версия
string.

Задает параметр версии для symstore.exe. Значение по умолчанию — $(Build.BuildNumber).


SymbolsArtifactName - Имя артефакта
string. Значение по умолчанию: Symbols_$(BuildConfiguration).

Указывает имя артефакта, используемого для артефакта символов. Этот параметр следует использовать только с типом сервера символов FileShare. Значение по умолчанию — Symbols_$(BuildConfiguration).


Параметры управления задачами

Помимо входных данных, все задачи имеют параметры управления. Дополнительные сведения см. в разделе Параметры управления и общие свойства задачи.

Выходные переменные

Нет.

Remarks

Используйте эту задачу для индексирования исходного кода и публикации символов в общей папке или на сервере символов Azure Artifacts.

Индексирование исходного кода позволяет использовать файлы символов для отладки приложения на компьютере, отличном от того, который использовался для сборки приложения. Например, можно выполнить отладку приложения, созданного агентом сборки, с компьютера разработки, на котором отсутствует исходный код.

Серверы символов позволяют отладчику автоматически получать правильные файлы символов, не зная названий продуктов, номеров сборки или имен пакетов.

Важно!

Чтобы удалить символы, опубликованные с помощью задачи "Источники индекса" & публикация символов , необходимо сначала удалить сборку, создающую эти символы. Это можно сделать с помощью политик хранения или вручную удалив выполнение.

Как работает индексирование?

Если выбрать индексирование источников, в PDB-файлы будет внедрен дополнительный раздел. PDB-файлы обычно содержат ссылки только на пути к локальным исходным файлам, например C:\BuildAgent_work\1\src\MyApp\Program.cs. Дополнительный раздел, внедренный в PDB-файл, содержит инструкции по сопоставлению для отладчиков. Сведения о сопоставлении указывают, как получить элемент сервера, соответствующий каждому локальному пути.

Отладчик Visual Studio будет использовать сведения о сопоставлении для получения исходного файла с сервера. Фактическая команда для получения исходного файла включается в сведения о сопоставлении. Пример

tf.exe git view /collection:http://SERVER:8080/tfs/DefaultCollection /teamproject:"93fc2e4d-0f0f-4e40-9825-01326191395d" /repository:"647ed0e6-43d2-4e3d-b8bf-2885476e9c44" /commitId:3a9910862e22f442cd56ff280b43dd544d1ee8c9 /path:"/MyApp/Program.cs" /output:"C:\Users\username\AppData\Local\SOURCE~1\TFS_COMMIT\3a991086\MyApp\Program.cs" /applyfilters

Можно ли использовать индексирование источника в переносимом PDB-файле, созданном из сборки .NET Core?

Нет, но вместо этого можно использовать Source Link.

Как долго хранятся символы?

Символы связаны со сборкой, опубликованной в Azure Pipelines, они связаны со сборкой. При удалении сборки вручную или с помощью политик хранения символы также удаляются. Если вы хотите сохранить символы на неопределенный срок, пометьте сборку как Сохранить на неопределенный срок.

Требования

Требование Описание
Типы конвейеров YAML, классическая сборка
Выполняется в Агент, DeploymentGroup
Требования None
Capabilities Эта задача не удовлетворяет требованиям для последующих задач в задании.
Ограничения команд Любой
Устанавливаемые переменные Любой
Версия агента 2.144.0 или более поздней версии
Категория задач Сборка
Требование Описание
Типы конвейеров YAML, классическая сборка
Выполняется в Агент, DeploymentGroup
Требования None
Capabilities Эта задача не удовлетворяет требованиям для последующих задач в задании.
Ограничения команд Любой
Устанавливаемые переменные Любой
Версия агента 1.95.0 или более поздней версии
Категория задач Сборка

См. также раздел