目次


IBM Bluemix DevOps Services の紹介: パート 4 デリバリー・パイプラインを使用して Bluemix へ自動的にデプロイする

Comments

この IBM Bluemix DevOps Services を紹介する 4 部構成のチュートリアルでは、IBM Bluemix DevOps Services を利用すると、アプリケーションの計画作業、コーディング、デプロイがいかに容易になるかをデモンストレーションします。パート 1 では、単純なアプリケーションをデプロイし、デプロイしたアプリケーションに変更を加える方法を説明しています。パート 2 では、IBM Bluemix のサービスを利用するアプリケーションをデプロイする方法を説明しています。パート 3 では、Bluemix DevOps Services の計画機能を利用してアプリケーションを計画および追跡する方法、Bluemix の新しいサービスをアプリケーションに追加する方法、そして Bluemix のサービスを利用するコードを作成する方法を説明しています。最後のパート 4 (このチュートリアル) では、チームのメンバーがコードをプロジェクトのリポジトリーにプッシュすると自動的にそのアプリケーションが Bluemix にデプロイされるようにするために、Delivery Pipeline サービスを利用する方法を説明します。

このシリーズのサンプルに取り組むことで一連の知識を得られるだけでなく、おまけとして、オンライン・ストアでの商品の価格を自動的にチェックしてくれるアプリケーションを手に入れることができます。このアプリケーションがあれば、お気に入りの商品がセールに出されているかどうかを確かめるために Web を見て回る必要がなくなります!(私のショッピング好きがばれてしまいましたか?)

パート 4 の内容

このシリーズの今回のチュートリアルでは、以下の方法を説明します。

  • DevOps 手法によるソフトウェア開発をサポートする、マルチステージ・デプロイメント・パイプラインを構成する
  • チームのメンバーがコードをプロジェクトのリポジトリーにプッシュすると、自動的にデプロイが開始されるようにセットアップする

アプリケーションの概要

出発点となるのは、このシリーズのこれまでのパートで作成した Lauren's Lovely Landscapes アプリケーションと Fabulous Price Finder アプリケーションです。

パート 2 とパート 3 で説明したように、Fabulous Price Finder アプリケーションは Bluemix の Cloudant サービスと Twilio サービスを利用します。

チームのメンバーがコードをプロジェクトのリポジトリーにプッシュすると、ビルド・ステージが自動的にトリガーされます。

作業を開始する上での必要事項

パート 4 はパート 1パート 2パート 3 の続きです。まだこれらのパートを完了していない場合は、完了してからこのパートを開始してください。4 つすべてのパートでは、BluemixBluemix DevOps Services のアカウントが必要になります。また、以下のいずれかのブラウザーも必要です。

  • Firefox 15 またはそれ以降のバージョン
  • Chrome 21 またはそれ以降のバージョン
  • Internet Explorer 10 またはそれ以降のバージョン
  • Safari 7 またはそれ以降のバージョン

アプリを実行するコードを入手する

ステップ 1. 本番スペースを作成する

Bluemix での「組織」と「スペース」とは、いずれも Cloud Foundryインフラストラクチャーの組織単位です。この 2 つを使用して、アプリケーション・リソースを保管して追跡することができます。組織にはドメイン、スペース、ユーザーが保管され、スペースにはアプリケーションとサービスが保管されます。

デフォルトでは、Bluemix に初めてログインすると自動的に「dev (開発)」スペースが作成されます。このチュートリアルでの dev スペースは、実際の本番環境にコードを取り込むことなく、本番レベルの環境でコードをライブでテストするための場所を表していると考えてください (このスペースは、品質保証スペース、あるいはテスト・スペースと呼ぶこともできます)。

ここで、本番スペースを表す、prod という名前の新規スペースを作成します。ここが、エンド・ユーザーが使用するアプリケーションを保持する場所となります。

  1. Bluemix にログインして、ダッシュボードを表示します (ダッシュボードをまだ表示していない場合)。
  2. 左側のメニューで「Create a Space (スペースの作成)」をクリックします。
  3. 「Create a Space (スペースの作成)」ダイアログ・ボックスでは、スペース名として「prod」と入力し、「CREATE (作成)」をクリックします。

ステップ 2. dev スペースへのデプロイ用サービスを作成する

開発スペースと本番スペースにデプロイする場合は、それぞれのスペースごとに、アプリケーションに必要な Bluemix サービス・インスタンス一式をスペース専用に揃えるのが通常です (例えば、スペースごとに個別のデータベースを用意します)。

まず、dev スペースのサービスを作成することから始めます。

  1. Bluemix ダッシュボードを表示します (ダッシュボードをまだ表示していない場合)。
  2. メイン・メニューで「CATALOG (カタログ)」をクリックします。
  3. Cloudant NoSQL DB サービスを以下の手順で作成します。
    1. Cloudant NoSQL DB サービスが見つかるまでスクロールダウンします (ヒント: 「Data and Analytics (データおよび分析)」セクションを調べてください。サービス・カタログは、頻繁に新しいサービスが追加されて更新されています)。
    2. 「Cloudant NoSQL DB」サービスをクリックします。
    3. 「Space (スペース)」ドロップダウン・リストでは、「dev」を選択します。
    4. 「App (アプリ)」ドロップダウン・リストでは、「Leave unbound (アンバインドのまま)」を選択します。
    5. 「Service name (サービス名)」ボックスの値は、デフォルトのままにするか、好きな名前に変更します。ただし、名前は必ず「cloudant」で始まるように選んでください。このようにすることで、コードがサービスを識別できるようになります。
    6. サービスの名前は、後で必要になるのでメモしておいてください。
    7. 「CREATE (作成)」をクリックします。
  4. Twilio サービスを以下の手順で作成します。
    1. カタログを表示していない場合は、カタログを表示します。
    2. Twilio サービスが見つかるまでスクロールダウンします (ヒント: 「Mobile (モバイル)」セクションを調べてください)。
    3. 「Twilio」サービスをクリックします。
    4. 「Add Service (サービスの追加)」ダイアログ・ボックスの「Space (スペース)」フィールドで、「dev」を選択します。
    5. 「App (アプリ)」フィールドには、「Leave unbound (アンバインドのまま)」を選択します。
    6. 「Service (サービス)」フィールドの値は、デフォルトのままにするか、「twilio」で始まる (この先頭文字で、コードはサービスを識別します) 任意の名前で置き換えます。選んだ名前は、後で必要になるのでメモしておいてください。
    7. 「Account SID (アカウント SID)」フィールドと「Auth Token (認証トークン)」フィールドのそれぞれに、「Twilio Account Settings (Twilio アカウント設定)」ページから Twilio の AccountSID と AuthToken をコピーして貼り付けます。
    8. 「CREATE (作成)」をクリックします。

ステップ 3. prod スペースへのデプロイ用サービスを作成する

ステップ 2 の手順を繰り返して、今度は prod スペースへのデプロイ用に、Cloudant サービスと Twilio サービスを作成します。「Space name (スペース名)」フィールドには、「dev」ではなく、必ず「prod」を選択してください。

ステップ 4. デリバリー・パイプラインを構成する

ここまでの作業により、Fabulous Price Finder アプリケーションのビルドとデプロイメントに対処する、マルチステージのパイプラインを構成することができます。

  1. パート 2パート 3 で作成して更新した「Fabulous Price Finder」プロジェクトを開きます。それには、Bluemix DevOps Services を表示して (まだユーザーとして認証されていない場合は) サインインした後、「My Project (マイ・プロジェクト)」ページで、該当するプロジェクトをクリックします。
  2. 右上隅にある「BUILD & DEPLOY (ビルドおよびデプロイ)」をクリックします。
  3. 以下の手順で、アプリケーションをビルドするビルド・ステージを作成します。
    1. 「ADD STAGE (ステージの追加)」をクリックします。
    2. 「Stage Configuration (ステージ構成)」ダイアログ・ボックスの上部にある「MyStage (マイ・ステージ)」をクリックし、ステージの名前として「Build Stage (ビルド・ステージ)」と入力します。
    3. 「Input Type (入力タイプ)」は、デフォルトで「SCM Repository (SCM リポジトリー)」に設定されています。この設定は、ステージの入力が Git リポジトリーであることを意味します。
    4. 「Stage Trigger (ステージ・トリガー)」では、「Run jobs whenever a change is pushed to Git (変更が Git にプッシュされるたびにジョブを実行)」がデフォルトで選択されています。このオプションが選択されている場合、チームのメンバーがプロジェクトのリポジトリーにコードをプッシュすると、ビルド・ステージが自動的にトリガーされます。
    5. 「JOBS (ジョブ)」をクリックして、「Stage Configuration (ステージ構成)」ダイアログ・ボックスの「JOBS (ジョブ)」セクションを開きます。
    6. 「ADD JOB (ジョブの追加)」をクリックし、「Build (ビルド)」を選択します。
    7. (Java アプリケーションとは異なり) このアプリケーションはコンパイルする必要がないので、ここでは「Builder Type (ビルダー・タイプ)」として「Simple (シンプル)」を使用しますが、さまざまなタイプのビルダーを選択することができます。
    8. 「Stop running this stage if this job fails (このジョブが失敗した場合、このステージの実行を停止します)」は、デフォルトで選択されています。このオプションが選択されている場合、あるジョブが失敗すると、パイプラインのそれ以降のすべてのジョブは実行されず、ステージ全体が失敗としてマークされます。
    9. 「SAVE (保存)」をクリックします。
  4. 次は以下の手順で、dev スペースへのデプロイを追加します。
    1. 「ADD STAGE (ステージの追加)」をクリックします。
    2. 「Stage Configuration (ステージ構成)」ダイアログ・ボックスの上部にある「MyStage (マイ・ステージ)」をクリックし、ステージの名前として「Dev Deployment (開発へのデプロイ)」と入力します。
    3. 「Input Type (入力タイプ)」は、デフォルトで「Build Artifacts (ビルド成果物)」に設定されています。この設定は、前のステージで作成されたビルド成果物が、このステージの入力になることを意味します。
    4. 「Stage Trigger (ステージ・トリガー)」では、「Run jobs when the previous stage is completed (前のステージが完了したらジョブを実行)」がデフォルトで選択されています。この設定により、パイプラインは、プロジェクトのリポジトリーに誰かがコードをプッシュするとビルド・ステップが実行されて、ビルドが成功した場合には開発環境へのデプロイメントが開始されるように構成されます。
    5. 「JOBS (ジョブ)」をクリックして、「Stage Configuration (ステージ構成)」ダイアログ・ボックスの「JOBS (ジョブ)」セクションを開きます。
    6. 「ADD JOB (ジョブの追加)」をクリックし、「Deploy (デプロイ)」を選択します。
    7. 「Application Name (アプリケーション名)」を、自分の Bluemix dev スペースに固有の名前に変更します。
    8. デフォルトで、デプロイヤーはマニフェストに設定された命令を使用します。アプリケーションのデプロイ先は、ランダムな文字列が含まれる URL ではなく、チームの開発者がコードをテストできる一貫した URL にすることが望まれるので、「Deploy Script (デプロイ・スクリプト)」セクションで、cf push "${CF_APP}" の後に以下のコードを追加します。

      -n whateverYouWantYourUrlToBe

      : この URL はすべての Bluemix アプリケーションの間で一意でなければならないので、創造力を発揮してください。
    9. cf push コマンドの下に、以下の 2 行を追加して、dev スペース内のサービスをアプリケーションにバインドします。

      cf bind-service "${CF_APP}" nameOfYourCloudantService
      cf bind-service "${CF_APP}" nameOfYourTwilioService

    10. 新たにサービスがバインドされたアプリケーションを再ステージングするコマンドを追加します。

      cf restage "${CF_APP}"

      以上の変更を加えた後の「Deploy Script (デプロイ・スクリプト)」セクションは、以下のような内容になっているはずです。

      cf push "${CF_APP}" -n fbf-lauren-dev
      cf bind-service "${CF_APP}" Cloudant-dev 
      cf bind-service "${CF_APP}" Twilio-dev
      cf restage "${CF_APP}"
    11. 「SAVE (保存)」をクリックします。
  5. 次は以下の手順で、prod スペースへのデプロイを追加します。
    1. 「ADD STAGE (ステージの追加)」をクリックします。
    2. 「Stage Configuration (ステージ構成)」ダイアログ・ボックスの上部にある「MyStage (マイ・ステージ)」をクリックし、ステージの名前として「Prod Deployment (本番へのデプロイ)」と入力します。
    3. 「Input Type (入力タイプ)」は、デフォルトで「Build Artifacts (ビルド成果物)」に設定されています。これは、「Build Stage (ビルド・ステージ)」で作成されたビルド成果物が、このステージの入力になることを意味します。
    4. 「Stage Trigger (ステージ・トリガー)」では、「Run jobs when the previous stage is completed (前のステージが完了したらジョブを実行)」がデフォルトで選択されています。このパイプラインに自動テストは含まれていないため、自動的に本番スペースにデプロイするのはおそらく安全ではありません。そこで、「Run jobs only when this stage is run manually (このステージが手動で実行されたときにのみジョブを実行)」が選択されるように変更します。
    5. 「JOBS (ジョブ)」をクリックして、「Stage Configuration (ステージ構成)」ダイアログ・ボックスの「JOBS (ジョブ)」セクションを開きます。
    6. 「ADD JOB (ジョブの追加)」をクリックし、「Deploy (デプロイ)」を選択します。
    7. 「Space (スペース)」フィールドでは、「prod」を選択します。
    8. 「Application Name (アプリケーション名)」を、自分の Bluemix prod スペースに固有の名前に変更します。
    9. デフォルトでは、デプロイヤーはマニフェストに設定された命令を使用します。アプリケーションのデプロイ先は、ランダムな文字列が含まれる URL ではなく、エンド・ユーザーがアプリケーションにアクセスできる一貫した URL にすることが望まれるので、「Deploy Script (デプロイ・スクリプト)」セクションで、cf push "${CF_APP}" の後に以下のコードを追加します。

      -n whateveryouwantyoururltobe

      : この URL はすべての Bluemix アプリケーションの間で一意でなければならないので、創造力を発揮してください。
    10. cf push コマンドの下に、以下の 2 行を追加して、prod スペース内のサービスをアプリケーションにバインドします。

      cf bind-service "${CF_APP}" nameOfYourCloudantService
      cf bind-service "${CF_APP}" nameOfYourTwilioService

    11. 新たにサービスがバインドされたアプリケーションを再ステージングするコマンドを追加します。

      cf restage "${CF_APP}"

      以上の変更を加えた後の「Deploy Script (デプロイ・スクリプト)」セクションは、以下のような内容になっているはずです。
      cf push "${CF_APP}" -n fbf-lauren 
      cf bind-service "${CF_APP}" Cloudant-prod
      cf bind-service "${CF_APP}" Twilio-prod
      cf restage "${CF_APP}"
    12. 「SAVE (保存)」をクリックします。

