.NET Core アプリをビルド、テスト、デプロイするBuild, test, and deploy .NET Core apps

Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 | TFS 2017Azure Pipelines | Azure DevOps Server 2020 | Azure DevOps Server 2019 | TFS 2018 | TFS 2017

パイプラインを使用して、.NET Core プロジェクトを自動的にビルドしてテストします。Use a pipeline to automatically build and test your .NET Core projects. 具体的には、次の方法を学習します。Learn how to:

注意

.NET Framework のプロジェクトについては、「 .NET Framework を使用した ASP.NET アプリのビルド」を参照してください。For help with .NET Framework projects, see Build ASP.NET apps with .NET Framework.

注意

Microsoft Team Foundation Server (TFS) 2018 以前のバージョンでは、ビルドとリリースの "パイプライン" は "定義"、"実行" は "ビルド"、"サービス接続" は "サービス エンドポイント"、"ステージ" は "環境"、"ジョブ" は "フェーズ" と呼ばれます。In Microsoft Team Foundation Server (TFS) 2018 and previous versions, build and release pipelines are called definitions, runs are called builds, service connections are called service endpoints, stages are called environments, and jobs are called phases.

注意

このガイダンスは、TFS バージョン2017.3 以降に適用されます。This guidance applies to TFS version 2017.3 and newer.

最初のパイプラインの作成Create your first pipeline

Azure Pipelines するのは初めてですか?Are you new to Azure Pipelines? その場合は、他のセクションに進む前にこのセクションを試すことをお勧めします。If so, then we recommend you try this section before moving on to other sections.

コードを取得するGet the code

このリポジトリを GitHub にフォークします。Fork this repo in GitHub:

Azure DevOps Server 2019 の Git リポジトリにこのリポジトリをインポートします。Import this repo into your Git repo in Azure DevOps Server 2019:

このリポジトリを TFS の Git リポジトリにインポートします。Import this repo into your Git repo in TFS:

https://github.com/MicrosoftDocs/pipelines-dotnet-core

Azure Pipelines にサインインしますSign in to Azure Pipelines

Azure Pipelinesにサインインします。Sign in to Azure Pipelines. サインインすると、ブラウザーに移動して https://dev.azure.com/my-organization-name Azure DevOps ダッシュボードが表示されます。After you sign in, your browser goes to https://dev.azure.com/my-organization-name and displays your Azure DevOps dashboard.

選択した組織内で、 プロジェクト を作成します。Within your selected organization, create a project. 組織内にプロジェクトがない場合は、[ 開始するプロジェクトの作成 ] 画面が表示されます。If you don't have any projects in your organization, you see a Create a project to get started screen. それ以外の場合は、ダッシュボードの右上隅にある [ プロジェクトの作成 ] ボタンを選択します。Otherwise, select the Create Project button in the upper-right corner of the dashboard.

パイプラインを作成するCreate the pipeline

  1. Azure DevOps 組織にサインインし、プロジェクトに移動します。Sign in to your Azure DevOps organization and navigate to your project.

  2. [ パイプライン] にアクセスし、[ 新しいパイプライン] を選択します。Go to Pipelines, and then select New Pipeline.

  3. 最初に、ソース コードの場所として GitHub を選択し、ウィザードの手順を実行します。Walk through the steps of the wizard by first selecting GitHub as the location of your source code.

  4. サインインするために GitHub にリダイレクトされる場合があります。You might be redirected to GitHub to sign in. その場合は、GitHub の資格情報を入力します。If so, enter your GitHub credentials.

  5. リポジトリの一覧が表示されたら、リポジトリを選択します。When the list of repositories appears, select your repository.

  6. Azure Pipelines アプリをインストールするために、GitHub にリダイレクトされる場合があります。You might be redirected to GitHub to install the Azure Pipelines app. その場合は、[ 承認 & インストール] を選択します。If so, select Approve & install.

