DevTest Labs と DevOps CI/CD パイプラインの統合

DevOps とは、ソフトウェア開発 (Dev) とシステムの操作 (Ops) を統合するソフトウェア開発方法論です。 システムでは、ビジネス目標に合わせた新しいソフトウェア機能、更新プログラム、および修正プログラムが提供されます。

DevOps の方法論では、以下のことも扱われています。

  • 目標、使用パターン、およびお客様からのフィードバックに基づいて、新機能を設計する。
  • 問題が発生したときにシステムを修正、回復、強化する。

DevOps の方法論の 1 つのコンポーネントは、継続的インテグレーション (CI) と継続的デリバリー (CD) のパイプラインです。 CI/CD パイプラインは、一連のステップを通じてソース管理のコミットから情報、コード、リソースを移動し、システムを作成します。 ステップには、ビルド、テスト、およびリリースが含まれます。

Azure DevTest Labs は、CI/CD パイプラインで使用できます。 この記事では、エンタープライズ環境の CI/CD ビルドおよびリリース パイプラインで DevTest Labs を使用することについて説明します。

DevOps ワークフローでの DevTest Labs の利点

ラボでは、機能領域で作業しているチームに焦点を当てる必要があります。 この共通の焦点を持つことにより、マイナスの影響を小さいグループに限定しながら、より速い変更が可能になります。 ラボ環境で変更や問題が発生しても、他のものに影響はありません。

このように共通の焦点を持つことで、ツール、スクリプト、または Azure Resource Manager (ARM) テンプレートなど、領域固有のリソースを共有できるようになります。 開発者は、共有リソースを使用して、必要なすべてのコード、ツール、および構成を備えた仮想マシン (VM) を作成できます。 ARM テンプレートにより、適切な Azure リソースを使用してラボ VM とラボ環境が作成されます。 このテンプレートによって、リソースは動的に、あるいはカスタマイズされた基本イメージを作成することによって作成されます。

たとえば、製品が顧客のマシンにインストールされているスタンドアロン システムであるというシナリオを考えてみましょう。 DevTest Labs では、顧客のソフトウェア、成果物、構成がインストールされたラボ VM を作成して、コードの高速な内部ループ テストを行うことができます。

DevOps ワークフローでラボを使用すると、次のような利点があります。

  • 対象を絞ったアクセス: ラボをコンポーネントとして使用すると、特定のエコシステムを限られた人と関連付けることができます。 通常、共通の分野または特定の機能に従事しているチームまたはグループにラボが割り当てられています。

  • クラウド内でのインフラストラクチャのレプリケーション: 開発者は、ソース コードとツールを備えた開発者 VM を含む開発エコ システムをすばやく設定できます。 開発者は内部ループの開発をより高速にするために、運用環境の構成とほぼ同じ環境を作成することもできます。

  • 実稼働前の環境: CI/CD パイプライン内のラボでは、非同期テストのために複数の異なる実稼働前の環境またはマシンを同時に実行できます。 ラボでは、さまざまなサポート インフラストラクチャやビルド エージェントをデプロイして管理することができます。

CI/CD パイプラインでラボを使用する

CI/CD パイプラインは、重要な DevOps コンポーネントです。 パイプラインでは、開発者の pull request からのコードを既存のコードと統合して、運用環境のエコシステムにコードをデプロイします。 DevTest Labs との統合では、すべてのリソースをラボに配置する必要はありません。 たとえば、より永続的なリソースのために、ラボの外部に Jenkins ホストを設定できます。 以下に、ラボを CI/CD パイプラインに統合する具体的な例をいくつか示します。

ビルド

ビルド パイプラインでは、一緒にテストされてリリースに渡されるコンポーネントのパッケージが作成されます。 インフラストラクチャを動的に構築することで、より細かい制御が可能になります。 ラボは、ビルド エージェントとその他のサポート リソース用の場所として、ビルド パイプラインに含めることができます。 DevTest Labs では、ラボへのアクセスを制限できます。これにより、ビルド エージェントのセキュリティが向上し、偶発的な破損の可能性が減少します。

1 つのラボに複数の環境を持つことができるため、各ビルドを非同期に実行できます。 ビルド ID は、特定のビルドに対してリソースを一意に識別する環境情報の一部です。

テスト

CI/CD パイプラインを使用すると、自動および手動のテストに使用する VM や環境などの DevTest Labs リソースの作成を自動化できます。 パイプラインでは、ビルド情報の成果物または数式を使用して、さまざまなカスタム テスト構成を持つ VM が作成されます。

リリース

リリース プロセスでは、コードをデプロイする前に DevTest Labs を使用して検証を行うことができます。 このプロセスはテストに似ています。 DevTest Labs には運用環境のリソースをデプロイすることはできません。

カスタマイズ

Azure DevOps Services のコンポーネントである Azure Pipelines には、特定のラボ内の VM と環境を操作するための既存のタスクがあります。 Azure Pipelines は、CI/CD パイプラインを管理する方法の 1 つです。 ラボは、REST API の呼び出し、PowerShell スクリプトの実行、または Azure CLI の使用をサポートする任意のシステムに統合できます。

一部の CI/CD パイプライン マネージャーには、Azure および DevTest Labs のリソースを管理できる既存のオープンソース プラグインがありますが、 パイプラインのニーズに合わせるためにカスタム スクリプトを使用しなければならない場合があります。 タスクを実行するときは、ラボへアクセスするための適切なロール (たいていは共同作成者) を持つサービス プリンシパルを使用します。

次のステップ