IBM®
本文へジャンプ
    Japan [変更]    ご利用条件
 
 
検索範囲検索:    
    ホーム    製品    サービス & ソリューション    サポート & ダウンロード    マイアカウント    
skip to main content

developerWorks Japan  >  XML  >

Ant を使ってプロジェクト・ビルドを自動的に生成する

ビルドの作成、エクスポート、デプロイ、およびテストを行う

developerWorks
ページオプション

JavaScript を要するドキュメントオプションは表示されません

ダウンロード

原文はこちら

原文はこちら


レベル: 中級

Ahmed Abbass (aabbass@eg.ibm.com), IT Architect, IBM 

2007年 1月 30日

ステップバイステップの説明に従ってビルド手順を自動化し、IBM® Rational® Software Development Platform 用の Ant の組み込みサポートを使用して生産性と品質を向上させましょう。その際、IBM WebSphere® ファミリーのアプリケーション・サーバーを使用して Ant をデプロイできます。

はじめに

複数リリースのプロジェクトでは、品質を許容可能なレベルに維持しつつも、追加機能や障害報告に対応した新規のビルドを適宜提供することが、難題となることがあります。ビルドを自動化すれば、正確に処理が行われ、人的エラーが発生する可能性が低くなるため、この問題の一部が解決されます。また、自動化することで高速かつ効率的に実行されるような作業をメンバーが行うのではなく、人間の知能を必要とする問題にメンバーを集中させることで、生産性も向上します。

この記事では、ビルド手順を自動化して、より高い生産性と品質を得る方法を学びます。ここに示す例では、Rational Software Development Platform (SDP) での Ant の組み込みサポート (ビルド自動化手順は Ant ビルド・ファイルとして実装されます) と、WebSphere Application Server などのランタイムのサポートを使用します。最後に、このプロセスをさらに効率化する場合に使用できるオプション機能をいくつか紹介して締めくくります。




上に戻る


プロジェクトの計画時に考慮すべきこと

作成*フェーズまではタスクの自動化は実行されませんが、テスト用にコードが配信されたときにすぐに実装チームがタスクを自動化できるように、推敲*フェーズでタスクの自動化を計画しておく必要があります。分析と設計を行った後に、コンポーネントの構想、ビルド方法、テスト方法、およびデプロイ方法を明確にします。この構想に基づいてタスクの自動化が開始され、繰り返し可能な方法でタスクが遂行されます。

Rational Unified Process: プロジェクト・フェーズ
* 「作成」および「推敲」という用語は、Rational Unified Process では 2 つのプロジェクト・フェーズを指します。

タスクを繰り返し可能にする場合、一部のタスク (テスト・データなど) では、開始前の準備と、終了後のクリーンアップが必要となるかもしれません。ソフトウェア構成管理 (ソフトウェア・リポジトリー)、設計、またはターゲット・デプロイメント環境を変更しても、タスクの自動化の中にその内容を反映する必要があります。労力を見積もるときやプロジェクトを計画するときに、この自動化の実装および保守に掛かるオーバーヘッドを考慮する必要があります。何度も繰り返しが行われるプロジェクトを使用すれば、タスクの自動化による効果を最も良く観察できます。例えば、繰り返しごとに、ビルド時間、単体テスト時間、デプロイ時間が著しく短くなります。




上に戻る


自動化環境

この記事で説明する自動化手順は、次のような Rational SDP ベースのツールに有効です。

デプロイメント・プラットフォームの場合、自動化手順は、WebSphere Application ServerWebSphere Application Server Network DeploymentWebSphere Process Server など、(WebSphere Application Server を基礎として使用する) WebSphere ファミリーのアプリケーション・サーバーで使用できます。

同じ手順は、他の Rational 製品や WebSphere 製品に適用できます。簡単のため、この記事では統合開発環境 (IDE) として使用されるツールについて説明します。

環境を準備する

自動化手順は、さまざまな環境構成で使用できます。図 1 に環境の例を示します。


図 1. 自動化環境
図 1. 自動化環境

この環境には、開発者がコードを作成する開発ワークステーション (Development workstation) が 1 つ以上あります。変更内容はリポジトリー (Code repository) に保管されます。ここでは、開発ワークステーションごとにスナップショット・ビューを持つ Rational ClearCase リポジトリーを想定しています。

