audio streaming app
plyr.fm
1name: transcoder integration tests
2
3on:
4 pull_request:
5 paths:
6 - "services/transcoder/**"
7 - "scripts/transcoder/**"
8 - "scripts/generate_audio_sample.py"
9 - ".github/workflows/test-transcoder.yml"
10 workflow_dispatch:
11
12permissions:
13 contents: read
14
15jobs:
16 test:
17 name: transcoder test matrix
18 runs-on: ubuntu-latest
19 timeout-minutes: 10
20
21 steps:
22 - uses: actions/checkout@v4
23
24 - name: install ffmpeg
25 run: |
26 sudo apt-get update
27 sudo apt-get install -y ffmpeg
28
29 - name: install rust toolchain
30 uses: dtolnay/rust-toolchain@stable
31
32 - name: cache cargo
33 uses: Swatinem/rust-cache@v2
34 with:
35 workspaces: services/transcoder
36
37 - name: build transcoder
38 working-directory: services/transcoder
39 run: cargo build --release
40
41 - name: install uv
42 uses: astral-sh/setup-uv@v5
43
44 - name: start transcoder
45 run: |
46 TRANSCODER_HOST=127.0.0.1 TRANSCODER_PORT=8082 \
47 ./services/transcoder/target/release/transcoder &
48
49 # wait for health check
50 for i in {1..30}; do
51 if curl -s http://127.0.0.1:8082/health > /dev/null; then
52 echo "transcoder ready"
53 break
54 fi
55 sleep 0.5
56 done
57
58 - name: run test matrix
59 run: uv run scripts/transcoder/test-matrix.py -v
60
61 - name: stop transcoder
62 if: always()
63 run: pkill -f transcoder || true