目次


Bluemix DevOps Services デリバリー・パイプラインで Maven を使用する

Java アプリケーションのビルド、テスト、IBM Bluemix へのデプロイを自動で行う

Comments

Apache Maven は、Java ベースのプロジェクトで使用できる強力なビルド・ツールです。Maven はビルド・プロセスに必要なコンポーネントやプラグインを Maven リポジトリーからダウンロードして、自動的にプロジェクトの依存関係を解決してくれます。このチュートリアルでは、Maven と連動させて Bluemix DevOps Services デリバリー・パイプラインを使用する方法を紹介します。単純な Java アプリケーションとそのアプリケーションに関連付けられたユニット・テストを出発点として、デリバリー・パイプラインにビルド・ステージを構成します。そのステージでは、Maven を使用してビルドとテストを行います。続いて、アプリケーションをクラウドにプッシュする、2 つ目のステージを追加します。

このチュートリアルは、2 つの独立したセクションで構成されています。最初のセクションでは、ファスト・トラックの演習として、ビルド済み Maven プロジェクトの Bluemix DevOps Services パイプラインを構成します。2 番目の上級者向けセクションでは、Maven プロジェクトをゼロから開発した上で、デリバリー・パイプラインを使用します。2 番目の演習からのほうが多くを学べるので、そちらの演習を行うことをお勧めします。

デリバリー・パイプラインに、Maven を使用してビルドとテストを実行するビルド・ステージを構成します。続いて、アプリケーションをクラウドにプッシュする 2 つ目のステージを追加します。

アプリケーションを作成するために必要となるもの

2 つのセクションに共通して必要なものは次のとおりです。

  • IBM Bluemix アカウントと Bluemix DevOps Services アカウント (両方とも IBM ID に関連付けられていること)
  • Java プログラミングの基本知識

オプションのゼロから始める演習では、次のものも必要になります。

  • GutHub アカウント
  • Cloud Foundry コマンド・ライン・ツール
  • Maven コマンド・ライン・ツール
  • Git コマンド・ライン・ツール

この Java アプリケーションのコードには、有用な基本プログラミング手法がいくつか具体的に示されていますが、アプリケーション自体は平凡であり、このチュートリアルで焦点とするところではありません。

ファスト・トラックのステップ 1. 著者のリポジトリーをフォークする

独自のデリバリー・パイプラインを構成してアプリケーションを自分の Bluemix アカウントにプッシュするには、Bluemix 上にスペースを作成して、私の Bluemix DevOps Services プロジェクトをフォークする必要があります。

  1. Bluemix 上にスペースを作成したことがない場合は、画面に従って、ログインしてスペースを作成してください。
  2. このチュートリアルをスクロールアップして、「コードを入手する」ボタンをクリックします。まだ自分の Bluemix DevOps Services アカウントにログインしていない場合は、ログインしてください。
  3. romeokienzler | developerWorksMaven プロジェクトの概要ページで「FORK PROJECT (プロジェクトのフォーク)」ボタンをクリックします。
  4. 「Fork Project (プロジェクトのフォーク)」ダイアログ・ボックスで、プロジェクト名として「myDeveloperWorksMaven」と入力します。Bluemix のスペースを選択します。その他のフィールドはデフォルト値のままにします。「Fork Project (プロジェクトのフォーク)」ダイアログ・ボックスのスクリーンショット
    「Fork Project (プロジェクトのフォーク)」ダイアログ・ボックスのスクリーンショット
  5. 「CREATE (作成)」をクリックします。

ファスト・トラックのステップ 2. デリバリー・パイプラインの最初のステージを構成する

