Udostępnij za pośrednictwem


PublishSymbols@2 — indeksowanie źródeł i publikowanie symboli w wersji 2 — zadanie

To zadanie służy do indeksowania kodu źródłowego i publikowania symboli w udziale plików lub serwerze symboli usługi Azure Artifacts.

Indeksowanie kodu źródłowego umożliwia użycie plików symboli do debugowania aplikacji na maszynie innej niż użyta do skompilowania aplikacji. Można na przykład debugować aplikację utworzoną przez agenta kompilacji z maszyny deweloperów, która nie ma kodu źródłowego.

Serwery symboli umożliwiają debugerowi automatyczne pobieranie prawidłowych plików symboli bez znajomości nazw produktów, numerów kompilacji lub nazw pakietów.

Składnia

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

Dane wejściowe

SymbolsFolder - Ścieżka do folderu symboli
string. Wartość domyślna: $(Build.SourcesDirectory).

Określa ścieżkę do folderu, który jest wyszukiwany z plikami symboli. Wartość domyślna to $(Build.SourcesDirectory). W przeciwnym razie określ ścieżkę rooted, taką jak $(Build.BinariesDirectory)/MyProject.

Uwaga

Ścieżki UNC nie są obsługiwane, jeśli jako typ serwera wybierzesz serwer symboli usługi Azure Artifacts.


SearchPattern - wzorzec Search
string. Wymagane. Wartość domyślna: **/bin/**/*.pdb.

Określa wzorzec używany do odnajdywania plików PDB do opublikowania. Aby uzyskać więcej informacji, zobacz Dokumentacja wzorców dopasowywania plików .


IndexSources - Źródła indeksów
boolean. Wartość domyślna: true.

Określa, czy należy wstrzyknąć informacje o serwerze źródłowym do plików PDB. Ta opcja jest obsługiwana tylko w przypadku agentów systemu Windows.


PublishSymbols - Symbole publikowania
boolean. Wartość domyślna: true.

Określa, czy mają być publikowane pliki symboli.


SymbolServerType - Typ serwera symboli
string. Wymagane, gdy PublishSymbols = true. Dozwolone wartości: TeamServices (Serwer symboli w tej organizacji/kolekcji (wymaga usługi Azure Artifacts)), FileShare (udział plików).

Określa miejsce publikowania symboli. Symbole opublikowane na serwerze symboli usługi Azure Artifacts są dostępne dla każdego użytkownika z dostępem do organizacji/kolekcji. Azure DevOps Server obsługuje File share tylko tę opcję. Zobacz instrukcje publikowania symboli do debugowania w celu używania serwera symboli w usłudze Azure Artifacts.


SymbolsPath - Ścieżka do publikowania symboli
string. Opcjonalny. Użyj polecenia , gdy PublishSymbols = true && SymbolServerType = FileShare.

Określa udział plików hostujący symbole. Ta wartość będzie używana w wywołaniu parametru /s .symstore.exe add Aby przygotować magazyn symboli SymStore:

  1. Skonfiguruj folder na serwerze udostępniania plików, aby przechowywać symbole. Na przykład skonfiguruj polecenie \fabrikam-share\symbols.
  2. Udziel uprawnień pełnej kontroli do konta usługi agenta kompilacji.

Jeśli ten argument pozostanie pusty, symbole będą indeksowane w źródle, ale nie zostaną opublikowane. Symbole można również przechowywać za pomocą kropli. Zobacz Publikowanie artefaktów kompilacji.


CompressSymbols - Kompresuj symbole
boolean. Opcjonalny. Użyj polecenia , gdy SymbolServerType = FileShare. Wartość domyślna: false.

Kompresuje symbole podczas publikowania w udziale plików.


SymbolExpirationInDays - Wygaśnięcie symboli (w dniach)
string. Opcjonalny. Użyj polecenia , gdy PublishSymbols = true && SymbolServerType = TeamServices. Wartość domyślna: 36530.

Określa liczbę dni, w których symbole powinny być zachowywane.


IndexableFileFormats - Formaty plików symboli do opublikowania
string. Opcjonalny. Użyj polecenia , gdy PublishSymbols = true && SymbolServerType = TeamServices. Dozwolone wartości: Default (Domyślny zestaw symboli do przekazania), Pdb (tylko symbole oparte na pdb systemu Windows i zarządzane przenośne pliki pdb SourceMap ). (Tylko symbole SourceMap oparte na języku JavaScript (*.js.map)), All (wszystkie obsługiwane formaty symboli). Wartość domyślna: Default.

Określa, które formaty debugowania mają być publikowane na serwerze symboli.


DetailedLog - Pełne rejestrowanie
boolean. Wartość domyślna: true.

Określa pełne rejestrowanie.


TreatNotIndexedAsWarning - Ostrzegaj, jeśli nie został indeksowany
boolean. Wartość domyślna: false.

