Some checks failed
release / build-release (push) Has been cancelled
- IChannel: creators -> sub-channels -> video posts (public listing API, search mapped) - IRequiresMediaInfoCallback -> signed proxy URLs; stream controller rewrites HLS so the AES-128 key is fetched server-side with the session cookie, segments stay on the CDN - delivery/info cached per token lifetime and throttled (~2/min) - config page: paste sails.sid + validate, extra creators, quality, search test - scripts/package.sh -> plugin folder + zip + md5 + manifest.json; Gitea release workflow - research docs, HAR analysis (HAR itself gitignored), install-pi5.sh Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
98 lines
3.2 KiB
YAML
98 lines
3.2 KiB
YAML
name: Android e2e
|
|
|
|
# Never on push: booting an emulator and installing the SDK takes far longer
|
|
# than the rest of the test suite. Nightly plus on demand.
|
|
on:
|
|
schedule:
|
|
- cron: "17 3 * * *"
|
|
workflow_dispatch:
|
|
inputs:
|
|
jellyfin_android_version:
|
|
description: "jellyfin-android release tag to test against"
|
|
required: false
|
|
default: "v2.7.3"
|
|
|
|
concurrency:
|
|
group: android-e2e-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
android:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 90
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: "22"
|
|
|
|
- uses: actions/setup-java@v4
|
|
with:
|
|
distribution: temurin
|
|
java-version: "17"
|
|
|
|
- uses: actions/setup-dotnet@v4
|
|
with:
|
|
dotnet-version: "10.0.x"
|
|
|
|
# The emulator needs hardware acceleration; without this the device node
|
|
# is not writable for the runner user.
|
|
- name: Enable KVM
|
|
run: |
|
|
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' \
|
|
| sudo tee /etc/udev/rules.d/99-kvm4all.rules
|
|
sudo udevadm control --reload-rules
|
|
sudo udevadm trigger --name-match=kvm
|
|
|
|
- name: Start the Jellyfin stack
|
|
env:
|
|
JELLYFIN_PORT: "8098"
|
|
COMPOSE_PROJECT_NAME: chaosflix-e2e-android
|
|
E2E_ARTIFACTS_DIR: ${{ github.workspace }}/e2e/android/.artifacts/stack
|
|
E2E_FIXTURE_SECONDS: "180"
|
|
run: |
|
|
e2e/scripts/build-artifacts.sh
|
|
docker compose -f e2e/docker-compose.yml up -d --wait
|
|
|
|
- name: Run the Android e2e suite
|
|
uses: reactivecircus/android-emulator-runner@v2
|
|
env:
|
|
# The emulator is provided by the action, and the stack is already up.
|
|
ANDROID_E2E_USE_RUNNING_EMULATOR: "1"
|
|
E2E_REUSE_STACK: "1"
|
|
JELLYFIN_PORT: "8098"
|
|
COMPOSE_PROJECT_NAME: chaosflix-e2e-android
|
|
JELLYFIN_ANDROID_VERSION: ${{ inputs.jellyfin_android_version || 'v2.7.3' }}
|
|
with:
|
|
api-level: 33
|
|
target: google_apis
|
|
arch: x86_64
|
|
profile: pixel_5
|
|
emulator-options: -no-window -no-boot-anim -no-snapshot -gpu swiftshader_indirect -no-audio -camera-back none
|
|
disable-animations: true
|
|
script: e2e/android/run.sh
|
|
|
|
- name: Collect artifacts
|
|
if: always()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: android-e2e-artifacts
|
|
path: |
|
|
e2e/android/.artifacts/*.xml
|
|
e2e/android/.artifacts/*.log
|
|
e2e/android/.artifacts/*.png
|
|
e2e/android/.artifacts/*.txt
|
|
# .artifacts is a hidden directory, and upload-artifact skips hidden
|
|
# files by default — without this the step matched nothing and every
|
|
# red nightly was undiagnosable (#123).
|
|
include-hidden-files: true
|
|
if-no-files-found: warn
|
|
|
|
- name: Stop the Jellyfin stack
|
|
if: always()
|
|
env:
|
|
COMPOSE_PROJECT_NAME: chaosflix-e2e-android
|
|
E2E_ARTIFACTS_DIR: ${{ github.workspace }}/e2e/android/.artifacts/stack
|
|
run: docker compose -f e2e/docker-compose.yml down -v
|