Uwaga
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.
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.
- Zapakuj i dostarcz wyniki kompilacji do:
- rura.
- ź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.
- Spakuj i dostarcz dane wyjściowe kompilacji do:
- twój potok danych.
- ź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 poprosić o bezpłatny poziom.
- 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 zainstalowanym i działającym na hoście agenta środowiskiem Docker.
Stwórz swój pierwszy potok
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
W 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 samohostowanych 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żesz zainstalować określoną wersję zestawu .NET SDK, dodając zadanie UseDotNet@2 w pliku YAML potoku lub korzystając z edytora klasycznego, aby dodać zadanie do potoku.
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ć agenta hostowanego lokalnie. 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.
Utwórz swój potok
Do utworzenia potoku można użyć edytora potoku YAML lub edytora klasycznego. Aby użyć edytora klasycznego, wybierz pozycję Użyj edytora klasycznego.
Utwórz nowy potok i wybierz źródło
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, najpierw wybierając GitHub jako lokalizację twojego kodu źródłowego.
Być może nastąpi przekierowanie do usługi GitHub w celu zalogowania się. Jeśli tak, wprowadź swoje dane logowania do 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.
Skonfiguruj swój potok
Po wyświetleniu karty Konfiguracja kliknij Pokaż więcej i wybierz szablon potoku ASP.NET Core z listy.
Sprawdź nowy pipeline, aby zrozumieć, 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.
Zapisz i uruchom potok
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ć przepływ w akcji, wybierz zadanie w sekcji Praca.
Utwórz i uruchom swój potok
Potok można utworzyć przy użyciu edytora potoku YAML lub edytora klasycznego.
- Przejdź do projektu i wybierz Pipelines.
- 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.
Skonfiguruj swój potok
Na karcie Konfigurowanie wybierz pozycję Pokaż więcej i wybierz szablon potoku ASP.NET Core z listy.
Sprawdź nowy pipeline, żeby 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.
Zapisz i uruchom swój potok
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ć pipeline w akcji, wybierz zadanie w sekcji Zadania.
Masz teraz działający potok danych, który jest gotowy do personalizacji. Przeczytaj dalej, aby poznać typowe sposoby dostosowywania rurki.
Ś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.
Na przykład, aby wybrać pulę i funkcje agenta w pliku YAML potoku:
Możesz wybrać pulę agentów i agenta na potrzeby zadania budowania. Agenci są określeni na podstawie ich możliwości.
pool:
name: myPrivateAgents
demands:
- agent.os -equals Darwin
- anotherCapability -equals somethingElse
Możesz zainstalować określoną wersję zestawu .NET SDK, dodając w potoku zadanie UseDotNet@2. Należy pamiętać, że w przypadku agentów działających na systemach fizycznych instalacja zestawów SDK i narzędzi za pośrednictwem potoku zmienia środowisko kompilacji na hoście agenta.
Aby zainstalować nowszy zestaw SDK, ustaw performMultiLevelLookup
na true
w następującym fragmencie:
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 Ubuntu jest ustawione tutaj w pliku YAML dla 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 performMultiLevelLookup
na true
w następującym fragmencie:
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 oraz narzędzia specyficzne dla projektu, określone w pliku projektu, można pobrać poprzez uruchomienie polecenia dotnet restore
za pomocą zadania .NET Core lub bezpośrednio w skrypcie 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ł znajduje się w tym samym projekcie co pipeline, nie trzeba 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 NuGet.exe
dostarczanego z zestawem .NET Core SDK i może przywracać tylko pakiety określone w plikach projektu .csproj
.NET Core.
Jeśli masz również projekt Microsoft .NET Framework w swoim rozwiązaniu lub korzystasz z polecenia package.json
, aby określić swoje zależności, przywróć je za pomocą NuGet.
- task: NuGetCommand@2
inputs:
command: 'restore'
restoreSolution: '**/*.sln'
feedsToUse: 'select'
Uwaga
Jeśli używasz systemu Ubuntu 24.04 lub nowszego, musisz użyć zadania NuGetAuthenticate
z interfejsem wiersza polecenia platformy .NET zamiast zadania NuGetCommand@2
. Aby uzyskać więcej informacji, zobacz Support for newer Ubuntu hosted images (Obsługa nowszych obrazów hostowanych w systemie Ubuntu).
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 .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 w 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 złagodzić ten problem, możesz skorzystać z usługi Azure Artifacts lub użyć własnego agenta, który zapewnia korzyść z korzystania z pamięci podręcznej pakietów.
Aby uzyskać więcej informacji na temat połączeń usługi NuGet, zobacz publikowanie w kanałach 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 za pomocą edytora potoków YAML, bezpośrednio wstawiając poniższy fragment kodu do azure-pipelines.yml
pliku lub używając asystenta zadań w celu dodania zadania .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 niestandardowe źródło danych jest określone w pliku NuGet.config
i że poświadczenia są podane w połączeniu usługi NuGet.
Zbuduj swój projekt
Skompiluj projekty platformy .NET Core, uruchamiając polecenie dotnet build
. Polecenie można dodać do potoku jako skrypt w wierszu poleceń lub za pomocą zadania .NET Core.
Kompilacja .NET Core za pomocą zadania .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 Wiersz 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ń dotnet CLI do pipeline'u. Zadania .NET Core można dodać, edytując plik YAML lub używając edytora klasycznego.
Dodaj polecenie CLI dla platformy .NET, używając zadania .NET Core
Aby dodać polecenie .NET Core CLI z użyciem edytora YAML, wykonaj te 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ć.
Skonfiguruj wszystkie potrzebne opcje.
Wybierz Dodaj.
Wybierz pozycję Zapisz , aby zatwierdzić zmianę.
Dodaj polecenie .NET Core CLI za pomocą 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.
- Niestandardowe polecenie: 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ć polecenie dotnet test
, określ rejestrator wyników testów oraz opcje 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'
Zbierz metryki pokrycia kodu za pomocą Coverlet
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 Publikowanie wyników pokrycia kodu (PublishCodeCoverageResults@2). Narzędzie do analizy pokrycia musi być skonfigurowane tak, aby generować wyniki w formacie Cobertura lub JaCoCo.
Aby uruchomić testy i opublikować pokrycie kodu za pomocą 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@2 displayName: 'Publish code coverage report' inputs: codeCoverageTool: 'Cobertura' summaryFileLocation: '$(Agent.TempDirectory)/**/coverage.cobertura.xml'
Pakietowanie 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
dotnet publish --output $(Build.ArtifactStagingDirectory)
w interfejsie wiersza poleceń platformy .NET lub dodaj zadanie DotNetCoreCLI@2 z poleceniem publikowania. - 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.
Opublikuj w kanale 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 API NuGet, użyj zadania NuGetCommand@2 z command
ustawionym na push
z argumentem --api-key. Na przykład dotnet nuget push --api-key $(NuGetApiKey)
.
Aby uzyskać więcej informacji na temat wersjonowania 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 przesyłanie do rejestru kontenerów
Możesz również utworzyć obraz dla aplikacji i wypchnąć go do rejestru kontenerów.
Opublikuj symbole
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ę Publikuj symbole źródeł indeksowania z katalogu zadań, aby dodać je do procesu.
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. Możesz dołączyć skrypt
dotnet --version
wiersza polecenia w potoku, aby wydrukować wersję zestawu .NET Core SDK. 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żliwe, że używasz logiki w środowisku IDE programu Visual Studio, która nie jest zakodowana w potoku. Usługa Azure Pipelines uruchamia każde z poleceń, które są określone w zadaniach, jedno po drugim w osobnym 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 ma problemy lub występują problemy z siecią między centrum danych Azure a NuGet.org. Możesz sprawdzić, czy używanie usługi Azure Artifacts z NuGet.org jako źródła nadrzędnego zwiększa niezawodność kompilacji, ponieważ nie jest to pod naszą kontrolą.
Czasami, gdy nowa wersja zestawu .NET Core SDK lub Visual Studio jest wdrażana, to kompilacja może ulec awarii. Na przykład, gdy nowsza wersja lub funkcja narzędzia NuGet jest dostarczana w ramach SDK, może to spowodować błąd 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
Q: Gdzie mogę dowiedzieć się więcej o poleceniach platformy .NET Core?
Narzędzia CLI 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