SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Azureのクラウド環境でDevOpsを実現する「Azure DevOps」入門

Azure DevOpsのCI/CDツール「Azure Pipelines」を使いこなそう

Azureのクラウド環境でDevOpsを実現する「Azure DevOps」入門 第4回

  • X ポスト
  • このエントリーをはてなブックマークに追加

Azure Pipelinesによるビルドパイプラインの作成と実行(1)

 ここからは実際にAzure Pipelinesを使って、.NETアプリケーションのCI/CDパイプラインを作成していきます。

 今回は、前回の記事で作成したASP.NET CoreのWebアプリケーションを対象にパイプラインを作成するので、Azure Reposにコードがプッシュされていない場合は、あらかじめ前回の記事を参考に、リポジトリを作成しておくようにしてください。

MSにパイプラインの無料利用枠の申請を行う

 DevOps組織で初めてAzure Pipelinesを利用する場合、Microsoftに無料利用枠の申請を行う必要があります。これは、昨今増加している暗号通貨マイニングなどにAzure Pipelinesが不正利用されているため、許可制となった背景があります。

 申請を行う場合は、以下の手順で操作を行ってください。

1. Azure DevOps Parallelism Request Formにアクセスします。

2. フォームに必要事項を入力します。

  • What is your name?:使用者の氏名を入力
  • What is your email address?:連絡先メールアドレスを入力
  • What is the name of your Azure DevOps Organization?:Azure DevOpsの組織名を入力
  • Are you requesting a parallelism increase for Publi or Private projects?:「Private」を選択

3. フォーム下部の「送信」ボタンから申請します。

4. 申請後、Microsoftからの承認を待ちます。通常、数日以内に承認されます。

ビルドパイプラインの作成(CI)

 パイプラインの作成は、Azure DevOpsのプロジェクトダッシュボードから行います。

 プロジェクトダッシュボードの「Pipelines」セクションを選択し、「Create Pipeline」ボタンから新しいパイプラインの作成を開始します。

図1:パイプラインの作成
図1:パイプラインの作成

 まずは、接続するリポジトリサービスを選択します。本稿では、前回の記事で作成したリポジトリを使用するため、Azure Repos Gitを選択します。

図2:接続するリポジトリサービスの選択
図2:接続するリポジトリサービスの選択

 Azure Repos Gitを選択すると、同一プロジェクト内のリポジトリが表示されるので、該当のリポジトリを選びます。

図3:ビルドするリポジトリの選択
図3:ビルドするリポジトリの選択

 次の画面では、ビルド対象のプロジェクトの種類を選択します。前回作成したアプリケーションはASP.NET CoreのWebアプリケーションなので、「ASP.NET Core (.NET Framework)」を選択します。

図4:ビルド対象のプロジェクトの種類の選択
図4:ビルド対象のプロジェクトの種類の選択

 最後にパイプラインの肝となるYAMLファイルを編集します。ここでは、.NETアプリケーションのビルドとテスト、Azure Web Appへのデプロイを行う基本的なYAML構成を作成します。

図5:YAMLファイルの編集画面
図5:YAMLファイルの編集画面

 ブラウザ上にYAMLエディタが表示されるので、以下のコードを入力します。

[リスト1]ビルドパイプライン用のYAML
# パイプラインのトリガー設定
trigger:
- main # mainブランチへのPushをトリガーにする・・・(1)

# ビルドエージェントの指定
pool:
  vmImage: 'windows-latest' # Windows環境でジョブを実行する・・・(2)

# ビルドとデプロイのための変数定義
variables:
  buildConfiguration: 'Release'
  dotnetVersion: '8.0.x'  # 対象の .NET バージョン

# ビルドステップの定義
steps:
- task: UseDotNet@2 # .NET SDKをインストールするタスク・・・(3)
  inputs:
    packageType: 'sdk'
    version: '$(dotnetVersion)'

- task: NuGetToolInstaller@1 # NuGetをインストールするタスク・・・(4)