ステップ 5. デリバリー・パイプラインを開始する

デリバリー・パイプラインの構成が完了したので、ここで、このデリバリー・パイプラインを試してみます!パイプライン・ページで、「Build Stage (ビルド・ステージ)」タイルにある再生ボタン をクリックして、パイプラインの最初のステージを手動で開始します。

デリバリー・パイプラインは、「Build (ビルド)」ステージから「Dev Deployment (開発へのデプロイ)」ステージに進みます。dev にデプロイされたビルドに満足したら、そのビルドを「Build Stage (ビルド・ステージ)」タイルから「Prod Deployment (本番へのデプロイ)」タイルにドラッグすると、アプリケーションが本番スペースにデプロイされます。

この先のステップ

このチュートリアルでは、マルチステージ・パイプラインを作成して、手動でビルドを要求しましたが、コードに変更を加え、その変更をプロジェクトのリポジトリーにプッシュすることによって、ビルドをトリガーすることもできます。その場合、デリバリー・パイプラインが自動的にアプリケーションをデプロイする様子を観察してください。

チャレンジ精神を発揮するなら、ダウンタイムがゼロの極めて重要なデプロイを実装する方法を考えてください。そのヒントは、Dan Berg のチュートリアル「IBM DevOps Services での Bluemix へのローリング・デプロイを自動化する」にあります。


ダウンロード可能なリソース


関連トピック


コメント

コメントを登録するにはサインインあるいは登録してください。

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=DevOps, Cloud computing
ArticleID=1006937
ArticleTitle=IBM Bluemix DevOps Services の紹介: パート 4 デリバリー・パイプラインを使用して Bluemix へ自動的にデプロイする
publish-date=02182016