PublishSymbols@2 - Indexer les sources et publier des symboles v2

Utilisez cette tâche pour indexer votre code source et publier vos symboles sur un partage de fichiers ou un serveur de symboles Azure Artifacts.

L’indexation de votre code source vous permet d’utiliser vos fichiers de symboles pour déboguer votre application sur une machine autre que celle que vous avez utilisée pour générer votre application. Par exemple, vous pouvez déboguer une application créée par un agent de build à partir d’une machine de développement qui n’a pas le code source.

Les serveurs de symboles permettent à votre débogueur de récupérer automatiquement les fichiers de symboles appropriés sans connaître les noms de produits, les numéros de build ou les noms de package.

Syntax

# 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).

Entrées

SymbolsFolder - Chemin d’accès au dossier symboles
string. Valeur par défaut : $(Build.SourcesDirectory).

Spécifie le chemin d’accès au dossier recherché avec les fichiers de symboles. Par défaut, il s’agit de $(Build.SourcesDirectory). Sinon, spécifiez un chemin d’accès rooté, tel que $(Build.BinariesDirectory)/MyProject.

Notes

Les chemins UNC ne sont pas pris en charge si vous sélectionnez le serveur de symboles Azure Artifacts comme type de serveur.


SearchPattern - modèle Recherche
string. Obligatoire. Valeur par défaut : **/bin/**/*.pdb.

Spécifie le modèle utilisé pour découvrir les fichiers PDB à publier. Pour plus d’informations , consultez Informations de référence sur les modèles de correspondance de fichiers.


IndexSources - Sources d’index
boolean. Valeur par défaut : true.

Spécifie s’il faut injecter des informations de serveur source dans les fichiers PDB. Cette option est uniquement prise en charge sur les agents Windows.


PublishSymbols - Publier des symboles
boolean. Valeur par défaut : true.

Spécifie s’il faut publier les fichiers de symboles.


SymbolServerType - Type de serveur de symboles
string. Nécessaire lorsque PublishSymbols = true. Valeurs autorisées : TeamServices (Serveur de symboles dans cette organization/collection (nécessite Azure Artifacts)), FileShare (Partage de fichiers).

Spécifie où publier les symboles. Les symboles publiés sur le serveur de symboles Azure Artifacts sont accessibles à tout utilisateur ayant accès au organization/collection. Azure DevOps Server prend uniquement en charge l’option File share . Consultez les instructions pour publier des symboles pour le débogage afin d’utiliser le serveur de symboles dans Azure Artifacts.


SymbolsPath - Chemin d’accès à la publication de symboles
string. facultatif. Utilisez quand PublishSymbols = true && SymbolServerType = FileShare.

Spécifie le partage de fichiers qui héberge vos symboles. Cette valeur sera utilisée dans l’appel à symstore.exe add comme /s paramètre. Pour préparer votre magasin de symboles SymStore :

  1. Configurez un dossier dans un serveur de partage de fichiers pour stocker les symboles. Par exemple, configurez \fabrikam-share\symbols.
  2. Accordez l’autorisation de contrôle total au compte de service de l’agent de génération.

Si vous laissez cet argument vide, vos symboles seront indexés de source, mais pas publiés. Vous pouvez également stocker vos symboles avec vos gouttes. Consultez Publier des artefacts de build.


CompressSymbols - Compresser les symboles
boolean. facultatif. Utilisez quand SymbolServerType = FileShare. Valeur par défaut : false.

Compresse les symboles lors de la publication sur le partage de fichiers.


SymbolExpirationInDays - Expiration du symbole (en jours)
string. facultatif. Utilisez quand PublishSymbols = true && SymbolServerType = TeamServices. Valeur par défaut : 36530.

Spécifie le nombre de jours pendant lesquels les symboles doivent être conservés.


IndexableFileFormats - Formats de fichier de symboles à publier
string. facultatif. Utilisez quand PublishSymbols = true && SymbolServerType = TeamServices. Valeurs autorisées : Default (Jeu de symboles par défaut à charger), Pdb (Uniquement les symboles basés sur Pdb windows pdb et les pdb portables managés.), SourceMap (Uniquement les symboles SourceMap basés sur JavaScript (*.js.map)), All (Tous les formats de symboles pris en charge). Valeur par défaut : Default.

Spécifie les formats de débogage à publier sur le serveur de symboles.


DetailedLog - Journalisation détaillée
boolean. Valeur par défaut : true.

Spécifie la journalisation détaillée.


TreatNotIndexedAsWarning - Avertir s’il n’est pas indexé
boolean. Valeur par défaut : false.

Spécifie s’il faut avertir si les sources ne sont pas indexées pour un fichier PDB. Sinon, les messages sont consignés comme sortie normale.


UseNetCoreClientTool - Utiliser l’outil client NetCore
boolean. Valeur par défaut : false.

Spécifie s’il faut utiliser une version de l’outil de chargement de symboles qui prend en charge les fichiers DWARF et ELF. Cette option n’est importante que pour les agents Windows. Sur les agents non Windows, la version de l’outil de chargement de symboles qui prend en charge les fichiers DWARF et ELF sera toujours utilisée.


SymbolsMaximumWaitTime - Temps d’attente maximal (min)
string.

Spécifie le nombre de minutes à attendre avant d’échouer cette tâche.


SymbolsProduct - Produit
string.

Spécifie le paramètre product à symstore.exe. Par défaut, il s’agit de $(Build.DefinitionName).


SymbolsVersion - Version
string.

Spécifie le paramètre de version à symstore.exe. Par défaut, il s’agit de $(Build.BuildNumber).


SymbolsArtifactName - Nom de l’artefact
string. Valeur par défaut : Symbols_$(BuildConfiguration).

Spécifie le nom de l’artefact à utiliser pour l’artefact de symboles. Il ne doit être utilisé qu’avec le type de serveur de symbole FileShare. Par défaut, il s’agit de Symbols_$(BuildConfiguration).


Options de contrôle de la tâche

Toutes les tâches ont des options de contrôle en plus de leurs entrées de tâches. Pour plus d’informations, consultez Options de contrôle et propriétés de tâche courantes.

Variables de sortie

Aucun.

Notes

Utilisez cette tâche pour indexer votre code source et publier vos symboles sur un partage de fichiers ou un serveur de symboles Azure Artifacts.

L’indexation de votre code source vous permet d’utiliser vos fichiers de symboles pour déboguer votre application sur une machine autre que celle que vous avez utilisée pour générer votre application. Par exemple, vous pouvez déboguer une application créée par un agent de build à partir d’une machine de développement qui n’a pas le code source.

Les serveurs de symboles permettent à votre débogueur de récupérer automatiquement les fichiers de symboles appropriés sans connaître les noms de produits, les numéros de build ou les noms de package.

Important

Pour supprimer les symboles publiés à l’aide de la tâche Sources d’index & publier des symboles , vous devez d’abord supprimer la build qui a généré ces symboles. Pour ce faire, utilisez des stratégies de rétention ou supprimez manuellement l’exécution.

Comment fonctionne l’indexation ?

En choisissant d’indexer les sources, une section supplémentaire est injectée dans les fichiers PDB. Les fichiers PDB contiennent normalement des références aux chemins d’accès au fichier source local uniquement, par exemple : C :\BuildAgent_work\1\src\MyApp\Program.cs. La section supplémentaire injectée dans le fichier PDB contient des instructions de mappage pour les débogueurs. Les informations de mappage indiquent comment récupérer l’élément de serveur correspondant à chaque chemin d’accès local.

Le débogueur Visual Studio utilise les informations de mappage pour récupérer le fichier source à partir du serveur. Une commande réelle pour récupérer le fichier source est incluse dans les informations de mappage. Exemple :

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

Puis-je utiliser l’indexation source sur une base de données PDB portable créée à partir d’un assembly .NET Core ?

Non, mais vous pouvez utiliser Source Link à la place.

Combien de temps les symboles sont-ils conservés ?

Les symboles sont associés à la build publiée sur Azure Pipelines, ils sont associés à une build. Lorsque la build est supprimée manuellement ou à l’aide de stratégies de rétention, les symboles sont également supprimés. Si vous souhaitez conserver les symboles indéfiniment, marquez la build sur Conserver indéfiniment.

Configuration requise

Condition requise Description
Types de pipelines YAML, build classique
S’exécute sur Agent, DeploymentGroup
Demandes None
Capabilities Cette tâche ne répond à aucune demande pour les tâches suivantes dans le travail.
Restrictions de commande Quelconque
Variables paramétrables Quelconque
Version de l’agent 2.144.0 ou version ultérieure
Catégorie de la tâche Build
Condition requise Description
Types de pipelines YAML, build classique
S’exécute sur Agent, DeploymentGroup
Demandes None
Capabilities Cette tâche ne répond à aucune demande pour les tâches suivantes dans le travail.
Restrictions de commande Quelconque
Variables paramétrables Quelconque
Version de l’agent 1.95.0 ou version ultérieure
Catégorie de la tâche Build

Voir aussi