(前編)CI/CDサービス「Azure Pipelines」入門 ~Microsoft Azure DevOps入門~

f:id:aq-sb-03:20201124114523j:plain (2020年12月1日 掲載)

こんにちは。ソフトバンクの島崎と申します。
今回はAzure DevOps入門の第3回として、「Azure Pipelines」について、前編・後編に分けて、ご紹介したいと思います!
みなさまのソフトウェア開発現場において、以下のような課題を感じたことはありませんでしょうか?

  • ソースコードの品質を担保(テスト)するのに時間や手間がかかっている
  • ソースコードのデプロイ作業に時間がかかっている
  • デプロイ時に誤ったバージョンでリリースしてしまった

サービス開発に、より一層のスピードが求められる昨今、素早くテストを行い、素早くデプロイしていく環境が必要になってきているかと思います。そこで生み出された概念が、自動テスト(Continuous Integration(以下、CI))と自動デプロイ(Continuous Delivery(以下、CD))になります。簡単にいうと、テストやデプロイを自動化しましょうということですね。
今回は、パブリッククラウド「Microsoft Azure」の中のDevOpsツール、「Azure DevOps」で、CI/CD機能を提供する「Azure Pipelines」の基本的な利用方法について、実際の画面を見ながらご紹介します!
また、Microsoft社より提供されている、サンプルアプリを利用して、実際にAzure Pipelines上で、自動テスト・自動デプロイを行います。

目次

1. Azure DevOpsとは

「Azure Pipelines」のご説明の前に、その親サービスである「Azure DevOps」に関して、ご説明をします。
「Azure DevOps」とは一言でいうと、パブリッククラウド「Microsoft Azure」 から提供されている、DevOpsを実践するためのサービス群になります。主にソフトウェアにおけるチーム開発を効率化し、またその品質の向上を支援します。Azure DevOpsは主に5つの機能で構成されています。

【Azure DevOpsの主な機能】

・Azure Repos
リポジトリ機能。ソースコードを保管し、そのバージョンを管理します。

・Azure Boards
チームタスクの見える化を行うかんばん機能を提供します。

・Azure Pipelines
継続的インテグレーション&デリバリー(以下、CI/CD)機能を提供。
ソースコードの、ビルド、テスト、デプロイを行います。

・Azure Test Plans
手動テスト項目の作成、共有、レポート出力機能を提供します。

・Azure Artifacts
自身で作成したパッケージを共有する機能を提供します。

本記事では、この中からCI/CD機能提供する「Azure Pipelines」について解説したいと思います!

2. Azure Pipelinesとは

一言でいうと、Azure DevOps上でパイプラインを担う機能になります。パイプラインとは、ビルドやデプロイのタスクを定義して、自動化できる機能を提供します。
これを利用することによって、これまで手動で実施していたビルド、デプロイ、テストなどを「自動」で実施し、開発の省力化・効率化を実現することができます。
本稿は、CI/CDの基本的な操作方法を解説するため、以下の5つの機能の中でも「Pipelines」および「Releases」の紹介をしたいと思います。

【Azure Pipelineの主な機能】

・Pipelines
CI/CD機能(※詳細後述)を提供します。yml形式のファイルを用いて、各タスクを定義します。(本ブログでは、「Pipelines」を使って、CI機能の実装を行います。)

・Environments
デプロイの履歴を管理する機能を提供します。

・Releases
CD機能を提供し、自動デプロイ機能を提供します。(本ブログでは、「Releases」を使って、CD機能の実装を行います。)

・Library
本機能内で利用する変数を定義する。パスワードなどの情報を安全に管理します。

・Task groups
複数のプロジェクトを管理する場合の一括設定機能を提供します。設定もれを防ぐことができます。

・Deployment groups
仮想マシンのグループになります。複数VMへのデプロイを管理することができます。

3. CI/CDとは

Azure Pipelinesの機能を利用する上で、「CI/CD」の概念を理解する必要があるため、本章ではそちらをご紹介したいと思います。