Określa, czy należy ostrzegać, czy źródła nie są indeksowane dla pliku PDB. W przeciwnym razie komunikaty są rejestrowane jako normalne dane wyjściowe.


UseNetCoreClientTool - Korzystanie z narzędzia klienckiego NetCore
boolean. Wartość domyślna: false.

Określa, czy używać wersji narzędzia do przekazywania symboli, które obsługuje pliki DWARF i ELF. Ta opcja ma znaczenie tylko dla agentów systemu Windows. W przypadku agentów innych niż Windows będzie zawsze używana wersja narzędzia do przekazywania symboli, które obsługuje pliki DWARF i ELF.


SymbolsMaximumWaitTime - Maksymalny czas oczekiwania (min)
string.

Określa liczbę minut oczekiwania przed niepowodzeniem tego zadania.


SymbolsProduct - Produktu
string.

Określa parametr produktu na symstore.exe. Wartość domyślna to $(Build.DefinitionName).


SymbolsVersion - Wersja
string.

Określa parametr wersji na symstore.exe. Wartość domyślna to $(Build.BuildNumber).


SymbolsArtifactName - Nazwa artefaktu
string. Wartość domyślna: Symbols_$(BuildConfiguration).

Określa nazwę artefaktu do użycia dla artefaktu symboli. Powinno to być używane tylko z typem serwera symboli FileShare. Wartość domyślna to Symbols_$(BuildConfiguration).


Opcje sterowania zadania

Wszystkie zadania mają opcje sterowania oprócz danych wejściowych zadań. Aby uzyskać więcej informacji, zobacz Opcje sterowania i typowe właściwości zadań.

Zmienne wyjściowe

Brak.

Uwagi

To zadanie służy do indeksowania kodu źródłowego i publikowania symboli w udziale plików lub serwerze symboli usługi Azure Artifacts.

Indeksowanie kodu źródłowego umożliwia użycie plików symboli do debugowania aplikacji na maszynie innej niż użyta do skompilowania aplikacji. Można na przykład debugować aplikację utworzoną przez agenta kompilacji z maszyny deweloperów, która nie ma kodu źródłowego.

Serwery symboli umożliwiają debugerowi automatyczne pobieranie prawidłowych plików symboli bez znajomości nazw produktów, numerów kompilacji lub nazw pakietów.

Ważne

Aby usunąć symbole opublikowane przy użyciu zadania Źródła indeksu & Publikuj symbole , należy najpierw usunąć kompilację, która wygenerowała te symbole. Można to zrobić przy użyciu zasad przechowywania lub ręcznie usuwając przebieg.

Jak działa indeksowanie?

Po wybraniu indeksowania źródeł dodatkowa sekcja zostanie wstrzyknięta do plików PDB. Pliki PDB zwykle zawierają odwołania do lokalnych ścieżek plików źródłowych, na przykład: C:\BuildAgent_work\1\src\MyApp\Program.cs. Dodatkowa sekcja wstrzyknięta do pliku PDB zawiera instrukcje mapowania debugerów. Informacje o mapowaniu wskazują sposób pobierania elementu serwera odpowiadającego każdej ścieżce lokalnej.

Debuger programu Visual Studio użyje informacji o mapowaniu, aby pobrać plik źródłowy z serwera. Rzeczywiste polecenie pobierania pliku źródłowego jest uwzględniane w informacjach o mapowaniu. Przykład:

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

Czy można używać indeksowania źródłowego na przenośnym pliku PDB utworzonym na podstawie zestawu platformy .NET Core?

Nie, ale zamiast tego można użyć Source Link.

Jak długo są zachowywane symbole?

Symbole są skojarzone z kompilacją opublikowaną w usłudze Azure Pipelines, którą są skojarzone z kompilacją. Gdy kompilacja zostanie usunięta ręcznie lub przy użyciu zasad przechowywania, symbole również zostaną usunięte. Jeśli chcesz zachować symbole na czas nieokreślony, oznacz kompilację jako Zachowaj w nieskończoność.

Wymagania

Wymaganie Opis
Typy potoków YAML, klasyczna kompilacja
Działa w Agent, DeploymentGroup
Wymagania Brak
Możliwości To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu.
Ograniczenia poleceń Dowolne
Zmienne ustawialne Dowolne
Wersja agenta 2.144.0 lub nowsza
Kategoria zadania Kompilacja
Wymaganie Opis
Typy potoków YAML, klasyczna kompilacja
Działa w Agent, DeploymentGroup
Wymagania Brak
Możliwości To zadanie nie spełnia żadnych wymagań dotyczących kolejnych zadań w zadaniu.
Ograniczenia poleceń Dowolne
Zmienne ustawialne Dowolne
Wersja agenta 1.95.0 lub nowsza
Kategoria zadania Kompilacja

Zobacz też