Skip to content

e2e-test

e2e-test #29

Workflow file for this run

name: e2e-test
on:
push:
paths-ignore:
- "**.md"
schedule:
# UTC の 01:00 は JST だと 10:00 。
# 1-5 で 月曜日から金曜日
- cron: "0 1 * * 1-5"
env:
TEST_SIGNALING_URLS: ${{ secrets.TEST_SIGNALING_URLS }}
TEST_CHANNEL_ID_PREFIX: ${{ secrets.TEST_CHANNEL_ID_PREFIX }}
TEST_SECRET_KEY: ${{ secrets.TEST_SECRET_KEY }}
jobs:
e2e_test_ubuntu:
strategy:
matrix:
python_version: ["3.10", "3.11", "3.12"]
os: ["ubuntu-22.04", "ubuntu-24.04"]
runs-on: ${{ matrix.os}}
timeout-minutes: 15
if: >-
${{
contains(github.event.head_commit.message, '[e2e]') ||
contains(github.ref, 'feature/e2e-test') ||
github.event_name == 'schedule'
}}
steps:
- uses: actions/checkout@v4
# libx11-dev は Ubuntu 24.04 の時に必要になる模様
- run: |
sudo apt-get update
sudo apt-get -y install libva2 libdrm2 libva-dev libdrm-dev libx11-dev portaudio19-dev
- name: Download openh264
run: |
curl -LO http://ciscobinary.openh264.org/libopenh264-2.4.1-linux64.7.so.bz2
bzip2 -d libopenh264-2.4.1-linux64.7.so.bz2
mv libopenh264-2.4.1-linux64.7.so libopenh264.so
echo "OPENH264_PATH=$(pwd)/libopenh264.so" >> $GITHUB_ENV
- uses: astral-sh/setup-uv@v3
- run: uv python pin ${{ matrix.python_version }}
- run: uv sync
- run: uv run pytest -s
e2e_test_macos:
strategy:
matrix:
python_version: ["3.10", "3.11", "3.12"]
# macos-13 は test_macos.py が上手くテストが動かないのでスキップ
os: ["macos-14", "macos-15"]
runs-on: ${{ matrix.os }}
timeout-minutes: 15
if: >-
${{
contains(github.event.head_commit.message, '[e2e]') ||
contains(github.ref, 'feature/e2e-test') ||
github.event_name == 'schedule'
}}
steps:
- uses: actions/checkout@v4
- name: Download openh264
run: |
curl -LO http://ciscobinary.openh264.org/libopenh264-2.4.1-mac-arm64.dylib.bz2
bzip2 -d libopenh264-2.4.1-mac-arm64.dylib.bz2
mv libopenh264-2.4.1-mac-arm64.dylib libopenh264.dylib
echo "OPENH264_PATH=$(pwd)/libopenh264.dylib" >> $GITHUB_ENV
- uses: astral-sh/setup-uv@v3
- run: uv python pin ${{ matrix.python_version }}
- run: uv sync
- run: uv run pytest -s
e2e_test_windows:
strategy:
matrix:
python_version: ["3.10", "3.11", "3.12"]
runs-on: windows-2022
timeout-minutes: 15
env:
# Python を強制的に UTF-8 で利用するおまじない
PYTHONUTF8: 1
if: >-
${{
contains(github.event.head_commit.message, '[e2e]') ||
contains(github.ref, 'feature/e2e-test') ||
github.event_name == 'schedule'
}}
steps:
- uses: actions/checkout@v4
- name: Download openh264
shell: pwsh
run: |
$url = "http://ciscobinary.openh264.org/openh264-2.4.1-win64.dll.bz2"
Invoke-WebRequest -Uri $url -OutFile "openh264-2.4.1-win64.dll.bz2"
7z e openh264-2.4.1-win64.dll.bz2
Rename-Item -Path "openh264-2.4.1-win64.dll" -NewName "libopenh264.dll"
echo "OPENH264_PATH=$PWD\libopenh264.dll" >> $env:GITHUB_ENV
- uses: astral-sh/setup-uv@v3
- run: uv python pin ${{ matrix.python_version }}
- run: uv sync
- run: uv run pytest -s
slack_notify_succeeded:
needs: [e2e_test_ubuntu, e2e_test_macos, e2e_test_windows]
runs-on: ubuntu-latest
if: success()
steps:
- name: Slack Notification
uses: rtCamp/action-slack-notify@v2
env:
SLACK_CHANNEL: sora-python-sdk
SLACK_COLOR: good
SLACK_TITLE: SUCCEEDED
SLACK_ICON_EMOJI: ":star-struck:"
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}
slack_notify_failed:
needs: [e2e_test_ubuntu, e2e_test_macos, e2e_test_windows]
runs-on: ubuntu-latest
if: failure()
steps:
- name: Slack Notification
uses: rtCamp/action-slack-notify@v2
env:
SLACK_CHANNEL: sora-python-sdk
SLACK_COLOR: danger
SLACK_TITLE: "FAILED"
SLACK_ICON_EMOJI: ":japanese_ogre:"
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK }}