コンテナへのEggplant Functional(Fusion Engine)のデプロイ
Intended Audience: Git ソース管理ソフトウェア ワークフロー、自動化されたパイプライン、およびコンテナ化されたソフトウェアの使用に精通しているテスト開発者。
Eggplant Functionalのスクリプト実行エンジンは、_Eggplant Fusion Engine_とも呼ばれます。Fusion Engineは、基本的にEggplant Functionalを_コマンドラインモード_で実行したものです。コンテナ内で実行されるEggplant Functionalを指す場合は、通常「Fusion Engine」と呼びます。ただし、このページでは両方の呼び方があります。
Eggplant Functional (EPF) テストをコンテナにデプロイすることで、継続的インテグレーション/継続的デリバリー (CI/CD) パイプラインに統合できます。コンテナ内で実行するには、EPF の runscript コマンドで起動します。runscript コマンドは、グラフィカルユーザーインターフェース (GUI) を使用せずにコマンドラインインターフェース (CLI) から EPF を実行できるため、コンテナ内での実行が可能になります。
このページでは以下のトピックを取り上げます:
コンテナ内で Eggplant Functional (Fusion Engine) を実行する方法
Eggplant Functional (Fusion Engine) をコンテナ内で実行するには、次の 2 つの方法があります。
-
runscriptコマンドの引数として、実行する特定のEggplant SenseTalkテストスクリプトを渡します。このシナリオでは、Eggplant Fusion Engineは指定されたスクリプトの実行中のみ実行されます。以下は、このシナリオにおけるrunscriptコマンドの例です。runscript /tests/Demo.suite/Scripts/check_tutorial_sut.scriptこの方法で Eggplant Fusion エンジンを実行するときに使用できる
runscriptオプションの詳細については、Runscript コマンド、コマンドラインからの実行、および Runscript コマンドライン オプション を参照してください。 -
_Drive Mode_で実行し、
runscriptコマンドにdrivemode yes -driveport <port>引数を渡すことで、Eggplant Fusion Engineをバックグラウンドサービスとして実行できます。ドライブモードは、Eggplant DAI実行エージェントなどの他のアプリケーションがEggplant Fusion Engineとの間でメッセージを送受信するために使用できるシンプルなXML-RPCインターフェースを提供します。ドライブモードでは、Eggplant Fusion Engineは、ユーザーまたはプロセスによって明示的に停止されるまで、継続的に実行され、メッセージの送受信を行います。以下は、ドライブモードのrunscriptコマンドの例です。runscript driveport 5400 -CommandLineOutput yesFusion Engine をドライブ モードで実行するときに使用できるオプションの詳細については、Eggdrive について および Eggplant Functional での Eggdrive の使用 を参照してください。
コンテナイメージオプション
Eggplant Functional (Fusion Engine) をコンテナ内で実行する (コンテナ化する) には、次のオプションがあります。
-
ビルド済みの Eggplant Functional コンテナイメージの使用 で説明されているように、ビルド済みのイメージを使用できます。
-
独自のコンテナ イメージの構築 の説明に従って、独自のコンテナ イメージを構築することもできます。
以下の前提条件を必ず確認し、コンテナ内で Eggplant Fusion Engine を実行するために必要なものがすべて揃っていることを確認してください。
コンテナの前提条件
コンテナ内で Eggplant Functional (Fusion Engine) を実行するには、次のソフトウェアが必要です。
一般的な要件
| 要件 | 注意事項 |
|---|---|
| Git ソース管理ソフトウェア | Gitlab パイプラインで Fusion Engine コンテナを実行する予定の場合は、最新バージョン。 |
| コンテナソフトウェア | Docker、Ranger、Red Hat Linux (RHEL) Podman、または事前構成されたEggplant Functional (Fusion Engine) コンテナ イメージなど (Quay.io リポジトリ または Iron Bank リポジトリで入手可能) |
Eggplant Functional(Fusion Engine)の要件
| 要件 | 注意事項 |
|---|---|
| Intel (x86_64) システムでのみ実行されるサポートされている Linux OS | Eggplant Fusion Engine (Eggplant Functional) でサポートされている Linux オペレーティング システムとバージョンについては、Eggplant Functional 前提条件 ページを参照してください。 |
| Eggplant Functional (Fusion Engine) | runscript を使用して起動しました。 |
| Reprise ライセンス マネージャー (RLM) サーバー | Eggplant Functional 前提条件 ページに記載されている、現在サポートされている RLM サーバーのバージョン。 |
| Eggplant Functional Reprise License Manager (RLM) ライセンス | 実行するEggplant Fusion Engine(Eggplant Functional)インスタンスごとに、開発ライセンスまたは実行ライセンスが1つ必要です。RLMサーバから提供されるライセンスを使用する必要があります。コンテナ内でEggplant Fusion Engineを実行する場合、ノードロックライセンスは使用できません。RLMサーバを使用したライセンス管理の詳細については、チームライセンス管理におけるRLMの使用を参照してください。ライセンスはKeysight Software Managerから作成できます。 |
| RLMサーバーホストへのネットワークアクセス | コンテナ内の Eggplant Fusion エンジンは、ライセンスをチェックアウトする必要がある RLM サーバーを実行しているシステムへのネットワーク アクセス権を持っている必要があります。 |
| BonJour Discovery オプションを無効にする | Eggplant Fusion Engine(Eggplant Functional)をコンテナ内で実行する場合は、BonjourDiscoveryEnabled オプションを false に設定する必要があります。Fusion Engine コンテナをパイプライン内で実行する場合、他の VNC サーバーをポーリングする機能が必要ないため、このオプションは不要です。 |
ビルド済みの Eggplant Functional (Fusion Engine) コンテナイメージの使用
Keysightは、Eggplant Functionalスクリプト実行エンジン(Fusion Engine)がプリビルドされたRed Hat Enterprise Linux(RHEL)コンテナを提供しています。これらのコンテナの「エントリポイント」は、Eggplant Functionalの「runscript」コマンドをラップしたもので、任意のOpen Container Initiative(OCI)ランタイム上のDockerイメージから実行できます。OCIランタイムの仕様については、Linux Foundation Open Container Initiativeのサイトをご覧ください。コンテナは、以下の2つのリポジトリから入手できます。
-
コンテナー内の Red Hat Quay.io Eggplant Fusion エンジン は、Eggplant Functional ソフトウェア ダウンロード ページ にもリンクされています。
-
Iron Bank Eggplant Functional Container は、Platform One の強化されたコンテナイメージリポジトリです。このリポジトリは、米国国防総省(DoD)コミュニティ全体のソフトウェアエンジニアに安全なソフトウェアサプライチェーンを提供します。詳細については、Platform One をご覧ください。
ビルド済みのコンテナイメージのプル
次の手順に従って、事前に構築された Eggplant Fusion Engine コンテナ イメージをリポジトリからプルできます。
-
ブラウザを開いてリポジトリに移動します。
- Quay.io リポジトリ:
https://quay.io/repository/eggplantsoftware/fusion-engine-ubi8 - Iron Bank リポジトリ:
https://repo1.dso.mil/dsop/keysight/eggplant/epf-ubi8
- Quay.io リポジトリ:
-
使用しているコンテナ ソフトウェアに応じて、
podmanコマンドまたはdockerコマンドを使用してコンテナのコピーをプルします。先端このガイドのサンプル コマンドをコピーするには、コマンドの上にマウスを移動し、コマンドの右側に表示されたコピー (2 ページ) ボタンをクリックします。
For the Quay.io container:
Podman コマンド:
podman pull quay.io/eggplantsoftware/fusion-engine-ubi8Docker command:
docker pull quay.io/eggplantsoftware/fusion-engine-ubi8注記次の例に示すように、
pullコマンドのコンテナ パスの末尾に、Fusion Engine コンテナ バージョン (先頭にコロンを付ける) を明示的に追加する必要がある場合があります。podman pull quay.io./eggplantsoftware/fusion-engine-ubi8:<version>.For the Iron Bank container: 上記の
pullコマンドを使用しますが、Iron Bank コンテナ イメージへのパスを置き換えます。
ビルド済みのコンテナイメージを実行する
Eggplant Fusion Engineコンテナイメージをプルした後、以下のpodman runコマンド例に示すように実行するように設定する必要があります。サンプルには、EULAとプライバシー契約に同意する方法が含まれています。これらの同意は、変数として、またはSenseTalkスクリプトで渡すことで設定できます。(この情報はQuay.ioリポジトリの説明にも記載されています。)
前述の通り、このコンテナイメージのENTRYPOINTは、Eggplantのrunscriptコマンドのラッパーです。このラッパーでは、以下の3つの環境変数を設定する必要があります。
EGGPLANT_ACCEPT_EULA=true
EGGPLANT_ACCEPT_PRIVACY_AGREEMENT=true
EGGPLANT_LICENSE_HOST=<your_RLM_Server_Host>
Where:
EGGPLANT_ACCEPT_EULA=trueは、エンドユーザー使用許諾契約(EULA)に同意することを指定します。EULAはこちらでご覧いただけます。EGGPLANT_ACCEPT_PRIVACY=trueは、プライバシーポリシーに同意することを指定します。プライバシーポリシーはこちらでご覧いただけます。EGGPLANT_LICENSE_HOST=<your_RLM_Server_host>は、Fusion Engine がライセンスをチェックアウトするためにアクセスする必要がある Reprise License Manager (RLM) サーバーを実行しているシステムのホスト名または IP アドレスを指定します。RLM サーバーの詳細については、チームライセンス管理における RLM の使用 を参照してください。
Eggplant Fusion エンジンで SenseTalk スクリプトを実行する
次の例の「podman run」コマンドに示すように、Eggplant Fusion Engineコンテナを設定してSensetalkスクリプトを実行できます。この例は、Quay.ioリポジトリにあるEggplant Fusion Engineコンテナ用のコマンドを示しています。
Quay.io リポジトリ パスを Iron Bank リポジトリ パスに置き換える場合は、Iron Bank コンテナーに対して以下のサンプル コマンドを使用することもできます。
podman run --rm \
-e EGGPLANT_ACCEPT_EULA=true \
-e EGGPLANT_ACCEPT_PRIVACY_AGREEMENT=true \
-e EGGPLANT_LICENSE_KEY="your license key" \
--volume $HOME/suites:/home/eggplant/suites \
quay.io/eggplantsoftware/fusion-engine-ubi8:23.5.102 \ //Replace this line with registry1.dso.mil/ironbank/keysight/eggplant/fusion-engine-ubi8:23.5.102 for the Iron Bank container
-CommandLineOutput yes /path/to/script
ここで、-CommandLineOutput yes /path/to/script は、実行する特定のスクリプトへのパスに置き換える行です。
上記の例のバインドマウント (--volume $HOME/suites:/home/eggplant/suites) は、コンテナ内でローカル スクリプトを使用できるようにするために必要です。
ドライブモードでの Eggplant Fusion エンジンの実行
あるいは、以下のサンプル「podman run」コマンドに示すように、Eggplant Fusion Engineをドライブモードで実行することもできます。この例は、Quay.ioリポジトリのEggplant Fusion Engineコンテナ用です。
以下のサンプル コマンドは、Quay.io リポジトリ パスを Iron Bank リポジトリ パスに置き換えると、Iron Bank コンテナーにも適用できます。
podman run -d \
-e EGGPLANT_ACCEPT_EULA=true \
-e EGGPLANT_ACCEPT_PRIVACY_AGREEMENT=true \
-e EGGPLANT_LICENSE_KEY="your license key" \
-P \
quay.io/eggplantsoftware/fusion-engine-ubi8:23.5.102 \ //Replace this line with registry1.dso.mil/ironbank/keysight/eggplant/fusion-engine-ubi8:23.5.102 for the Iron Bank container
-driveport 5400 -CommandLineOutput yes
ここで、-driveport 5400 -CommandLineOutput yes は、Eggplant Functional をドライブモードで実行することを指定する行です。
Next step: 事前に構築されたコンテナを Gitlab パイプラインに統合する方法については、コンテナ イメージを使用するための Gitlab CI の構成 を参照してください。
独自のコンテナイメージを構築する
コンテナの構築に慣れている場合は、Eggplant Functional(Fusion Engine)を実行するための独自のコンテナを構築できます。Fusion Engineを実行するコンテナを正常に構築するために必要な事項を以下に示します。
コンテナに Eggplant Fusion エンジンをインストールする
コンテナ内でEggplant Fusion Engineインスタンスを実行するには、コマンドラインインストールを実行するようにコンテナを設定する必要があります。Linuxコンテナプラットフォームのインストール手順については、Eggplant Functionalのインストールをご覧ください。
契約の承諾とライセンスのインストール
コンテナ内で Eggplant Fusion Engine を実行する前に、コンテナ内のインスタンスを設定して、エンドユーザー使用許諾契約 (EULA) とプライバシー ポリシーに同意し、ライセンスを取得する必要があります。
コンテナ ENTRYPOINT は環境変数を使用して、EULA とプライバシー ポリシーに同意したり、以下に示すように、指定された Reprise License Manager (RLM) ホストに接続してライセンスをチェックアウトしたりできます。
EGGPLANT_ACCEPT_EULA=true
EGGPLANT_ACCEPT_PRIVACY_AGREEMENT=true
EGGPLANT_LICENSE_HOST=<your_RLM_Server_Host>
Where:
EGGPLANT_ACCEPT_EULA=trueは、エンドユーザー使用許諾契約(EULA)に同意することを指定します。EULAはこちらでご覧いただけます。EGGPLANT_ACCEPT_PRIVACY=trueは、プライバシーポリシーに同意することを指定します。プライバシーポリシーはこちらでご覧いただけます。EGGPLANT_LICENSE_HOST=<your_RLM_Server_host>は、Fusion Engine がライセンスをチェックアウトするためにアクセスする必要がある Reprise License Manager (RLM) サーバーを実行しているシステムのホスト名または IP アドレスを指定します。RLM サーバーの詳細については、チームライセンス管理における RLM の使用 を参照してください。
コンテナ内での Eggplant Fusion エンジンの起動
[コンテナ内で Eggplant Functional/Fusion Engine を実行する方法](#コンテナ内での Eggplant Functional/Fusion Engine の実行方法) で述べたように、コンテナ内で Fusion Engine を実行するには 2 つの方法があります。特定のスクリプトを実行するように設定するか、ドライブ モードで永続サービスとして実行するように設定することができます。 両方の方法の例を以下に示します。
スクリプトを実行するための起動
以下のdockerコマンドの例は、コンテナ内でEggplant Fusion Engineを使ってスクリプトを実行する方法を示しています。また、コンテナ内のFusion Engineでテストスイートとスクリプトを利用できるようにシステム上のボリュームをマッピングする方法と、スクリプトを実行するコマンドも示しています。
docker run -v ${PWD}:/tests -e EGGPLANT_ACCEPT_EULA=true -e EGGPLANT_ACCEPT_PRIVACY_AGREEMENT=true -e EGGPLANT_LICENSE_HOST=<RLM Server host or IP address> <container-image-name> runscript /tests/Demo.suite/Scripts/check_tutorial_sut.script
上記のコマンドはコピー&ペーストできますが、読みやすくするために行継続とコマンド後の各行の説明を追加した同じコマンドを以下に示します。
docker run -v ${PWD}:/tests \
-e EGGPLANT_ACCEPT_EULA=true \
-e EGGPLANT_ACCEPT_PRIVACY_AGREEMENT=true \
-e EGGPLANT_LICENSE_HOST=<RLM Server IP address or host> \
<container-image-name> \
runscript /tests/Demo.suite/Scripts/check_tutorial_sut.script
Where:
-v ${PWD}:/testsは、Eggplant テスト スイートとスクリプトが配置されているシステム上のボリュームをバインド マウントし、コンテナ内の Fusion Engine で使用できるようにするための引数です。-e EGGPLANT_ACCEPT_EULA=trueは、EULA に同意することを指定します。-e EGGPLANT_ACCEPT_PRIVACY_AGREEMENT=trueは、プライバシー ポリシーに同意することを指定します。-e EGGPLANT_LICENSE_HOST=<the RLM Server Host>Fusion Engine がライセンスをチェックアウトするためにアクセスする必要がある Reprise License Manager (RLM) サーバーを実行しているシステムのホスト名または IP アドレス。<container-image-name>コンテナ イメージの名前。runscript /tests/DEMO.suite/Scripts/check_tutorial_sut.script実行するスクリプトへのパスを指定した Eggplantrunscriptコマンド。
ドライブモードでの起動
Eggplant Functional をドライブモードで起動するには、次のコマンドを実行します。
-driveport 引数で指定したポートが公開されていることを確認してください。
docker run -v ${PWD}:/tests \
-e EGGPLANT_ACCEPT_EULA=true \
-e EGGPLANT_ACCEPT_PRIVACY_AGREEMENT=true \
-e EGGPLANT_LICENSE_HOST=<RLM Server IP address or host> \
<container-image-name> \
runscript -drivemode 5400 -CommandLineOutput yes
ここで、runscript -drivemode 5400 -CommandLineOutput yes は、Fusion Engine をドライブ モードで起動する行です。
コンテナイメージを使用するための Gitlab CI/CD の設定
Eggplant Fusion EngineコンテナをGitLabの継続的インテグレーション/継続的デリバリー(CI/CD)パイプラインに統合するには、パイプライン設定でコンテナ情報を指定する必要があります。GitLabパイプライン設定は、次の例に示すように、.gitlab-ci.ymlファイルで指定します。
Gitlab CI/CD の詳細については、Gitlab CI/CD の使用を開始する を参照してください。
パイプライン設定の gitlab-ci.yml ファイルの例
以下のサンプル gitlab-ci.yml ファイルは、Red Hat Enterprise Linux 8 (Rocky) 上で、ビルド済みの Quay.io Eggplant Functional コンテナを使用して SenseTalk スクリプトを実行するように Gitlab パイプラインを設定する方法を示しています。このコンテナの使用方法については、ビルド済みのコンテナイメージのプル を参照してください。
stages:
- tests
run-rocky-epf-test:
stage: test
image:
name: quay.io/eggplantsoftware/fusion-engine-ubi8:23.4.103
entrypoint:
- "" # restore default entrypoint
script:
- defaults write Eggplant AcceptEULA YES
- defaults write Eggplant AcceptPrivacyAgreement YES
- runscript -LicenserHost ${EGGPLANT_LICENSE_HOST}
- runscript -CommandLineOutput YES Demo.suite/Scripts/check_tutorial_sut.script
artifacts:
when: always
paths:
- Demo.suite/Results
reports:
junit: Demo.suite/Results/**/LogFile.xml
コンテナ内の Eggplant Functional (Fusion Engine) のアップグレードとアンインストール
ほとんどのコンテナは実行後に破棄されるため、コンテナから Eggplant Functional (Fusion Engine) をアンインストールしないでください。
同じ理由から、既存のコンテナ内でEggplant Fusion Engineをアップグレードしないでください。コンテナ内でEggplant Fusion Engineをアップグレードするには、コンテナ設定で必要な新しいEggplant FunctionalバージョンのURLを指定し、コンテナが新しいバージョンで起動するようにします。例えば、上記のExample gilab-ci.ymlファイルのイメージの「name」フィールド、またはIron Bank Dockerfileの8行目に指定されているURLがこれに該当します。
さらに詳しい情報が必要ですか?
さらにサポートが必要な場合は、Eggplant カスタマー サポート にお問い合わせください。