目次


Bluemix DevOps Services デリバリー・パイプラインを使用してサーバーのプッシュを自動化する

Bluemix 内でサーバー・ディレクトリーのプッシュを構成して自動化する

Comments

このチュートリアルでは、WebSphere Liberty という高速で使いやすい Java EE アプリケーション・サーバーと IBM Bluemix DevOps Services を利用すれば、どれほど簡単にサーバー・ディレクトリーのプッシュを自動化できるかを実際に示します。Bluemix DevOps Services の「Build & Deploy (ビルドおよびデプロイ)」機能を利用して Maven、Cloud Foundry、および UNIX のコマンドを同時に実行するジョブを構成することで、Bluemix 内でのサーバー・ディレクトリーのプッシュを自動化することができます。

必要となるもの

このチュートリアルでは、Eclipse IDE、DevOps Services、および WebSphere Liberty Java EE アプリケーション・サーバーを利用して、アプリケーション・デリバリー・パイプラインを自動化する簡単な方法を紹介します。Bluemix 上およびローカル環境内にデモ・アプリケーションをセットアップするために必要なものは以下のとおりです。

  1. Bluemix アカウント。このアカウントを登録済みであれば、IBM DevOps Services に直接ログインすることができます。
  2. Eclipse IDE および Eclipse 用 Maven プラグイン
  3. EGit。Git 用の Eclipse プラグインです。

Eclipse、Maven、および EGit はオプションであることに注意してください。この 3 つは、ローカル環境内でデモ・アプリをセットアップして実行する場合にのみ必要になります。

デモ・プロジェクトの概要

私たちは Linux ワークステーション上で Eclipse と Maven を使用してこのデモ・アプリを開発した後、EGit を使用して、ローカル開発環境内に別個の Git プロジェクトを複製しました。このチュートリアルで本題とするのはサーバー・ディレクトリーのプッシュを自動化する方法なので、デモ・アプリには焦点を当てません。この下にあるボタンを使用して、ソース・コードをダウンロードし、アプリを実行してください。

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

このデモ・アプリでは JavaServer Pages とやりとりするために、Java サーブレットを使用します。以下の Maven POM で、javax.servlet API に対する依存関係を確認してください。

	<project xmlns="http://maven.apache.org/POM/4.0.0" 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 	http://maven.apache.org/maven-		v4_0_0.xsd">
		<modelVersion>4.0.0</modelVersion>
		<groupId>com.ibm.bluemix.serverpackageautomation</groupId>
  	  <artifactId>testserverpackage</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>testserverpackage Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
		    </dependency>
  	</dependencies>
  <build>
    <finalName>testserverpackage</finalName>
  </build>
	</project>

ステップ 1. Bluemix DevOps Services コンソール内で Git プロジェクトを作成する

Eclipse 内で Maven を使用してアプリケーションを作成してあるという前提の下で、最初のステップとなるのは Bluemix DevOps Services を利用して Git プロジェクトを作成することです。作成した Git プロジェクトに Eclipse 内のローカル・プロジェクトをプッシュした後、「Build & Deploy (ビルドおよびデプロイ)」機能を利用してデプロイします。

  1. Bluemix DevOps Services コンソールを開き、「Create a Project (プロジェクトの作成)」を選択します。
  2. プロジェクトに名前を付けます (例: TestServerPackageAutomation)。プロジェクトに名前を付けるステップを示す画面のスクリーンショット
    プロジェクトに名前を付けるステップを示す画面のスクリーンショット
  3. 「Create a new repository (新規リポジトリーの作成)」 > 「Create a Git repo on Bluemix (Bluemix 上に Git リポジトリーを作成)」の順に選択します。Git リポジトリーの作成ステップを示す画面のスクリーンショット
    Git リポジトリーの作成ステップを示す画面のスクリーンショット
  4. Bluemix クラウドにプライベート・プロジェクトとしてデプロイされるようにプロジェクトを構成します (以下に示すように、このパネルではすべてのボックスを選択します)。プロジェクトを構成する画面のスクリーンショット
    プロジェクトを構成する画面のスクリーンショット
  5. Bluemix 内にデプロイするために必要な地域、組織、スペースを入力します。プロジェクトの詳細を入力する画面のスクリーンショット
    プロジェクトの詳細を入力する画面のスクリーンショット