このステップで構成するデリバリー・パイプラインは、リポジトリーからソース・コードをチェックアウトし、サンプル・アプリケーションのビルドおよび JUnit テストのそれぞれを実行する Maven コマンドを実行します。

  1. 自分の Bluemix DevOps Services プロジェクトで、「BUILD & DEPLOY (ビルドおよびデプロイ)」ボタンをクリックしてデリバリー・パイプラインに入ります。
  2. 「ADD STAGE (ステージの追加)」ボタンをクリックします。
  3. 「Stage Configuration (ステージ構成)」ダイアログ・ボックスで、「Only execute jobs when a user manually runs this stage (ユーザーがこのステージを手動で実行した場合のみジョブを実行)」ラジオ・ボタンを選択し、「SAVE (保存)」をクリックします。 「Stage Configuration (ステージ構成)」ダイアログ・ボックスのスクリーンショット
    「Stage Configuration (ステージ構成)」ダイアログ・ボックスのスクリーンショット
  4. 歯車のシンボルをクリックし、「Configure Stage (ステージの構成)」を選択します。 「Configure Stage (ステージの構成)」が選択されているメニューのスクリーンショット
    「Configure Stage (ステージの構成)」が選択されているメニューのスクリーンショット
  5. 「JOBS (ジョブ)」タブをクリックします。「ADD JOB (ジョブの追加)」をクリックし、「SELECT JOB TYPE (ジョブ・タイプの選択)」リストから「Build (ビルド)」を選択します。 ジョブ・タイプを選択するメニューのスクリーンショット
    ジョブ・タイプを選択するメニューのスクリーンショット
  6. 「Builder Type (ビルダー・タイプ)」リストから「Maven」を選択し、「SAVE (保存)」をクリックします。 ビルダー・タイプを選択するドロップダウン・リストのスクリーンショット
    ビルダー・タイプを選択するドロップダウン・リストのスクリーンショット
  7. ステージ・ウィンドウの最上部にある「Run Stage (ステージの実行)」ボタン (右向き三角形) をクリックします。ステージの実行が完了すると、ステージ・ウィンドウに「STAGE PASSED (ステージの成功)」というメッセージが表示されます。 ステージの成功を示すメッセージのスクリーンショット
    ステージの成功を示すメッセージのスクリーンショット

    このステージの出力を表示するには、「View logs and history (ログおよび履歴の表示)」リンクをクリックします。このステージではステップ 1 でフォークした Git リポジトリーからソース・コードがチェックアウトされて、提供された pom.xml ファイルを読み取るための Maven コマンドが実行されました。この POM に、ビルドと JUnit によるテストのステージを定義しておいたので、ビルドが成功すると JUnit が実行されるようになっています。Maven は JUnit JAR をパブリック Maven リポジトリーからダウンロードして、これらの依存関係を解決します

ファスト・トラックのステップ 3. デリバリー・パイプラインの 2 番目のステージを構成する

Maven を使用して自動的にアプリケーションをビルドし、ユニット・テストを実行するステージが完成したので、今度はアプリケーションを自動的に Bluemix にデプロイするステージを追加します。

  1. 「ADD STAGE (ステージの追加)」をクリックします。
  2. 「JOBS (ジョブ)」タブをクリックします。「ADD JOB (ジョブの追加)」をクリックし、「SELECT JOB TYPE (ジョブ・タイプの選択)」リストから「Deploy (デプロイ)」を選択します。
  3. 「Application Name (アプリケーション名)」の値を「myDeveloperWorksMavenUniqueName」に変更します。ここで、UniqueName は、Bluemix 上で一意の名前にする必要があります。デプロイされるアプリケーションの URL は、https://myDeveloperWorksMavenUniqueName.mybluemix.net という形になります。
  4. 「Deploy Script (デプロイ・スクリプト)」フィールドで、2 行目を以下のコマンドで置き換えます。

    cf push "${CF_APP}" -p developerWorks-1.0-SNAPSHOT.jar -b java_buildpack

    「Deploy Configuration (デプロイ構成)」の設定のスクリーンショット
    「Deploy Configuration (デプロイ構成)」の設定のスクリーンショット
  5. 「SAVE (保存)」をクリックします。
  6. パイプラインの更新が完了したら、どちらかの「Run Stage (ステージの実行)」ボタンをクリックします。最初のステージのボタンをクリックすると、ビルドが再びトリガーされます。そしてビルドが完了すると同時に、デプロイが開始されます。2 番目のステージの「Run Stage (ステージの実行)」ボタンをクリックした場合は、前のビルドはすでに成功しているため、このステージから、Maven によって作成された JAR が起動されます。
  7. ブラウザーで https://myDeveloperWorksMavenUniqueName.mybluemix.net にアクセスして、稼働中のアプリケーションを確認します。

