Azure DevOps の Pipeline を使って CI/CD 環境を構築する
前回の記事では Azure DevOps と Visual Studio を連携する手順を紹介いたしました。
その中では、Azure DevOps と Visual Studio を連携し、Azure DevOps へローカルのソースコードを同期するまでを実施いたしました。
今回は、Azure DevOps の Pipeline を使ってビルドとデプロイ(アプリケーションの配置)を一連で実行してみたいと思います。
<この記事で学べる事>
·Azure DevOps の Pipeline を利用した CI/CD 環境の構築
なお、Azure DevOps を利用するため、Microsoft アカウントを持っていることが前提となります。
Azure DevOps と CI/CD
Azure DevOps と CI/CD の関連に触れ、Azure DevOps で使用するツールを紹介していきたいと思います。
CI(継続的インテグレーション)
CI(継続的インティグレーション)とは、開発者がソースコードをリモートリポジトリに同期し、同期したソースコードを自動的にビルドやテストを実施する手法です。
Azure DevOps では、Build Pipeline と呼ばれる Pipelines(Builds)がそれにあたるため Pipelines(Builds)を使用します。
CD(継続的デリバリー)
CD(継続的デリバリー)とは、CI(継続的インティグレーション)でビルドされたアプリケーションをデプロイ(配置)します。
Azure DevOps では、Release Pipeline と呼ばれる Releases がそれにあたるため Releases を使用します。
プロジェクトとソース
本稿の検証で使用するプロジェクトとソースコードを紹介いたします。
ビルド用のプロジェクトとして「de-proj」が準備済みです。
なお、プロジェクトの作成手順に関しては、別の記事でまとめていますので、よろしければこちらをご覧ください。
「WebAppAZ01」という名前のアプリケーションを準備しています。
WebAppAZ01 は Web アプリケーションです。
また、ターゲットフレームワークは「.Net Framework 4.8」となっています。
Build Pipeline の作成
では、Build Pipeline を使って CI を構築する手順を解説いたします。
Azure DevOps にサインインします。
対象プロジェクトから [Pipelines] → [Pipelines] をクリックします。
また Build Pipeline アイコンをクリックすると表示される [Create Pipeline] をクリックします。
なお、本稿の例では、対象プロジェクト名は「de-proj」です。
次に、「Connect」画面が表示されます。
ソースコードの配置先サービスに該当するサービスを選択します。
本稿の例では、Azure DevOps に配置したソースコードが対象のため [Azure Repos Git] をクリックします。
次に、「Select」画面が表示されます。
リポジトリを選択します。
本稿の例では、「de-proj」プロジェクトに配置したソースコードが対象のため [de-proj] をクリックします。
次に、「Configure」画面が表示されます。
パイプラインの構成に該当するパイプラインの構成を選択します。
本稿の例では、「.Net Framework 4.8」で構成されたWebアプリケーションのため [ASP.NET Core (.NET Framework)] をクリックします。
次に、「Review」画面が表示されます。
YAML ファイルの内容が表示されます。
[Save and run] をクリックします。
次に、コミット理由などの入力を求められます。
未入力のまま [Save and run] をクリックします。
Build Pipeline が作成されました。
ビルドジョブも実行され、正常に終了しています。
Release Pipeline の作成
では、Release Pipeline を使って CD を構築する手順を解説いたします。
対象プロジェクトから [Pipelines] → [Pipelines] をクリックします。
Release Pipeline アイコンをクリックすると表示される [New Pipeline] をクリックします。
次に、「Select a template」画面が表示されます。
デプロイ用のテンプレートがいくつか準備されています。
本稿の例では、Azure App Service へのデプロイとなるため [Azure App Service deployment] をクリックします。
次に、「Stage」画面が表示されます。
本稿の例では、「de-release」というステージ名を設定しています。
Release Pipeline が作成されました。
続いて、Release Pipeline の設定をおこなうため [1 job, 1 task] をクリックします。
次に、ステージの設定画面が表示されます。
[Azure subscription]、[App type]、[App service name] を指定します。
本稿の例では、Azure App Service の OS は Windows のため [App type] に [Web App on Windows] を指定します。
また、[App service name] に、以前、本ブログで構築したWeb アプリケーションを指定し [Save] をクリックします。なお、Web アプリケーションの構築手順に関しては、別の記事でまとめていますので、よろしければこちらをご覧ください。
次に、「Save」画面が表示されます。
[Folder]、[Comment] を入力し [OK] をクリックします。
なお、Release Pipeline の配置先フォルダを変更したい場合、[Folder] を指定してください。また、[Comment] は未入力でもOKです。
Release Pipeline に設定が追加されました。
Build Pipeline の追加
続いて、Release Pipeline に Build Pipeline を追加し CI/CD を構築する手順を解説いたします。
Release Pipeline を開きます。
Release Pipeline に Build Pipeline を追加するため [Add an artifact] をクリックします。
次に、「Add an artifact」画面が表示されます。
[Source type]、[Project]、[Source (build pipeline)]、[Default version]、[Source alias] を設定し [Add] をクリックします。
なお、Build Pipeline を追加するため [Source type] に [Build] を設定しています。
Release Pipeline に Build Pipeline が追加できました。
[Save] をクリックします。
次に、「Save」画面が表示されます。
[Comment] を設定し [OK] をクリックします。
なお、[Comment] は未入力でも OK です。
Release Pipeline の Artifact に Build Pipeline が追加されました。
Azure DevOps の Pipeline を使った CI/CD の構築が完了しました。
Pipeline の実行と YAML の修正
Azure DevOps の Pipeline を使った CI/CD の構築が完了しましたので、実際に、ビルドからデプロイまでが正常に動作するか検証してみたいと思います。
Release Pipeline を開きます。
[Create release] をクリックします。
次に、「Create a new release」画面が表示されます。
[Create] をクリックします。
エラーが発生しました。
再度、実行しましたが、同じくエラーとなりました。
Pipeline の設定に誤りがあるようなので調査してみます。
異常終了した pipeline のエラー内容を確認します。
[Deploy Azure App Service] でエラーが発生しているようです。
「Error: No package found with specified pattern: D:\a\r1\a***.zip・・・」と出力されていますので、エラー内容をもとにネットで調査してみます。
調査結果から [Deply Azure App Serviceの[Package or folder] に設定されている値に誤りがあると判明しました。
[$(System.DefaultWorkingDirectory)/*/.zip] は [D:\a\r1\a**.zip] を指していて、リリース時に [D:\a\r1\a**.zip] を探しているとのことです。
以下は、参考にさせていただいたサイトです。ネスケラボ様、ありがとうございました。
Build Pipeline を修正します。
Build Pipeline の [de-proj] を選択し [Edit] をクリックします。
また、検索ボックスにて [publish] を入力します。
[Tasks] に [Publish build artifacts] が表示されるため [Publish build artifacts] をクリックします。
次に、「Publish build artifacts」画面が表示されます。
[Add] をクリックします。
YAML にタスクが追加されました。
[Save] をクリックします。
次に、「Save」画面が表示されます。
[Save] をクリックします。
Pipeline の実行
再度、ビルドからデプロイまでが正常に動作するか検証してみたいと思います。
Release Pipeline を開きます。
[Create release] をクリックします。
次に、「Create a new release」画面が表示されます。
[Create] をクリックします。
正常に終了しました!
Build Pipeline が正常に修正できたようです。
はじめにエラーになった [Deploy Azure App Service] も正常に実行されています。
Web ブラウザからデプロイした Web アプリケーションを開きます。
Web アプリケーションへアクセスできました。
ソースコードの修正後、再度、Pipeline を実行してみます。
Web ブラウザからデプロイした Web アプリケーションを開きます。
変更内容が反映されています。
まとめ
以上が、Azure DevOps の Pipelines を使った CI/CD 環境の構築手順とその検証となります。
いかがでしたでしょうか?
Azure DevOps の Pipelines を使った場合、簡単なものであれば1時間程度で CI/CD 環境を構築することができます。そのため、とても使いたすく感じました。
ただし、実際に Pipeline を実行したときエラーが発生したため少し戸惑い、エラーの調査に費やした時間は CI/CD 環境を構築した時間よりもかかりました。
しかし、エラーへの対処方法を把握していれば、次からは戸惑うことはないと思います。
なお、本稿では単純な Web アプリケーションのビルドからデプロイまでを対象としているため、自動テストは含んでいません。
最後までお読みいただきありがとうございます。
では。