ステップ 2. ローカル・リポジトリーと Bluemix を接続する

次は、Bluemix DevOps Services をローカル Git リポジトリーに接続します。

  1. Bluemix DevOps Services コンソールで、デモ・プロジェクト「TestServerPackageAutomation」を選択します。概要ページに示されているプロジェクトの Git URL をコピーします。Git プロジェクトの URL をコピーする画面のスクリーンショット
    Git プロジェクトの URL をコピーする画面のスクリーンショット
  2. Eclipse IDE を開いて「Git Repositories (Git リポジトリー)」ビューを右クリックし、「Paste Repository Path or URI (リポジトリーのパスまたは URI の貼り付け)」を選択します。ローカル・リポジトリーに URL を追加する画面のスクリーンショット
    ローカル・リポジトリーに URL を追加する画面のスクリーンショット
  3. Bluemix の URL とローカル・ディレクトリー・パスの両方を入力した後、「Next (次へ)」をクリックします。リポジトリーの URL を入力する画面のスクリーンショット
    リポジトリーの URL を入力する画面のスクリーンショット
    ローカル環境のディレクトリー・パスを入力する画面のスクリーンショット
    ローカル環境のディレクトリー・パスを入力する画面のスクリーンショット
  4. プロジェクトの複製が完了すると、Git リポジトリー・ビューに Bluemix プロジェクトが表示されます。Bluemix プロジェクトが表示されたローカル Git リポジトリーのスクリーンショット
    Bluemix プロジェクトが表示されたローカル Git リポジトリーのスクリーンショット

ステップ 3. プロジェクトをコミットしてプッシュする

次は、ローカル環境内のプロジェクトを Bluemix にコミットしてプッシュします。

  1. Eclipse で「Project Explorer (プロジェクト・エクスプローラー)」を開き、プロジェクトを右クリックします。エクスプローラーでプロジェクトを開く画面のスクリーンショット
    エクスプローラーでプロジェクトを開く画面のスクリーンショット
  2. 「Team (チーム)」 > 「Share Project (プロジェクトの共有)」の順に選択してから、使用するリポジトリーとして Git を選択し、「Next (次へ)」をクリックします。Git を選択する画面のスクリーンショット
    Git を選択する画面のスクリーンショット
  3. プロジェクト「TestServerPackageAutomation」を選択し、「Next (次へ)」をクリックします。プロジェクトを選択する画面のスクリーンショット
    プロジェクトを選択する画面のスクリーンショット
  4. 「Project Explorer (プロジェクト・エクスプローラー)」内でプロジェクトを右クリックし、「Team (チーム)」 > 「Add to Index (索引に追加)」の順に選択します。プロジェクトを Bluemix に追加する画面のスクリーンショット
    プロジェクトを Bluemix に追加する画面のスクリーンショット
  5. 「Project Explorer (プロジェクト・エクスプローラー)」内でプロジェクトを右クリックし、「Team (チーム)」 > 「Commit (コミット)」の順に選択します。プロジェクトを Bluemix にコミットする画面のスクリーンショット
    プロジェクトを Bluemix にコミットする画面のスクリーンショット
  6. プロジェクトについて説明するコメントを入力してから、「Commit and Push (コミットおよびプッシュ)」をクリックします。プロジェクトの説明を入力する画面のスクリーンショット
    プロジェクトの説明を入力する画面のスクリーンショット
  7. 宛先 Git リポジトリーは自動的に選択されます。「Next (次へ)」をクリックします。宛先 Git リポジトリーを指定する画面のスクリーンショット
    宛先 Git リポジトリーを指定する画面のスクリーンショット
  8. ソース参照と宛先参照を選択し、「Add Spec (仕様の追加)」をクリックしてから「Next (次へ)」をクリックします。プロジェクトのソース参照と宛先参照を追加する画面のスクリーンショット
    プロジェクトのソース参照と宛先参照を追加する画面のスクリーンショット