[ 構成 ] タブが表示されたら、[ ASP.NET Core] を選択します。When the Configure tab appears, select ASP.NET Core.

  1. 新しいパイプラインが表示されたら、YAML でその動作を確認します。When your new pipeline appears, take a look at the YAML to see what it does. 準備ができたら、[ 保存して実行] を選択します。When you're ready, select Save and run.

    新しい YAML パイプラインでの [保存して実行] ボタンSave and run button in a new YAML pipeline

  2. 新しい azure-pipelines ファイルをリポジトリにコミットするように求めるメッセージが表示されます。You're prompted to commit a new azure-pipelines.yml file to your repository. メッセージが表示されたら、[ 保存して再度実行 する] を選択します。After you're happy with the message, select Save and run again.

    パイプラインの動作を監視する場合は、[ビルド] ジョブを選択します。If you want to watch your pipeline in action, select the build job.

    作成したパイプラインを実行したのは、自動的に作成されたものです。コードが ASP.NET Core テンプレートに適しているように見えるからです。You just created and ran a pipeline that we automatically created for you, because your code appeared to be a good match for the ASP.NET Core template.

    これで、お客様がカスタマイズできるようにするための機能を備えた既製のパイプライン () がリポジトリに作成されました azure-pipelines.ymlYou now have a working YAML pipeline (azure-pipelines.yml) in your repository that's ready for you to customize!

  3. パイプラインを変更する準備ができたら、[ パイプライン ] ページでそれを選択し、ファイルを 編集azure-pipelines.yml ます。When you're ready to make changes to your pipeline, select it in the Pipelines page, and then Edit the azure-pipelines.yml file.

  4. パイプラインをカスタマイズするための一般的な方法のいくつかについては、以下のセクションを参照してください。See the sections below to learn some of the more common ways to customize your pipeline.

YAMLYAML

  1. azure-pipelines.ymlリポジトリにファイルを追加します。Add an azure-pipelines.yml file in your repository. ビルド用にこのスニペットをカスタマイズします。Customize this snippet for your build.
trigger:
- master

pool: Default

variables:
  buildConfiguration: 'Release'

# do this before all your .NET Core tasks
steps:
- task: DotNetCoreInstaller@2
  inputs:
    version: '2.2.402' # replace this value with the version that you need for your project
