JenkinsソフトウェアとGithubコラボレーションを使用してバッチモードでRiviera-PROを使用する:
はじめに
このアプリケーションノートでは、JenkinsとGithubツールのコラボレーションを使用してバッチモードでRiviera-PROを使用する方法について説明します。プロセス全体を理解するために、すべての重要なセグメントについて説明します。まず、Jenkinsというツールについて理解しましょう。
-
Jenkinsとは何ですか?
Jenkinsは自己完結型のオープンソース自動化サーバーで、ソフトウェアのビルド、テスト、デプロイなど、あらゆるタスクの自動化に使用できます。Jenkinsは、ネイティブシステムパッケージやDockerを通じてインストールでき、Javaランタイム環境がインストールされている任意のマシンでスタンドアロンで実行することができます。これは作業しているプラットフォームに関係なく、プロジェクトの継続的インテグレーションと継続的デリバリーを可能にする強力なアプリケーションです。オープンソースのアプリケーションであり、あらゆる種類のビルドや継続的インテグレーションに対応できます。
-
なぜJenkinsなのか?
Jenkinsは継続的ンテグレーションを可能にするソフトウェアです。Jenkinsは、セントラルビルドが行われるサーバーにインストールされます。下記のフローチャートは、Jenkinsがどのように機能するかを示す非常に単純なワークフローを示しています。
Fig 1- Jenkins フローチャート
-
継続的インテグレーションとは?
継続的インテグレーションとは、開発者が定期的にコードを共有リポジトリに統合することを要求する開発手法です。継続的インテグレーションでは、開発者が頻繁にビルドを行う必要があります。一般的なプラクティスは、コードのコミットが発生するたびにビルドをトリガーする必要があります。スタンドアロンのJenkinsディストリビューションは、 Java 7 が必要ですが、Java 8 が推奨しています。以下の手順に従って、Jenkinsをダウンロードして実行します。
-
Jenkinsをダウンロード
-
Jenkinsが保存されているディレクトリでターミナルを開き、"java -jar jenkins.war"を実行します。
-
http://localhost:8080にアクセスし、指示に従ってインストールを完了します。
Jenkins-Riviera-PROレグレッションテスト:
Jenkins-Gitを使ったRiviera-PROのサンプルの実行について、ステップ・バイ・ステップで理解していきます。
1] Github でのリポジトリの作成:
-
Github.com にアクセスし、アカウントを作成し、"New Repository"をクリックします。
-
リポジトリに名前を付けます。 必要に応じて公開または非公開にしてください。
-
"Create Repository"をクリックします。"master"というブランチに移動します。
-
デザインファイルがすでに準備されていると仮定して、"Upload Files"オプションを使用してアップロードします。
-
必要なファイルをアップロードしたら、"Commit Changes"をクリックします。
-
複数の人が1つのデザインに取り組む場合、別々のブランチを作成することができます。したがって、"master"と呼ばれるオリジナルのブランチからデザインが変更されたときはいつでも、リクエストをプルしてその変更を"master"に反映させ、余計な手間を省くことができます。
-
上記の手順をすべて完了したら、"Clone or Download"をクリックし、適切なブランチを表すリポジトリのリンクをコピーします。 このリンクには微妙な使い方があり、それはJenkinsのパートで説明します。
2] Jenkins-Gitコラボレーション:
Fig 2 - Jenkins ホーム画面
ユーザーIDとパスワードを入力すると、ユーザーのホーム画面が表示されます。
Fig 3 - ログイン時
Jenkins-Gitセットアップ
このためには、左側の"Manage Jenkins"オプションをクリックしてください。次の画面で"Manage Plugins"をクリックします。
Fig 4 - Jenkinsの管理
"Manage Plugins"は、Jenkinsの機能を拡張するプラグインを追加、削除、または無効化/有効化します。Githubプラグインが既にインストールされているかどうかを確認するには、これをクリックしてください。Gitプラグインは、複数のプロバイダのリポジトリブラウザを含むビルドSCM(ソフトウェア構成管理)としてGitを使用できるようにします。Gitランタイムとのインタラクションは、JENKINS:Gitクライアントプラグインの使用によって行われます。これは公式のGitクライアント上でのみテストされています。それを確認した後、"Manage Jenkins"オプションに戻り、"Global Tool Configuration"をクリックします。Global Tool Configurationで、"Git Installations"をクリックし、ディレクトリにあるGit実行ファイルへのパスを指定します。Git実行ファイルをまだダウンロードしていない場合は、https://desktop.github.com/にアクセスし、適切なOS用のGitHubデスクトップバージョンをダウンロードしてください。ダウンロードが完了後、https://github.com/にアクセスし、プロファイルを作成してサインアップします。"New Repository"をクリックします。
Jenkinsの管理
Jenkinsを管理するには、左側のメニューから"Manage Jenkins"オプションをクリックします。これにより、ユーザーはクリックするだけでJenkinsのさまざまな構成オプションを取得できるようになります。 いくつかの管理オプションについて説明します。
-
Configuration System
ここでは、JDK、AntとMavenのバージョン、セキュリティオプション、電子メールサーバー、そのほかのシステム全体の詳細構成など、ビルドで使用するさまざまなツールへのパスを管理できます。Jenkinsはプラグインのインストール後に、必要な構成フィールドを動的に追加します。
-
Reload Configuration from Disk
Jenkinsは、すべてのシステムおよびビルドジョブ構成の詳細をXMLファイルとしてJenkinsのホームディレクトリに保存します。ビルド履歴もJenkinsのホームディレクトリに保存されます。あるJenkinsインスタンスから別のインスタンスにビルドジョブを移行する場合、または古いビルドジョブをアーカイブする場合、対応するビルドジョブディレクトリをJenkinsのビルドディレクトリに追加または削除する必要があります。単純に "Reload Configuration from Disk "オプションを使用すると、Jenkinsシステムとビルドジョブの設定を直接リロードできます。
-
System Information
この画面には、現在のすべてのJavaシステムプロパティとシステム環境変数のリストが表示されます。ここで、Jenkinsが実行されているJavaのバージョンとすべてを正確に確認できます。
-
System Log
Jenkinsのログファイルをリアルタイムで表示する便利な方法です。トラブルシューティングに使用されます。
-
Load Statistics
同時ビルド数やビルドキューの長さなど、Jenkinsインスタンスがどの程度ビジー状態であるかをグラフィカルに表示し、ビルドが実行されるまでにどれくらいの時間が必要かを把握することが出来ます。これらの統計は、インフラストラクチャの観点から余分な容量または余分なビルドノードが必要かどうかの良いアイディアが得られます。
-
Prepare for Shutdown
JenkinsまたはJenkinsが稼働しているサーバーをシャットダウンする必要がある場合、ビルドの実行中はシャットダウンしないことをお勧めします。Jenkinsを正常にシャットダウンするために、ユーザはPrepare for Shutdownリンクを使用して、新しいビルドが開始されない様にすることが出来ます。
次にGlobal Tool Configurationは、前述したようにPCにGitがインストールされているかどうかを表示します。
Fig 5 - Global Tool Configuration
-
Global Tool ConfigurationでGit実行ファイルへのパスが定義されていることを確認してください。
-
"New Item"をクリックします。
Fig 6 - Item名の宣言
-
項目名が確定すると、下記のような設定ウィンドウが開きます。
Fig 7 - Itemの設定
-
コンフィギュレーションウィンドウで、Source Code Managemenに移動します。Gitをクリックしてください。Gitをクリックすると、以下のようにRepository URLとBranches to buildオプションが表示されます。リポジトリのURLには、Gitリポジトリからコピーしたリンクを貼り付けます。Branches to buildブラケットには、必要なブランチの名前を入力します。デフォルトでは "master"になります。
Fig 8 - Source Code Management
-
次にリグレッションテストの自動化を維持しておきたいたため、リポジトリが誰かによって変更されたかどうかをチェックする時間間隔をJenkinsに指示する必要があります。つまり、Jenkinsの最大の利点はこの点にあります。複数のチームメンバが1つのデザインに取り組んでいる場合、デザインにどのような変更が加えられたかを調べるのは非常に重大で面倒になるためJenkinsは特定の時間間隔でリポジトリをチェックするアプローチを提供しています。変更が加えられるたびにビルドがトリガーされるようにします。以下の例では、各行は空白で区切られた5つのフィールドで構成されたcron構文を提供しています。
Fig 9 - Build Triggers
-
次にJenkinsはテストを実行するビルドステップを提供します。Jenkinsはビルドステップ内で異なるサポートレベルを提供しているので、ユーザーは自分に都合の良いステップを利用することができます。異なるステップとは Windowsバッチコマンドの実行、シェルの実行、Antの呼び出し、Gradleスクリプトの呼び出し、トップレベルのMavenターゲットの呼び出し、タイムアウト付きで実行、Githubコミットでビルドステータスを "pending "に設定します。この例では、バッチ コマンドファイルを使用してRiviera-PROを呼び出しているため、"Execute Windows batch command"オプションを選択します。 選択するとすぐに以下のウィンドウが開きます。
Fig 10 - Buildウィンドウ
-
コマンドウィンドウ内でsetenv.batファイルを呼び出して、Riviera-PROの環境変数を設定します。次にvsimsa.exeファイルを実行するバッチコマンド "start"を提供します。通常、実行したいスクリプトがあればvsimsa.exeファイルを実行するバッチコマンドと一緒に指定します。たとえば、"start C:\Aldec\Riviera-PRO-2016.06-x64\bin\vsimsa.exe -do C:\Aldec\Riviera-PRO-2016.06-x64\examples\coverage\coverage_database\keyboard_controller\src\runme.do”とします。
-
以下はビルド時に実行されるスクリプトコマンドです。
Fig 11 - スクリプトコマンド
-
次にコンフィギュレーションウィンドウの設定を保存し、"build"をクリックします。バッチモードツールが起動し、スクリプトが実行されます。Jenkins内部でビルドが成功すると、次のコンソールログが表示されます。
Fig 12 - Jenkinsコンソールログ
Fig 13 - Riviera-PROをバッチモードで起動/スクリプト実行
-
スクリプトが保存されているホームディレクトリに移動します。シミュレーションデータベースはそこに保存されます。カバレッジ結果のHTMLファイルを作成したい場合は、実行するスクリプトにそのコマンドを含めることが出来ます。
Fig 14 - 累積化バッジの結果 test1.html
Fig 15 - カバレッジ結果 test2.html
Fig 16 - カバレッジ結果 merged.html
-
ビルドのトリガーはリポジトリ内のデザインファイルに変更があった場合、毎分リポジトリをチェックし続けるようにしているので、継続的にチェックし続けます。新しいファイルの追加からリポジトリ内の複数ファイルの1つのコード行の変更まで。変更が行われた場合にビルドがトリガされます。Jenkinsはテストを再実行し、新しいシミュレーションデータベースを提供します。
Jenkinsの利点
-
Jenkinsは継続的インテグレーションサーバーです。
-
これには、すべてのテストが機能しているかどうかを常に把握し、迅速なフィードバックを得られるという大きな利点があります。迅速なフィードバックは重要で、ビルドを失敗した(コンパイル/ビルドサイクルまたはテストのいずれかを失敗させる変更を導入した)直後に、失敗した内容とそれを元に戻す方法を常に知ることができます。
-
テストを時々しか実行しない場合、前回実行したときから多くのコード変更が行われている可能性があり、どの変更で問題が発生したのかを把握するのが難しくなります。プッシュするたびに自動的にテストが実行されると、何が誰によって問題を引き起こされたかが常に明白になります。
-
CIは、ほとんどの開発者がコードベースを無傷に保つために従うプロセスになります。ほとんどの場合、グループ環境で作業する場合によく行われます。たとえば、新しい家を建設するようなものです。現場では複数の業者が作業を行います。窓ガラスを取り付けた後、塗装業者が来てペンキを塗ると、ガラスにペンキを落としてしまったり、ガラスを割ってしまったりする可能性が高くなります。そこで、検査員が毎日来て、何か壊れていないかどうかチェックします。新しいコードを構築する際にも同じプロセスが適用されます。CIシステムは、さまざまなエンジニアから全てのコードを集め、それが適切にコンパイルされ、ビルドされることを確認します。
参考文献:
[1] Jenkins公式サイト https://jenkins.io
[2] Github公式サイト https://github.com/
[3] Jenkins チュートリアル http://www.tutorialspoint.com/jenkins/
免責事項:
このアプリケーションノートのテキストの多くは、提供されているオープンソースツールに関する参照したソース(Jenkins.com)から抜粋したものです。このアプリケーションノートの目的は、アルデック ユーザーの利益のためにデータを統合および整理し、簡素化されたツールフローを提示することです。