プッシュが正常に完了すると、成功したことを伝えるメッセージが表示されます。

図 1. 成功!
プッシュに成功した画面のスクリーンショッ
プッシュに成功した画面のスクリーンショッ

これで、IBM Bluemix DevOps Services 上には、ホストされたプロジェクトが表示されるようになります。

Bluemix DevOps Services 上のプロジェクトを示す画面のスクリーンショット
Bluemix DevOps Services 上のプロジェクトを示す画面のスクリーンショット

ステップ 4. サーバーを構成する

次は、Git リポジトリー内にサーバー構成フォルダーをセットアップします。セットアップする defaultServer というサーバー構成フォルダーには、server.xml 構成ファイルと併せ、アプリケーションのすべてのビルドに対して生成されて Bluemix にプッシュされる WAR ファイルが格納されることになります。

  1. デモ・アプリ用に構成された server.xml ファイルのローカル・コピーを作成します。
    	<server description="new server">
    
        		<!-- Enable features from Kaustubh-->
        		<featureManager>
            		<feature>jsp-2.2</feature>
            		<feature>localConnector-1.0</feature>
        		</featureManager>
    
        		<!-- To access this server from a remote client add a host attribute to the following 			element, e.g. host="*" -->
    <httpEndpoint httpPort="9080" httpsPort="9443" id="defaultHttpEndpoint"/>
    <webContainer deferServletLoad="false"/>
    
    <applicationMonitor updateTrigger="mbean"/>
    
    <webApplication id="testserverpackage" location="testserverpackage.war" name="testserverpackage" type="war"/>	
    	</server>
  2. ローカル Git リポジトリー内に「defaultServer」というフォルダーを作成します。defaultServer フォルダーを作成する画面のスクリーンショット
    defaultServer フォルダーを作成する画面のスクリーンショット
  3. 該当するサーバー構成を設定した上で、プロジェクトの server.xml ファイルを新しく作成したフォルダーにコピーします。server.xml が追加された画面のスクリーンショット
    server.xml が追加された画面のスクリーンショット
  4. ローカル環境内の Git コマンドラインから、フォルダーを Bluemix にプッシュします。以下のコマンドを続けて入力するだけでプッシュすることができます。
    git add defaultServer
    git add defaultServer/*
    git commit
    git push origin master

    プッシュが正常に完了すると、以下の出力が表示されます。

    プッシュが正常に完了した場合の出力画面のスクリーンショット
    プッシュが正常に完了した場合の出力画面のスクリーンショット

    defaultServer フォルダーが Bluemix 上にあることを確認することもできます。

    Bluemix 上の defaultServer フォルダーを確認する画面のスクリーンショット
    Bluemix 上の defaultServer フォルダーを確認する画面のスクリーンショット

ステップ 5. アプリケーションをビルドする

これまでの手順で、アプリケーションとサーバー構成は Bluemix 上の Git リポジトリーにプッシュされました。次は、Bluemix DevOps Services の「Build & Deploy (ビルドおよびデプロイ)」機能を利用してデリバリー・パイプラインを自動化します。

  1. Bluemix DevOps Services コンソールで、「Build & Deploy (ビルドおよびデプロイ)」を選択し、ビルド処理用の新しいステージを作成します。プロジェクト URL、入力タイプ、ブランチを入力します。ステージを構成する画面のスクリーンショット
    ステージを構成する画面のスクリーンショット
  2. 次に、ビルドを構成するために「Jobs (ジョブ)」タブを選択します。「Builder Type (ビルダー・タイプ)」の下で「Maven」を選択します。ビルドを構成する画面のスクリーンショット
    ビルドを構成する画面のスクリーンショット
  3. 「Build Shell Command (ビルド・シェル・コマンド)」を構成します。「Build Shell Command (ビルド・シェル・コマンド)」を構成する画面のスクリーンショット
    「Build Shell Command (ビルド・シェル・コマンド)」を構成する画面のスクリーンショット

ビルド・シェル・コマンドは以下の処理を行います。

  1. defaultServer ディレクトリー内に「apps」という新しいディレクトリーを作成します。
    mkdir -p defaultServer/apps
  2. ディレクトリーを「logtest」に切り替えて、Maven パッケージを実行します。
    cd testserverpackag
    	mvn -B package -X -Dmaven.test.skip
  3. (ターゲット・ディレクトリー内に) 生成された WAR ファイルを defaultServer/apps フォルダーにコピーします。
    cp target/*.war ../defaultServer/apps/

ステップ 6. ビルド・ステージを実行してテストする

デプロイ・ステージを構成する前に、前のステップで構成したビルド・ステージを実行してテストします。

  1. DevOps Services のパイプラインから、構成したビルド・ステージを 1 回実行します。ステージを実行する画面のスクリーンショット
    ステージを実行する画面のスクリーンショット
  2. 「View logs and history (ログおよび履歴の表示)」を選択します。ログと履歴を表示するためのリンクのスクリーンショット
    ログと履歴を表示するためのリンクのスクリーンショット
  3. 「Artifact (成果物)」タブを選択します。アプリケーションの WAR ファイルが、DevOps Services のビルド・アーカイブ・ディレクトリー内の apps ディレクトリーにコピーされていることを確認できるはずです。WAR ファイルを確認する画面のスクリーンショット
    WAR ファイルを確認する画面のスクリーンショット

ステップ 7. デプロイ・ステージを構成する

次は、Bluemix 内にアプリケーションをデプロイするように構成を仕上げます。

  1. ステージを作成し、入力タイプとして「Build Artifact (ビルド成果物)」を選択します。ステージとジョブには、前のビルドで使用したのと同じ構成を使用します。ビルド成果物のデプロイ・ステージを作成する画面のスクリーンショット
    ビルド成果物のデプロイ・ステージを作成する画面のスクリーンショット
  2. このステージで新しいデプロイ・ジョブを作成して、以下に示すように構成します。デプロイ・ジョブを作成する画面のスクリーンショット
    デプロイ・ジョブを作成する画面のスクリーンショット

    アプリケーションを Bluemix にプッシュするための CFI コマンドとして、cf push "${CF_APP}" を使用します。

  3. ビルド・ステージとデプロイ・ステージが適切に構成されていれば、構成したステージが DevOps Services のパイプラインに表示されているはずです。パイプラインのステージを示す画面のスクリーンショット
    パイプラインのステージを示す画面のスクリーンショット

ステップ 8. テストする

ビルド・ステージが「Automatically execute jobs when a change is pushed to Git (変更が Git にプッシュされたら自動的にジョブを実行)」命令で構成されていることを確認してから、いくつかのコード変更をプッシュしてみます。それによって、「Build & Deploy (ビルドおよびデプロイ)」が自動的に開始されるはずです。

まとめ

このチュートリアルでは、Bluemix DevOps Services の「Build & Deploy (ビルドおよびデプロイ)」機能を利用して、アプリケーション・デリバリー・パイプラインを構成および自動化する方法を説明しました。このサンプル・アプリケーションでは、自動化されたビルド・サイクルで Maven、Cloud Foundry、および UNIX コマンドが同時に実行されるようにしました。このチュートリアルで学んだ知識を応用すれば、Maven リポジトリー内では使用できないライブラリーを次のビルドに統合することができます。


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


関連トピック


コメント

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=DevOps
ArticleID=1035260
ArticleTitle=Bluemix DevOps Services デリバリー・パイプラインを使用してサーバーのプッシュを自動化する
publish-date=07212016