開発ワークステーションには、Rational SDP ベースのツールがインストールされていることと、ソフトウェア・リポジトリーを使用して構成されたワークスペースが存在していることが必要です。Rational ClearCase で構成などを行う方法について詳しくは、記事「Using Rational Software Architect and ClearCase Remote Client」を参照してください。他のリポジトリーを使用することも可能です。Concurrent Versions System (CVS) で Ant を使用する方法について詳しくは、「参考文献」を参照してください。

いずれの開発ワークステーションもビルド・ワークステーション (Build workstation) として使用できます。ただし、開発者同士で使用方法を巡って争いにならないように、ビルド用のワークステーションを分けておくことをお勧めします。ビルド・ワークステーションは、他の開発マシンと同じ構成になっていなければならないのと同時に、ビルド・ワークステーションからは、次のサーバーにアクセスできる必要があります。

  • デプロイメント・サーバー (Target deployment server)(ビルドをデプロイするため)
  • SMTP サーバー (SMTP server)(テスト・チームに通知するため)
  • FTP サーバー (FTP server)(バックアップあるいは他の用途でビルドをアップロードするため)

標準的な開発ワークステーションまたはビルド・ワークステーションは、Windows® または Linux® 上に実装できます。ターゲット・デプロイメント・サーバーに関しては、WebSphere 製品において、非常に多くのオペレーティング・システムをサポートしています。

Ant ビルド・ファイル

保守を簡単にするために、すべての自動化ステップを 1 つの Ant ビルド・ファイルに組み込みます。Rational のツールにまだ慣れていない場合は、次のようにしてください。

XML 機能
ワークスペースに対して XML 機能が有効になっていることが前提です。詳しくは、「Author developerWorks content using IBM Rational Web Developer」を参照してください。XML 機能を有効にしても、XML ノードが「新規 (New)」ダイアログのウィザード・ツリーに表示されない場合は、「すべてのウィザードを表示する (Show All Wizards)」にチェックマークを付けてください。
  1. 「ファイル (File)」メニューから「新規 (New)」>「プロジェクト (Project)」>「Java」>「Java プロジェクト (Java Project)」の順に選択します。
  2. プロジェクト名フィールドに ar-autotaskcode.zip と入力し、「終了 (Finish)」をクリックします。
  3. AutomationScripts プロジェクトを右クリックして、コンテキスト・メニューから「新規 (New)」>「その他 (Other)」の順に選択します。「新規 (New)」ダイアログから「XML」>「XML」の順に選択して、「次へ (Next)」をクリックします。
  4. 「XML ファイルの作成 (Create XML file)」ダイアログで「最初から XML ファイルを作成する (Create XML file from scratch)」を選択して、「次へ (Next)」をクリックします。
  5. ファイル名として build.xml と入力し、「終了 (Finish)」をクリックします。(ここにすべてのステップを組み込む予定です。)
  6. Ant ビルド・ファイルが作成されます (リスト 1 に概要を示してあります)。

    リスト 1. Ant ビルド・ファイルの冒頭部の概要
                            
    <?xml version="1.0" encoding="UTF-8"?>
    <project name="Automation Project" default="init" basedir=".">
    <!-- Read project properties from a properties file. -->
    <property file="build.properties" />
    <!-- A stub for the default target -->
    <target name="init" description="Initialize automation environment">
    <!-- Set the standard DSTAMP, TSTAMP, and TODAY properties. -->
    <tstamp />
    <!-- Set a variable to host environment variables. -->
    <property environment="env" />
    <!-- Print the current WORKSPACE value. -->
    <echo message="Workspace:
    ${env.WORKSPACE}" />
    <!-- Delete old export directory. -->
    <delete dir="${destination.dir}" />
    <!-- Create the target export directory for the build. -->
    <mkdir dir="${destination.dir}" />
    </target>
    </project>
    		

    ここでは、完全な Ant ビルド・ファイル ar-autotaskcode.zip をダウンロードできます。

  7. Ant ビルド・プロジェクトが入っているディレクトリーと同じディレクトリーで、プロパティー・ファイルを作成して、プロパティー build.properties を組み込みます。また、ar-autotaskcode.zip には、完全なプロパティー・ファイルが含まれています。
  8. 「ウィンドウ (Window )」>「ビューの表示 (Show View)」>「その他 (Other)」>「Ant」>「Ant」の順に選択して、Ant ビューを表示します。build.xml を Ant ビューにドラッグ・アンド・ドロップします。この Ant ビューを使用して、Ant ビルド・ファイルのさまざまなタスクを参照したり実行したりできます。また、Ant エディターを使用すれば、ビルド・ファイルを編集することもできます。それには、Ant ビューにある Ant プロジェクトの名前 Automation Project を右クリックして、表示されたコンテキスト・メニューから「Ant エディターで開く (Open With Ant Editor)」を選択します。

