Tworzenie, testowanie i wdrażanie aplikacji platformy .NET Core
Azure DevOps Services | Azure DevOps Server 2022 — Azure DevOps Server 2019
Użyj usługi Azure Pipeline, aby automatycznie kompilować, testować i wdrażać projekty platformy .NET Core. W tym artykule przedstawiono sposób wykonywania następujących zadań:
- 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.
- Przetestuj kod i użyj zadania publikowania pokrycia kodu, aby opublikować wyniki pokrycia kodu.
- Pakowanie i dostarczanie danych wyjściowych kompilacji do:
- potok.
- źródło danych NuGet.
.zip
plik do wdrożenia aplikacji internetowej na platformie Azure.
- 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.
- Przetestuj kod i użyj zadania publikowania pokrycia kodu, aby opublikować wyniki pokrycia kodu.
- Pakowanie i dostarczanie danych wyjściowych kompilacji do:
- potok.
- źródło danych NuGet.
.zip
plik do wdrożenia aplikacji internetowej na platformie Azure.
Uwaga
Aby uzyskać pomoc dotyczącą projektów .NET Framework, zobacz Tworzenie aplikacji ASP.NET za pomocą programu .NET Framework.
Wymagania wstępne
- Konto usługi GitHub, na którym można utworzyć repozytorium. Utwórz je bezpłatnie.
- Organizacja i projekt usługi Azure DevOps. Utwórz je bezpłatnie.
- Możliwość uruchamiania potoków na agentach hostowanych przez firmę Microsoft. Możesz kupić zadanie równoległe lub zażądać warstwy Bezpłatna.
- Konto usługi GitHub, na którym można utworzyć repozytorium. Utwórz je bezpłatnie.
- Kolekcja usługi Azure DevOps.
- Możliwość uruchamiania potoków na własnym agencie z zainstalowaną platformą Docker i uruchomioną na hoście agenta.
Tworzenie pierwszego potoku
Jesteś nowym użytkownikiem usługi Azure Pipelines? Jeśli tak, zalecamy najpierw wypróbowanie poniższej sekcji.
Tworzenie projektu platformy .NET
Jeśli nie masz projektu platformy .NET do pracy, utwórz nowy w systemie lokalnym. Zacznij od zainstalowania najnowszego zestawu .NET 8.0 SDK .
Otwórz okno terminalu.
Utwórz katalog projektu i przejdź do niego.
Utwórz nową aplikację internetową platformy .NET 8.
dotnet new webapp -f net8.0
W tej samej sesji terminalu uruchom aplikację lokalnie przy użyciu
dotnet run
polecenia z katalogu projektu.dotnet run
Po uruchomieniu aplikacji naciśnij Ctrl-C, aby ją zamknąć.
Tworzenie repozytorium Git i łączenie go z usługą GitHub
Z katalogu projektu utwórz lokalne repozytorium git i zatwierdź kod aplikacji do gałęzi głównej.
Tworzenie projektu DevOps
Zaloguj się do usługi Azure Pipelines. Po zalogowaniu przeglądarka przejdzie do https://dev.azure.com/my-organization-name
pulpitu nawigacyjnego usługi Azure DevOps i wyświetli go.
- W przeglądarce przejdź do dev.azure.com i zaloguj się.
- Wybierz organizację.
- Utwórz nowy projekt, wybierając pozycję Nowy projekt lub Utwórz projekt , tworząc pierwszy projekt w organizacji.
- Wprowadź nazwę projektu.
- Wybierz widoczność projektu.
- Wybierz pozycję Utwórz.
- W przeglądarce przejdź do serwera Usługi Azure DevOps.
- Wybierz kolekcję.
- Utwórz nowy projekt, wybierając pozycję Nowy projekt lub Utwórz projekt , tworząc pierwszy projekt w kolekcji.
- Wprowadź nazwę projektu.
- Wybierz widoczność projektu.
- Wybierz pozycję Utwórz.
- W oknie przeglądarki zaloguj się do serwera Usługi Azure DevOps i wybierz kolekcję.
- Wybierz pozycję Nowy projekt.
- Wprowadź nazwę projektu.
- Możesz również wprowadzić opis.
- Wybierz pozycję Utwórz.
Konfigurowanie środowiska kompilacji
Kompilacje są uruchamiane na własnych agentach. Upewnij się, że masz wymaganą wersję zestawu .NET Core SDK i środowiska uruchomieniowego zainstalowanego na agentach. Projekty platformy .NET Core można tworzyć przy użyciu zestawu .NET Core SDK i środowiska uruchomieniowego w systemach Windows, Linux, macOS i Docker.
Można zainstalować określoną wersję zestawu .NET SDK, dodając zadanie UseDotNet@2 w pliku YAML potoku lub dodając zadanie do potoku przy użyciu edytora klasycznego.
Przykładowy fragment kodu YAML:
steps:
- task: UseDotNet@2
inputs:
version: '8.x'
Kompilacje są uruchamiane na agentach hostowanych przez firmę Microsoft. Projekty platformy .NET Core można tworzyć przy użyciu zestawu .NET Core SDK i środowiska uruchomieniowego w systemach Windows, Linux i macOS.
Alternatywnie możesz użyć własnego agenta. Korzystając z własnego agenta, możesz użyć zestawów SDK w wersji zapoznawczej lub prywatnych, które nie są oficjalnie obsługiwane przez usługi Azure DevOps Services i uruchamiać kompilacje przyrostowe.
Tworzenie potoku
Do utworzenia potoku można użyć edytora potoku YAML lub edytora klasycznego. Aby użyć edytora klasycznego, wybierz pozycję Użyj edytora klasycznego.
Tworzenie nowego potoku i wybieranie źródła
Zaloguj się do organizacji usługi Azure DevOps i przejdź do projektu.
Przejdź do obszaru Potoki, a następnie wybierz pozycję Nowy potok lub Utwórz potok , jeśli tworzysz pierwszy potok.
Wykonaj kroki kreatora, wybierając najpierw usługę GitHub jako lokalizację kodu źródłowego.
Być może nastąpi przekierowanie do usługi GitHub w celu zalogowania się. Jeśli tak, wprowadź poświadczenia usługi GitHub.
Po wyświetleniu listy repozytoriów wybierz repozytorium.
Możesz zostać przekierowany do usługi GitHub, aby zainstalować aplikację Azure Pipelines. Jeśli tak, wybierz pozycję Zatwierdź i zainstaluj.
Konfigurowanie potoku
Po wyświetleniu karty Konfigurowanie wybierz pozycję Pokaż więcej i wybierz szablon potoku ASP.NET Core z listy.
Sprawdź nowy potok, aby zobaczyć, co robi YAML.
Plik YAML można dostosować pod kątem wymagań. Można na przykład określić pulę agentów lub dodać zadanie do zainstalowania innego zestawu .NET SDK.
Zapisywanie i uruchamianie potoku
Gdy wszystko będzie gotowe, wybierz pozycję Zapisz i uruchom.
Opcjonalnie możesz edytować komunikat zatwierdzenia.
Zatwierdź nowy plik azure-pipelines.yml do repozytorium, wybierając pozycję Zapisz i uruchom.
Aby obejrzeć potok w akcji, wybierz zadanie w sekcji Zadania .
Tworzenie i uruchamianie potoku
Potok można utworzyć przy użyciu edytora potoku YAML lub edytora klasycznego.
- Przejdź do projektu i wybierz pozycję Potoki.
- Wybierz pozycję Utwórz potok lub Nowy potok , jeśli utworzysz pierwszy potok dla tego projektu.
Wybierz źródło
Wybierz repozytorium źródłowe. W tym przykładzie użyj usługi GitHub Enterprise Server.
- Wprowadź adres URL konta usługi GitHub. Na przykład
https://github.com/<username>
. - Wprowadź osobisty token dostępu dla konta usługi GitHub.
- Wprowadź nazwę połączenia z usługą. Na przykład
my-github
. - Wybierz pozycję Utwórz.
- Wprowadź adres URL konta usługi GitHub. Na przykład
Wybierz repozytorium GitHub.
Konfigurowanie potoku
Na karcie Konfigurowanie wybierz pozycję Pokaż więcej i wybierz szablon potoku ASP.NET Core z listy.
Sprawdź nowy potok, aby zobaczyć, co robi YAML.
Plik YAML można dostosować pod kątem wymagań. Możesz na przykład dodać zadania, aby zainstalować zestaw .NET SDK lub przetestować i opublikować projekt.
Zapisywanie i uruchamianie potoku
Wybierz pozycję Zapisz.
Aby zatwierdzić plik YAML potoku w repozytorium, zmodyfikuj komunikat zatwierdzenia zgodnie z potrzebami i wybierz pozycję Zapisz.
Wybierz pozycję Uruchom , aby uruchomić potok.
Aby wyświetlić dzienniki kompilacji podczas uruchamiania potoku, wybierz numer kompilacji w górnej części strony.
Wybierz pozycję Zapisz i uruchom.
Aby zatwierdzić nowy plik azure-pipelines.yml w repozytorium, zmodyfikuj komunikat zatwierdzenia zgodnie z potrzebami i wybierz pozycję Zapisz i uruchom.
Aby obejrzeć potok w akcji, wybierz zadanie w sekcji Zadania .
Masz teraz potok roboczy, który jest gotowy do dostosowania. Przeczytaj więcej, aby dowiedzieć się więcej na temat typowych sposobów dostosowywania potoku.
Środowisko kompilacji
Usługa Azure Pipelines używa własnych agentów do tworzenia projektów platformy .NET Core. Upewnij się, że masz wymaganą wersję zestawu .NET Core SDK i środowiska uruchomieniowego zainstalowanego na agentach. Projekty platformy .NET Core można tworzyć przy użyciu zestawu .NET Core SDK i środowiska uruchomieniowego w systemach Windows, Linux, macOS i Docker.
Aby na przykład wybrać pulę i możliwości agenta w pliku YAML potoku:
Możesz wybrać pulę agentów i agenta dla zadania kompilacji. Agenci są określeni na podstawie ich możliwości.
pool:
name: myPrivateAgents
demands:
- agent.os -equals Darwin
- anotherCapability -equals somethingElse
Można zainstalować określoną wersję zestawu .NET SDK, dodając zadanie UseDotNet@2 w potoku. Należy pamiętać, że w przypadku agentów uruchamianych w systemach fizycznych instalowanie zestawów SDK i narzędzi za pośrednictwem potoku zmienia środowisko kompilacji na hoście agenta.
Aby zainstalować nowszy zestaw SDK, ustaw wartość na performMultiLevelLookup
true
w następującym fragmencie kodu:
steps:
- task: UseDotNet@2
displayName: 'Install .NET Core SDK'
inputs:
version: 8.x
performMultiLevelLookup: true
includePreviewVersions: true # Required for preview versions
Za pomocą usługi Azure Pipelines można tworzyć projekty platformy .NET Core w systemach Windows, Linux lub macOS bez konieczności konfigurowania infrastruktury.
Na przykład system Ubuntu jest ustawiony tutaj w pliku YAML potoku.
pool:
vmImage: 'ubuntu-latest'
Zobacz Agenci hostowani przez firmę Microsoft, aby uzyskać pełną listę obrazów i dalsze przykłady konfiguracji.
Agenci hostowani przez firmę Microsoft w usłudze Azure Pipelines obejmują kilka wstępnie zainstalowanych wersji obsługiwanych zestawów SDK platformy .NET Core. Agenci hostowani przez firmę Microsoft nie obejmują niektórych starszych wersji zestawu .NET Core SDK. Zazwyczaj nie zawierają one również wersji wstępnych. Jeśli potrzebujesz tych wersji zestawu SDK na agentach hostowanych przez firmę Microsoft, zainstaluj je przy użyciu zadania UseDotNet@2 .
Aby na przykład zainstalować zestaw SDK 5.0.x, dodaj następujący fragment kodu:
steps:
- task: UseDotNet@2
inputs:
version: '5.x'
Agenci systemu Windows zawierają już środowisko uruchomieniowe platformy .NET Core. Aby zainstalować nowszy zestaw SDK, ustaw wartość na performMultiLevelLookup
true
w następującym fragmencie kodu:
steps:
- task: UseDotNet@2
displayName: 'Install .NET Core SDK'
inputs:
version: 8.x
performMultiLevelLookup: true
includePreviewVersions: true # Required for preview versions
Napiwek
Aby zaoszczędzić koszty uruchamiania instalatora narzędzi, możesz skonfigurować własnego agenta systemu Linux, macOS lub Windows. Możesz również użyć własnych agentów, aby zaoszczędzić dodatkowy czas, jeśli masz duże repozytorium lub uruchamiasz kompilacje przyrostowe. Własny agent może również pomóc w korzystaniu z zestawów SDK w wersji zapoznawczej lub prywatnych, które nie są oficjalnie obsługiwane przez usługę Azure DevOps lub są dostępne tylko w środowiskach firmowych lub lokalnych.
Przywracanie zależności
NuGet to popularny sposób, aby zależeć od kodu, którego nie kompilujesz. Pakiety NuGet i narzędzia specyficzne dla projektu określone w pliku projektu można pobrać, uruchamiając dotnet restore
polecenie za pomocą zadania platformy .NET Core lub bezpośrednio w skrypsie w potoku. Aby uzyskać więcej informacji, zobacz .NET Core task (DotNetCoreCLI@2).
Pakiety NuGet można pobrać z usługi Azure Artifacts, NuGet.org lub innego zewnętrznego lub wewnętrznego repozytorium NuGet. Zadanie platformy .NET Core jest szczególnie przydatne do przywracania pakietów z uwierzytelnionych źródeł danych NuGet. Jeśli kanał informacyjny znajduje się w tym samym projekcie co potok, nie musisz się uwierzytelniać.
Ten potok używa źródła danych usługi Azure Artifact dla dotnet restore
zadania DotNetCoreCLI@2 .
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)'
Polecenie dotnet restore
używa spakowanego NuGet.exe
zestawu .NET Core SDK i może przywracać tylko pakiety określone w plikach projektu .csproj
platformy .NET Core.
Jeśli masz również projekt programu Microsoft .NET Framework w rozwiązaniu lub użyj polecenia package.json
, aby określić zależności, użyj zadania NuGet , aby przywrócić te zależności.
- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: '**/*.sln'
feedsToUse: 'select'
W zestawie .NET Core SDK w wersji 2.0 i nowszej pakiety są przywracane automatycznie podczas uruchamiania poleceń, takich jak dotnet build
. Jednak nadal trzeba użyć zadania platformy .NET Core , aby przywrócić pakiety, jeśli używasz uwierzytelnionego źródła danych.
Kompilacje mogą zakończyć się niepowodzeniem z powodu problemów z połączeniem podczas przywracania pakietów z NuGet.org. Do buforowania pakietów można użyć usługi Azure Artifacts z nadrzędnymi źródłami . Poświadczenia potoku są automatycznie używane podczas nawiązywania połączenia z usługą Azure Artifacts. Te poświadczenia są zwykle pochodzące 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.
Aby określić repozytorium NuGet, umieść adres URL w NuGet.config
pliku w repozytorium. Jeśli źródło danych jest uwierzytelnione, zarządzaj jego poświadczeniami, tworząc połączenie usługi NuGet na karcie Usługi w obszarze Ustawienia projektu.
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, możesz użyć usługi Azure Artifacts lub własnego agenta z korzyścią korzystania z pamięci podręcznej pakietu.
Aby uzyskać więcej informacji na temat połączeń usługi NuGet, zobacz publikowanie w kanałach informacyjnych NuGet.
Przywracanie pakietów z zewnętrznego źródła danych
Wykonaj następujące czynności, aby przywrócić pakiety z zewnętrznego źródła danych.
Możesz dodać polecenie przywracania do potoku przy użyciu edytora potoku YAML, bezpośrednio wstawiając poniższy fragment kodu do azure-pipelines.yml
pliku lub używając asystenta zadań w celu dodania zadania platformy .NET Core .
# do this before your build tasks
steps:
- task: DotNetCoreCLI@2
displayName: Restore
inputs:
command: restore
projects: '**/*.csproj'
feedsToUse: config
nugetConfigPath: NuGet.config # Relative to root of the repository
externalFeedCredentials: <Name of the NuGet service connection>
Zastąp <symbol zastępczy> nazwą połączenia usługi.
Aby użyć asystenta zadań:
Aby dodać zadanie kompilacji przy użyciu asystenta zadań, wykonaj następujące czynności:
Przejdź do pozycji w pliku YAML, w którym chcesz wstawić zadanie.
Wybierz platformę .NET Core z katalogu zadań.
Wybierz polecenie przywracania z listy rozwijanej Polecenie.
W polu Ścieżka do projektów wprowadź ścieżkę do
.csproj
plików.Wybierz Dodaj.
Wybierz pozycję Zapisz , aby zatwierdzić zmianę.
Uwaga
Upewnij się, że w pliku określono NuGet.config
źródło danych niestandardowych i że poświadczenia są określone w połączeniu usługi NuGet.
Kompilowanie projektu
Skompiluj dotnet build
projekty platformy .NET Core, uruchamiając polecenie . Polecenie można dodać do potoku jako skrypt wiersza polecenia lub za pomocą zadania platformy .NET Core.
Kompilacja platformy .NET Core przy użyciu zadania platformy .NET Core
Przykład yaML do skompilowania przy użyciu zadania DotNetCoreCLI@2:
steps:
- task: DotNetCoreCLI@2
displayName: Build
inputs:
command: build
projects: '**/*.csproj'
arguments: '--configuration $(buildConfiguration)' # Update this to match your needs
Zadanie kompilacji można dodać przy użyciu edytora potoku YAML, bezpośrednio edytując plik lub dodając zadanie platformy .NET Core przy użyciu asystenta zadań.
Aby dodać zadanie kompilacji przy użyciu asystenta zadań, wykonaj następujące czynności:
Przejdź do pozycji w pliku YAML, w którym chcesz wstawić zadanie.
Wybierz platformę .NET Core z katalogu zadań.
Wybierz polecenie kompilacji z listy rozwijanej Polecenie.
W polu Ścieżka do projektów wprowadź ścieżkę do
.csproj
plików.Wybierz Dodaj.
Wybierz pozycję Zapisz , aby zatwierdzić zmianę.
Kompilacja platformy .NET Core przy użyciu skryptu wiersza polecenia
Przykład kodu YAML do kompilowania przy użyciu polecenia dotnet build
jako skryptu:
steps:
- script: dotnet build --configuration $(buildConfiguration)
displayName: 'dotnet build $(buildConfiguration)'
Zadanie kompilacji można dodać przy użyciu edytora potoku YAML, bezpośrednio edytując plik lub dodając zadanie wiersza polecenia.
Aby dodać zadanie wiersza polecenia, wykonaj następujące czynności:
Przejdź do pozycji w pliku YAML, w którym chcesz wstawić zadanie.
Wybierz wiersz polecenia z katalogu zadań.
Opcjonalnie dodaj nazwę wyświetlaną.
dotnet build
Wprowadź polecenie z parametrami. Na przykładdotnet build --configuration $(buildConfiguration)
.Wprowadź ścieżkę do
.csproj
pliku jako katalog roboczy.Wybierz Dodaj.
Wybierz pozycję Zapisz , aby zatwierdzić zmianę.
Dodawanie poleceń zestawu .NET SDK do potoku
Polecenia zestawu .NET SDK można dodawać do projektu jako skrypt lub przy użyciu zadania platformy .NET Core. Zadanie platformy .NET Core (DotNetCoreCLI@2) umożliwia łatwe dodawanie poleceń interfejsu wiersza polecenia dotnet do potoku. Zadania platformy .NET Core można dodać, edytując plik YAML lub używając edytora klasycznego.
Dodawanie polecenia interfejsu wiersza polecenia platformy .NET przy użyciu zadania platformy .NET Core
Aby dodać polecenie interfejsu wiersza polecenia platformy .NET Core przy użyciu edytora potoku YAML, wykonaj następujące czynności:
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ć.
Skonfiguruj wszystkie potrzebne opcje.
Wybierz Dodaj.
Wybierz pozycję Zapisz , aby zatwierdzić zmianę.
Dodawanie polecenia interfejsu wiersza polecenia platformy .NET Core przy użyciu skryptu
Polecenia interfejsu wiersza polecenia platformy .NET Core można dodać jako script
element w azure-pipelines.yml
pliku.
Przykład:
steps:
# ...
- script: dotnet test <test-project>
Instalowanie narzędzia
Aby zainstalować narzędzie globalne platformy .NET Core, takie jak dotnetsay w kompilacji działającej w systemie Windows, wykonaj następujące kroki:
- Dodaj zadanie .NET Core i ustaw następujące właściwości:
- Polecenie: niestandardowe.
- Ścieżka do projektów: pozostaw puste.
- Polecenie niestandardowe: narzędzie.
- Argumenty:
install -g dotnetsay
.
- Polecenie: niestandardowe.
- Aby uruchomić narzędzie, dodaj wiersz polecenia i ustaw następujące właściwości:
- Skrypt:
dotnetsay
.
- Skrypt:
Uruchamianie testów
Jeśli masz projekty testowe w repozytorium, możesz użyć zadania platformy .NET Core do uruchamiania testów jednostkowych przy użyciu platform 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. Wyniki testów są automatycznie publikowane w usłudze. Te wyniki są dostępne w podsumowaniu kompilacji i mogą służyć do rozwiązywania problemów z testami i analizą czasu testu.
Zadanie testowe można dodać do potoku przy użyciu zadania DotNetCoreCLI@2 lub dodać następujący fragment kodu do azure-pipelines.yml
pliku:
steps:
# ...
# do this after other tasks such as building
- task: DotNetCoreCLI@2
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration)'
W przypadku korzystania z edytora zadań platformy .NET Core ustaw pozycję Command (Polecenie ) na test i Path to projects (Ścieżka do projektów ) powinny odwoływać się do projektów testowych w rozwiązaniu.
Alternatywnie możesz uruchomić dotnet test
polecenie za pomocą określonego rejestratora, a następnie użyć zadania Publikuj wyniki testu:
steps:
# ...
# do this after your tests have run
- script: dotnet test <test-project> --logger trx
- task: PublishTestResults@2
condition: succeededOrFailed()
inputs:
testRunner: VSTest
testResultsFiles: '**/*.trx'
Zbieranie pokrycia kodu
Podczas kompilowania na platformie Windows metryki pokrycia kodu można zbierać 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 używasz zadania platformy .NET Core do uruchamiania testów, dane pokrycia są automatycznie publikowane na serwerze. Plik .coverage
można pobrać z podsumowania kompilacji do wyświetlania w programie Visual Studio.
Dodaj następujący fragment kodu do pliku azure-pipelines.yml
:
steps:
# ...
# do this after other tasks such as building
- task: DotNetCoreCLI@2
inputs:
command: test
projects: '**/*Tests/*.csproj'
arguments: '--configuration $(buildConfiguration) --collect "Code coverage"'
Aby dodać zadanie platformy .NET Core za pomocą edytora zadań:
Dodaj zadanie .NET Core do zadania kompilacji i ustaw następujące właściwości:
- Polecenie: test.
- Ścieżka do projektów: powinna odwoływać się do projektów testowych w rozwiązaniu.
- Argumenty:
--configuration $(BuildConfiguration) --collect "Code coverage"
.
Upewnij się, że opcja Publikuj wyniki testu pozostaje zaznaczona.
Jeśli zdecydujesz się uruchomić dotnet test
polecenie, określ opcje rejestratora wyników testów i pokrycia. Następnie użyj zadania Publikuj wyniki testu:
steps:
# ...
# do this after your tests have run
- script: dotnet test <test-project> --logger trx --collect "Code coverage"
- task: PublishTestResults@2
inputs:
testRunner: VSTest
testResultsFiles: '**/*.trx'
Zbieranie metryk pokrycia kodu za pomocą coverletu
Jeśli tworzysz w systemie Linux lub macOS, możesz użyć rozwiązania Coverlet lub podobnego narzędzia do zbierania metryk pokrycia kodu.
Wyniki pokrycia kodu można opublikować na serwerze za pomocą zadania Publikuj wyniki pokrycia kodu (PublishCodeCoverageResults@1). Narzędzie pokrycia musi być skonfigurowane do generowania wyników w formacie pokrycia Cobertura lub JaCoCo.
Aby uruchomić testy i opublikować pokrycie kodu za pomocą rozwiązania Coverlet, wykonaj następujące zadania:
Dodaj odwołanie do
coverlet.collector
pakietu NuGet.Dodaj następujący fragment kodu do pliku
azure-pipelines.yml
:- task: UseDotNet@2 inputs: version: '8.x' includePreviewVersions: true # Required for preview versions - task: DotNetCoreCLI@2 displayName: 'dotnet build' inputs: command: 'build' configuration: $(buildConfiguration) - task: DotNetCoreCLI@2 displayName: 'dotnet test' inputs: command: 'test' arguments: '--configuration $(buildConfiguration) --collect:"XPlat Code Coverage" -- DataCollectionRunSettings.DataCollectors.DataCollector.Configuration.Format=cobertura' publishTestResults: true projects: 'MyTestLibrary' # update with your test project directory - task: PublishCodeCoverageResults@1 displayName: 'Publish code coverage report' inputs: codeCoverageTool: 'Cobertura' summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml'
Pakowanie i dostarczanie kodu
Artefakty kompilacji można opublikować, wykonując następujące czynności:
- Publikowanie w usłudze Azure Pipelines.
- Publikowanie pakietów w usłudze Azure Artifacts.
- Tworzenie pakietu NuGet i publikowanie go w kanale informacyjnym NuGet.
- Tworzenie archiwum .zip w celu wdrożenia aplikacji internetowej.
Publikowanie artefaktów w usłudze Azure Pipelines
Aby opublikować dane wyjściowe kompilacji platformy .NET w potoku, wykonaj następujące zadania:
- Uruchom polecenie
dotnet publish --output $(Build.ArtifactStagingDirectory)
publikowania w interfejsie wiersza polecenia platformy .NET lub dodaj zadanie DotNetCoreCLI@2 . - Opublikuj artefakt przy użyciu zadania Publikowanie artefaktu potoku.
Dodaj następujący fragment kodu do pliku azure-pipelines.yml
:
steps:
- task: DotNetCoreCLI@2
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
# this code takes all the files in $(Build.ArtifactStagingDirectory) and uploads them as an artifact of your build.
- task: PublishPipelineArtifact@1
inputs:
targetPath: '$(Build.ArtifactStagingDirectory)'
artifactName: 'myWebsite'
Uwaga
Zadanie DotNetCoreCLI@2 ma publishWebProjects
dane wejściowe ustawione na wartość true domyślnie. To zadanie domyślnie publikuje wszystkie projekty internetowe w repozytorium. Więcej informacji i pomocy można znaleźć w zadaniu open source w witrynie GitHub.
Aby skopiować więcej plików do katalogu kompilacji przed opublikowaniem, użyj zadania Kopiuj pliki (CopyFile@2).
Aby opublikować dane wyjściowe kompilacji platformy .NET w potoku, wykonaj następujące zadania:
- Uruchom polecenie
dotnet publish --output $(Build.ArtifactStagingDirectory)
w interfejsie wiersza polecenia lub dodaj zadanie DotNetCoreCLI@2 za pomocą polecenia publikowania. - Opublikuj artefakt przy użyciu zadania Publikowanie artefaktu kompilacji (PublishBuildArtifacts@1).
Dodaj następujący fragment kodu do azure-pipelines.yml
pliku, aby opublikować artefakty kompilacji jako plik .zip:
steps:
- task: DotNetCoreCLI@2
inputs:
command: publish
publishWebProjects: True
arguments: '--configuration $(BuildConfiguration) --output $(Build.ArtifactStagingDirectory)'
zipAfterPublish: True
# this code takes all the files in $(Build.ArtifactStagingDirectory) and uploads them as an artifact of your build.
- task: PublishBuildArtifacts@1
inputs:
PathtoPublish: '$(Build.ArtifactStagingDirectory)'
ArtifactName: 'drop'
Aby uzyskać więcej informacji, zobacz Publikowanie i pobieranie artefaktów kompilacji.
Publikowanie w kanale informacyjnym NuGet
Aby utworzyć pakiet NuGet i opublikować go w kanale informacyjnym NuGet, dodaj następujący fragment kodu:
steps:
# ...
# do this near the end of your pipeline in most cases
- script: dotnet pack /p:PackageVersion=$(version) # define version variable elsewhere in your pipeline
- task: NuGetAuthenticate@1
inputs:
nuGetServiceConnections: '<Name of the NuGet service connection>'
- task: NuGetCommand@2
inputs:
command: push
nuGetFeedType: external
publishFeedCredentials: '<Name of the NuGet service connection>'
versioningScheme: byEnvVar
versionEnvVar: version
Uwaga
Zadanie NuGetAuthenticate@1 nie obsługuje uwierzytelniania klucza interfejsu API NuGet. Jeśli używasz klucza interfejsu API NuGet, użyj zadania NuGetCommand@2 z command
zestawem danych wejściowych z push
argumentem --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 w źródłach danych NuGet.
Publikowanie pakietu NuGet w usłudze Azure Artifacts
Pakiety NuGet można opublikować w kanale informacyjnym usługi Azure Artifacts przy użyciu NuGetCommand@2 do wypchnięcia do źródła danych usługi Azure Artifact. Na przykład zobacz Publikowanie pakietów NuGet za pomocą usługi Azure Pipelines.
Wdrażanie aplikacji internetowej
Aby utworzyć archiwum plików .zip, które jest gotowe do opublikowania w aplikacji internetowej, dodaj następujący fragment kodu:
steps:
# ...
# do this after you've built your app, near the end of your pipeline in most cases
# for example, you do this before you deploy to an Azure web app on Windows
- 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.
Tworzenie obrazu i wypychanie do rejestru kontenerów
Możesz również utworzyć obraz dla aplikacji i wypchnąć go do rejestru kontenerów.
Symbole publikowania
Za pomocą zadania PublishSymbols@2 można opublikować symbole na serwerze symboli usługi Azure Artifacts lub w udziale plików.
Aby na przykład opublikować symbole w udziale plików, dodaj następujący fragment kodu do azure-pipelines.yml
pliku:
- task: PublishSymbols@2
inputs:
SymbolsFolder: '$(Build.SourcesDirectory)'
SearchPattern: '**/bin/**/*.pdb'
IndexSources: true
PublishSymbols: true
SymbolServerType: 'FileShare'
SymbolsPath: '\\server\shareName'
W przypadku korzystania z edytora klasycznego wybierz pozycję Źródła indeksu publikują symbole z wykazu zadań, aby dodać je do potoku.
Aby uzyskać więcej informacji, zobacz Publikowanie symboli.
Rozwiązywanie problemów
Jeśli możesz skompilować projekt na maszynie dewelopera, ale masz problem z kompilowaniem go w usłudze Azure Pipelines, zapoznaj się z następującymi potencjalnymi przyczynami i akcjami naprawczymi:
- Wersje wstępne zestawu .NET Core SDK nie są zainstalowane na agentach hostowanych przez firmę Microsoft. Po wydaniu nowej wersji zestawu .NET Core SDK wdrożenie wszystkich centrów danych usługi Azure Pipelines może potrwać kilka tygodni. Nie musisz czekać na ukończenie tego wdrożenia. Za pomocą zadania Użyj platformy .NET Core możesz zainstalować wersję zestawu .NET Core SDK, która ma być zainstalowana na agentach hostowanych przez firmę Microsoft.
Sprawdź wersje i środowisko uruchomieniowe zestawu .NET Core SDK na maszynie deweloperów i upewnij się, że są one zgodne z agentem. Aby wydrukować wersję zestawu .NET Core SDK, możesz dołączyć skrypt
dotnet --version
wiersza polecenia w potoku. Użyj Instalatora narzędzi platformy .NET Core, aby wdrożyć tę samą wersję na agencie, lub zaktualizuj projekty i maszynę programową do nowszej wersji zestawu .NET Core SDK.Możesz użyć logiki w środowisku IDE programu Visual Studio, który nie jest zakodowany w potoku. Usługa Azure Pipelines uruchamia każde z poleceń, które są określone w zadaniach po drugim w nowym procesie. Sprawdź dzienniki z kompilacji potoków, aby wyświetlić dokładne polecenia uruchomione w ramach kompilacji. Powtórz te same polecenia w tej samej kolejności na maszynie dewelopera, aby zlokalizować problem.
Jeśli masz mieszane rozwiązanie obejmujące niektóre projekty .NET Core i niektóre projekty .NET Framework, należy również użyć zadania NuGet do przywrócenia pakietów określonych w
packages.config
plikach. Dodaj zadanie MSBuild lub Visual Studio Build, aby skompilować projekty programu .NET Framework.Kompilacje mogą sporadycznie zakończyć się niepowodzeniem podczas przywracania pakietów: NuGet.org występują problemy lub występują problemy z siecią między centrum danych platformy Azure i NuGet.org. Możesz sprawdzić, czy używanie usługi Azure Artifacts z NuGet.org jako nadrzędnego źródła zwiększa niezawodność kompilacji, ponieważ nie jest to nasza kontrola.
Czasami nowa wersja zestawu .NET Core SDK lub Visual Studio jest wdrażana, kompilacja może ulec awarii. Na przykład nowsza wersja lub funkcja narzędzia NuGet jest dostarczana z zestawem SDK może spowodować przerwanie kompilacji. Aby wyizolować ten problem, użyj zadania Instalator narzędzi platformy .NET Core, aby określić wersję zestawu .NET Core SDK używanego w kompilacji.
Często zadawane pytania
.: Gdzie mogę dowiedzieć się więcej o usłudze Azure Artifacts?
1: Zarządzanie pakietami w usłudze Azure Artifacts
.: Gdzie mogę dowiedzieć się więcej o poleceniach platformy .NET Core?
1: Narzędzia interfejsu wiersza polecenia platformy .NET Core
.: Gdzie mogę dowiedzieć się więcej na temat uruchamiania testów w moim rozwiązaniu?
1: Testowanie jednostkowe w projektach platformy .NET Core