Skip to content

Python 3.14 をテスト対象に追加する #1417

Python 3.14 をテスト対象に追加する

Python 3.14 をテスト対象に追加する #1417

Workflow file for this run

name: e2e-test
on:
workflow_dispatch:
push:
paths-ignore:
- "**.md"
- ".github/workflows/e2e-test-openh264.yml"
- ".github/workflows/e2e-test-intel-vpl.yml"
- ".github/workflows/e2e-test-amd-amf.yml"
- ".github/workflows/e2e-test-apple-video-toolbox.yml"
- ".github/workflows/e2e-test-nvidia-video-codec-sdk.yml"
- "tests/test_intel_vpl.py"
- "tests/test_amd_amf.py"
- "tests/test_apple_video_toolbox.py"
- "tests/test_nvidia_video_codec_sdk.py"
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 }}
TEST_API_URL: ${{ secrets.TEST_API_URL }}
permissions:
contents: read
jobs:
e2e_test_ubuntu:
strategy:
matrix:
python_version: ["3.11", "3.12", "3.13", "3.14"]
platform:
- target: "ubuntu-22.04_x86_64"
runs-on: "ubuntu-22.04"
arch: "x86_64"
openh264_arch: "linux64"
- target: "ubuntu-24.04_x86_64"
runs-on: "ubuntu-24.04"
arch: "x86_64"
openh264_arch: "linux64"
- target: "ubuntu-22.04_armv8"
runs-on: "ubuntu-22.04-arm"
arch: "armv8"
openh264_arch: "linux-arm64"
- target: "ubuntu-24.04_armv8"
runs-on: "ubuntu-24.04-arm"
arch: "armv8"
openh264_arch: "linux-arm64"
runs-on: ${{ matrix.platform.runs-on}}
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: tailscale/github-action@v3
with:
oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
oauth-secret: ${{ secrets.TS_OAUTH_SECRET }}
tags: tag:ci
use-cache: 'true'
- run: |
sudo apt-get update
sudo apt-get -y install libva2 libdrm2 libx11-dev portaudio19-dev
- if: matrix.platform.arch == 'armv8'
run: |
sudo apt-get -y install multistrap binutils-aarch64-linux-gnu
# multistrap に insecure なリポジトリからの取得を許可する設定を入れる
sudo sed -e 's/Apt::Get::AllowUnauthenticated=true/Apt::Get::AllowUnauthenticated=true";\n$config_str .= " -o Acquire::AllowInsecureRepositories=true/' -i /usr/sbin/multistrap
# clang-19
wget https://apt.llvm.org/llvm.sh
chmod a+x llvm.sh
sudo ./llvm.sh 19
- uses: astral-sh/setup-uv@v6
with:
enable-cache: false
- run: |
uv python pin ${{ matrix.python_version }}
uv sync
uv run python run.py ${{ matrix.platform.target }}
uv run pytest tests -v
e2e_test_macos:
strategy:
matrix:
python_version: ["3.11", "3.12", "3.13", "3.14"]
os: ["macos-14", "macos-15"]
runs-on: ${{ matrix.os }}
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
- uses: tailscale/github-action@v3
with:
oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
oauth-secret: ${{ secrets.TS_OAUTH_SECRET }}
tags: tag:ci
use-cache: 'true'
- uses: astral-sh/setup-uv@v6
with:
enable-cache: false
- run: |
uv python pin ${{ matrix.python_version }}
uv sync
uv run python run.py macos_arm64
uv run pytest tests -v
e2e_test_windows:
strategy:
matrix:
python_version: ["3.11", "3.12", "3.13", "3.14"]
runs-on: windows-2025
timeout-minutes: 20
env:
# Python を強制的に UTF-8 で利用するおまじない
PYTHONUTF8: 1
steps:
- uses: actions/checkout@v4
- uses: tailscale/github-action@v3
with:
oauth-client-id: ${{ secrets.TS_OAUTH_CLIENT_ID }}
oauth-secret: ${{ secrets.TS_OAUTH_SECRET }}
tags: tag:ci
use-cache: 'true'
- uses: astral-sh/setup-uv@v6
with:
enable-cache: false
- run: |
uv python pin ${{ matrix.python_version }}
uv sync
uv run python run.py windows_x86_64
uv run pytest tests -v
# slack_notify_succeeded:
# needs: [e2e_test_ubuntu, e2e_test_macos, e2e_test_windows]
# runs-on: ubuntu-24.04
# 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-24.04
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 }}