Skip to content

Commit 3248e25

Browse files
voluntastorikizimelpon
authored
Feature/add e2e test (#248)
* 一旦コミット * sumomo で Ctrl-C による終了が正しく動作しない問題を修正する * fake デバイス使用時にオーディオデバイスを掴まないようにする * ruff format * sumomo に FakeAudioCapturer を追加する * formatter * peer_connection_interface をインクルードする * M_PI を std::numbers::pi に変更する * CHANGES.md にブランチの変更を反映する * channel_id おかしいのを修正 * ruff format * テストコード整理 * uv sync --upgrade * Revert "sumomo で Ctrl-C による終了が正しく動作しない問題を修正する" This reverts commit 781d2e6. 暫定修正なので revert する * インデント * E2E テスト追加 * GitHub Actions に sumomo を利用した E2E テストを実行する `e2e-test.yml` を追加する * ビルド手順を明確にするために、サンプルのビルドについての説明を追加する * sumomo の --fake-audio と --fake-video オプションを --fake-capture-device に統合する --fake-capture-device オプションを有効にすると、音声と映像の両方でフェイクデバイスを使用する。 実際の音声・映像送信は --audio/--video オプションに依存する。 * formatter * --video false でも正常に動作するよう修正する video_source のnullチェックとvideo_trackの作成を config_.video が true の場合のみ実行するように修正。 これにより音声のみ送信(--video false --audio true)が可能になる。 * e2e-test/sumomo.py を --fake-capture-device に対応させる --fake-video と --fake-audio オプションを --fake-capture-device に統合。 デフォルト値は True のままで、テストではフェイクデバイスを使用する。 * e2e-test の push イベントでのパス設定を修正する * お試しで windows での e2e test 追加 * sumomo.py を Windows に対応させる - Windows では実行ファイル名に .exe 拡張子を付与する - Windows プラットフォームの優先順位リストに windows_x86_64 を追加する - ファイルの存在チェック時も .exe 拡張子を考慮する * Ubuntu の e2e-test を一時的に無効化する * pytest に -x オプションを追加して最初の失敗で停止するようにする * e2e-test を Ubuntu のみ有効にして Windows を無効化する * Windows 用の Sumomo ラッパークラスと E2E テストを追加する * workflow_dispatch を追加し、macOS と Ubuntu のビルドを無効化する * workflow_dispatch を追加する * e2e-test の Ubuntu と Windows ジョブにタイムアウトを追加する * SumomoWindows クラスの初期化メソッドを拡張し、引数を整理して詳細な設定を可能にする。プロセス管理と HTTP クライアントの初期化を追加し、統計情報の取得機能を強化する。 * E2E テストのタイムアウトを 20 分から 5 分に変更し、詳細ログ出力を追加する * push イベントのパス設定を修正し、無視するパスを削除して、ソースコードと例のみを対象とするように変更する * プロセスの標準エラー出力の読み取りを改善し、例外処理を追加してエラーメッセージをログに記録する * プロセスの状態を各試行前後で確認し、エラーメッセージに stderr/stdout の出力を追加して、タイムアウト時にプロセスを強制終了する処理を実装する * E2E テストのタイムアウトを Windows 環境に合わせて延長し、SumomoWindows クラスの初期待機時間を調整する * E2E テストのタイムアウトを Windows 環境に合わせて短縮し、SumomoWindows クラスの初期待機時間を調整する * 実行コマンドライン全体を表示するデバッグ用のログを追加し、センシティブな情報をマスクする処理を改善する * HW MJPEG デコーダーの条件を修正し、netstat を使用してポートのリッスン状態を確認する処理を追加する * バックグラウンドスレッドを使用して stdout/stderr をリアルタイムで読み取る処理を追加する * Windows 環境での信号 URL 環境変数の取得方法を修正し、TEST2_SIGNALING_URL を優先的に使用するように変更する * metadata の JSON シリアライズ処理を明示化し、テストメッセージの文字コードを修正する * Windows 環境での信号 URL の取得処理を簡素化し、TEST_SIGNALING_URL のみを使用するように変更する * TEST_SIGNALING_URL を TEST2_SIGNALING_URL から修正して使用するように変更する * E2E テストを実行するファイル名を test_sumomo_windows.py から test_sumomo_basic.py に変更する hw_mjpeg_decoder のデフォルト値を None に変更する * E2E テストを Windows 環境で実行するように変更し、基本的なテストを実装する * E2E テストの Windows 環境用設定を修正し、SumomoWindows を使用するように変更する * TEST2_SIGNALING_URL を TEST_SIGNALING_URL に修正して使用するように変更する * stdout/stderr のキャプチャ機能を追加し、プロセス起動時にキャプチャの有効/無効を設定する * HTTP エンドポイントの接続ホストを 0.0.0.0 の場合は localhost に変更する E2E テストで sendonly と recvonly のペアテストを実装する inbound-rtp 統計情報を取得する関数を追加する * E2E テストを実行するステップを追加する * E2E テストから不要なステップを削除し、Sumomo を使用した新しいテストを追加する * プロセス起動時に stdout/stderr をキャプチャするように変更する * プロセス起動時の stdout/stderr のキャプチャを無効にし、エラーハンドリングを改善する * プロセス終了時のエラーメッセージを改善し、例外処理を修正する * sumomo windows を使ったテストを削除 * E2E テストを実行するファイル名を test_sumomo_windows.py から test_sumomo_simple.py に変更する * E2E テストで test_sumomo_basic.py を実行するように変更する * E2E テストのワークフローを修正し、sumomo バイナリのダウンロードアクションを追加する * build.yml から macOS と Ubuntu のビルド条件を削除する * E2E テストのワークフローに macOS プラットフォームを追加する * test_sumomo_windows.py を削除する * E2E テストの実行コマンドから -s オプションを削除する * Apple Video Toolbox の E2E テストと self-hosted runner を追加する - e2e-test/test_sumomo_apple_video_toolbox.py を追加 - H264/H265 での接続時の統計情報確認テスト - サイマルキャストテスト - sendonly/recvonly ペアテスト - macOS では internal を指定すると VideoToolbox を使用 - .github/workflows/e2e-test.yml を修正 - platform-name フィールドを追加 - apple_video_toolbox の self-hosted runner 設定を追加 - Homebrew と GitHub CLI のセットアップを追加 - 環境変数の設定ステップを追加 - テストターゲットの動的切り替えを追加 * NVIDIA Video Codec の E2E テストと self-hosted runner を追加する - e2e-test/test_sumomo_nvidia_video_codec.py を追加 - AV1/H264/H265 での接続時の統計情報確認テスト - サイマルキャストテスト - sendonly/recvonly ペアテスト - NVIDIA Video Codec では nvidia_video_codec を指定 - .github/workflows/e2e-test.yml を修正 - nvidia_video_codec の self-hosted runner 設定を追加 * Intel VPL と Raspberry Pi の E2E テストと self-hosted runner を追加する - e2e-test/test_sumomo_intel_vpl.py を追加 - VP9/AV1/H264/H265 での接続時の統計情報確認テスト - サイマルキャストテスト - sendonly/recvonly ペアテスト - Intel VPL では intel_vpl を指定 - e2e-test/test_sumomo_raspberry_pi.py を追加 - H264 での接続時の統計情報確認テスト - サイマルキャストテスト - Raspberry Pi では V4L2 M2M を使用 - .github/workflows/e2e-test.yml を修正 - intel_vpl の self-hosted runner 設定を追加 - raspberry_pi の self-hosted runner 設定を追加 * self-hosted runner で sudo apt-get を実行しないように修正する - Install system dependencies を GitHub-hosted Ubuntu のみで実行 - runner.environment != 'self-hosted' の条件を追加 * E2E テストワークフローのシステム依存関係インストール条件を修正する GitHub-hosted Linux ランナーのみで sudo apt-get を実行するように条件を簡潔化 - `startsWith(matrix.platform.platform-name, 'ubuntu')` から `runner.os == 'Linux'` に変更 - コメントを「GitHub-hosted Ubuntu のみ」から「GitHub-hosted Linux のみ」に修正 * WebRTC 統計情報のユーティリティ関数を追加し、テストファイルから重複した関数を削除する * Raspberry Pi の E2E テストを一時的にコメントアウトする * E2E テストのタイムアウト時間を 5 分から 10 分に延長する * Raspberry Pi の E2E テストを有効化する * Raspberry Pi の E2E テストで libcamerac.so も移動するように修正する * テストで使用するコーデックの取得方法を改善し、冗長なコードを削除する * E2E テストのプラットフォーム設定をコメントアウトし、sumomo プロセスのエラーハンドリングを改善する * audio が無効な場合は AudioSource を作成しないように修正する * audio が無効な場合は use_audio_device を false に設定する * Revert "audio が無効な場合は AudioSource を作成しないように修正する" This reverts commit 9f3611f. * audio も video と同様に、有効な場合のみトラックを作成するように修正する * h264 エンコーダを接続テストとサイマルキャストテストに追加する * E2E テストのヘルパー関数を改善し、サイマルキャスト統計情報を辞書で返すように変更する * テストの待機時間を3秒から10秒に延長し、フレーキーな統計情報のアサーションをコメントアウトする * Windows 環境でのプロセス管理を改善し、エラーメッセージから stderr の出力を削除する * ハードウェアアクセラレーション E2E テストを再構成し、テストの種類と順序を統一する * 変更履歴更新する * OpenH264 E2E テストを追加し、GitHub Actions での自動インストールを設定する * E2E テストの test-target が未指定の場合にすべてのテストを実行するように変更する * OpenH264 E2E テストの sendrecv モードで受信側に h264_decoder を設定する * sendrecv モードでの OpenH264 テストに h264_decoder を追加する * E2E テストのプラットフォームに Ubuntu 22.04 と Ubuntu 24.04 の ARM バージョンを追加する * README.md にハードウェアアクセラレーターの検証手順を追加する * OpenH264 のダウンロードステップから platform_name を削除する * ubuntu 22.04 armv8 の examples をビルドするようにする * examples の各サンプルに ubuntu-22.04_armv8 対応を追加する * とりあえず統合してみる * examples の全サンプルのビルドコマンドを統一形式にする sumomo 形式に統一し、各サンプルのトップレベルに run.py を配置。 全サンプルを python3 examples/<app>/run.py build <platform> の形式で呼び出せるようにした。 - examples/sdl_sample/run.py を追加 - examples/messaging_recvonly_sample/run.py を追加 - .github/workflows/build.yml の全 examples ビルドコマンドを統一形式に変更 * examples の sdl_sample と messaging_recvonly_sample に CMakeLists.txt を追加する 統一形式のビルドに必要な CMakeLists.txt をトップレベルに配置。 src/ ディレクトリを直接参照するように修正。 - examples/sdl_sample/CMakeLists.txt を追加 - examples/messaging_recvonly_sample/CMakeLists.txt を追加 * examples の sdl_sample と messaging_recvonly_sample に Windows 向け CMake 設定を追加する Windows で Boost の静的ランタイムライブラリを正しくリンクするため、 以下の設定を追加: - Boost_USE_STATIC_RUNTIME ON - MSVC_RUNTIME_LIBRARY の設定 - コンパイルオプションの Windows/非 Windows 分岐 * examples の sdl_sample と messaging_recvonly_sample のターゲット別ディレクトリを削除し CMakeLists.txt を修正する - ターゲット別ディレクトリ(macos_arm64, ubuntu-*, windows_x86_64)を削除 - トップレベルの CMakeLists.txt で Windows 向け設定を完全化 - /bigobj フラグを追加 - Windows マクロ定義(_CONSOLE, _WIN32_WINNT, NOMINMAX, WIN32_LEAN_AND_MEAN)を追加 - Threads パッケージを非 Windows でのみ検索 これで 3 つのサンプル全てが sumomo と同じ構成に統一される。 * AMD-AMF の E2E テストを追加する * _ -> - * テストターゲットを test_sumomo_amd_amf.py に変更する * amd_amf -> AMD * VP9 エンコーダーを internal に変更し、サイマルキャストテストから VP9 を除外する * E2E テストの実行方法を追記する * fake_capture_device の条件を role に基づいて修正する * AMD-AMF エンコーダー/デコーダーの終了処理を改善する Drain() に加えて Flush() を呼び出し、polling_thread の終了を確実にする。 polling_thread_.reset() を join() の直後に移動し、競合状態を回避する。 * VP9 テストを独立させ、エンコーダー/デコーダー設定から VP9 を削除する * 常に無効にする * HWA では audio はテストしない * HWA では audio はテストしない * テストから audio 関連の確認を削除する * AMD-AMF テストを不安定なためコメントアウトする * ADM 改造をやめる * format * sumomo/run.py をちゃんとした内容にする * sdl_sample/run.py をちゃんとした内容にする * messaging_recvonly_sample/run.py をちゃんとした内容にする * ビルドエラー修正 --------- Co-authored-by: torikizi <51085972+torikizi@users.noreply.github.com> Co-authored-by: melpon <shigemasa7watanabe+github@gmail.com>
1 parent dc5cb3a commit 3248e25

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+5965
-3907
lines changed
Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
name: Download Sumomo Binary
2+
description: Download sumomo binary from artifact or release
3+
4+
inputs:
5+
platform-name:
6+
description: 'Platform name (e.g., ubuntu-22.04_x86_64, windows_x86_64, macos_arm64)'
7+
required: true
8+
branch-name:
9+
description: 'Branch name to search for artifacts'
10+
required: true
11+
12+
runs:
13+
using: composite
14+
steps:
15+
- name: Download sumomo artifact
16+
shell: bash
17+
run: |
18+
# 同一ブランチの最新の成功したビルドワークフローの実行を取得
19+
RUN_ID=$(gh run list --workflow=build.yml --branch=${{ inputs.branch-name }} --status=success --limit=1 --json databaseId --jq '.[0].databaseId')
20+
21+
if [ -n "$RUN_ID" ]; then
22+
echo "ブランチ ${{ inputs.branch-name }} の成功したビルドが見つかりました: $RUN_ID"
23+
# アーティファクトをダウンロード
24+
gh run download $RUN_ID --name examples_${{ inputs.platform-name }} --dir ./sumomo_binary
25+
else
26+
echo "ブランチ ${{ inputs.branch-name }} の成功したビルドが見つかりません"
27+
echo "VERSION ファイルから release バージョンを取得してダウンロードします"
28+
29+
# VERSION ファイルからバージョンを取得
30+
VERSION=$(cat VERSION | head -n1)
31+
echo "VERSION: $VERSION"
32+
33+
# プラットフォームに応じたアーカイブ形式を決定
34+
if [[ "${{ inputs.platform-name }}" == windows_* ]]; then
35+
ARCHIVE_NAME="sumomo_${{ inputs.platform-name }}.zip"
36+
else
37+
ARCHIVE_NAME="sumomo_${{ inputs.platform-name }}.tar.gz"
38+
fi
39+
40+
echo "リリース $VERSION から $ARCHIVE_NAME をダウンロードします"
41+
42+
# リリースアセットをダウンロード
43+
gh release download "$VERSION" --pattern "$ARCHIVE_NAME"
44+
45+
# アーカイブを展開
46+
mkdir -p sumomo_binary
47+
48+
if [[ "${{ inputs.platform-name }}" == windows_* ]]; then
49+
# Windows の場合は zip を展開
50+
unzip -q "$ARCHIVE_NAME" -d .
51+
mv "sumomo_${{ inputs.platform-name }}"/* sumomo_binary/
52+
else
53+
# Linux/macOS の場合は tar.gz を展開
54+
tar -xzf "$ARCHIVE_NAME" -C sumomo_binary --strip-components=1
55+
fi
56+
57+
# ダウンロードしたアーカイブを削除
58+
rm "$ARCHIVE_NAME"
59+
fi
60+
env:
61+
GH_TOKEN: ${{ github.token }}
62+
63+
- name: Setup sumomo binary
64+
shell: bash
65+
run: |
66+
# ダウンロードしたバイナリを確認
67+
ls -la sumomo_binary/
68+
69+
# sumomo.py が期待するディレクトリ構造を作成
70+
mkdir -p examples/_build/${{ inputs.platform-name }}/release/sumomo/
71+
72+
# プラットフォームに応じたバイナリ名を決定
73+
if [[ "${{ inputs.platform-name }}" == windows_* ]]; then
74+
BINARY_NAME="sumomo.exe"
75+
else
76+
BINARY_NAME="sumomo"
77+
fi
78+
79+
# sumomo バイナリを期待される場所に配置
80+
# raspberry_pi の場合は libcamera などの共有ライブラリも含めてすべてコピー
81+
if [[ "${{ inputs.platform-name }}" == "raspberry-pi-os_armv8" ]]; then
82+
cp -r sumomo_binary/* examples/_build/${{ inputs.platform-name }}/release/sumomo/
83+
else
84+
cp sumomo_binary/$BINARY_NAME examples/_build/${{ inputs.platform-name }}/release/sumomo/
85+
fi
86+
87+
# Linux/macOS の場合は実行権限を付与
88+
if [[ "${{ inputs.platform-name }}" != windows_* ]]; then
89+
chmod +x examples/_build/${{ inputs.platform-name }}/release/sumomo/$BINARY_NAME
90+
fi
91+
92+
# パスを確認
93+
ls -la examples/_build/${{ inputs.platform-name }}/release/sumomo/$BINARY_NAME

.github/workflows/build.yml

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,13 @@ on:
77
- "**.md"
88
- "LICENSE"
99
- "NOTICE"
10+
- ".github/workflows/e2e-test.yml"
11+
- "e2e-test/**"
1012
schedule:
1113
# UTC の 01:00 は JST だと 10:00 。
1214
# 1-5 で 月曜日から金曜日
1315
- cron: "0 1 * * 1-5"
16+
workflow_dispatch:
1417

1518
jobs:
1619
build-windows:
@@ -87,7 +90,7 @@ jobs:
8790
cd examples
8891
mkdir examples_${{ matrix.name }}
8992
foreach ($app in @('sdl_sample', 'sumomo', 'messaging_recvonly_sample')) {
90-
python3 "$app\${{ matrix.name }}\run.py" --local-sora-cpp-sdk-dir ..
93+
python3 "$app\run.py" build ${{ matrix.name }} --local-sora-cpp-sdk-dir ..
9194
cp "_build\${{ matrix.name }}\release\$app\Release\$app.exe" "examples_${{ matrix.name }}"
9295
}
9396
- name: Upload Examples Artifact
@@ -143,7 +146,7 @@ jobs:
143146
cd examples
144147
mkdir examples_${{ matrix.name }}
145148
for app in sdl_sample sumomo messaging_recvonly_sample; do
146-
python3 $app/${{ matrix.name }}/run.py --local-sora-cpp-sdk-dir ..
149+
python3 $app/run.py build ${{ matrix.name }} --local-sora-cpp-sdk-dir ..
147150
cp _build/${{ matrix.name }}/release/$app/$app examples_${{ matrix.name }}
148151
done
149152
if: matrix.name == 'macos_arm64'
@@ -290,12 +293,12 @@ jobs:
290293
name: ${{ matrix.platform.name }}.env
291294
path: _package/${{ matrix.platform.name }}/release/sora.env
292295
- name: Build Examples
293-
if: matrix.platform.os == 'ubuntu' && matrix.platform.name != 'ubuntu-22.04_armv8'
296+
if: matrix.platform.os == 'ubuntu'
294297
run: |
295298
cd examples
296299
mkdir examples_${{ matrix.platform.name }}
297300
for app in sdl_sample sumomo messaging_recvonly_sample; do
298-
python3 $app/${{ matrix.platform.name }}/run.py --local-sora-cpp-sdk-dir ..
301+
python3 $app/run.py build ${{ matrix.platform.name }} --local-sora-cpp-sdk-dir ..
299302
cp _build/${{ matrix.platform.name }}/release/$app/$app examples_${{ matrix.platform.name }}
300303
done
301304
- name: Build Examples (Raspberry Pi OS)
@@ -304,15 +307,13 @@ jobs:
304307
cd examples
305308
mkdir examples_${{ matrix.platform.name }}
306309
for app in sumomo; do
307-
python3 $app/${{ matrix.platform.name }}/run.py --local-sora-cpp-sdk-dir ..
310+
python3 $app/run.py build ${{ matrix.platform.name }} --local-sora-cpp-sdk-dir ..
308311
cp _build/${{ matrix.platform.name }}/release/$app/$app examples_${{ matrix.platform.name }}
309312
# raspberry-pi-os は libcamerac.so も必要
310313
cp _build/${{ matrix.platform.name }}/release/$app/libcamerac.so examples_${{ matrix.platform.name }}
311314
done
312315
- name: Upload Examples Artifact
313-
if: |
314-
(matrix.platform.os == 'ubuntu' && matrix.platform.name != 'ubuntu-22.04_armv8') ||
315-
(matrix.platform.os == 'raspberry-pi-os')
316+
if: matrix.platform.os == 'ubuntu' || matrix.platform.os == 'raspberry-pi-os'
316317
uses: actions/upload-artifact@v4
317318
with:
318319
name: examples_${{ matrix.platform.name }}
@@ -393,7 +394,7 @@ jobs:
393394
- uses: actions/checkout@v5
394395
- name: Build Example
395396
run: |
396-
python3 ${{ matrix.example }}/windows_x86_64/run.py
397+
python3 ${{ matrix.example }}/run.py build windows_x86_64
397398
- name: Package Binary
398399
run: |
399400
# アップロード用のディレクトリを作成する
@@ -423,7 +424,7 @@ jobs:
423424
- uses: actions/checkout@v5
424425
- name: Build Example
425426
run: |
426-
python3 ${{ matrix.example }}/macos_arm64/run.py
427+
python3 ${{ matrix.example }}/run.py build macos_arm64
427428
- name: Package Binary
428429
run: |
429430
# アップロード用のディレクトリを作成する
@@ -479,7 +480,7 @@ jobs:
479480
sudo sed -e 's/Apt::Get::AllowUnauthenticated=true/Apt::Get::AllowUnauthenticated=true";\n$config_str .= " -o Acquire::AllowInsecureRepositories=true/' -i /usr/sbin/multistrap
480481
- name: Build Example
481482
run: |
482-
python3 ${{ matrix.example }}/${{ matrix.platform.name }}/run.py
483+
python3 ${{ matrix.example }}/run.py build ${{ matrix.platform.name }}
483484
- name: Package Binary
484485
run: |
485486
# アップロード用のディレクトリを作成する

.github/workflows/e2e-test.yml

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
name: e2e-test-workflow
2+
3+
on:
4+
push:
5+
paths:
6+
- "e2e-test/**"
7+
- ".github/workflows/e2e-test.yml"
8+
workflow_call:
9+
workflow_dispatch:
10+
11+
jobs:
12+
e2e-test:
13+
timeout-minutes: 10
14+
strategy:
15+
fail-fast: false
16+
matrix:
17+
platform:
18+
- name: ubuntu-24.04_x86_64
19+
platform-name: ubuntu-24.04_x86_64
20+
runs-on: ubuntu-24.04
21+
- name: ubuntu-22.04_x86_64
22+
platform-name: ubuntu-22.04_x86_64
23+
runs-on: ubuntu-22.04
24+
- name: ubuntu-24.04_armv8
25+
platform-name: ubuntu-24.04_armv8
26+
runs-on: ubuntu-24.04-arm
27+
- name: ubuntu-22.04_armv8
28+
platform-name: ubuntu-22.04_armv8
29+
runs-on: ubuntu-22.04-arm
30+
- name: macos_arm64
31+
platform-name: macos_arm64
32+
runs-on: macos-14
33+
- name: windows_x86_64
34+
platform-name: windows_x86_64
35+
runs-on: windows-2025
36+
# Self-hosted runner for Apple Video Toolbox
37+
- name: apple_video_toolbox
38+
platform-name: macos_arm64
39+
runs-on:
40+
group: Self
41+
labels: [self-hosted, macOS, ARM64, Apple-M2-Pro]
42+
test-target: test_sumomo_apple_video_toolbox.py
43+
env-vars: |
44+
APPLE_VIDEO_TOOLBOX=true
45+
# Self-hosted runner for NVIDIA Video Codec
46+
- name: nvidia_video_codec
47+
platform-name: ubuntu-24.04_x86_64
48+
runs-on:
49+
group: Self
50+
labels: [self-hosted, linux, x64, NVIDIA-Video-Codec-SDK]
51+
test-target: test_sumomo_nvidia_video_codec.py
52+
env-vars: |
53+
NVIDIA_VIDEO_CODEC=true
54+
# Self-hosted runner for Intel VPL
55+
- name: intel_vpl
56+
platform-name: ubuntu-24.04_x86_64
57+
runs-on:
58+
group: Self
59+
labels: [self-hosted, linux, x64, Intel-VPL]
60+
test-target: test_sumomo_intel_vpl.py
61+
env-vars: |
62+
INTEL_VPL=true
63+
LIBVA_MESSAGING_LEVEL=0
64+
# Self-hosted runner for AMD AMF
65+
# AMD-AMF はあまりにも不安定なため、安定するまでコメントアウトする
66+
# - name: amd_amf
67+
# platform-name: ubuntu-24.04_x86_64
68+
# runs-on:
69+
# group: Self
70+
# labels: [self-hosted, linux, x64, AMD-AMF]
71+
# env-vars: |
72+
# AMD_AMF=true
73+
# test-target: test_sumomo_amd_amf.py
74+
# Self-hosted runner for Raspberry Pi
75+
- name: raspberry_pi
76+
platform-name: raspberry-pi-os_armv8
77+
runs-on:
78+
group: Self
79+
labels: [self-hosted, linux, arm64, Raspberry-Pi]
80+
test-target: test_sumomo_raspberry_pi.py
81+
env-vars: |
82+
RASPBERRY_PI=true
83+
name: E2E Test for ${{ matrix.platform.name }}
84+
runs-on: ${{ matrix.platform.runs-on }}
85+
env:
86+
TEST_SIGNALING_URL: ${{ secrets.TEST_SIGNALING_URL }}
87+
TEST_CHANNEL_ID_PREFIX: ${{ secrets.TEST_CHANNEL_ID_PREFIX }}
88+
TEST_SECRET_KEY: ${{ secrets.TEST_SECRET_KEY }}
89+
OPENH264_VERSION: 2.6.0
90+
steps:
91+
- uses: actions/checkout@v5
92+
93+
# Homebrew のセットアップ (self-hosted macOS ランナー用)
94+
- name: Setup Homebrew
95+
if: ${{ runner.environment == 'self-hosted' && startsWith(matrix.platform.platform-name, 'macos') }}
96+
uses: Homebrew/actions/setup-homebrew@master
97+
98+
# GitHub CLI のインストール (self-hosted macOS ランナー用)
99+
- name: Install GitHub CLI
100+
if: ${{ runner.environment == 'self-hosted' && startsWith(matrix.platform.platform-name, 'macos') }}
101+
run: |
102+
if ! command -v gh &> /dev/null; then
103+
echo "gh コマンドが見つかりません。インストールします。"
104+
brew install gh
105+
else
106+
echo "gh コマンドは既にインストールされています。"
107+
fi
108+
109+
# UV のセットアップ
110+
- uses: astral-sh/setup-uv@v7
111+
- run: uv sync
112+
working-directory: ./e2e-test
113+
114+
# ランタイム依存関係のインストール (GitHub-hosted Linux のみ)
115+
- name: Install system dependencies
116+
if: ${{ runner.environment != 'self-hosted' && runner.os == 'Linux' }}
117+
run: |
118+
sudo apt-get update
119+
# X11
120+
sudo apt-get install -y libx11-dev libxext-dev
121+
# OpenGL
122+
sudo apt-get install -y libgl-dev
123+
124+
# 環境変数の設定 (HWA テスト用)
125+
- name: Set environment variables
126+
if: matrix.platform.env-vars
127+
run: |
128+
echo "${{ matrix.platform.env-vars }}" | while read line; do
129+
if [ -n "$line" ]; then
130+
echo "$line" >> $GITHUB_ENV
131+
fi
132+
done
133+
134+
# OpenH264 のダウンロード (GitHub-hosted ランナーのみ)
135+
- name: Download OpenH264
136+
if: ${{ runner.environment != 'self-hosted' }}
137+
uses: shiguredo/github-actions/.github/actions/download-openh264@main
138+
id: openh264
139+
with:
140+
openh264_version: ${{ env.OPENH264_VERSION }}
141+
use-cache: true
142+
143+
# OpenH264 環境変数の設定 (GitHub-hosted ランナーのみ)
144+
- name: Setup OpenH264 environment
145+
if: ${{ runner.environment != 'self-hosted' && steps.openh264.outputs.openh264_path }}
146+
run: echo "OPENH264_PATH=${{ steps.openh264.outputs.openh264_path }}" >> $GITHUB_ENV
147+
148+
# self-hosted runner の場合このダウンロードが凄く時間かかる
149+
- name: Download and setup sumomo binary
150+
uses: ./.github/actions/download-sumomo
151+
with:
152+
platform-name: ${{ matrix.platform.platform-name }}
153+
branch-name: ${{ github.ref_name }}
154+
155+
- name: Run E2E tests
156+
run: |
157+
# テストを実行(最初の失敗で停止、詳細ログ出力)
158+
uv run pytest -v -x ${{ matrix.platform.test-target || '.' }}
159+
working-directory: ./e2e-test

.github/workflows/formatter.yml

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@ name: formatter
33
on:
44
workflow_dispatch:
55
push:
6-
paths-ignore:
7-
- "doc/**"
8-
- "**.md"
9-
- "LICENSE"
10-
- "NOTICE"
6+
paths:
7+
- "src/**"
8+
- "include/**"
9+
- "examples/**"
1110

1211
jobs:
1312
run-ubuntu:
@@ -65,7 +64,7 @@ jobs:
6564
run: |
6665
cd examples
6766
for app in sdl_sample sumomo messaging_recvonly_sample; do
68-
python3 $app/${{ matrix.platform.name }}/run.py \
67+
python3 $app/run.py build ${{ matrix.platform.name }} \
6968
--local-sora-cpp-sdk-dir .. \
7069
--local-sora-cpp-sdk-args=--disable-cuda \
7170
--install-dir `pwd`/../_install/${{ matrix.platform.name }}/release
@@ -121,4 +120,4 @@ jobs:
121120
SLACK_MESSAGE: |
122121
```
123122
${{ needs.run-ubuntu.outputs.diff }}
124-
```
123+
```

.gitignore

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,14 @@ xcuserdata/
1414

1515
# claude
1616
CLAUDE.local.md
17-
/.claude
17+
/.claude
18+
19+
# sumomo
20+
.env*
21+
!.env.template
22+
23+
# python
24+
.venv
25+
.mypy_cache
26+
__pycache__
27+
.pytest_cache

0 commit comments

Comments
 (0)