ソフトウェアは、本番環境に書かれ、テストされ、展開される必要があります。そのために、開発者とDevOpsはCI/CDパイプラインまたはビルド/リリースパイプラインを構築し、この活動の多くを自動化します。
A pipeline allows developers, DevOps teams and others to produce and deploy reliable code. In the Microsoft realm, the way to build a pipeline is with Azure DevOps with a feature called Azure Pipelines.
Azureパイプラインを使用すると、ビルドを自動的に実行し、テストを実行し、コード(リリース)をさまざまな開発および本番環境に展開できます。しかし、Azure DevOpsやパイプラインについて聞いたことがない場合、またはAzure DevOpsでパイプラインを構築したことがない場合はどうでしょうか?それなら、このAzureパイプラインのチュートリアルが役立ちます。
この記事の作成には、マイクロソフトのAzureテクニカルトレーナーであるPeter De Tender氏に感謝いたします。
プロジェクト概要
この記事では、プロジェクトの構築方法やソリューションの実装方法について説明します。各セクションは前のセクションに基づいて段階的に進んでいきます。
このプロジェクトでは、まったくの初心者から始めて、最初のAzure DevOpsパイプラインの作成方法を学びます。Gitバージョン管理からビルドの呼び出し、自動的なテストの実行、最終的にはパッケージのリリースまでの概念を学びます。このプロジェクトの最後までに、サンプルのeコマースアプリケーションがAzure WebAppとして展開されています。
このプロジェクトは30分で完了するはずです。
このプロジェクトに従ってリソースを作成した後、すぐに削除すると、Azureアカウントに請求は発生しません。忘れずに削除してください!
対象読者
このプロジェクトでは、Azure DevOpsのWeb UIで最初のAzure Pipelineの基本をカバーします。Azure Pipelinesに初めて取り組む方には非常に役立つ情報ですが、既にパイプラインを作成した経験がある方やAzure Pipelinesの専門家にはあまり役に立ちません。
環境要件
このプロジェクトをステップバイステップで進める予定の場合、以下が最低限必要です:
- Azureアカウント
- グローバル管理者または同様の権限で<Azureポータルにログインしています。
- A GitHub account
- 空のGithubリポジトリが作成済み
- 空のAzure WebAppが展開されており、dotnetcore 2.2とLinuxがプラットフォームとして使用されています。
Azure DevOps組織を作成する
完全にゼロから始めるため、最初にすべてのAzure DevOpsの機能とサービスが含まれる「ベース」オブジェクトである組織を作成します。組織は、次のセクションで作成する方法を学ぶプロジェクトがすべて格納される場所です。
- Azure Portalから、すべてのサービスをブラウズし、DevOpsを検索してしてAzure DevOpsを選択します。以下に予想される内容が表示されます。これにより、Azure DevOpsブレードが開かれます。

2. 次に、私のAzure DevOps組織をクリックして、Azureの資格情報を提供します。以下の画像に示すように、新しい組織を作成できるページに移動します。ここで、青い新しい組織の作成ボタンをクリックします。

3. 次のページで、組織の名前を指定します。特定の名前を使用する際に問題が発生する場合は、Azure DevOps組織の命名規則を確認してください。この画面では、最も近いAzureリージョンも指定します。完了したら、続行をクリックします。

この時点で、Azure DevOps組織が作成されました!
Azure DevOpsプロジェクトの作成
次のステップは、プロジェクトの作成です。プロジェクトは、作成するパイプライン、さまざまなアーティファクト、および特定のサービスまたはソフトウェアに関連するその他の情報のコンテナです。
Azure DevOpsでは、組織の作成と同じワークフローでプロジェクトを作成することができます。前述の手順に従っている場合、以下に示すようなプロジェクト作成ページが表示されるはずです。
- プロジェクト作成ページで、プロジェクト名フィールドにプロジェクトの名前を入力します。このプロジェクトでは、Azure DevOpsプロジェクトのdevopsdemoを使用します。
- プロジェクトの作成を確認するには、+ プロジェクトの作成ボタンをクリックします。
- 現時点では、可視性をプライベートに設定したままにしてください。これにより、プロジェクトがインターネットに公開されないようになります。パブリックプロジェクトでは、プロジェクトのアーティファクトに対してプロジェクトの非メンバーやサインインしていないユーザーが読み取り専用のアクセス権を持つことができます。

この時点で、Azure DevOpsのワークスペース(プロジェクト+組織)が作成されました。これまでの手順に従っている場合、作成されたAzure DevOps組織の名前はpdtitws123であり、その組織内にはdevopsdemoという名前のプロジェクトがあります。

Azure DevOpsビルドパイプラインの構築
Azure DevOpsの組織とプロジェクトが設定されたので、その内部にビルドパイプラインを作成することができます。パイプラインは、すべての魔法が起こる場所です。コードのコンパイル、依存関係の取得など、さまざまなタスクを実行するためのビルドを作成します。
- ダッシュボードから、パイプラインを選択し、ビルドを選択します。

2. ビルドパイプラインがまだ見つかっていないというメッセージが表示されます。 新しいパイプラインをクリックして、ビルドパイプラインの作成を開始します。