3-1. CI(Continuous Integration)とは

CIとは、「Continuous Integration」の略語になります。日本語では「継続的インテグレーション」と呼ばれています。継続的にインテグレーションを行う、つまり「自動」でインテグレーションを行うと意味で、主にコードの「自動ビルド/自動テスト」を実施することを指します。
Azure Piplinesでいうと、「Pipelines」でCI機能が提供されています。

3-2. CD(Continuous Delivery)とは

CDとは、「Continuous “Delivery”」の略語になります。日本語では「継続的デリバリー」と呼ばれています。継続的にデリバリーを行う、つまり「自動」でデリバリーを行うという意味で、「自動」でコードを、「リリース直前の状態」まで持っていきます。(この段階では環境へのデプロイまではされません。)また、「Continuous “Deploy”」では、環境へのデプロイまで、自動で実施します。 Azure Pipelinesでいうと、「Releases」でCD機能が提供されています。

以下、前章の「Continuous Integration」と「Continuous Delivery/Continious Deploy」を図式化したものになります。

f:id:aq-sb-03:20201124120528j:plain

4. 事前準備

4-1. Azure DevOpsのデプロイ

本章から、いよいよAzure Pipelines機能を使っていきます。
Azure Pipelinesを利用するためには、Azure上で「Azure DevOps」サービスをデプロイする必要があります。私の執筆した「(前編)リポジトリサービス「Azure Repos」入門~Microsoft Azure DevOps 入門~」を参考に、Azure DevOpsサービスをデプロイしてください。

4-2.サンプルアプリのインポート

Azure Pipelineを利用するためには、「Azure Repos」にソースコードを格納しておく必要があります。今回は、Microsoft社から提供されているPythonベースのWebサンプルアプリを使用したいと思います。サンプルアプリはGitHub上で公開されています。以下の手順で、ソースコードをAzure Reposにインポートします。

①「Repos>Files」を選択し、「Import」を選択する

f:id:aq-sb-03:20201124120956j:plain

② 「Clone URL」部分に今回利用する、サンプルアプリのURLを入力し、「Import」ボタンを選択する

サンプルアプリ:https://github.com/microsoft/python-sample-vscode-flask-tutorial

GitHubよりソースコードがインポートされ、Azure Repos上に保存されます。
以上でソースコードの準備は完了です。

4-3. Azure Web Appsのデプロイ

Azure Pipelinesから、ソースコードデプロイするのに必要な環境を準備します。今回は「Azure Web Apps」を事前にデプロイします。

Azure Portalへログインします

②「リソースの作成」より、「Webアプリ」を作成します
以下を例に入力し、「確認および作成」を押します
■プロジェクトの詳細
・リソースグループ:「任意のものを選択」or「新規作成」
■インスタンスの詳細
・名前:(任意のWebアプリ名を入力)
・公開:「コード」を選択
・ランタイムスタック:「Python3.8」 ※今回はPythonを利用します
・オペレーティングシステム:「Linux」
・地域:(任意の地域を選択)
■App Service プラン
・Linuxプラン:(デフォルトのまま)
・SKUとサイズ:Free F1(今回は無料版を利用します)

「Azure Web Apps」がデプロイされれば、事前準備は完了となります。

以上で、Azure Pipelinesを利用する事前準備が整いました。本稿はここまでとさせていただき、「(後編)CI/CDサービス「Azure Pipelines」入門」にて、実際にAzure Pipelinesを利用していきたいと思います。

CI/CDの領域では、これまで手動で行ってきた、テストやデプロイを自動化することで劇的にリリースまでの効率化を行うことができます。少しでもご興味ある方は、後編もぜひ見ていただけますと幸いです!
ここまでご覧いただき、ありがとうございました。

f:id:aq-sb-01:20201201151159j:plain

関連サービス

Microsoft Azureは、Microsoftが提供するパブリッククラウドプラットフォームです。コンピューティングからデータ保存、アプリケーションなどのリソースを、必要な時に必要な量だけ従量課金で利用することができます。→詳細はこちら