Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługi Azure DevOps | Azure DevOps Server | Azure DevOps Server 2022
W tym artykule opisano sposób pracy z projektami platformy .NET Core przy użyciu usługi Azure Pipelines. W tym artykule przedstawiono następujące zadania:
- Utwórz aplikację internetową platformy .NET Core i przekaż ją do repozytorium GitHub.
- Utwórz projekt usługi Azure DevOps i potok usługi Azure Pipelines do kompilowania projektu.
- Skonfiguruj środowisko kompilacji przy użyciu własnych agentów.
- Przywróć zależności, skompiluj projekt i przetestuj je za pomocą zadania platformy .NET Core (
DotNetCoreCLI@2) lub skryptu. - Użyj zadania .NET Core (
DotNetCoreCLI@2), aby dodać inne polecenia zestawu .NET SDK do potoku. - Użyj zadania Publikuj wyniki pokrycia kodu (
Publish code coverage results v2), aby opublikować wyniki pokrycia kodu. - Spakuj i dostarcz wyniki kompilacji do potoku, źródła NuGet, archiwum ZIP lub innych lokalizacji docelowych.
- Utwórz aplikację internetową platformy .NET Core i przekaż ją do repozytorium GitHub.
- Utwórz projekt usługi Azure DevOps i potok usługi Azure Pipelines, aby skompilować ten projekt.
- Skonfiguruj środowisko kompilacji przy użyciu agentów hostowanych przez firmę Microsoft lub własnych.
- Przywróć zależności, skompiluj projekt i przetestuj je za pomocą zadania platformy .NET Core (
DotNetCoreCLI@2) lub skryptu. - Użyj zadania .NET Core (
DotNetCoreCLI@2), aby dodać do potoku inne polecenia pakietu SDK platformy .NET. - Użyj zadania Publikuj wyniki pokrycia kodu (
Publish code coverage results v2), aby opublikować wyniki pokrycia kodu. - Spakuj i dostarcz wyniki kompilacji do potoku, źródła pakietów NuGet, archiwum ZIP lub innych lokalizacji docelowych.
Uwaga
Aby pracować z projektami programu .NET Framework, zobacz Tworzenie aplikacji ASP.NET za pomocą programu .NET Framework.
Wymagania wstępne
Aby wykonać wszystkie procedury opisane w tym artykule, potrzebne są następujące wymagania wstępne:
- Organizacja usługi Azure DevOps. Możesz utworzyć go bezpłatnie.
- Członkostwo w grupie Project Administrators w organizacji, co umożliwia tworzenie projektów Azure DevOps i przyznawanie potokom dostępu do projektów. Właściciele organizacji usługi Azure DevOps automatycznie mają to członkostwo.
- Projekt usługi Azure DevOps w organizacji. Utwórz projekt w usłudze Azure DevOps.
- Możliwość uruchamiania potoków na agentach hostowanych przez firmę Microsoft. Włącz warstwę Bezpłatna lub kup zadanie równoległe.
- Rola Administrator lub Twórca dla połączeń usług, które można przypisać jako administrator projektu.
- Konto i repozytorium GitHub .
Aby wykonać wszystkie procedury opisane w tym artykule, potrzebne są następujące wymagania wstępne:
- Kolekcja usługi Azure DevOps.
- Projekt usługi Azure DevOps utworzony w organizacji. Aby uzyskać instrukcje, zobacz Tworzenie projektu w usłudze Azure DevOps.
- Członkostwo w grupie Project Administrators, co umożliwia tworzenie projektów Azure DevOps i udzielanie potokom dostępu do projektów. Właściciele organizacji usługi Azure DevOps automatycznie mają to członkostwo.
- Rola Administrator lub Twórca dla połączeń usług, które można przypisać jako administrator projektu.
- Konto i repozytorium GitHub .
Tworzenie projektu platformy .NET i przekazywanie go do usługi GitHub
Jeśli chcesz użyć projektu platformy .NET, który znajduje się już w repozytorium GitHub, możesz pominąć tę sekcję.
Jeśli nie masz projektu platformy .NET do pracy, utwórz nowy na komputerze lokalnym w następujący sposób:
- Zainstaluj zestaw .NET 8.0 SDK lub upewnij się, że jest zainstalowany.
- Otwórz okno terminalu na komputerze lokalnym.
- Utwórz katalog projektu i przejdź do niego.
- Utwórz nową aplikację internetową platformy .NET 8, uruchamiając polecenie
dotnet new webapp -f net8.0. - Skompiluj i uruchom aplikację lokalnie przy użyciu polecenia
dotnet run. - Po uruchomieniu aplikacji naciśnij Ctrl+C, aby ją zamknąć.
- Przekaż lub połącz projekt lokalny z repozytorium GitHub.
Stwórz potok
Jeśli masz potok, którego chcesz użyć, możesz pominąć tę sekcję. W przeciwnym razie można użyć albo edytora potoku YAML, albo edytora klasycznego do utworzenia potoku.
W projekcie usługi Azure DevOps wybierz pozycję Potoki z menu nawigacji po lewej stronie.
Wybierz pozycję Nowy potok lub Utwórz potok , jeśli ten potok jest pierwszym w projekcie.
Na ekranie Gdzie jest twój kod wybierz pozycję GitHub.
Być może nastąpi przekierowanie do usługi GitHub w celu zalogowania się. Jeśli tak, wprowadź swoje dane logowania do GitHub.
Na ekranie Wybieranie repozytorium wybierz repozytorium, w których znajduje się aplikacja .NET.
Możesz zostać przekierowany do usługi GitHub, aby zainstalować aplikację Azure Pipelines. Jeśli tak, wybierz pozycję Zatwierdź i zainstaluj.
Na karcie Konfigurowanie wybierz pozycję Pokaż więcej , a następnie wybierz szablon potoku ASP.NET Core z listy. Ten szablon zawiera wiele kroków i ustawień opisanych w tym artykule.
Możesz również wybrać pozycję Potok startowy na karcie Konfigurowanie , aby rozpocząć od minimalnej liczby potoków i dodać kroki i ustawienia samodzielnie.
Na karcie Przegląd sprawdź kod YAML. Plik można dostosować pod kątem wymagań. Można na przykład określić inną pulę agentów lub dodać zadanie, aby zainstalować inny zestaw .NET SDK.
W projekcie usługi Azure DevOps wybierz pozycję Potoki z menu nawigacji po lewej stronie.
Wybierz pozycję Nowy potok lub Utwórz potok , jeśli ten potok jest pierwszym w projekcie.
Wybierz typ repozytorium źródłowego. W tym przykładzie użyj usługi GitHub Enterprise Server.
Na następnym ekranie wprowadź następujące informacje:
- Adres URL konta usługi GitHub, na przykład
https://github.com/myname. - Osobisty token dostępu (PAT) w usłudze GitHub.
- Nazwa połączenia z usługą, na przykład
my-github.
- Adres URL konta usługi GitHub, na przykład
Wybierz pozycję Utwórz.
Wybierz repozytorium GitHub.
Na karcie Konfigurowanie wybierz pozycję Pokaż więcej i wybierz szablon potoku ASP.NET Core z listy. Ten szablon zawiera wiele kroków i ustawień opisanych w tym artykule.
Sprawdź nowy kod potoku YAML. Plik YAML można dostosować pod kątem wymagań. Możesz na przykład dodać zadanie, aby zainstalować inny zestaw .NET SDK lub przetestować i opublikować projekt.
Gdy wszystko będzie gotowe, wybierz pozycję Zapisz i uruchom.
Opcjonalnie zmodyfikuj komunikat zatwierdzenia, a następnie ponownie wybierz Zapisz i uruchom.
Na karcie Podsumowanie wybierz zadanie w sekcji Zadania , aby obejrzeć potok w akcji.
Masz teraz działający potok przetwarzania gotowy do dostosowania.
Konfigurowanie środowiska kompilacji
Usługa Azure Pipelines używa własnych agentów do kompilowania projektu platformy .NET Core. Możesz użyć zestawu .NET Core SDK i środowiska uruchomieniowego w agentach systemu Windows, Linux, macOS lub Docker . Upewnij się, że masz wymaganą wersję zestawu .NET Core SDK i środowiska uruchomieniowego zainstalowanego na agentach.
Aby zainstalować określoną wersję pakietu SDK platformy .NET, dodaj zadanie UseDotNet@2 do pliku potoku YAML lub zadanie Use .NET Core w edytorze klasycznym.
Uwaga
W przypadku agentów działających na systemach fizycznych instalowanie zestawów SDK i narzędzi za pośrednictwem potoku zmienia środowisko kompilacji na hoście agenta.
Poniższy przykładowy fragment kodu YAML instaluje zestaw .NET SDK 8.0.x:
steps:
- task: UseDotNet@2
inputs:
version: '8.x'
Aby zainstalować nowszy zestaw SDK, ustaw wartość performMultiLevelLookuptrue.
steps:
- task: UseDotNet@2
displayName: 'Install .NET Core SDK'
inputs:
version: 8.x
performMultiLevelLookup: true
includePreviewVersions: true # Required for preview versions
Możesz wybrać pulę agentów i agenta na potrzeby zadania budowania. Można również określić agentów na podstawie ich możliwości. Na przykład poniższy fragment potoku YAML wybiera pulę i możliwości agenta.
pool:
name: myPrivateAgents
demands:
- agent.os -equals Darwin
- anotherCapability -equals somethingElse
Projekty platformy .NET Core można tworzyć przy użyciu zestawu .NET Core SDK i środowiska uruchomieniowego dla systemów Windows, Linux lub macOS. Domyślnie kompilacje są uruchamiane na agentach hostowanych przez firmę Microsoft, więc nie trzeba konfigurować infrastruktury.
Agenci hostowani przez Microsoft w Azure Pipelines mają kilka wstępnie zainstalowanych wersji obsługiwanych zestawów SDK platformy .NET Core. Zobacz Agenci hostowani przez firmę Microsoft , aby uzyskać pełną listę dostępnych obrazów i przykładów konfiguracji.
Poniższy fragment kodu potoku YAML ustawia system operacyjny Ubuntu dla puli agentów.
pool:
vmImage: 'ubuntu-latest'
Agenci hostowani przez firmę Microsoft nie obejmują niektórych starszych wersji zestawu .NET Core SDK i zazwyczaj nie zawierają wersji wstępnych. Jeśli potrzebujesz tych wersji zestawu SDK na agentach hostowanych przez firmę Microsoft, możesz je zainstalować przy użyciu zadania Use DotNet (UseDotNet@2).
Na przykład następujący kod instaluje zestaw SDK platformy .NET 8.0.x:
steps:
- task: UseDotNet@2
inputs:
version: '8.x'
Agenci systemu Windows zawierają już środowisko uruchomieniowe platformy .NET Core. Aby zainstalować nowszy zestaw SDK, ustaw wartość performMultiLevelLookup na true tak, jak w poniższym fragmencie kodu:
steps:
- task: UseDotNet@2
displayName: 'Install .NET Core SDK'
inputs:
version: 8.x
performMultiLevelLookup: true
includePreviewVersions: true # Required for preview versions
Agenci hostowani samodzielnie
Alternatywnie możesz użyć własnych agentów do kompilowania projektów platformy .NET Core. Można skonfigurować agenty hostowane samodzielnie dla systemów Linux, macOS lub Windows.
Za pomocą samodzielnie hostowanych agentów można:
- Unikaj kosztów uruchamiania
UseDotNet@2instalatora narzędzi. - Zmniejsz czas kompilacji, jeśli masz duże repozytorium.
- Uruchamianie kompilacji przyrostowych.
- Użyj zestawów SDK w wersji zapoznawczej lub prywatnych, których firma Microsoft nie obsługuje oficjalnie.
- Używaj zestawów SDK dostępnych tylko w środowiskach firmowych lub lokalnych.
Aby uzyskać więcej informacji, zobacz Agenci hostowani samodzielnie.
Przywracanie zależności
Pakiety NuGet umożliwiają projektowi korzystanie z kodu, który nie jest kompilowany. Uruchom polecenie , dotnet restore aby pobrać pakiety NuGet i narzędzia specyficzne dla projektu. To polecenie można uruchomić za pomocą zadania .NET Core (DotNetCoreCLI@2) lub jako skryptu w potoku. Polecenie dotnet restore używa NuGet.exe spakowanego za pomocą zestawu .NET Core SDK i może przywracać tylko pakiety określone w plikach *.csproj projektu .NET Core.
Użyj zadania .NET Core (DotNetCoreCLI@2), aby pobrać i przywrócić pakiety NuGet z usługi Azure Artifacts, NuGet.org lub innego uwierzytelnionego zewnętrznego lub wewnętrznego repozytorium NuGet. Jeśli źródło danych NuGet znajduje się w tym samym projekcie co potok, nie musisz się uwierzytelniać. Aby uzyskać więcej informacji, zobacz .NET Core task (DotNetCoreCLI@2).
W przypadku korzystania z agentów hostowanych przez firmę Microsoft otrzymujesz nową maszynę za każdym razem, gdy uruchamiasz kompilację, która przywraca pakiety przy każdym uruchomieniu. Przywracanie może zająć znaczną ilość czasu. Aby rozwiązać ten problem, użyj usługi Azure Artifacts lub własnego agenta , aby skorzystać z pamięci podręcznej pakietu.
Poniższy potok używa DotNetCoreCLI@2 zadania do przywrócenia źródła danych usługi Azure Artifact.
trigger:
- main
pool:
vmImage: 'windows-latest'
steps:
- task: UseDotNet@2
displayName: 'Install .NET Core SDK'
inputs:
version: 8.x
performMultiLevelLookup: true
includePreviewVersions: true # Required for preview versions
variables:
buildConfiguration: 'Release'
steps:
- task: DotNetCoreCLI@2
inputs:
command: 'restore'
feedsToUse: 'select'
vstsFeed: 'my-vsts-feed' # A series of numbers and letters
- task: DotNetCoreCLI@2
inputs:
command: 'build'
arguments: '--configuration $(buildConfiguration)'
displayName: 'dotnet build $(buildConfiguration)'
Platforma .NET automatycznie przywraca pakiety podczas uruchamiania poleceń, takich jak dotnet build. Nadal musisz użyć zadania .NET Core (DotNetCoreCLI@2), aby przywrócić pakiety, jeśli używasz uwierzytelnionego źródła danych.
Zarządzaj poświadczeniami dla uwierzytelnionego źródła, tworząc połączenie usługi NuGet w Ustawieniach projektu>Potoki>Połączenia usług. Aby uzyskać więcej informacji na temat połączeń usługi NuGet, zobacz Publikowanie pakietów NuGet za pomocą usługi Azure Pipelines.
Przywracanie pakietów z NuGet.org
Aby przywrócić pakiety z NuGet.org, zaktualizuj potok w następujący sposób.
Możesz dodać polecenie restore do potoku, edytując bezpośrednio kod YAML lub za pomocą asystenta zadań.
Dodaj zadanie .NET Core (DotNetCoreCLI@2) bezpośrednio, wstawiając poniższy fragment kodu do pliku azure-pipelines.yml przed zadaniami kompilacji.
steps:
- task: DotNetCoreCLI@2
displayName: Restore
inputs:
command: restore
projects: '**/*.csproj'
feedsToUse: select
Aby użyć asystenta zadań:
- Przejdź do pozycji w pliku YAML, w którym chcesz wstawić zadanie.
- Wybierz pozycję .NET Core z katalogu zadań.
- Na ekranie konfiguracji wybierz pozycję Przywróć z listy rozwijanej Polecenie .
- W polu Ścieżka do projektów lub rozwiązań wprowadź ścieżkę do plików *.csproj . Symbol wieloznaczny **/*.csproj można używać dla wszystkich plików *.csproj we wszystkich podfolderach.
- Dla Źródeł do dodania upewnij się, że zaznaczone są opcje Źródła wybrane przeze mnie tutaj i Użyj pakietów z NuGet.org.
- Wybierz Dodaj.
- Wybierz pozycję Zweryfikuj i zapisz, a następnie wybierz pozycję Zapisz , aby zatwierdzić zmianę.
Przywracanie pakietów z zewnętrznego źródła danych
Aby określić zewnętrzne repozytorium NuGet, umieść adres URL w pliku NuGet.config w repozytorium. Upewnij się, że w pliku NuGet.config określono dowolne źródło danych niestandardowych i że poświadczenia są określone w połączeniu usługi NuGet.
Aby przywrócić pakiety z zewnętrznego źródła danych, dodaj restore zadanie zgodnie z instrukcjami w poprzedniej sekcji, ale zmień ustawienia konfiguracji w następujący sposób:
Dodaj zadanie .NET Core (DotNetCoreCLI@2) bezpośrednio, wstawiając poniższy fragment kodu do pliku azure-pipelines.yml przed zadaniami kompilacji. Zastąp <NuGet service connection> nazwą połączenia usługi.
steps:
- task: DotNetCoreCLI@2
displayName: Restore
inputs:
command: restore
projects: '**/*.csproj'
feedsToUse: config
nugetConfigPath: NuGet.config # Relative to root of the repository
externalFeedCredentials: <NuGet service connection>
Aby użyć asystenta zadań:
- Dodaj zadanie .NET Core i wybierz pozycję Przywróć na ekranie konfiguracji, tak jak w poprzedniej procedurze.
- Aby dodać kanały informacyjne, wybierz pozycję Kanały informacyjne w NuGet.config.
- W polu Ścieżka do NuGet.config wprowadź ścieżkę do pliku NuGet.config względem katalogu głównego swojego repozytorium. Możesz wybrać wielokropek ... obok pola, do którego chcesz przejść, i wybrać lokalizację.
- W obszarze Poświadczenia dla źródeł danych spoza tej organizacji/kolekcji wybierz poświadczenia do użycia dla rejestrów zewnętrznych w wybranym pliku NuGet.config . W przypadku kanałów informacyjnych w tej samej organizacji pozostaw to pole puste. Dane logowania kompilacji są używane automatycznie.
Przywracanie pakietów dla projektów programu .NET Framework
Jeśli rozwiązanie zawiera projekt .NET Framework lub używasz package.json do określania zależności, użyj zadania NuGetCommand@2 , aby przywrócić te zależności.
- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: '**/*.sln'
feedsToUse: 'select'
Uwaga
W przypadku systemu Ubuntu 24.04 lub nowszego należy użyć zadania NuGetAuthenticate zamiast zadania NuGetCommand@2 z interfejsem wiersza polecenia platformy .NET. Aby uzyskać więcej informacji, zobacz Obsługa nowszych obrazów hostowanych w systemie Ubuntu.
Zbuduj swój projekt
Skompiluj swój projekt .NET Core, uruchamiając polecenie dotnet build. Polecenie można dodać do potoku za pomocą zadania .NET Core (DotNetCoreCLI@2) lub jako skrypt wiersza polecenia.
Użyj zadania .NET Core
Zadanie kompilacji można dodać przy użyciu edytora potoku YAML. Możesz bezpośrednio edytować plik lub użyć asystenta zadań.
Dodaj zadanie .NET Core (DotNetCoreCLI@2) bezpośrednio, wstawiając poniższy fragment kodu. Zaktualizuj arguments, aby dopasować go do swoich potrzeb.
steps:
- task: DotNetCoreCLI@2
displayName: Build
inputs:
command: build
projects: '**/*.csproj'
arguments: '--configuration $(buildConfiguration)'
Aby użyć asystenta zadań:
- Przejdź do pozycji w pliku YAML, w którym chcesz wstawić zadanie.
- Wybierz zadanie .NET Core (
DotNetCoreCLI@2). - Wybierz opcję kompilacja z listy rozwijanej Polecenie.
- W polu Ścieżka do projektów lub rozwiązań wprowadź ścieżkę do plików *.csproj . Symbol wieloznaczny **/*.csproj można używać dla wszystkich plików *.csproj we wszystkich podfolderach.
- Wybierz Dodaj.
- Wybierz pozycję Zapisz , aby zatwierdzić zmianę.
Kompilowanie platformy .NET Core za pomocą skryptu wiersza polecenia
Możesz również skompilować przy użyciu skryptu wiersza polecenia.
Aby dodać wiersz polecenia kompilacji, bezpośrednio edytując plik YAML, dodaj następujący kod:
steps:
- script: dotnet build --configuration $(buildConfiguration)
displayName: 'dotnet build $(buildConfiguration)'
Możesz również użyć asystenta zadań, aby dodać zadanie Wiersz polecenia.
- Przejdź do pozycji w pliku YAML, w którym chcesz wstawić zadanie.
- Wybierz z listy zadanie Wiersz polecenia (
CmdLine@2). - W polu Skrypt wprowadź
dotnet buildpolecenie z parametrami. Na przykładdotnet build --configuration $(buildConfiguration). - W obszarze Zaawansowany>katalog roboczy wprowadź ścieżkę do pliku *.csproj jako katalogu roboczego. Jeśli pozostawisz to pole puste, katalog roboczy domyślnie ma wartość
$(Build.SourcesDirectory). - Wybierz Dodaj.
- Wybierz pozycję Zapisz , aby zatwierdzić zmianę.
Dodawanie innych poleceń zestawu .NET SDK do potoku
Do potoku można dodać inne polecenia zestawu SDK platformy .NET za pomocą zadania .NET Core (DotNetCoreCLI@2) lub skryptów.
Dodaj polecenie .NET CLI za pomocą zadania .NET Core
Zadanie .NET Core (DotNetCoreCLI@2) umożliwia łatwe dodawanie poleceń interfejsu wiersza polecenia platformy .NET do potoku. Zadania platformy .NET Core (DotNetCoreCLI@2) można dodawać, edytując plik YAML lub za pomocą edytora klasycznego.
Aby dodać polecenie .NET Core przy użyciu asystenta poleceń w edytorze potoku YAML, wykonaj następujące kroki:
- Przejdź do pozycji w pliku YAML, w którym chcesz wstawić zadanie.
- Wybierz pozycję .NET Core z katalogu zadań.
- Wybierz polecenie, które chcesz uruchomić z listy rozwijanej w polu Polecenie .
- Skonfiguruj wszystkie potrzebne opcje.
- Wybierz Dodaj.
- Wybierz pozycję Zapisz , aby zatwierdzić zmianę.
Dodaj polecenie interfejsu wiersza polecenia .NET Core w skrypcie
Dodaj polecenie .NET Core CLI jako script w pliku azure-pipelines.yml. Przykład:
steps:
# ...
- script: dotnet test <test-project>
Instalowanie narzędzia
Aby zainstalować narzędzie globalne platformy .NET Core, takie jak dotnetsay w kompilacji uruchomionej w systemie Windows, dodaj zadanie platformy .NET Core i ustaw następujące właściwości w konfiguracji:
- Polecenie: niestandardowe
- Ścieżka do projektów: pozostaw puste
-
Polecenie niestandardowe:
tool -
Argumenty:
install -g dotnetsay
Aby uruchomić narzędzie, dodaj zadanie Wiersz polecenia i wprowadź dotnetsay w polu Skrypt.
Uruchamianie testów
Gdy repozytorium zawiera projekty testowe, użyj zadania .NET Core (DotNetCoreCLI@2), aby uruchamiać testy jednostkowe przy użyciu struktur testowych, takich jak MSTest, xUnit i NUnit. Projekt testowy musi odwoływać się do zestawu Microsoft.NET.Test.SDK w wersji 15.8.0 lub nowszej.
Usługa automatycznie publikuje wyniki testów. Można je zobaczyć w podsumowaniu kompilacji. Skorzystaj z wyników testu, aby rozwiązać problemy z testami, które zakończyły się niepowodzeniem, i przeanalizować czas testu.
Aby dodać zadanie testowe do potoku, dodaj następujący fragment kodu do pliku azure-pipelines.yml :
steps:
# ...
# do this after other tasks such as build
- task: DotNetCoreCLI@2
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration)'
Jeśli używasz asystenta zadań do dodawania zadania .NET Core (DotNetCoreCLI@2), ustaw następujące właściwości:
- Polecenie: test
- Ścieżka do projektów: ustaw ścieżkę do projektów testowych w rozwiązaniu
-
Argumenty:
--configuration $(BuildConfiguration)
Alternatywnie, uruchom polecenie dotnet test z określonym rejestratorem, a następnie użyj zadania PublishTestResults@2.
steps:
# ...
# do this after your tests run
- script: dotnet test <test-project> --logger trx
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testRunner: VSTest
testResultsFiles: '**/*.trx'
Zbieranie pokrycia kodu
Podczas kompilacji na platformie Windows można zbierać metryki pokrycia kodu przy użyciu wbudowanego modułu zbierającego dane pokrycia. Projekt testowy musi odwoływać się do zestawu Microsoft.NET.Test.SDK w wersji 15.8.0 lub nowszej.
Gdy korzystasz z zadania .NET Core (DotNetCoreCLI@2) do uruchamiania testów, pipeline automatycznie publikuje dane dotyczące pokrycia kodu na serwerze. Możesz pobrać plik *.coverage z podsumowania kompilacji, aby wyświetlić go w programie Visual Studio.
Aby zbierać informacje o pokryciu kodu, dodaj argument --collect "Code Coverage" podczas dodawania zadania testowego do potoku.
steps:
# ...
# do this after other tasks such as build
- task: DotNetCoreCLI@2
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration) --collect "Code Coverage"'
Jeśli używasz asystenta zadań do dodawania zadania .NET Core (DotNetCoreCLI@2), ustaw następujące właściwości:
- Polecenie: test
- Ścieżka do projektów: Ustaw ścieżkę do projektów testowych w rozwiązaniu
-
Argumenty:
--configuration $(BuildConfiguration) --collect "Code Coverage"
Upewnij się, że opcja Publikuj wyniki testu pozostaje zaznaczona.
Alternatywnie, aby zebrać wyniki pokrycia kodu za pomocą polecenia dotnet test z określonym rejestratorem danych, a następnie uruchomić zadanie PublishTestResults@2, użyj następującego kodu:
steps:
# ...
# do this after your tests run
- script: dotnet test <test-project> --logger trx --collect "Code Coverage"
- task: PublishTestResults@2
inputs:
testRunner: VSTest
testResultsFiles: '**/*.trx'
Zbierz metryki pokrycia kodu za pomocą Coverlet
W przypadku kompilacji w systemie Linux lub macOS użyj rozwiązania Coverlet lub podobnego narzędzia, aby zebrać metryki pokrycia kodu.
Wyniki pokrycia kodu można opublikować na serwerze za pomocą zadania Publikuj wyniki pokrycia kodu (PublishCodeCoverageResults@2). Należy skonfigurować narzędzie pokrycia, aby wygenerować wyniki w formacie pokrycia Cobertura lub JaCoCo.
Aby uruchomić testy i opublikować raport pokrycia kodu przy użyciu narzędzia Coverlet:
- Dodaj odwołanie do
coverlet.collectorpakietu NuGet. - Dodaj następujący fragment kodu do pliku azure-pipelines.yml . Nie dodawaj dodatkowych
DataCollectionRunSettingsargumentów, ponieważXPlat Code Coveragemoduł zbierający tworzy już raport Cobertura.
- task: UseDotNet@2
inputs:
version: '8.x'
- task: DotNetCoreCLI@2
displayName: 'dotnet build'
inputs:
command: 'build'
arguments: '--configuration $(buildConfiguration)'
- task: DotNetCoreCLI@2
displayName: 'dotnet test'
inputs:
command: 'test'
arguments: '--configuration $(buildConfiguration) --collect:"XPlat Code Coverage"'
publishTestResults: true
projects: '<test project directory>'
- task: PublishCodeCoverageResults@2
displayName: 'Publish code coverage report'
inputs:
summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml'
Pakietowanie i dostarczanie kodu
Aby spakować i dostarczyć dane wyjściowe kompilacji, możesz:
- Publikowanie artefaktów kompilacji w usłudze Azure Pipelines.
- Utwórz pakiet NuGet i opublikuj go w kanale informacyjnym NuGet.
- Opublikuj pakiet NuGet w usłudze Azure Artifacts.
- Utwórz archiwum ZIP do wdrożenia w aplikacji internetowej.
- Publikowanie symboli na serwerze symboli usługi Azure Artifacts lub w udziale plików.
Możesz również utworzyć obraz dla aplikacji i wypchnąć go do rejestru kontenerów.
Publikowanie artefaktów w usłudze Azure Pipelines
Aby opublikować dane wyjściowe kompilacji platformy .NET w potoku, wykonaj następujące kroki:
- Uruchom
dotnet publish --output $(Build.ArtifactStagingDirectory)przy użyciu interfejsu wiersza polecenia .NET lub dodaj zadanie .NET Core (DotNetCoreCLI@2) za pomocą polecenia publish. - Użyj zadania Publikowanie artefaktu potoku (PublishPipelineArtifact@1), aby opublikować artefakt. To zadanie przesyła wszystkie pliki z
$(Build.ArtifactStagingDirectory)jako artefakt Twojej kompilacji.
Dodaj następujący kod do pliku azure-pipelines.yml :
steps:
- task: DotNetCoreCLI@2
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)'
artifactName: 'myWebsite'
Aby skopiować więcej plików do katalogu kompilacji przed opublikowaniem, użyj zadania Kopiuj pliki (CopyFile@2).
Uwaga
Parametr wejściowy publishWebProjects w zadaniu .NET Core (DotNetCoreCLI@2) jest domyślnie ustawiony na true i publikuje wszystkie projekty internetowe w repozytorium. Aby uzyskać więcej informacji, zobacz repozytorium GitHub azure-pipelines-tasks .
Aby opublikować wyniki kompilacji .NET w potoku, wykonaj następujące czynności:
- Uruchom
dotnet publish --output $(Build.ArtifactStagingDirectory)przy użyciu interfejsu wiersza polecenia platformy .NET lub dodaj zadanie .NET Core (DotNetCoreCLI@2) za pomocą polecenia publish. - Opublikuj artefakt przy użyciu zadania Publikowanie artefaktu kompilacji (PublishBuildArtifacts@1).
Poniższy kod azure-pipelines.yml również publikuje artefakty kompilacji jako plik ZIP. Zadanie PublishBuildArtifacts@1 przesyła wszystkie pliki w $(Build.ArtifactStagingDirectory) jako artefakt Twojej kompilacji.
steps:
- task: DotNetCoreCLI@2
inputs:
command: publish
publishWebProjects: true
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
Aby uzyskać więcej informacji, zobacz Publikowanie i pobieranie artefaktów kompilacji.
Opublikuj w kanale NuGet
Aby utworzyć pakiet NuGet i opublikować go w kanale informacyjnym NuGet, dodaj następujący fragment kodu do pliku azure-pipelines.yml :
steps:
# ...
# do this near the end of your pipeline
- script: dotnet pack /p:PackageVersion=$(version) # define the version variable elsewhere in your pipeline
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: '<NuGet service connection>'
- task: NuGetCommand@2
inputs:
command: push
nuGetFeedType: external
publishFeedCredentials: '<NuGet service connection>'
versioningScheme: byEnvVar
versionEnvVar: version
Uwaga
Zadanie NuGetAuthenticate@1 nie obsługuje uwierzytelniania za pomocą klucza API usługi NuGet. Jeśli używasz klucza API NuGet, użyj zadania NuGetCommand@2, ustawiając parametr wejściowy command na push i używając argumentu --api-key. Na przykład dotnet nuget push --api-key $(NuGetApiKey).
Aby uzyskać więcej informacji na temat przechowywania wersji i publikowania pakietów NuGet, zobacz Publikowanie pakietów NuGet za pomocą usługi Azure Pipelines.
Publikowanie pakietu NuGet w usłudze Azure Artifacts
Pakiety NuGet można opublikować w kanale informacyjnym usługi Azure Artifacts przy użyciu zadania NuGetCommand@2 . Aby uzyskać więcej informacji, zobacz Publikowanie pakietów NuGet za pomocą usługi Azure Pipelines.
Publikowanie archiwum pliku ZIP w aplikacji internetowej
Aby utworzyć archiwum plików ZIP, które jest gotowe do opublikowania w aplikacji internetowej, dodaj następujący fragment kodu do azure-pipelines.yml. Uruchom to zadanie po utworzeniu aplikacji w pobliżu końca potoku w większości przypadków. Na przykład uruchom to zadanie przed wdrożeniem do aplikacji internetowej Azure w systemie Windows.
steps:
# ...
- task: DotNetCoreCLI@2
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
Aby opublikować to archiwum w aplikacji internetowej, zobacz Wdrażanie usługi Azure Web Apps.
Opublikuj symbole
Za pomocą PublishSymbols@2 zadania można publikować symbole na serwerze symboli usługi Azure Artifacts lub w udziale plików. Aby uzyskać więcej informacji, zobacz Publikowanie symboli.
Aby na przykład opublikować symbole w udziale plików, dodaj następujący fragment kodu do pliku azure-pipelines.yml :
- task: PublishSymbols@2
inputs:
SymbolsFolder: '$(Build.SourcesDirectory)'
SearchPattern: '**/bin/**/*.pdb'
IndexSources: true
PublishSymbols: true
SymbolServerType: 'FileShare'
SymbolsPath: '\\<server>\<shareName>'
Aby użyć edytora klasycznego, dodaj do potoku zadanie Indeksuj źródła i opublikuj symbole .
Rozwiązywanie problemów
Jeśli projekt kompiluje się pomyślnie na komputerze lokalnym, ale nie w usłudze Azure Pipelines, zapoznaj się z następującymi potencjalnymi przyczynami i działaniami naprawczymi.
- Agenci hostowani przez firmę Microsoft nie mają zainstalowanych wersji wstępnych zestawu .NET Core SDK i wdrożenie nowej wersji zestawu SDK we wszystkich centrach danych usługi Azure Pipelines może potrwać kilka tygodni. Zamiast czekać na zakończenie wdrożenia, użyj zadania Użyj platformy .NET Core , aby zainstalować wersję zestawu .NET Core SDK, która ma być zainstalowana na agentach hostowanych przez firmę Microsoft.
Nowa wersja zestawu .NET Core SDK lub Visual Studio może spowodować przerwanie kompilacji. Może na przykład zawierać nowszą wersję lub funkcję narzędzia NuGet. Upewnij się, że wersje zestawu SDK platformy .NET Core oraz środowisko uruchomieniowe na komputerze programisty są takie same jak na agencie potoku.
Możesz dołączyć do swojego potoku
dotnet --versionskrypt wiersza polecenia, aby wyświetlić wersję zestawu SDK platformy .NET Core. Użyj Instalatora narzędzi platformy .NET Core , aby wdrożyć tę samą wersję na agencie, lub zaktualizuj projekty i maszynę programową do wersji potoku zestawu .NET Core SDK.Problemy z połączeniem mogą powodować sporadyczne niepowodzenie kompilacji podczas przywracania pakietów z NuGet.org. NuGet.org mogą występować problemy lub mogą występować problemy z siecią między centrum danych platformy Azure i NuGet.org. Możesz sprawdzić, czy użycie usługi Azure Artifacts ze źródłami nadrzędnymi w celu buforowania pakietów zwiększa niezawodność kompilacji.
Potok przetwarzania automatycznie używa swoich poświadczeń do połączenia z Azure Artifacts. Te poświadczenia zazwyczaj pochodzą z konta usługi Project Collection Build Service . Aby dowiedzieć się więcej na temat używania usługi Azure Artifacts do buforowania pakietów NuGet, zobacz Nawiązywanie połączenia z źródłami danych usługi Azure Artifact.
Być może używasz w Visual Studio logiki, która nie jest uwzględniona w Twoim potoku. Usługa Azure Pipelines uruchamia każde polecenie w zadaniu sekwencyjnie w nowym procesie. Sprawdź dzienniki z kompilacji potoków, aby wyświetlić dokładne polecenia uruchomione w kompilacji. Aby zlokalizować problem, powtórz te same polecenia w tej samej kolejności na maszynie dewelopera.
Jeśli masz mieszane rozwiązanie obejmujące niektóre projekty .NET Core i niektóre projekty programu .NET Framework, użyj zadania NuGet , aby przywrócić pakiety określone w plikach packages.config . Dodaj zadanie MSBuild lub Visual Studio Build, aby skompilować projekty programu .NET Framework.