3. その後、コードが格納されている場所を指定するように求められます。このプロジェクトでは、コードはGitHubリポジトリに格納されています。 GitHubを選択します。ここがコードの格納場所であり、ビルドのトリガーが発生する場所です。

4. GitHubをクリックすると、以下のようにGitHubアカウントの資格情報の入力を求められます。 この手順を開始する前に、この記事の前提条件セクションで定義されている空のGitHubリポジトリを作成してください!

5. 次に、Azure Pipelinesへのアクセス許可を承認するように求められます。これにより、Azure DevOpsがGitHubリポジトリにアクセスするための権限が与えられます。

GitHubリポジトリをビルドパイプラインにリンクする
Azure DevOpsにGitHubアカウントへのアクセス許可を与えた後、GitHubリポジトリをビルドパイプラインにリンクします。
- このプロジェクトで作成した空のGitHubリポジトリを選択します。

2. プロジェクトがリポジトリからソースコードを読み取り、書き込み、確認することを許可します。その後、承認してインストールをクリックしてこのプロセスを確認します。

3. 確認をクリックすると、以下のようなエラーが生成されます。このエラーは、選択したGitHubリポジトリが空であるために発生します。

この時点で、GitHubリポジトリがAzure DevOpsのビルドパイプラインにリンクされます。
GitHubリポジトリをAzure DevOpsのビルドパイプラインにリンクさせるために、毎回完全に新しいパイプラインを作成する必要はありません。
サンプルのGitHubリポジトリコードの追加
GitHubリポジトリにコードがないと、Azure DevOpsのビルドパイプラインは実行されません。この段階では、コードの内容は問われません。リポジトリにコードを追加するために、既存のリポジトリからコードをクローンします。このリポジトリでは、Azure WebAppsでeコマースのサンプルアプリケーションを公開するためのソースコードがすべて利用できます。
このリポジトリのサンプルコードには、SimplCommerceというサンプルのeコマースアプリケーションが含まれています。このアプリケーションは、典型的な「Hello World」プロジェクトよりも現実的なオープンソースのdotnetcoreアプリケーションです。
- このサンプルのGitHubリポジトリに移動し、以下に示すようにコードのインポートをクリックします。

2. 古いリポジトリのクローンURLにはhttp://github.com/007FFFLearning/SimplDevを使用し、インポートを開始をクリックします。

リポジトリのインポート手順が正常に完了したら、Azure DevOps Pipelineウィンドウを更新し、続行することができるはずです。
YAMLでビルドパイプラインを検査および表示する
この時点では、パイプライン作成プロセスのレビュー段階に入ります。YAML形式でビルドパイプラインの表現が表示されます。このYAMLファイルは、このプロジェクトでのdotnetcoreというソースコードの言語の検出に基づいて自動的に構築されます。
Azure DevOpsの実際の利点の1つは、パイプラインYAMLです。他の多くのDevOpsツールでは、パイプラインファイルを手動で構築する必要があります。Azure Buildパイプラインの手動実行

通常、ビルドはソースコントロールへのコミットによってトリガされる継続的インテグレーション(CI)パイプラインです。ただし、ビルドパイプラインを手動でトリガして実行することもできます。ビルドパイプラインを手動で開始して、何が起こるかを見てみましょう。
これまでに進んでいる場合、ビルドパイプラインを開始するために実行をクリックできる状態になっているはずです。以下のスクリーンショットから分かるように、これによりパイプラインビルドプロセスが開始されます。

数秒後、以下に示すように、このプロセスがmacOSで実行されます。ビルドパイプラインは、パイプライン内の各ジョブとタスクが実行されるたびにリアルタイムで情報を返します。

このビルドパイプラインは、他のオペレーティングシステム(この例では)に対しても同じプロセスを繰り返します。実行される手順は、YAMLファイルの構築方法によって大きく異なります。

ビルドが完了すると、以下のように緑色のチェックマークが表示されます。このスクリーンショットは、各プラットフォームのビルドが正常に終了したことを示しています。

Azure DevOpsのビルドパイプラインを作成しました!
Azure DevOpsリリースパイプラインの構築
ビルドパイプラインが作成されました。これは大きな進歩です。この時点で止めても、完全に自動化されたパイプラインの途中まで進んでいます。しかし、まだ終わりではありません!ソフトウェアの究極の目標は、顧客がそれを使用できるように展開することです。これからは、リリースパイプラインも自動化しましょう!
A release pipeline takes a build artifact, a result of the build process and deploys that to one or more environments. In this Project, you’re going to use a release pipeline to publish code in the GitHub repo to an Azure Web App.
- Azure DevOpsから、「Pipelines」をクリックし、Releasesを選択します。

2. 次に、「New」を選択し、「New Release Pipeline」を選択します。これにより、新しいリリースパイプラインウィザードが起動します。

3. 右側のテンプレートリストから、「Azure App Service Deployment」を選択します。将来のリリースパイプラインの作成時間を節約するためのさまざまな種類のテンプレートが表示されます。

4. ステージ名に説明を入力します。このプロジェクトでは、Deploy_to_webappという名前を使用します。

