Artefacts クラウドシミュレーションでのテスト実行
概要
artefacts run [jobname]
を使用すると、テストはローカルで実行されます。しかし、テストに時間がかかる場合、例えば複数のパラメータ化されたシナリオがある場合は、Artefacts クラウドシミュレーション上で実行したいと思うかもしれません。
その場合は artefacts run-remote [jobname]
を使用できます。ローカルコードがアーカイブファイルに圧縮され、実行のために当社のサーバーに送信されます。
Note
ジョブはダッシュボードに数秒以内に表示されるはずですが、実際に開始するまでに数分かかることがあります。そのため、この機能は長時間のテストや、継続的インテグレーション用にテストが適切に設定されているかを確認する場合に使用することをお勧めします (Continuous Integration with Github のセクションを参照)。以下は実行モデルの概要です。
graph TD
subgraph artefacts
ac(cloud simulation) --> dashboard(dashboard)
end
subgraph LocalMachine
lc(local code) -.-CLI
CLI --run_local-->dashboard
CLI --run_remote-->ac
end
lc --push--> github
github --pushEvent/pullCode--> ac
Artefacts クラウドシミュレーションでの実行時間は、使用量クォータに計上されます。
.artefactsignore ファイル
プロジェクト内にテスト実行に必要のないファイル(例:rosbags、一部のアセットなど)がある場合、アップロードするアーカイブファイルのサイズを小さく保つために、プロジェクトのルートに .artefactsignore
ファイルを追加することができます。これは .gitignore
ファイルと同じ方法で使用できます。例えば:
rosbags/
venv/
.DS_Store
これにより、 rosbags
と venv
フォルダ、および隠しファイル .DS_Store はバンドルされません。
クラウドシミュレーション用のパッケージング
Artefacts はいくつかのシミュレーターとフレームワークをすぐに使用できるよう対応しています。その場合、必要なのはテスト起動ファイルを提供するだけです ( Running and Tracking Tests を参照)
現在サポートされているのは:
- Gazebo Ignition(Fortress)を使用した ROS2
runtime:
simulator: gazebo:fortress
framework: ros2:humble
- Gazebo(Harmonic)を使用した ROS2
runtime:
simulator: gazebo:harmonic
framework: ros2:humble
設定ファイルの runtime
セクションでこれらが適切に指定されていることを確認してください ( 設定構文 を参照)。
また、(プロジェクトが ROS を使用していない場合など)Artefacts クラウドシミュレーション上で実行するための Docker パッケージを準備する 必要があるかもしれません。
クラウドシミュレーション用のパッケージングのカスタマイズ
ほとんどの場合、ランタイムブロックで使用するフレームワークとシミュレーターを指定するだけで十分です:
runtime:
simulator: gazebo:fortress
framework: ros2:humble
そしてテスト起動ファイルを提供するだけで、Artefacts は他の入力なしであなたのプロジェクトを構築してテストすることができます。しかし、一部のプロジェクトでは、いくつかのカスタマイズや微調整が必要な場合があることも理解しています。
これらのケースに対応するため、 artefacts.yaml
ファイルの package['custom']
セクションで以下のキーを使用できます:
package:
custom:
os: # string
include: # List
commands: # List
os
: 文字列 ベースイメージを入力します (例:ubuntu:22.04
)。 これはframework
とsimulator
の選択に基づいてArtefactsが使用するベースイメージをオーバーライドします。
例:
package:
custom:
os: ubuntu:22.04
include
: リスト デフォルトでは、Artefacts はGitHubリポジトリ(継続的インテグレーション)または現在の作業ディレクトリ(‘run-remote’)を再帰的にサーバー上で実行されているコンテナにコピーします。include
を使用して、コンテナで利用可能にしたいディレクトリ/ファイルを指定します。
例:
package:
custom:
include:
- ./path/to/my_necessary_files
- ./makefile
commands
: リスト プロジェクトのビルド段階の前に実行する追加のbashコマンドが必要な場合は、ここに入力します。一般的な使用例は、ros/gazeboプロジェクトを構築する際に、通常のrossource
に加えてカスタムsource
が必要な場合です。
例:
package:
custom:
commands:
- source simulator/my_workspace/install/setup.bash
runtime:
framework: ros2:humble
simulator: gazebo:fortress