# Artefacts クラウドシミュレーションでのテスト実行

Site [llms.txt](/ja/llms.txt)

---

## 概要

`artefacts run [jobname]` を使用すると、テストはローカルで実行されます。しかし、テストに時間がかかる場合、例えば複数のパラメータ化されたシナリオがある場合は、Artefacts クラウドシミュレーション上で実行したいと思うかもしれません。

その場合は `artefacts run-remote [jobname]`を使用できます。ローカルコードがアーカイブファイルに圧縮され、実行のために当社のサーバーに送信されます。

> [!NOTE]
> ジョブはダッシュボードに数秒以内に表示されるはずですが、実際に開始するまでに数分かかることがあります。そのため、この機能は長時間のテストや、継続的インテグレーション用にテストが適切に設定されているかを確認する場合に使用することをお勧めします ([Continuous Integration with Github](/user-guide/github-CI) のセクションを参照)。

以下は実行モデルの概要です。

```mermaid
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](/user-guide/tracking) を参照)

現在サポートされているのは：

* Gazebo Ignition（Fortress）を使用した ROS2
```yaml
runtime:
  simulator: gazebo:fortress
  framework: ros2:humble
```

* Gazebo（Harmonic）を使用した ROS2
```yaml
runtime:
  simulator: gazebo:harmonic
  framework: ros2:humble 
```

設定ファイルの `runtime` セクションでこれらが適切に指定されていることを確認してください ( [設定構文](/configuration/artefacts-yaml) を参照)。
また、（プロジェクトが ROS を使用していない場合など）Artefacts クラウドシミュレーション上で実行するための [Docker パッケージを準備する](/user-guide/docker-package) 必要があるかもしれません。

### クラウドシミュレーション用のパッケージングのカスタマイズ

ほとんどの場合、ランタイムブロックで使用するフレームワークとシミュレーターを指定するだけで十分です：
```yaml
runtime:
  simulator: gazebo:fortress
  framework: ros2:humble
```
そしてテスト起動ファイルを提供するだけで、Artefacts は他の入力なしであなたのプロジェクトを構築してテストすることができます。しかし、一部のプロジェクトでは、いくつかのカスタマイズや微調整が必要な場合があることも理解しています。

これらのケースに対応するため、 `artefacts.yaml` ファイルの `package['custom']` セクションで以下のキーを使用できます：

```yaml
package:
  custom:
    os: # string
    include: # List
    commands: # List
```

* `os`: _文字列_ ベースイメージを入力します (例： `ubuntu:22.04`)。 これは `framework` と `simulator` の選択に基づいてArtefactsが使用するベースイメージをオーバーライドします。

例：
```yaml
package:
  custom:
    os: ubuntu:22.04
```

* `include`: _リスト_ デフォルトでは、Artefacts はGitHubリポジトリ（継続的インテグレーション）または現在の作業ディレクトリ（'run-remote'）を再帰的にサーバー上で実行されているコンテナにコピーします。 `include` を使用して、コンテナで利用可能にしたいディレクトリ/ファイルを指定します。

例：
```yaml
package:
  custom:
    include:
	  - ./path/to/my_necessary_files
	  - ./makefile
```

* `commands`: _リスト_ プロジェクトのビルド段階の前に実行する追加のbashコマンドが必要な場合は、ここに入力します。一般的な使用例は、ros/gazeboプロジェクトを構築する際に、通常のros `source` に加えてカスタム `source` が必要な場合です。

例：
```yaml
package:
  custom:
    commands:
	  - source simulator/my_workspace/install/setup.bash
runtime:
  framework: ros2:humble
  simulator: gazebo:fortress
```