これで、自動化手順を表す Ant ターゲットを Ant ビルド・ファイルに新たに追加する準備が整いました。




上に戻る


ビルド手順を自動化する

図 2 は、ビルド自動化手順を要約したものを示しています。


図 2. 自動化手順
図 2. 自動化手順

このセクションでは、手順の各ステップについて詳しく説明します。

  1. 最新のコードをリポジトリーから入手する (Get latest code)

    最初のステップでは、ClearCase リポジトリーから最新のコードを入手します (リスト 2 を参照)。



    リスト 2. ClearCase リポジトリーのワークスペースを更新する
                            
    <target name="updateview" depends="init" description="Update ClearCase snapshot view">
    |--10--------20--------30--------40--------50--------60--------70--------80--------9|
    |-------- XML error:  The previous line is longer than the max of 90 characters ---------|
    			
    <!-- update snapshot view -->
    
    <ccupdate viewpath="${workspace.dir}" graphical="false" overwrite="true" 
    currenttime="true" />
    </target>
    

    ワークスペースは ClearCase ビューを指すように構成されているため、ビューを更新すると、実際にワークスペースの内容が更新されます。

  2. コード・レビューを実行する (Run code reviews)
  3. コード・レビューは自動化できます。コード・レビューを自動化しても、手動でコード・レビューを実行しなければならない部分は残りますが、コーディング品質標準に関して開発チームが置かれている立場を理解するためには、コード・レビューを自動化することは良い慣習です。Rational SDP では、組み込みコード・レビューがサポートされています。(Ant からコード・レビューを呼び出す方法について詳しくは、「Code review headless mode reference」を参照してください。)

    また、PMD や CheckStyle など、自動化されたコード・レビューを実行するツールもいくつか用意されています。リスト 3 の例では、PMD を Ant タスクとして呼び出し、結果を HTML 形式で生成する方法が示されています。このタスクを実行するには、lib.dir プロパティーで指定されたディレクトリーに pmd-3.8.jar、jakarta-oro-2.0.8.jar、および jaxen-1.1-beta-10.jar を入れておく必要があります。



    リスト 3. 自動化されたコード・レビュー (PMD を使用)
                            
    <target name="reviewcode" description="Review code using PMD">
    <taskdef name="pmd" classname="net.sourceforge.pmd.ant.PMDTask" 
    classpath="${lib.dir}/pmd-3.8.jar" />
    <pmd shortFilenames="true">
    <!-- Determine the ruleset to be used -->
    <ruleset>rulesets/favorites.xml</ruleset>
    <ruleset>basic</ruleset>
    <!-- Generate and HTML report into the designated directory -->
    <formatter type="html" 
    toFile="${report.dir}/pmd_automated_code_review_report.html" />
    <!-- Files to be configured for review -->
    <fileset dir="${workspace.dir}/">
    <!-- Include all .java files except those under directories that are 
    automatically generated -->
    <include name="**/*.java" />
    <!-- A sample exlusion directory that has generated java source code -->
    <exclude name="**/generated/**/*.java" />
    </fileset>
    </pmd>
    </target>
    
    

    このステップを実行したら、report.dir プロパティーで指定されたディレクトリーで HTML 形式のレポート pmd_automated_code_review_report.html を見つけます。(自動化されたコード・レビューについて詳しくは、「参考文献」を参照してください。)

  4. コードをビルドする (Build code)

    ここで、IDE で利用可能な組み込み機能を使用して、今回のビルドに含めるさまざまなプロジェクトを作成します。

    SDP に付属の Ant タスクを IDE 内で実行するには、Ant ビルド・ファイルをワークスペースと同じ Java™ Runtime Environment (JRE) で実行する必要があります。それ以外の方法としては、runAnt バッチ・ファイルをコマンド・ラインから実行する方法があります。その場合、runAnt バッチ・ファイルで、必要な初期設定を行い、Ant タスクの定義を組み込みます。これについては、「手順実行方法」で説明します。リスト 4 のコードでは、IDE 組み込み Ant タスク “projectBuild” を使用して、ワークスペースにあるプロジェクトの 1 つをビルドしています。



    リスト 4. 単一のプロジェクトをビルドする
                            
    <target name="buildproject" description="Build a project">
    
    <!-- Build the project with some options -->
    
    <projectBuild projectName="${project.name}" BuildType="full" failonerror="false" 
    DebugCompilation="false" />
    
    <!-- Print build errors -->
    
    <echo message="projectBuild: projectName=${project.name}
    
    project Error Count=${ProjectErrorCount}
    
    project Error Messages=${ProjectErrorMessages}" />
    
    </target>
    
    

    実行時にエラーが発生した場合、そのエラーはコンソールに表示されますが、ビルドは終了しません。この動作を変更するには、failonerror 属性を true に設定します。

    project.name プロパティーをビルド対象のプロジェクトの名前に設定すれば、同じターゲットを別のプロジェクトで使用できます (リスト 5 のコードを参照)。



    リスト 5. プロジェクト・セットをビルドする
                            
    <target name="buildall">
    <!-- Invoke the "buildproject" target for a project from the workspace -->
    <antcall target="buildproject">
    <!-- Pass the name of the project to be built -->
    <param name="project.name" value="MyFirstProject" />
    </antcall>
    <!-- Invoke the "buildproject" target to build another project -->
    <antcall target="buildproject">
    <!-- The project name is different -->
    <param name="project.name" value="MySecondProject" />
    </antcall>
    </target>
    

  5. ビルド番号を記録する (Record build number)

    このステップは、見過ごされることがあります。障害や新規追加機能をより簡単に追跡するために、リリースしたビルドごとにビルド番号を控えておくことは有益なことです。Ant には、この目的を果たす単純なタスク buildnumber が用意されています。リスト 6 に、必要に応じてビルドに関する詳細をログに記録する方法を示します。



    リスト 6. ビルド情報をログに記録する
                            
    <target name="baseline" description="Record build information">
    <!-- The name of the file that holds the build information. If no such file exists, a new 
    |--10--------20--------30--------40--------50--------60--------70--------80--------9|
    |-------- XML error:  The previous line is longer than the max of 90 characters ---------|
    one gets created. -->
    <propertyfile file="${destination.dir}/build.info">
    <!-- Initial build number is 0001. Then, any subsequent build increments
    this number by one  each time. -->
    <entry default="0001" key="build.number" operation="+" pattern="0000" type="int" />
    <!-- Records the current time to the same file. -->
    <entry default="now" key="build.time" pattern="yyyy.MM.dd-HH.mm" type="date" />
    </propertyfile>
    </target>
    

    "baseline" ターゲットでは、ビルド番号とビルド時刻の情報を含んだ build.info というファイルが作成されます。このファイルがすでに存在する場合は、ビルド番号とビルド時刻が新しいものに更新されるだけです。場合によっては、ビルドを実行したユーザーの名前や、ビルドが作成されたマシンの名前などの情報を、このファイルに追加する必要があるかもしれません。この情報は、「Ant ビルド・ファイル」で示したように、"init" ターゲット内の WORKSPACE 環境変数を抽出したときと同じ方法で環境から抽出できます。

  6. デプロイ前の単体テストを実行する (Run pre-deployment unit tests)
  7. このステップでは、データ・ソースなどのランタイム・リソースを必要としない JUnit テスト・ケースを呼び出します。このステップを実行するには、同様のテスト・ケースを準備しておくことが前提となります。リスト 7 に、ワークスペースですべての JUnit テスト・ケースを呼び出す方法を示します。このリストでは、対象となるテスト・ケースはいずれも "Test" という語で終わることを前提としています。もちろん、別の命名規則がある場合には、この前提を変更することができます。



    リスト 7. JUnit テスト・ケースを呼び出す
                            
    <target name="predeptests" description="Invoke pre-deployment JUnit test cases">
    <!-- Run JUnit and print a summary when done. -->
    <junit printsummary="yes" haltonfailure="no">
    <classpath>
    <!--
    Set the class path to include all needed classes that are used by the JUnit test cases.
    |--10--------20--------30--------40--------50--------60--------70--------80--------9|
    |-------- XML error:  The previous line is longer than the max of 90 characters ---------|
    -->
    </classpath>
    <!-- Generate reports in an XML format -->
    <formatter type="xml" />
    <!-- Run a batch of JUnit test cases and generate reports to the report directory. -->
    |--10--------20--------30--------40--------50--------60--------70--------80--------9|
    |-------- XML error:  The previous line is longer than the max of 90 characters ---------|
    <batchtest fork="yes" todir="${report.dir}">
    <fileset dir="${workspace.dir}/">
    <!-- Include all .java files that end with "Test" -->
    <include name="**/*Test.java" />
    </fileset>
    </batchtest>
    </junit>
    </target>
    

    JUnit Ant タスクには junit.jar が必要です。junit.jar は、"init" ターゲットに記述された Ant ビルド・プロジェクトのプロパティー・ファイル内にある lib.dir プロパティーで指定したディレクトリーに置くことができます。JUnit タスクが生成したレポートは、JUnitReport Ant タスクを使用して別の形式に変換できます。今回、レポートは、report.dir プロパティーで指定されたディレクトリーに生成されます。

  8. デプロイ可能な単位をエクスポートする (Export deployable units)

    このステップでは、デプロイ可能な単位をパッケージ化し、次のステップでデプロイするための準備をします。リスト 8 に、エンタープライズ・アプリケーションのエクスポート方法を示します。



    リスト 8. エンタープライズ・アプリケーションをエクスポートする
                            
    <target name="exportear" description="Export an Enterprise Application">
    <!-- Export EAR file-->
    <earExport earprojectname="${project.name}" 
    earexportfile="${destination.dir}/${project.name}.ear" 
    exportsource="false" IncludeProjectMetaFiles="false" 
    
    overwrite="true" />
    </target>
    
    

    ステップ 3 (コードのビルド) でプロジェクト・セットを処理したときと同様に、エンタープライズ・アプリケーションのエクスポートでも同じ処理を行うことができます。リスト 9 のコードは、その処理方法を表しています。



  9. リスト 9. エンタープライズ・アプリケーションをエクスポートする
                            
    <target name="exportall" depends="buildall" 
    description="Export a set of Enterprise Applications">
    <!-- Export an Enterprise Application -->
    <antcall target="exportear">
    <!-- Pass the name of the project to be exported -->
    <param name="project.name" value="MyFirstEAR" />
    </antcall>
    <!-- Export another Enterprise Application -->
    <antcall target="exportear">
    <!-- The name of the other Enterprise Application -->
    <param name="project.name" value="MySecondEAR" />
    </antcall>
    </target>
    

    その他のプロジェクト・タイプとしては、warExport、ejbExport、および jar タスクがあります。それぞれ、Web モジュール、EnterpriseJavaBeans (EJB) モジュール、Java ライブラリーをエクスポートします。これらはすべて、SDP に付属の Ant タスクです。

  10. ターゲット・サーバーにデプロイする (Deploy to target servers)
  11. このステップでは、前のステップでエクスポートした単位をデプロイします。今回の自動化手順では、wsadmin を含む組み込み Ant タスクを使用します。 リスト 10 に、wsListApps、wsUninstallApp、および wsInstallApp という Ant タスクを示します。これらのタスクには管理機能が備わっていて、それぞれ、インストール済みのアプリケーションのリスト表示、エンタープライズ・アプリケーションのアンインストール、エンタープライズ・アプリケーションのインストールを行うことができます。このステップを実行する前に、必ずターゲット・アプリケーション・サーバーを始動してください。

    wsadmin と Ant について
    WebSphere Application Server の Ant のサポートは、コマンド・ライン管理ツール wsadmin に基づいて行われます。ここに記載されている例の代わりに、Exec Ant タスクを使用して wsadmin を呼び出し、他の実行可能プログラムを呼び出すときと同じ方法でプログラム・パラメーターを渡すことができます。WebSphere Application Server には、wsadmin を含む Ant タスク WsAdmin も用意されています。他にも、特定の操作用の WsAdmin タスクを含む Ant タスクがあります。例えば、アプリケーション・インストール用の InstallApplication や、StartApplication などです。InstallApplication については、今回の例でも使用しています。



  12. リスト 10. エンタープライズ・アプリケーションを管理する
                            
    <target name="listapps" description="List installed Enterprise Applications">
    <!-- Define the wsListApps task that lists installed Enterprise Applications. -->
    <taskdef name="wsListApps" classname="com.ibm.websphere.ant.tasks.ListApplications">
    <!-- Include all JAR files under WebSphere Application Server lib directory. -->
    <classpath>
    <fileset dir="${was.home}/lib/" includes="*.jar" />
    </classpath>
    </taskdef>
    <!-- List all installed Enterprise Application the profile specified. -->
    <wsListApps profilename="${was.profilename}" wasHome="${was.home}/" conntype="SOAP"
    host="${was.hostname}" port="${was.hostport}" user="${was.username}" 
    password="${was.userpassword}" />
    </target>
    <target name="uninstallapp" depends="listapps" 
    description="Uninstall an Enterprise Application">
    <!-- Define the wsUninstallApp task that uninstalls an Enterprise Application. -->
    <taskdef name="wsUninstallApp" 
    classname="com.ibm.websphere.ant.tasks.UninstallApplication">
    <!-- Include all JAR files under WebSphere Application Server lib directory. -->
    <classpath>
    <fileset dir="${was.home}/lib/" includes="*.jar" />
    </classpath>
    </taskdef>
    <!-- Uninstall an Enterprise Application under the profile specified. -->
    <wsUninstallApp profilename="${was.profilename}" wasHome="${was.home}/"  
    application="${project.name}"  conntype="SOAP" 
    host="${was.hostname}" 
    port="${was.hostport}" 
    user="${was.username}" password="${was.userpassword}" 
    failonerror="false" />
    <!-- Invoke listapps target to list installed applications. -->
    <antcall target="listapps" />
    </target>
    <target name="installapp" depends="uninstallapp">
    <!-- Define the wsInstallApp task that installs an Enterprise Application. -->
    <taskdef name="wsInstallApp" classname="com.ibm.websphere.ant.tasks.InstallApplication">
    |--10--------20--------30--------40--------50--------60--------70--------80--------9|
    |-------- XML error:  The previous line is longer than the max of 90 characters ---------|
    <!-- Include all JAR files under WebSphere Application Server lib directory. -->
    <classpath>
    <fileset dir="${was.home}/lib/" includes="*.jar" />
    </classpath>
    </taskdef>
    <!-- Install an Enterprise Application under the profile specified. -->
    <wsInstallApp profilename="${was.profilename}" wasHome="${was.home}/" 
    ear="${destination.dir}
    /${project.name}.ear" conntype="SOAP" 
    host="${was.hostname}" port="${was.hostport}" 
    user="${was.username}" 
    
    password="${was.userpassword}" failonerror="false" />
    <!-- Invoke listapps target to list installed applications. -->
    <antcall target="listapps" />
    </target>
    

    デプロイしなければならないアプリケーションの数に応じて、project.name パラメーターにさまざまな値を指定し、installapp ターゲットを何度も呼び出すことができます。installapp ターゲットは、uninstallapp ターゲットを呼び出し、対象のエンタープライズ・アプリケーションがすでにインストールされている場合には、そのアプリケーションを確実にアンインストールします。この 2 つのターゲットは、アンインストールとインストールの前後で listapps を呼び出し、対象のエンタープライズ・アプリケーションをリスト表示します。以上の内容を実行する方法をリスト 11 に示します。



    リスト 11. 複数のエンタープライズ・アプリケーションをインストールする
                            
    <target name="installallapps" description="Install all Enterprise Applications">
    <!-- Invoke installapp target to install an Enterprise Application. -->
    <antcall target="installapp">
    <!-- Pass the name of the Enterprise Application to be installed. -->
    <param name="project.name" value="MyAppEAR" />
    </antcall>
    <!-- Another invocation to the installapp target can be done for further installations. -->
    |--10--------20--------30--------40--------50--------60--------70--------80--------9|
    |-------- XML error:  The previous line is longer than the max of 90 characters ---------|
    </target>
    

  13. デプロイ後の単体テストを実行する (Run post-deployment unit tests)

    このステップは、デプロイ前の単体テストを実行するときと良く似ています。ただし、実行する JUnit テスト・ケースの性質が異なります。デプロイ後のテスト・ケースでは、すでにランタイムにデプロイされていて機能しているコードを活用することが求められます。こうしたテスト・ケースでは、サーバー・サイドのリソースとテスト・コンポーネント (Cactus など) を利用できます。ビルド自動化手順に関する限り、このステップは、JUnit テスト・ケース・セットを呼び出しているだけです。

  14. ビルドをアップロードする (Upload build)

    ビルドがすべて設定されると、自動化手順により、デプロイ可能な単位と、生成されたレポートが FTP サーバーにアップロードされます。このステップは、バックアップを行ったり、全体としてビルドの ID を保持したりする場合に役立ちます。リスト 12 に示すターゲットは、FTP でビルド・ファイルをアップロードする方法を表しています。



    リスト 12. ビルド・ファイルを FTP サーバーにアップロードする
                            
    <target name="uploadbuild" description="Upload build to an FTP server">
    <!-- Upload everything under the destination.dir to the FTP server. -->
    <ftp server="${ftp.hostname}" remotedir="/" userid="${ftp.username}" 
    password="${ftp.userpassword}" separator="\" verbose="yes" binary="yes">
    <fileset dir="${destination.dir}">
    <include name="**/*.*" />
    </fileset>
    </ftp>
    </target>
    

  15. テスト・チームに通知する (Notify testing team)

    最後に、自動化手順により、テストを開始するテスターに E メールが送信されます (リスト 13 を参照)。次の例では、SMTP サーバーで認証が行われないことが前提となっています。



    リスト 13. E メールをテスト・チームに送信する
                            
    <target name="notifyteam" description="Notify testing team of the new build">
    <!-- Read build information from the build.info file. -->
    <property file="${destination.dir}/build.info" />
    <!-- Send a mail to the testing team. -->
    <mail mailhost="${smtp.hostname}" mailport="${smtp.hostport}" subject="Test build #${build.number}" 
    |--10--------20--------30--------40--------50--------60--------70--------80--------9|
    |-------- XML error:  The previous line is longer than the max of 90 characters ---------|
    from="${smtp.from}" tolist="${smtp.tolist}">
    <message>The build #${build.number} is now available for testing.</message>
    </mail>
    </target>
    
    

    SMTP サーバーで認証が必要な場合は、JavaMail .jar ファイルをダウンロードする必要があります。




上に戻る


手順実行時のオプション

このセクションでは、ビルド手順を実行するときに使用可能ないくつかの実行方法について簡単に説明します。

条件付きフロー

上で説明した自動化手順には、タスクのフローを制御する条件は含まれていません。このような制御が必要な場合は、エラー時の処理を許可する属性をいくつかのタスクで使用します。例えば、wsInstallApp タスクには、この目的を果たす failonerror 属性が含まれています。

条件を使用してもフローを制御できます。Ant での条件について詳しくは、「Conditions task」を参照してください。Ant には、ターゲット同士を関連付けて実行対象のターゲットの順序を確定する依存関係も備わっています。

IDE からの実行

Ant ビルド・ファイルを実行する場合、IDE から実行する方法が簡単です。図 3 に示すように、「Ant」ビューのツリー・ビューの下に表示される Ant ターゲットのいずれかで「Ant の実行 (Run Ant)」オプションを選択できます。


図 3. コンテキスト・メニューからの「Ant の実行 (Run Ant)」の選択
図 3. コンテキスト・メニューからの「Ant の実行 (Run Ant)」の選択

「属性を変更して起動する (Modify attributes and launch)」ダイアログの「JRE」タブで「ワークスペースと同じ JRE で実行する (Run in the same JRE as the workspace)」を選択します (図 4 を参照)。「適用 (Apply)」をクリックしてから、「実行 (Run)」をクリックします。