オプション・トラックのステップ 1. Maven プロジェクトを作成する

このステップでは、Maven プロジェクトをゼロから作成します。

  1. PC のコマンド・ラインから、カレント・ディレクトリーを任意の作業ディレクトリーに変更します。
  2. 以下のコマンドを実行します。

    mvn archetype:generate -DgroupId=com.ibm.developer -DartifactId=mavenFromScratch -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

    このコマンドによって、スケルトン Maven プロジェクトが作成されます。このプロジェクトには以下のものが含まれています。

    • すでに有効になっている pom.xml ファイル。このファイルには、コンパイル・コマンドと JUnit ステージが含まれています。
    • src ディレクトリー。ここには、main サブディレクトリーと test サブディレクトリー、そしてそれぞれの子ディレクトリーが含まれています。
    Maven プロジェクトのディレクトリー構造のスクリーンショット
    Maven プロジェクトのディレクトリー構造のスクリーンショット

オプション・トラックのステップ 2. Bluemix DevOps Services プロジェクトを作成する

次は、GitHub にリポジトリーを作成し、そのリポジトリーに Bluemix DevOps Services から接続します。

  1. ブラウザーで GitHub にアクセスしてログインします。
  2. 「Create new (新規作成)」ボタンをクリックして、「New repository (新規リポジトリー)」を選択します。 GitHub に新規リポジトリーを作成する操作のスクリーンショット
    GitHub に新規リポジトリーを作成する操作のスクリーンショット
  3. 「Repository name (リポジトリー名)」フィールドに「mavenFromScratch」と入力し、「Create repository (リポジトリーの作成)」ボタンをクリックします。
  4. Bluemix DevOps Services にアクセスします。まだログインしていない場合は、自分のアカウントにログインします。
  5. 「CREATE PROJECT (プロジェクトの作成)」をクリックします。
  6. プロジェクト名として「mavenFromScratch」と入力し、「Connect to an external GitHub repository (外部 GitHub リポジトリーに接続)」を選択します。
  7. 「URL」フィールドに、「https://github.com/yourGitHubUserName/mavenFromScratch.git」と入力します。
  8. 「Add features for Scrum development (スクラム開発用の機能を追加する)」チェック・ボックスと「Make this a Bluemix Project (Bluemix プロジェクトにする)」チェック・ボックスを選択します。
  9. 「CREATE (作成)」をクリックします。

オプション・トラックのステップ 3. Bluemix DevOps Services プロジェクトに Maven プロジェクトをマージする

  1. PC のコマンド・ラインに戻り、Maven プロジェクトを作成した作業ディレクトリーのルートがカレント・ディレクトリーになっていることを確認します。
  2. cd を実行して、カレント・ディレクトリーを mavenFromScratch ディレクトリーに変更します。
  3. git init コマンドを実行して、このプロジェクトを Git プロジェクトとして初期化します。
  4. ローカル・リポジトリーとリモート・リポジトリーをフックするために、以下のコマンドを実行します。

    git remote add origin https://github.com/yourGitHubUserName/mavenFromScratch.git

オプション・トラックのステップ 4. pom.xml と Java コードを編集して、変更をリポジトリーにプッシュする