- task: NuGetCommand@2 # NuGetパッケージの復元・・・(5)
  inputs:
    restoreSolution: '**/*.sln'

- task: DotNetCoreCLI@2 # .NET Core CLIを使用してビルド・・・(6)
  inputs:
    command: 'build'
    projects: '**/*.csproj'
    arguments: '--configuration $(buildConfiguration)'

- task: DotNetCoreCLI@2 # アプリをデプロイ可能な形式(発行物)に変換する・・・(7)
  inputs:
    command: 'publish'
    publishWebProjects: true
    arguments: '--configuration $(buildConfiguration) --output $(Build.ArtifactStagingDirectory)'
    zipAfterPublish: true

- task: PublishBuildArtifacts@1 # ビルド成果物をアーティファクトとして公開・・・(8)
  inputs:
    PathtoPublish: '$(Build.ArtifactStagingDirectory)'
    ArtifactName: 'drop'
    publishLocation: 'Container'

 パイプラインのYAMLは、「trigger」「pool」「steps」の3つのセクションに分かれています。また「variables」はビルドやデプロイで使用する変数を定義するセクションで、任意で設定します。

 triggerはいつパイプラインを実行するかを定義し、ここではmainブランチへのPushをトリガーにしています(1)。poolはどの仮想マシンでジョブを実行するかを指定し、今回はWindows環境を使用しています(2)。

 stepsには実際のビルドやデプロイの処理をtaskという単位で順番に定義していきます。UseDotNet@2は事前に必要な.NET SDKをインストールするためのステップです(3)。

 NuGetToolInstaller@1はNuGetをインストールするタスクで、NuGetパッケージの復元に必要です(4)。NuGetCommand@2はソリューションファイルから依存関係を復元するためのステップです(5)。

 DotNetCoreCLI@2は.NET Core CLIを使用してプロジェクトをビルドするためのステップで、ここではビルドコマンドを指定しています(6)。

 次のDotNetCoreCLI@2はアプリケーションをデプロイ可能な形式(ここではZIP形式)に変換するための発行ステップです(7)。

 最後のPublishBuildArtifacts@1で、(7)で作成したビルド成果物をアーティファクトとして保存します(8)。

 Azure Pipelinesでのアーティファクトとは、ビルド成果物をデプロイパイプラインなどで再利用できるようにAzure DevOps上にアップロードしたファイルのことを指します。

 YAMLの内容を確認したら、「Save and run」をクリックしてパイプラインを保存し、初回の実行を開始します。なお、YAMLファイルは、「azure-pipelines.yml」という名前でリポジトリのルートに保存されます。これにより、Azure DevOpsはこのYAMLファイルを基にパイプラインを実行します。

図6:YAMLの保存と実行画面
図6:YAMLの保存と実行画面

 パイプラインのYAMLを保存すると、Azure DevOpsが自動的にパイプラインを実行します。実行結果は「Pipelines」セクションで確認することができます。

図7:パイプラインの実行結果
図7:パイプラインの実行結果

 パイプラインの実行が完了すると、ビルドの結果やテストの合否、デプロイのステータスなどが表示されます。もしエラーが発生した場合は、ログを確認して原因を特定します。

図8:パイプライン失敗時のメッセージ
図8:パイプライン失敗時のメッセージ

 上の画像にあるエラー「No hosted parallelism has been purchased or granted. To request a free parallelism grant, please fill out the following form https://aka.ms/azpipelines-parallelism-request」が発生した場合は、Azure DevOpsの無料利用枠である「ホステッドパイプライン」の並列実行数が不足していることを示しています。

 この場合は、前述の「MSにパイプラインの無料利用枠の申請を行う」セクションで説明した通り、無料利用枠の申請を行う必要があります。

次のページ
Azure Pipelinesによるビルドパイプラインの作成と実行(2)

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Azureのクラウド環境でDevOpsを実現する「Azure DevOps」入門連載記事一覧

もっと読む

この記事の著者

WINGSプロジェクト 秋葉 龍一(アキバ リュウイチ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/21897 2025/07/17 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング