番外編を挟んでしまいましたので、だいぶ間が空いてしまいましたが、第6回では、第5回で設計したJenkinsのJobを実際に動かして行きたいと思います。現時点(2018/7/18)でJenkinsの最新バージョンは2.121.1ではありますが、Jenkinsは2.0のバージョンから「パイプライン」機能が標準で使用できるようになっています。せっかくですので、この「パイプライン」機能を使いたいところですが、また違う設計が必要になりますので今回は「パイプライン」は使わずに「フリースタイル」でJobを実行して行きます。
Jobの新規作成
JenkinsのJobを新規作成して行きます。Jenkinsのトップメニューから「新規ジョブ作成」をクリックします。ジョブの作成画面が開くので、図1のようにJobの名前を入力し、「フリースタイル・プロジェクトのビルド」を選択し、OKボタンを押します。
図1: Jobの新規作成
Jobの設定
Jobを新規作成後、自動でJobの設定画面に切り替わりますので、続けてJobの設定を行います。
Jobを実行するノードの指定
最初に、DTシリーズ製品ならではの設定になりますが、作成したJobを実行させるためのノードを指定します。図2のように予め作成しておいたノードを登録します。「実行するノードを制限」にチェックを入れ、「ラベル式」には、既に作成済みのノードである「slave」を指定します。
(なぜ、Jenkins上でDTシリーズ製品を動作させるのに、スレーブとなるノードが必要になるのかは、第4回で説明していますのでこちらを参照ください。)
図2: ノードの設定
ソースコードの管理
CVSやSubversionやGitなどの構成管理ツールを使用しているとき、JenkinsのJob側でワークスペースのソースコードを取得するときにリポジトリとなるURLを指定します。今回は、特に構成管理ツールは使用しませんので、図3のように「なし」を選択します。
図3: ソースコード管理の設定
ビルド・トリガ
Jobを実行するつまり「ビルド実行」のトリガを指定します。定期的に実行したり、Jenkins側で構成管理ツール側をポーリングする方式など、いろいろトリガを指定できますが、今回は構成管理ツールは使用しませんので、チェックボックスは全てOFFにしておきます(図4)。
図4: ビルド・トリガの設定
ビルド環境
特にこれと言って設定の必要はありませんが、図5のようにログに色を付けるための設定をしておくと大量のログが出た時に便利です。ただし、「Color ANSI Console Output」の設定を行うためには、Ansi Colorプラグインを予めインストールしておく必要があります。
図5: ビルド環境の設定
ビルド
実際にJobで行う処理を記述します。Windows上で動作させるためバッチファイルとして記述します。詳細は後述します。
図6: ビルドの設定
ビルド後の処理
一般的に、一連のビルドの実行が終了した後に、ビルドによって得られた成果物を保存したり、テストの結果の集計・集約するための処理を記述します。また、得られた結果をメールで通知することも可能です。
図7: ビルドの設定
ビルド実行
作成したJobを実行してみます。以下は、「ビルドの設定」のところで指定したバッチファイルの詳細です。弊社のデモ機に対してDT10のプロジェクト作成から、テストポイントの挿入、ビルド、ディプロイ、テストの自動実行、結果の集計等の一連の動作が記述されています。
@echo off set RESULT_FOLDER=%JENKINS_HOME%\jobs\%JOB_NAME%\Builds\%BUILD_NUMBER%\DT10 set DT_ROOT=%WORKSPACE%\trunk\AnalogBoxDemo1 set DT_PROJ="%RESULT_FOLDER%\AnalogBoxDemo.rprj" set DT_CSV=%DT_TESTTOOL%\csv set TI_HOME=%ProgramFiles%\Texas Instruments set TI_CCS=%TI_HOME%\ccsv4 set TI_JAVA="%TI_CCS%\eclipse\jre\bin\java" set TI_JAR="%TI_CCS%\eclipse\startup.jar" set TI_FLASH="%TI_HOME%\Stellaris\LM Flash Programmer\LMFlash" set TI_WORKSPACE="%WORKSPACE%\trunk" set TI_IMAGE="%DT_ROOT%\Debug\AnalogBoxDemo.bin" set TI_FLASH_OPT=--debug-port=JTAG --interface=ICDI --speed=300000 --frequency=6 set TI_FLASH_RESET=--hreset set TEST_COMMAND=%DT_TESTTOOL%\bin\TestCommand.exe @echo on @echo === プロジェクトの新規作成 ========= mkdir %RESULT_FOLDER% DTCmd -newproj %DT_PROJ% %DT_ROOT% gpio4bit 0x00010 rem %DT_SETTINGS% @echo. @echo. @echo === テストポイントの挿入 ========= DTCmd -newins %DT_PROJ% %DT_FILELIST% @echo. @echo. @echo === ビルド ===== %TI_JAVA% -jar %TI_JAR% -data %TI_WORKSPACE% -application com.ti.ccstudio.apps.projectBuild -ccs.workspace @echo === ディプロイ =================== %TI_FLASH% %TI_FLASH_OPT% %TI_IMAGE% @echo === DT10起動 =================== DTCmd -project %DT_PROJ% @echo === データ収集開始 =================== DTCmd -trace start @echo === リセットスタート =================== %TI_FLASH% %TI_FLASH_RESET% @echo === テスト自動実行 =================== %TEST_COMMAND% COM4 "test up" %TEST_COMMAND% COM4 "test down" %TEST_COMMAND% COM4 "test rand" %TEST_COMMAND% COM4 "test screen" @echo === データ収集停止 =================== DTCmd -trace stop @echo === レポート解析 =================== DTCmd -analyze all @echo === レポート出力 =================== mkdir %DT_CSV% DTCmd -export coverage %DT_CSV%\coverage.csv DTCmd -export exectime %DT_CSV%\exectime.csv DTCmd -export period %DT_CSV%\period.csv @echo === DT10終了 =================== DTCmd -exit save
実際のJobの実行は、今回は手動で行います。Jobの設定を保存するとJobのメニューに切り替わるので「ビルド実行」をクリックします(図8)。Jobが起動し登録されたバッチファイルが自動実行されます。
図8: ビルドの実行
最後に
今回はJobを作成したというよりも、言ってみればJenkins上でバッチファイルを走らせただけなようなものでした。次回は「パイプライン」機能を使って、最近のJenkinsならではの設計を行ってみたいと思います。
「動的テストの自動化を考える」のブログも昨年の8月にスタートし丸一年が過ぎようとしています。シリーズ的にはようやく折り返し地点を通過したかなという感じがしています。これまでのバックナンバーも記載いたしましたので、読者の皆様も振り返っていただけると幸いです。
バックナンバー
- 「動的テストの自動化を考える #1」- 動的テスト自動化のメリット
- 「動的テストの自動化を考える #2」- テストポイント挿入のための4W2H
- 「動的テストの自動化を考える #3」- CUIによるテストポイント挿入
- 「動的テストの自動化を考える #4」- DTシリーズ製品をJenkinsで動かすための準備
- 「動的テストの自動化を考える #5」- 動的テスト自動化のための設計
- 「動的テストの自動化を考える 番外編」- ESEC2018に出展したテスト自動化のデモ
- 「動的テストの自動化を考える #6」- Jobの設計
- 「動的テストの自動化を考える #7」- Jenkinsのパイプラインで何ができるか
- 「動的テストの自動化を考える 番外編2」- ET2018に出展したテスト自動化デモ
- 「動的テストの自動化を考える #8」- Jenkinsのパイプラインで動的テストの自動化を設計
- 「動的テストの自動化を考える #最終回」- Jenkinsのパイプラインで動的テストの自動化を実現
- 「動的テストの自動化を考える #最終回のおまけ」- Jenkinsによる動的テスト自動化の動画