リリースパイプラインは、以下のスクリーンショットのようになります。

5. ステージフィールドで、「1つのジョブ、1つのタスク」を選択します。このフィールドでは、実際の展開に使用するAzure Web App環境の設定を提供する予定です。
6. Azure App Serviceデプロイメントテンプレートの一部には、この画面で定義する必要があるいくつかのパラメータが含まれています。
- ステージ名-この例ではDeploy-to-webapps2です。
- Azureサブスクリプション-サブスクリプションを選択し、認証で確認します(資格情報が必要です)
- アプリの種類-Web App on Linux
- App Service Name-先に作成したWebアプリ

7. 終わったら、Azureパイプラインプロジェクトの上部メニューにあるパイプラインをクリックします。これにより、メイン画面に戻り、次のステップであるアーティファクトの指定を完了できます。

Azure DevOpsリリースパイプラインにアーティファクトを追加する
リリースパイプラインでは、展開する必要があるさまざまなアイテムがあります。これらのアイテムはアーティファクトと呼ばれます。 アーティファクトは、アプリケーションのデプロイ可能なコンポーネントです。Azureパイプラインは、さまざまなアーティファクトソースで生成されたアーティファクトを展開できます。
このセクションでは、リリースパイプラインにアーティファクトを追加する方法について説明します。
- パイプライン画面にいる間、アーティファクトを追加をクリックします。
- ソースタイプは既にビルドに設定されています。これは、前に作成したビルドパイプラインの出力を展開するためのものです。 ソース(ビルドパイプライン)ドロップダウンから前に作成したビルドパイプラインを選択します。
- 構成を保存するには、追加をクリックします。

4. 最後に、画面の右上隅にある保存ボタンをクリックして、リリースパイプラインを保存します。
Azure DevOpsリリースの作成
リリースパイプラインが作成されたら、リリースの作成を開始します。リリースはパイプラインの特定の実行です。リリースパイプラインをテンプレートとし、そのリリースパイプラインの特定のインスタンスをリリースと考えてください。リリースがあると、そのリリースを展開することができます。
リリースを作成するには:
- 以下に示すように、ウィンドウの右上隅にあるリリースの作成ボタンをクリックします。

2. 特に特別なことは行わないので、新しいリリースを作成画面でデフォルトを受け入れて、作成をクリックします。この時点では単一のステージしかなく、今すぐ展開するビルドアーティファクトの単一のバージョンがあります。

3. 数秒後に、以下のようにリリースが作成されたことを示す通知(緑のバー)が表示されます。今、リリース-1をクリックして、リリースプロセスの詳細に移動します。

リリースが作成され、展開の準備ができました!
リリースの手動展開
A release is a set of instructions to perform on how to deploy a build. You’ve done all of that. Now it’s time to actually run those instructions and deploy code to an environment.
以前に作成したリリース-1のリリース画面にいる間:
- Deploy_to_webappステージを選択し、デプロイを確認してください。そうすると、状態は以下のように進行中に変わります。この時点で、リリースは前に実行されたビルドパイプラインからソースコードを取得し、Azure WebAppインスタンスにプッシュしています。
このステップでは、バックエンドで実行されるジョブが開始され、ソースコードをコピーして実際のリリースサイクルを実行します。

2. 進行中のステージをクリックしてください。コンソール出力エリアに表示されるログ情報が表示されます。

完了すると、ステージは以下のように成功と表示されます。

すべてがうまくいけば、リリースは完了し、Azure Web Appに公開されたWebアプリを持っているはずです!
デプロイされたAzure WebAppの検査
プロセス全体が完了したので、自分の努力の成果を確認してください。
- Azureポータルにログインし、リリースパイプラインの対象として選択したAzure WebAppに移動し、以下に示すURLをコピーしてください。

2. 今、Azure Web AppのURLを提供して、ブラウザに貼り付けます。ブラウザは、以下のホームページに似たeコマースのサンプルアプリケーションを読み込むはずです。

これですべて完了です!GitHubリポジトリから展開されたAzure Web Appを持つことができ、完全に自動化することができます。
クリーンアップ
このプロジェクトを進めてきた場合、新しいAzure DevOpsの組織、プロジェクト、ビルドパイプライン、リリースパイプライン、およびリリースが作成されました。テストが終わったら、元の作成した組織を削除して、Azureのリソースに課金されるリスクを回避してください。
以下の手順で削除します:
- メインのAzure DevOpsワークスペースに戻ります。
- 左下の組織の設定をクリックします。
- 概要画面で、削除ボタンをクリックします。組織の削除の下にあるページの一番下にあります。
- 組織名を入力し、削除をクリックします。これにより、行った作業がすべて削除されます。
まとめ
このプロジェクトの手順に従っていれば、Azure DevOpsで完全なCI/CDパイプラインをゼロから作成しました。このプロセスの内容について、大まかなイメージを持つことができるはずです。
Azure Pipelinesは、このプロジェクトで行った内容よりも深く掘り下げることができますが、このプロセス全体についての基本的な知識を持っているはずです。さらに深い内容はありますが、今回のプロジェクトで基礎的な知識を獲得しました。