Dockerによるパッケージング
多くの一般的なユースケースでは、有効な artefacts.yaml
設定ファイルがあれば、Artefactsは自動的に実行されます。これはArtefactsインフラストラクチャ上で実行する場合 (run-remote
) と artefacts run --in-container
を使用する場合の両方に適用されます。Artefactsインフラストラクチャ上でのジョブ実行の詳細については、 cloud-simulation を参照してください。
ArtefactsはカスタムのDockerファイル設定もサポートしています。このガイドではArtefactsでスムーズに実行するための条件について説明します。
カスタムDockerfileまたはイメージ名を使用する場合
Artefactsクラウドシミュレーション (run-remote
)上で実行する場合、または artefacts run --in-container
を使用する場合、現在、以下の状況ではカスタム Dockerfile
またはイメージを指定する必要があります:
- ROSを使用していない
- サポートされていないROSバージョンを使用している
- サポートされていないシミュレーターを使用している
- プロジェクトがプロジェクトリポジトリのsrcフォルダとは別の/追加のビルドステージを持っている
- プロジェクトに他の特定の要件がある
my-job:
type: test
package:
docker:
build: # Sample with a custom Dockerfile. Another option is to specify an image.
dockerfile: ./Dockerfile
Dockerfileの例は nav2サンプルプロジェクト で確認できます。
Artefactsベースイメージ
ROS2プロジェクトのベースレイヤーとして自由に使用できる多くのイメージを用意しています。これらのベースイメージには以下が含まれています:
- タグに対応するROSバージョン (例
humble-fortress
にはros-humble-ros-core
パッケージが含まれています) - タグに対応するシミュレーター
- そのROS/シミュレーターの組み合わせに対してよく使用されるROS依存関係 (ROS2 Humble / Fortressベースイメージの
ros-humble-ros-ign-bridge
など) - 必要なビルドツール (
catkin
/colcon
) rosdep
の初期化と更新- Artefacts CLI
公開されているベースイメージの完全なリストは ECRパブリックレジストリで確認できます。以下の命名規則に従っています:
public.ecr.aws/artefacts/<framework>:<framework_version>-<simulator>-gpu
# -gpu is optional
# Examples:
public.ecr.aws/artefacts/ros2:humble-fortress
public.ecr.aws/artefacts/ros2:humble-fortress-gpu
Note
gpu
対応イメージはartefactsインフラストラクチャ上で、NVIDIAのGPUで実行するように特別に設計されています。そのため、artefactsクラウドシミュレーション上で実行する際に追加の環境変数を設定する必要はありません。これらはamd64でのみ利用可能です(armでは利用できません)。
ローカルで実行している場合は、NVIDIA Container Toolkitをインストールし、いくつかの環境変数(‘ENV’)を設定する必要があるかもしれません。詳細については、NVIDIAの インストールガイド と ユーザガイド を参照してください。
これらのベースイメージを使用することで、プロジェクトのDockerfileは(最低限)以下の手順を実行する必要があります:
- プロジェクトファイルをコピーする
- ROS依存関係をインストールする
- プロジェクトをビルドする
- artefactsクライアントを実行する
例として、ROS2 Humble / Ignition Fortressプロジェクトのartefactsで動作するDockerfileは以下のようになります:
# Use the artefacts ROS2 humble base image
FROM public.ecr.aws/artefacts/ros2:humble-fortress
# Set the working directory and copy our project
WORKDIR /ws
COPY . /ws/src
# ROS dependencies
RUN rosdep install --from-paths src --ignore-src -r -y
# Source ROS version and build
RUN . /opt/ros/galactic/setup.sh && colcon build --symlink-install
WORKDIR /ws/src
# Source colcon workspace and run the artefacts client
CMD . /ws/install/setup.sh && artefacts run $ARTEFACTS_JOB_NAME
Dockerfileの要件
現在、Dockerfileは2つの要件を満たす必要があります:
- CLIをインストールする必要があります(artefactsが提供するベースイメージには既にインストールされています)
RUN pip install artefacts-cli
- コンテナ起動コマンドはCLIを実行する必要があります:
CMD artefacts run $ARTEFACTS_JOB_NAME
これは artefacts run <job_name> --in-container
(ローカル) または artefacts run-remote <job_name>
(クラウドシミュレーション)で実行できます。