Live video on the AT Protocol
1name: build
2
3on:
4 pull_request:
5 push:
6 branches:
7 - next
8
9concurrency:
10 group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
11 cancel-in-progress: true
12
13jobs:
14 linux:
15 name: ${{ matrix.name }}
16 runs-on: ubuntu-latest
17 strategy:
18 matrix:
19 include:
20 - name: linux-amd64
21 cmd: >-
22 make && (make test || make test) && make check && make ci-lexicons
23 - name: linux-arm64
24 cmd: "make app && make linux-arm64"
25 - name: windows-amd64
26 cmd: "make app && make windows-amd64 && make desktop-windows-amd64"
27 - name: android
28 cmd: "make app && make android-release"
29 steps:
30 - name: Maximize build space
31 run: |
32 sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL
33
34 - name: Check out code
35 uses: actions/checkout@v4.1.7
36 with:
37 fetch-depth: 0
38 ref: ${{ github.event.pull_request.head.sha }}
39
40 - name: make node
41 run: |
42 sudo apt install podman -y
43 make in-container BUILDER_TARGET=builder-no-darwin DOCKER_OPTS="-e STREAMPLACE_IGNORE_LEAKS=true -e STREAMPLACE_TEST_COUNT=1 -e CI=true" IN_CONTAINER_CMD="${{ matrix.cmd }}"
44
45 - name: Upload bin artifacts
46 if: matrix.name == 'windows-amd64'
47 uses: actions/upload-artifact@v4
48 with:
49 name: windows-bin
50 path: ./bin/
51 retention-days: 1
52
53 windows-selftest:
54 name: windows-selftest
55 runs-on: windows-latest
56 needs: linux
57 steps:
58 - name: Download bin artifacts
59 uses: actions/download-artifact@v4
60 with:
61 name: windows-bin
62 path: ./bin/
63
64 - name: Run Windows executable
65 shell: bash
66 run: |
67 set -euo pipefail
68 set -x AQD_NO_UPDATE=true
69 echo "running $PWD/bin/*.exe"
70 ./bin/*.exe
71 powershell -Command "Stop-Process -Name Streamplace"
72 cd "$LOCALAPPDATA/streamplace_desktop"
73 cd app-*
74 ./Streamplace.exe -- --self-test
75
76 darwin:
77 name: ${{ matrix.name }}
78 runs-on: ${{ matrix.runs-on }}
79 strategy:
80 matrix:
81 include:
82 - name: darwin-arm64
83 runs-on: macos-15
84 cmd: make && make test && make check
85 xcode-version: "16.1.0"
86 - name: ios
87 runs-on: macos-15
88 cmd: make ios
89 xcode-version: "16.1.0"
90 - name: darwin-amd64
91 runs-on: macos-13
92 cmd: make
93 xcode-version: "15.2.0"
94 steps:
95 - name: Check out code
96 uses: actions/checkout@v4.1.7
97 with:
98 fetch-depth: 0
99 ref: ${{ github.event.pull_request.head.sha }}
100
101 - uses: actions/setup-node@v4
102 with:
103 node-version: 22
104
105 - uses: maxim-lobanov/setup-xcode@v1
106 with:
107 xcode-version: ${{ matrix.xcode-version }}
108
109 - name: Build Streamplace
110 env:
111 STREAMPLACE_TEST_COUNT: "1"
112 STREAMPLACE_IGNORE_LEAKS: "true"
113 NODE_OPTIONS: "--max_old_space_size=4096"
114 run: |
115 npm install -g corepack@latest \
116 && corepack enable \
117 && export GOTOOLCHAIN=go1.24.2 \
118 && brew install go \
119 && python -m pip install virtualenv \
120 && python -m virtualenv ~/venv \
121 && source ~/venv/bin/activate \
122 && python -m pip install meson \
123 && ${{ matrix.cmd }}