PublishSymbols@2 - ソースのインデックス作成とシンボルの発行 v2 タスク

このタスクを使用してソースコードのインデックスを作成し、ファイル共有または 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 - symbols フォルダーへのパス
string. 既定値: $(Build.SourcesDirectory)

シンボル ファイルで検索されるフォルダーへのパスを指定します。 既定値は、$(Build.SourcesDirectory) です。 それ以外の場合は、 などの $(Build.BinariesDirectory)/MyProjectルートパスを指定します。

注意

サーバーの種類として Azure Artifacts シンボル サーバーを選択した場合、UNC パスはサポートされません。


SearchPattern - Search パターン
string. 必須です。 既定値: **/bin/**/*.pdb

発行する PDB ファイルの検出に使用するパターンを指定します。 詳細については、「 ファイルマッチングパターンリファレンス」を参照 してください。


IndexSources - インデックス ソース
boolean. 既定値: true

ソース サーバー情報を PDB ファイルに挿入するかどうかを指定します。 このオプションは、Windows エージェント上でのみサポートされます。


PublishSymbols - シンボルを発行する
boolean. 既定値: true

シンボル ファイルを発行するかどうかを指定します。


SymbolServerType - シンボル サーバーの種類
string. PublishSymbols = true の場合に必要です。 使用できる値: TeamServices (このorganization/コレクション内のシンボル サーバー (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 およびマネージド ポータブル pdb)、(JavaScript ベースの SourceMap SourceMap シンボル (*.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.

product パラメーターを に symstore.exe指定します。 既定値は、$(Build.DefinitionName) です。


SymbolsVersion - バージョン
string.

バージョン パラメーターを に symstore.exe指定します。 既定値は、$(Build.BuildNumber) です。


SymbolsArtifactName - 成果物名
string. 既定値: Symbols_$(BuildConfiguration)

シンボル成果物に使用する成果物名を指定します。 これは、FileShare シンボル サーバーの種類でのみ使用する必要があります。 既定値は、Symbols_$(BuildConfiguration) です。


タスク制御オプション

すべてのタスクには、タスク入力に加えて制御オプションがあります。 詳細については、「 コントロール オプションと一般的なタスク プロパティ」を参照してください。

出力変数

[なし] :

解説

このタスクを使用してソースコードのインデックスを作成し、ファイル共有または 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

.NET Core アセンブリから作成されたポータブル PDB でソース インデックス作成を使用できますか?

いいえ。ただし、代わりにSource Linkを使用できます。

シンボルはどのくらいの期間保持されますか?

シンボルは、ビルドに関連付けられている Azure Pipelines に発行されたビルドに関連付けられます。 手動で、または保存ポリシーを使用してビルドが削除されると、シンボルも削除されます。 シンボルを無期限に保持する必要がある場合は、ビルドを無期限に保持とマークします。

要件

要件 説明
パイプラインの種類 YAML、クラシック ビルド
上で実行 エージェント、DeploymentGroup
確認要求 なし
Capabilities このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 Any
設定可能な変数 Any
エージェントのバージョン 2.144.0 以降
タスクのカテゴリ Build
要件 説明
パイプラインの種類 YAML、クラシック ビルド
上で実行 エージェント、DeploymentGroup
確認要求 なし
Capabilities このタスクは、ジョブ内の後続のタスクに対する要求を満たしていません。
コマンドの制限 Any
設定可能な変数 Any
エージェントのバージョン 1.95.0 以上
タスクのカテゴリ Build

こちらもご覧ください