図 4. 使用する JRE の変更
図 4. 使用する JRE の変更

この実行の後に、出力が「コンソール (Console)」ビューに表示されます (図 5 を参照)。


図 5. 実行の出力
図 5. 実行の出力

コマンド・ラインからの実行

Rational SDP リソースを使用してコマンド・ラインから実行されるように Ant をカスタマイズする方法については、<IDE installation directory>\rwd\eclipse\plugins\com.ibm.etools.j2ee.ant_6.0.1.XXX に情報が記述されています。このディレクトリーの下には、Ant ビルド・ファイルを実行するためのバッチ・ファイル runAnt があります。このバッチ・ファイルを使用するには、WORKSPACE 環境変数を設定する必要があります。この変数は、自動化リソースが含まれるワークスペースを指しています。この変数を設定するには、リスト 14 のようにコマンド・ラインから行うか、またはリスト 14 の 1 行を runAnt バッチ・ファイルに追加することで行います。


リスト 14. コマンド・ラインからのターゲットの実行
                
set WORKSPACE=C:\workspaces\MyWorkSpace
runAnt.bat -buildfile <path to the Ant build file>\build.xml init


上の例にある init ターゲットの代わりに、他のターゲットを Ant ビルド・ファイルから同じように呼び出すことができます。

スケジュールによる実行

