Files
claude 9e33a343ab
Some checks failed
release / build-release (push) Has been cancelled
Floatplane channel plugin for Jellyfin 10.10.x: browse, HLS proxy, cookie session, CI release
- 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>
2026-10-25 09:42:27 +01:00

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