次は、Maven スケルトンにいくつかの変更を加えて、それらの変更をリポジトリーにプッシュして戻す必要があります。

  1. 任意のエディターで ./mavenFromScratch/pom.xml ファイルを開きます。
  2. </dependencies> タグの直後に以下のコード・スニペットを貼り付けます。
    <build> 
        <plugins> 
          <plugin> 
            <groupId>org.apache.maven.plugins</groupId> 
            <artifactId>maven-jar-plugin</artifactId> 
            <version>2.4</version> 
            <configuration> 
              <archive> 
                <manifest> 
                    <mainClass>com.ibm.developer.App</mainClass> 
                </manifest> 
              </archive> 
            </configuration> 
          </plugin> 
        </plugins> 
    </build>

    変更後の最終的なバージョンは以下のようになります。

    <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.developer</groupId> 
      <artifactId>developerWorks</artifactId> 
      <packaging>jar</packaging> 
      <version>1.0-SNAPSHOT</version> 
      <name>developerWorks</name> 
      <url>http://maven.apache.org</url> 
      <dependencies> 
        <dependency> 
          <groupId>junit</groupId> 
          <artifactId>junit</artifactId> 
          <version>3.8.1</version> 
          <scope>test</scope> 
        </dependency> 
      </dependencies> 
      <build> 
        <plugins> 
          <plugin> 
            <groupId>org.apache.maven.plugins</groupId> 
            <artifactId>maven-jar-plugin</artifactId> 
            <version>2.4</version> 
            <configuration> 
              <archive> 
                <manifest> 
                    <mainClass>com.ibm.developer.App</mainClass> 
                </manifest> 
              </archive> 
            </configuration> 
          </plugin> 
        </plugins> 
      </build> 
    </project>

    この pom.xml ファイルは、MANIFEST.MF ファイルにメイン・クラスのエントリーを作成し、生成された JAR ファイルを Cloud Foundry で「java-buildpack」と入力することで、実行できるようにします。
  3. 任意のエディターで ./mavenFromScratch/src/test/java/com/ibm/developer/AppTest.java ファイルを開き、testApp() メソッドを以下のコードで置き換えます。
    public void testApp() 
     { 
            assertTrue( App.veryComplicatedMethod() == 42 ); 
     }

    ファイルを保存します。
  4. 任意のエディターで ./mavenFromScratch/src/main/java/com/ibm/developer/App.java ファイルを開き、以下の内容のコードで置き換えます。
    package com.ibm.developer; 
    
    import java.io.IOException; 
    import java.net.ServerSocket; 
    import java.net.Socket; 
    
    /** 
    * Hello world! 
     * 
     */ 
    public class App { 
        public static void main(String[] args) throws IOException { 
            int port = Integer.parseInt(System.getenv("VCAP_APP_PORT")); 
            ServerSocket ss = new ServerSocket(port); 
            while (true) { 
                Socket s = ss.accept(); 
                s.getOutputStream() 
                        .write(("HTTP/1.1 200 OK\nContent-Type:
    text/html; charset=utf-8\nContent-Length: 2\n\n" +
    veryComplicatedMethod()) .getBytes()); 
            } 
        } 
    
        public static int veryComplicatedMethod() { 
            return 42; 
        } 
    }

    ファイルを保存します。これで、すべてをリポジトリーにプッシュする準備ができました。
  5. 作業ディレクトリーから、cd を実行してカレント・ディレクトリーを mavenFromScratch に変更します。
  6. 以下のコマンドで、すべてのファイルを最初のコミット・セットに追加します。

    git add -A .

  7. 以下のコマンドを実行します。

    git commit -m "modified maven project"

  8. ローカルで行ったすべての変更をリモート・リポジトリーにプッシュするために、以下のコマンドを実行します (GitHub ユーザー名とパスワードを入力するか、パスワードのキャッシングを有効にしてください)。

    git push -u origin master

これで、私が作成したリポジトリーではなく、皆さん独自のリポジトリーを使用できるようになりました。この後は、ファスト・トラック・セクションのステップ 2 から始めて、Bluemix DevOps Services デリバリー・パイプラインを構成し、演習を完了してください。

まとめ

このチュートリアルではまず、Bluemix DevOps Services 内で Maven プロジェクトのデリバリー・パイプラインを迅速に作成する方法を紹介しました。上級者向けのセクションでは、Maven プロジェクトをゼロからセットアップし、それを Bluemix DevOps Services の Git リポジトリーにプッシュする方法も紹介しました。このプロセスの中で、JUnit のいくつかの基本事項と、たった 3 行の Java コードで HTTP サーバーを作成する方法も紹介しました。


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


関連トピック


コメント

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Java technology, DevOps, Open source, Cloud computing
ArticleID=1012111
ArticleTitle=Bluemix DevOps Services デリバリー・パイプラインで Maven を使用する
publish-date=08062015