このビルド手順は自動化されているため、テスト用ビルドが必要とされる頻度によっては、開発チームはこの手順を毎日実行するかもしれません。この実行は部分的な実行 (Ant ターゲットのサブセットの実行) になる場合も、完全な実行になる場合もあります。どちらの場合も、手順を希望の頻度で実行するようにスケジュールすることが可能です。Windows プラットフォームでタスクの実行をスケジュールする方法について、詳しくは、「Performing unattended daily builds with WebSphere Studio and Ant, Part 2」を参照してください。




上に戻る


まとめ

この記事でひととおり自動化のステップを学んだので、ソフトウェア開発チームの繰り返しビルド・タスクを自動化する手順を使用して、生産性と品質が向上したのではないかと期待しています。このビルド自動化手順では、Rational および WebSphere ファミリーのソフトウェア製品から提供される自動化機能のサブセットのみが使用されました。この手順は、作業状況、使用するツールやランタイム、チームの知識、および開発中のソリューションのタイプに合うように調整する必要があります。

謝辞

著者として、Nouran Abdel-Hamid 氏、Rosaline Makar 氏、Amr Ali 氏、および Ahmed Mamdouh 氏に感謝の意を表します。彼らのおかげで自動化ソリューションは成功しました。





上に戻る


ダウンロード

内容ファイル名サイズダウンロード形式
Automation Scriptsar-autotaskcode.zip3KBHTTP
ダウンロード形式について


参考文献

学ぶために

製品や技術を入手するために


著者について

Photo of Ahmed Abbass

Ahmed Abbas は Cairo Technology Development Center の IT 設計者です。Ahmed は、研究所のさまざまな業務に携わる過程で、カスタマー・ビジネス要求を扱うために、テクノロジーの背景にある理論と、実装の実用性との間にあるギャップを埋めることに関心を持ちました。




記事の評価


サイト改善のため、ご意見をお寄せください。こちらのフォームからお願いいたします。



 


 


不充分・不完全である大変素晴らしい
 


この記事を共有する

del.icio.us del.icio.us newsing newsing FC2ブックマーク FC2ブックマーク
Choix! Choix! ニフティクリップ ニフティクリップ Yahoo!ブックマーク Yahoo!ブックマーク
MM/memo MM/memo CZブックマーク CZブックマーク livedoorクリップ livedoorクリップ
はてなブックマーク はてなブックマーク Buzzurl(バザール) Buzzurl(バザール)




上に戻る


    日本IBMについて プライバシー お問い合わせ