- script: dotnet build --configuration $(buildConfiguration)
  displayName: 'dotnet build $(buildConfiguration)'
  1. パイプラインを作成します (方法がわからない場合は「 最初のパイプラインを作成する」を参照してください)。テンプレートの場合は、[ yaml] を選択します。Create a pipeline (if you don't know how, see Create your first pipeline), and for the template select YAML.

  2. パイプラインの エージェントプールyaml ファイルパス を設定します。Set the Agent pool and YAML file path for your pipeline.

  3. パイプラインを保存し、ビルドをキューに格納します。Save the pipeline and queue a build. [ビルド #nnnnnnnn] が [ キューに登録されています ] というメッセージが表示されたら、[number] リンクを選択して、パイプラインの動作を確認します。When the Build #nnnnnnnn.n has been queued message appears, select the number link to see your pipeline in action.

  4. パイプラインを変更する準備ができたら、それを 編集 します。When you're ready to make changes to your pipeline, Edit it.

  5. パイプラインをカスタマイズするための一般的な方法のいくつかについては、以下のセクションを参照してください。See the sections below to learn some of the more common ways to customize your pipeline.

Classic (クラシック)Classic

  1. パイプラインを作成します (方法がわからない場合は、「 最初のパイプラインを作成する」を参照してください)。Create a pipeline (if you don't know how, see Create your first pipeline). テンプレートの [ 空のパイプライン ] を選択します。Select Empty Pipeline for the template.

  2. タスクカタログで、[ .Net Core ] タスクを見つけて追加します。In the task catalog, find and add the .NET Core task. このタスクは、 dotnet build サンプルリポジトリ内のコードをビルドするために実行されます。This task will run dotnet build to build the code in the sample repository.

  3. パイプラインを保存し、ビルドをキューに格納します。Save the pipeline and queue a build. [ビルド #nnnnnnnn] が [ キューに登録されています ] というメッセージが表示されたら、[number] リンクを選択して、パイプラインの動作を確認します。When the Build #nnnnnnnn.n has been queued message appears, select the number link to see your pipeline in action.

    これで、カスタマイズできる動作中のパイプラインが完成しました。You now have a working pipeline that's ready for you to customize!

  4. パイプラインを変更する準備ができたら、それを 編集 します。When you're ready to make changes to your pipeline, Edit it.

  5. パイプラインをカスタマイズするための一般的な方法のいくつかについては、以下のセクションを参照してください。See the sections below to learn some of the more common ways to customize your pipeline.

ビルド環境Build environment

Azure Pipelines を使用すると、独自のインフラストラクチャをセットアップしなくても、Windows、Linux、または macOS で .NET Core プロジェクトをビルドできます。Use Azure Pipelines to build your .NET Core projects on Windows, Linux, or macOS without needing to set up any infrastructure of your own. Azure Pipelines の Microsoft がホストするエージェント には、プレインストールされている .Net Core sdk のリリース済みバージョンがいくつか含まれています。The Microsoft-hosted agents in Azure Pipelines include several released versions of the .NET Core SDKs preinstalled.

ここでは、Ubuntu 18.04 が YAML ファイルで設定されています。Ubuntu 18.04 is set here in the YAML file.

pool:
  vmImage: 'ubuntu-18.04' # examples of other options: 'macOS-10.15', 'windows-2019'

詳細な例については、「 Microsoft がホストするエージェント」を参照してください。See Microsoft-hosted agents for a complete list of images and Pool for further examples.

Microsoft がホストするエージェントには、.NET Core SDK の古いバージョンの一部が含まれていません。The Microsoft-hosted agents don't include some of the older versions of the .NET Core SDK. また、通常、プレリリース版は含まれません。They also don't typically include prerelease versions. Microsoft がホストするエージェントでこれらの種類の Sdk が必要な場合は、 UseDotNet@2 タスクを YAML ファイルに追加します。If you need these kinds of SDKs on Microsoft-hosted agents, add the UseDotNet@2 task to your YAML file.

.NET Core 3.0. x を対象とするテストを実行するための 5.0. x SDK のプレビューバージョンをインストールするには、次のスニペットを追加します。To install the preview version of the 5.0.x SDK for building and 3.0.x for running tests that target .NET Core 3.0.x, add this snippet:

steps:
- task: UseDotNet@2
  inputs:
    version: '5.0.x'
    includePreviewVersions: true # Required for preview versions

- task: UseDotNet@2
  inputs:
    version: '3.0.x'
    packageType: runtime

Windows エージェントには、既に .NET Core ランタイムが含まれています。Windows agents already include a .NET Core runtime. 新しい SDK をインストールするには performMultiLevelLookuptrue 次のスニペットでをに設定します。To install a newer SDK, set performMultiLevelLookup to true in this snippet:

steps:
- task: UseDotNet@2
  displayName: 'Install .NET Core SDK'
  inputs:
    version: 5.0.x
    performMultiLevelLookup: true
    includePreviewVersions: true # Required for preview versions

ヒント

別の方法として、 自己ホスト型エージェント を設定し、ツールインストーラーの実行コストを節約することもできます。As an alternative, you can set up a self-hosted agent and save the cost of running the tool installer. LinuxMacOS、または Windows」を参照してください。See Linux, MacOS, or Windows. また、大規模なリポジトリがある場合や、インクリメンタルビルドを実行する場合は、自己ホスト型エージェントを使用して時間を節約することもできます。You can also use self-hosted agents to save additional time if you have a large repository or you run incremental builds. 自己ホスト型エージェントは、Azure DevOps で正式にサポートされていないプレビューまたはプライベート Sdk を使用する場合や、企業またはオンプレミスの環境でのみ利用できる場合にも役立ちます。A self-hosted agent can also help you in using the preview or private SDKs that are not officially supported by Azure DevOps or you have available on your corporate or on-premises environments only.

Windows、Linux、または macOS で .NET Core SDK とランタイムを使用して .NET Core プロジェクトをビルドできます。You can build your .NET Core projects by using the .NET Core SDK and runtime on Windows, Linux, or macOS. ビルドは 自己ホスト型エージェントで実行されます。Your builds run on a self-hosted agent. エージェントに必要なバージョンの .NET Core SDK とランタイムがインストールされていることを確認します。Make sure that you have the necessary version of the .NET Core SDK and runtime installed on the agent.

依存関係を復元するRestore dependencies

NuGet は、ビルドされていないコードに依存するための一般的な方法です。NuGet is a popular way to depend on code that you don't build. プロジェクトファイルに指定されている NuGet パッケージおよびプロジェクト固有のツールをダウンロードするには、 dotnet restore .net Core タスクを使用するか、パイプラインのスクリプトで直接コマンドを実行します。You can download NuGet packages and project-specific tools that are specified in the project file by running the dotnet restore command either through the .NET Core task or directly in a script in your pipeline.

NuGet パッケージは、Azure Artifacts、NuGet.org、またはその他の外部または内部の NuGet リポジトリからダウンロードできます。You can download NuGet packages from Azure Artifacts, NuGet.org, or some other external or internal NuGet repository. .Net Core タスクは、認証済みの NuGet フィードからパッケージを復元する場合に特に便利です。The .NET Core task is especially useful to restore packages from authenticated NuGet feeds.

このパイプラインでは dotnet restore.NET Core CLI タスクでのアーティファクトフィードを使用します。This pipeline uses an artifact feed for dotnet restore in the .NET Core CLI task.

trigger:
- master

pool:
  vmImage: 'windows-latest'

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)'

NuGet パッケージは NuGet.org からダウンロードできます。You can download NuGet packages from NuGet.org.

dotnet restore``NuGet.exeでは、.NET Core SDK でパッケージ化されたのバージョンを内部的に使用します。dotnet restore internally uses a version of NuGet.exe that is packaged with the .NET Core SDK. dotnet restore .NET Core プロジェクトファイルで指定されたパッケージのみを復元でき .csproj ます。dotnet restore can only restore packages specified in the .NET Core project .csproj files. また、ソリューションに Microsoft .NET Framework プロジェクトがある場合、またはを使用し package.json て依存関係を指定する場合は、 NuGet タスクを使用してそれらの依存関係を復元する必要もあります。If you also have a Microsoft .NET Framework project in your solution or use package.json to specify your dependencies, you must also use the NuGet task to restore those dependencies.

.NET Core SDK バージョン2.0 以降では、などの他のコマンドを実行すると、パッケージが自動的に復元され dotnet build ます。In .NET Core SDK version 2.0 and newer, packages are restored automatically when running other commands such as dotnet build.

.NET Core SDK バージョン2.0 以降では、などの他のコマンドを実行すると、パッケージが自動的に復元され dotnet build ます。In .NET Core SDK version 2.0 and newer, packages are restored automatically when running other commands such as dotnet build. ただし、認証済みのフィードを使用する場合は、 .Net Core タスクを使用してパッケージを復元する必要がある場合があります。However, you might still need to use the .NET Core task to restore packages if you use an authenticated feed.

接続の問題のために NuGet.org からパッケージを復元するときにビルドが失敗することがある場合は、 アップストリームソース と共に Azure Artifacts を使用して、パッケージをキャッシュすることができます。If your builds occasionally fail when restoring packages from NuGet.org due to connection issues, you can use Azure Artifacts with upstream sources and cache the packages. パイプラインの資格情報は、Azure Artifacts に接続するときに自動的に使用されます。The credentials of the pipeline are automatically used when connecting to Azure Artifacts. これらの資格情報は、通常、 プロジェクトコレクションビルドサービス アカウントから派生します。These credentials are typically derived from the Project Collection Build Service account.

NuGet リポジトリを指定する場合は、リポジトリ内のファイルに Url を入力し NuGet.config ます。If you want to specify a NuGet repository, put the URLs in a NuGet.config file in your repository. フィードが認証されている場合は、[プロジェクトの設定] の [サービス] タブで NuGet サービス接続を作成して、その資格情報を管理します。If your feed is authenticated, manage its credentials by creating a NuGet service connection in the Services tab under Project Settings.

Microsoft がホストするエージェントを使用する場合は、ビルドを実行するたびに新しいマシンを取得します。これは、パッケージを毎回復元することを意味します。If you use Microsoft-hosted agents, you get a new machine every time your run a build, which means restoring the packages every time. この復元にはかなりの時間がかかることがあります。This restoration can take a significant amount of time. この問題を軽減するには、Azure Artifacts または自己ホスト型エージェントを使用できます。この場合、パッケージキャッシュを使用する利点が得られます。To mitigate this issue, you can either use Azure Artifacts or a self-hosted agent, in which case, you get the benefit of using the package cache.

外部カスタムフィードからパッケージを復元するには、 .Net Core タスクを使用します。To restore packages from an external custom feed, use the .NET Core task:

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

NuGet サービス接続の詳細については、「 nuget フィードへの発行」を参照してください。For more information about NuGet service connections, see publish to NuGet feeds.

  1. パイプライン内の タスク を選択します。Select Tasks in the pipeline. ビルドタスクを実行するジョブを選択します。Select the job that runs your build tasks. 次に、を選択し + て、そのジョブに新しいタスクを追加します。Then select + to add a new task to that job.

  2. タスクカタログで、[ .Net Core ] タスクを見つけて追加します。In the task catalog, find and add the .NET Core task.

  3. タスクを選択し、[ コマンド] で [ 復元] を選択します。Select the task and, for Command, select restore.

  4. このタスクに必要なその他のオプションを指定します。Specify any other options you need for this task. 次に、ビルドを保存します。Then save the build.

注意

ファイルでカスタムフィードが指定されて NuGet.config いること、およびその資格情報が NuGet サービス接続で指定されていることを確認します。Make sure the custom feed is specified in your NuGet.config file and that credentials are specified in the NuGet service connection.

プロジェクトをビルドするBuild your project

.NET Core プロジェクトをビルドするには、パイプラインでコマンドを実行するか dotnet build 、.Net core タスクを使用します。You build your .NET Core project either by running the dotnet build command in your pipeline or by using the .NET Core task.

.NET Core タスクを使用してプロジェクトをビルドするには、次のスニペットをファイルに追加し azure-pipelines.yml ます。To build your project by using the .NET Core task, add the following snippet to your azure-pipelines.yml file:

steps:
- task: DotNetCoreCLI@2
  displayName: Build
  inputs:
    command: build
    projects: '**/*.csproj'
    arguments: '--configuration $(buildConfiguration)' # Update this to match your need

パイプラインでは、任意のカスタム dotnet コマンドを実行できます。You can run any custom dotnet command in your pipeline. 次の例は、.NET グローバルツールをインストールして使用する方法を示しています。 dotnetsayします。The following example shows how to install and use a .NET global tool, dotnetsay:

steps:
- task: DotNetCoreCLI@2
  displayName: 'Install dotnetsay'
  inputs:
    command: custom
    custom: tool
    arguments: 'install -g dotnetsay'

BuildBuild

  1. パイプライン内の タスク を選択します。Select Tasks in the pipeline. ビルドタスクを実行するジョブを選択します。Select the job that runs your build tasks. 次に、を選択し + て、そのジョブに新しいタスクを追加します。Then select + to add a new task to that job.

  2. タスクカタログで、[ .Net Core ] タスクを見つけて追加します。In the task catalog, find and add the .NET Core task.

  3. タスクを選択し、[ コマンド] で [ ビルド ] または [ 発行] を選択します。Select the task and, for Command, select build or publish.

  4. このタスクに必要なその他のオプションを指定します。Specify any other options you need for this task. 次に、ビルドを保存します。Then save the build.

ツールをインストールするInstall a tool

Windows で実行されているビルドに dotnetsay いった .net Core グローバルツールをインストールするには、次の手順を実行します。To install a .NET Core global tool like dotnetsay in your build running on Windows, take the following steps:

  1. .Net Core タスクを追加し、次のプロパティを設定します。Add the .NET Core task and set the following properties:

    • コマンド: カスタム。Command: custom.
      • プロジェクトへのパス: 空のまま にします。Path to projects: leave empty.
    • カスタムコマンド: ツール。Custom command: tool.
    • 引数: install -g dotnetsayArguments: install -g dotnetsay.
  2. コマンドライン タスクを追加し、次のプロパティを設定します。Add a Command Line task and set the following properties:

    • スクリプト: dotnetsayScript: dotnetsay.

テストの実行Run your tests

リポジトリ内にテストプロジェクトがある場合は、 .Net Core タスクを使用して、MSTest、Xunit、NUnit などのテストフレームワークを使用して単体テストを実行します。If you have test projects in your repository, then use the .NET Core task to run unit tests by using testing frameworks like MSTest, xUnit, and NUnit. この機能を使用するには、テストプロジェクトで15.8.0 バージョン以降を参照する必要があります。For this functionality, the test project must reference Microsoft.NET.Test.SDK version 15.8.0 or higher. テスト結果は自動的にサービスに発行されます。Test results are automatically published to the service. これらの結果は、ビルドの概要で使用できるようになり、失敗したテストやテストタイミング分析のトラブルシューティングに使用できます。These results are then made available to you in the build summary and can be used for troubleshooting failed tests and test-timing analysis.

次のスニペットをファイルに追加し azure-pipelines.yml ます。Add the following snippet to your azure-pipelines.yml file:

steps:
# ...
# do this after other tasks such as building
- task: DotNetCoreCLI@2
  inputs:
    command: test
    projects: '**/*Tests/*.csproj'
    arguments: '--configuration $(buildConfiguration)'

別の方法として、特定のロガーを使用してコマンドを実行 dotnet test し、 テスト結果の発行 タスクを使用することもできます。An alternative is to run the dotnet test command with a specific logger and then use the Publish Test Results task:

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'

コマンド セットを使用して .net Core タスクを テスト します。Use the .NET Core task with Command set to test. プロジェクトへのパス は、ソリューション内のテストプロジェクトを参照する必要があります。Path to projects should refer to the test projects in your solution.

コードカバレッジの収集Collect code coverage

Windows プラットフォームで構築している場合は、組み込みのカバレッジデータコレクターを使用してコードカバレッジメトリックを収集できます。If you're building on the Windows platform, code coverage metrics can be collected by using the built-in coverage data collector. この機能を使用するには、テストプロジェクトで15.8.0 バージョン以降を参照する必要があります。For this functionality, the test project must reference Microsoft.NET.Test.SDK version 15.8.0 or higher. .Net Core タスクを使用してテストを実行する場合、カバレッジデータは自動的にサーバーに発行されます。If you use the .NET Core task to run tests, coverage data is automatically published to the server. カバレッジ ファイルは、Visual Studio で表示するためにビルドの概要からダウンロードできます。The .coverage file can be downloaded from the build summary for viewing in Visual Studio.

次のスニペットをファイルに追加し azure-pipelines.yml ます。Add the following snippet to your azure-pipelines.yml file:

steps:
# ...
# do this after other tasks such as building
- task: DotNetCoreCLI@2
  inputs:
    command: test
    projects: '**/*Tests/*.csproj'
    arguments: '--configuration $(buildConfiguration) --collect "Code coverage"'

コマンドの実行を選択した場合は dotnet test 、テスト結果のロガーとカバレッジのオプションを指定します。If you choose to run the dotnet test command, specify the test results logger and coverage options. 次に、[ テスト結果の発行 ] タスクを使用します。Then use the Publish Test Results task:

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'
  1. ビルドジョブに .NET Core タスクを追加し、次のプロパティを設定します。Add the .NET Core task to your build job and set the following properties:

    • コマンド: test。Command: test.
    • プロジェクトへのパス: ソリューション内のテストプロジェクトを参照する必要があり ます。Path to projects: Should refer to the test projects in your solution.
    • 引数: --configuration $(BuildConfiguration) --collect "Code coverage"Arguments: --configuration $(BuildConfiguration) --collect "Code coverage".
  2. [ テスト結果の発行 ] オプションが選択されたままになっていることを確認します。Ensure that the Publish test results option remains selected.

カバーさせたコードカバレッジメトリックの収集Collect code coverage metrics with Coverlet

Linux または macOS でビルドしている場合は、 カバーレット または同様のツールを使用して、コードカバレッジメトリックを収集できます。If you're building on Linux or macOS, you can use Coverlet or a similar tool to collect code coverage metrics.

コードカバレッジの結果は、[ コードカバレッジの結果の発行 ] タスクを使用してサーバーに発行できます。Code coverage results can be published to the server by using the Publish Code Coverage Results task. この機能を使用するには、カバレッジツールを構成して、結果を CoJaCoCo またはカバレッジ形式で生成する必要があります。To use this functionality, the coverage tool must be configured to generate results in Cobertura or JaCoCo coverage format.

カバーされたテストを実行してコードカバレッジを発行するには:To run tests and publish code coverage with Coverlet:

  • coverlet.msbuild.Net 5 の下にある .net プロジェクトのテストプロジェクトに、NuGet パッケージへの参照を追加します。Add a reference to the coverlet.msbuild NuGet package in your test project(s) for .NET projects below .NET 5. .NET 5 の場合は、NuGet パッケージへの参照を追加し coverlet.collector ます。For .NET 5, add a reference to the coverlet.collector NuGet package.
  • 次のスニペットをファイルに追加し azure-pipelines.yml ます。Add this snippet to your azure-pipelines.yml file:
- task: UseDotNet@2
  inputs:
    version: '5.0.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) /p:CollectCoverage=true /p:CoverletOutputFormat=cobertura /p:CoverletOutput=$(Build.SourcesDirectory)/TestResults/Coverage/'
    publishTestResults: true
    projects: 'MyTestLibrary' # update with your test project directory
  
- task: PublishCodeCoverageResults@1
  displayName: 'Publish code coverage report'
  inputs:
    codeCoverageTool: 'Cobertura'
    summaryFileLocation: '$(Build.SourcesDirectory)/**/coverage.cobertura.xml'

コードをパッケージ化して配信するPackage and deliver your code

アプリをビルドしてテストしたら、ビルド出力を Azure Pipelines または TFS にアップロードしたり、NuGet パッケージを作成して発行したり、web アプリケーションに配置する .zip ファイルにビルド出力をパッケージ化したりすることができます。After you've built and tested your app, you can upload the build output to Azure Pipelines or TFS, create and publish a NuGet package, or package the build output into a .zip file to be deployed to a web application.

成果物を Azure Pipelines に発行するPublish artifacts to Azure Pipelines

.NET ビルド の出力を発行するには、To publish the output of your .NET build,

  • dotnet publish --output $(Build.ArtifactStagingDirectory)CLI でを実行するか、 DotNetCoreCLI@2 publish コマンドを使用してタスクを追加します。Run dotnet publish --output $(Build.ArtifactStagingDirectory) on CLI or add the DotNetCoreCLI@2 task with publish command.
  • 成果物の発行タスクを使用して成果物を発行します。Publish the artifact by using Publish artifact task.

次のスニペットをファイルに追加し azure-pipelines.yml ます。Add the following snippet to your azure-pipelines.yml file:

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: 'myWebsiteName'

注意

タスクには dotNetCoreCLI@2publishWebProjects 既定で true に設定されている入力があります。The dotNetCoreCLI@2 task has a publishWebProjects input that is set to true by default. これにより、リポジトリ内の すべて の web プロジェクトが既定で発行されます。This publishes all web projects in your repo by default. 詳細については、 GitHub のオープンソースタスクに関するヘルプと情報を参照してください。You can find more help and information in the open source task on GitHub.

発行前にビルドディレクトリにさらにファイルをコピーするには、 ユーティリティ: ファイルのコピーを使用します。To copy more files to Build directory before publishing, use Utility: copy files.

NuGet フィードに発行するPublish to a NuGet feed

NuGet パッケージを作成して発行するには、次のスニペットを追加します。To create and publish a NuGet package, add the following snippet:

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@0
  input:
    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

NuGet パッケージのバージョン管理と発行の詳細については、「 nuget フィードへの発行」を参照してください。For more information about versioning and publishing NuGet packages, see publish to NuGet feeds.

Web アプリをデプロイするDeploy a web app

Web アプリに発行する準備ができている .zip ファイルアーカイブを作成するには、次のスニペットを追加します。To create a .zip file archive that's ready for publishing to a web app, add the following snippet:

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

このアーカイブを web アプリに発行するには、「 Azure Web Apps のデプロイ」を参照してください。To publish this archive to a web app, see Azure Web Apps deployment.

成果物を Azure Pipelines に発行するPublish artifacts to Azure Pipelines

[ 成果物の発行 ] タスクを使用して、ビルドの出力を Azure Pipelines または TFS に発行します。Use the Publish Artifacts task to publish the output of your build to Azure Pipelines or TFS.

NuGet フィードに発行するPublish to a NuGet feed

NuGet フィードにコードを発行する場合は、次の手順を実行します。If you want to publish your code to a NuGet feed, take the following steps:

  1. コマンド を pack に設定した .net Core タスクを使用します。Use a .NET Core task with Command set to pack.

  2. パッケージを NuGet フィードに発行します。Publish your package to a NuGet feed.

Web アプリをデプロイするDeploy a web app

  1. コマンド セットを発行する .net Core タスクを使用します。Use a .NET Core task with Command set to publish.

  2. .Zip ファイルアーカイブを作成するオプションが選択されていることを確認します。Make sure you've selected the option to create a .zip file archive.

  3. このアーカイブを web アプリに発行するには、「 Azure Web Apps のデプロイ」を参照してください。To publish this archive to a web app, see Azure Web Apps deployment.

イメージをビルドし、コンテナーレジストリにプッシュするBuild an image and push to container registry

アプリでは、 イメージを作成 して コンテナーレジストリにプッシュすることもできます。For your app, you can also build an image and push it to a container registry.

トラブルシューティングTroubleshooting

開発用コンピューターでプロジェクトをビルドできるが、Azure Pipelines または TFS でビルドできない場合は、次の考えられる原因と是正措置について確認してください。If you're able to build your project on your development machine, but you're having trouble building it on Azure Pipelines or TFS, explore the following potential causes and corrective actions:

  • Microsoft がホストするエージェントには、プレリリース版の .NET Core SDK はインストールされません。We don't install prerelease versions of the .NET Core SDK on Microsoft-hosted agents. .NET Core SDK の新しいバージョンがリリースされた後、Azure Pipelines 実行されているすべてのデータセンターにロールアウトするまで数週間かかることがあります。After a new version of the .NET Core SDK is released, it can take a few weeks for us to roll it out to all the data centers that Azure Pipelines run on. このロールアウトが完了するまで待つ必要はありません。You don't have to wait for us to finish this rollout. このガイドで説明されているように、 .Net Core ツールインストーラー を使用して、Microsoft がホストするエージェントに必要なバージョンの .NET Core SDK をインストールすることができます。You can use the .NET Core Tool Installer, as explained in this guidance, to install the desired version of the .NET Core SDK on Microsoft-hosted agents.
  • 開発用コンピューター上の .NET Core SDK とランタイムのバージョンが、エージェントのバージョンと一致していることを確認します。Check that the versions of the .NET Core SDK and runtime on your development machine match those on the agent. パイプラインにコマンドラインスクリプトを追加して、.NET Core SDK のバージョンを出力することができ dotnet --version ます。You can include a command-line script dotnet --version in your pipeline to print the version of the .NET Core SDK. このガイダンスで説明されているように、 .Net Core ツールインストーラー を使用して同じバージョンをエージェントに配置するか、プロジェクトと開発用コンピューターを新しいバージョンの .NET Core SDK に更新します。Either use the .NET Core Tool Installer, as explained in this guidance, to deploy the same version on the agent, or update your projects and development machine to the newer version of the .NET Core SDK.

  • パイプラインでエンコードされていないロジックを Visual Studio IDE で使用している可能性があります。You might be using some logic in the Visual Studio IDE that isn't encoded in your pipeline. Azure Pipelines または TFS は、タスクで指定した各コマンドを新しいプロセスで1つずつ実行します。Azure Pipelines or TFS runs each of the commands you specify in the tasks one after the other in a new process. Azure Pipelines または TFS ビルドからのログを参照して、ビルドの一部として実行された正確なコマンドを確認します。Look at the logs from the Azure Pipelines or TFS build to see the exact commands that ran as part of the build. 開発用コンピューターで同じ順序で同じコマンドを繰り返して、問題を特定します。Repeat the same commands in the same order on your development machine to locate the problem.

  • .NET Core プロジェクトといくつかの .NET Framework プロジェクトを含む混合ソリューションがある場合は、 NuGet タスクを使用して、ファイルで指定されたパッケージを復元する必要もあり packages.config ます。If you have a mixed solution that includes some .NET Core projects and some .NET Framework projects, you should also use the NuGet task to restore packages specified in packages.config files. 同様に、 MSBuild または Visual Studio のビルド タスクを追加して、.NET Framework プロジェクトをビルドする必要があります。Similarly, you should add MSBuild or Visual Studio Build tasks to build the .NET Framework projects.

  • パッケージの復元中にビルドが断続的に失敗する場合、NuGet.org に問題があるか、Azure データセンターと NuGet.org の間にネットワークの問題があります。これらは制御下にないため、アップストリームソースとして NuGet.org を使用して Azure Artifacts を使用するとビルドの信頼性が向上するかどうかを調べる必要がある場合があります。If your builds fail intermittently while restoring packages, either NuGet.org is having issues, or there are networking problems between the Azure datacenter and NuGet.org. These aren't under our control, and you might need to explore whether using Azure Artifacts with NuGet.org as an upstream source improves the reliability of your builds.

  • 新しいバージョンの .NET Core SDK または Visual Studio を使用して、ホストされているイメージに更新プログラムを展開すると、ビルドが壊れてしまうことがあります。Occasionally, when we roll out an update to the hosted images with a new version of the .NET Core SDK or Visual Studio, something might break your build. これは、たとえば、新しいバージョンまたは NuGet ツールの機能が SDK に付属している場合に発生する可能性があります。This can happen, for example, if a newer version or feature of the NuGet tool is shipped with the SDK. これらの問題を特定するには、 .Net Core ツールインストーラー タスクを使用して、ビルドで使用される .NET Core SDK のバージョンを指定します。To isolate these problems, use the .NET Core Tool Installer task to specify the version of the .NET Core SDK that's used in your build.

よく寄せられる質問FAQ

Azure Artifacts と TFS Package Management サービスの詳細については、こちらを参照してください。Where can I learn more about Azure Artifacts and the TFS Package Management service?

Azure Artifacts および TFS での Package ManagementPackage Management in Azure Artifacts and TFS

.NET Core コマンドの詳細については、どこで学習できますか。Where can I learn more about .NET Core commands?

.NET Core CLI ツール.NET Core CLI tools

ソリューションでのテストの実行の詳細については、どこで学習できますか。Where can I learn more about running tests in my solution?

.NET Core プロジェクトでの単体テストUnit testing in .NET Core projects

タスクの詳細については、どこで学習できますか。Where can I learn more about tasks?

タスクのビルドとリリースBuild and release tasks