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: Log in to the Container registry
41 uses: docker/login-action@v2
42 with:
43 registry: ghcr.io
44 username: ${{ github.actor }}
45 password: ${{ github.token }}
46
47 - name: make node
48 run: |
49 sudo apt install podman -y
50 make in-container BUILDER_TARGET=builder-no-darwin DOCKER_BUILD_OPTS="--layers --cache-to ghcr.io/streamplace/streamplace --cache-from ghcr.io/streamplace/streamplace" DOCKER_OPTS="-e STREAMPLACE_IGNORE_LEAKS=true -e STREAMPLACE_TEST_COUNT=1 -e CI=true" IN_CONTAINER_CMD="${{ matrix.cmd }}"
51
52 - name: Upload bin artifacts
53 if: matrix.name == 'windows-amd64'
54 uses: actions/upload-artifact@v4
55 with:
56 name: windows-bin-${{ github.event.pull_request.head.sha }}
57 path: ./bin/
58 retention-days: 1
59
60 windows-selftest:
61 name: windows-selftest
62 runs-on: windows-latest
63 needs: linux
64 steps:
65 - name: Download bin artifacts
66 uses: actions/download-artifact@v4
67 with:
68 name: windows-bin-${{ github.event.pull_request.head.sha }}
69 path: ./bin/
70
71 - name: Run Windows executable
72 shell: bash
73 run: |
74 set -euo pipefail
75 set -x AQD_NO_UPDATE=true
76 echo "running $PWD/bin/*.exe"
77 ./bin/*.exe
78 powershell -Command "Stop-Process -Name Streamplace"
79 cd "$LOCALAPPDATA/streamplace_desktop"
80 cd app-*
81 ./Streamplace.exe -- --self-test
82
83 darwin:
84 name: ${{ matrix.name }}
85 runs-on: ${{ matrix.runs-on }}
86 strategy:
87 matrix:
88 include:
89 - name: darwin-arm64
90 runs-on: macos-15
91 cmd: make && make test && make check
92 xcode-version: "16.1.0"
93 - name: ios
94 runs-on: macos-15
95 cmd: make ios
96 xcode-version: "16.1.0"
97 - name: darwin-amd64
98 runs-on: macos-13
99 cmd: make
100 xcode-version: "15.2.0"
101 steps:
102 - name: Check out code
103 uses: actions/checkout@v4.1.7
104 with:
105 fetch-depth: 0
106 ref: ${{ github.event.pull_request.head.sha }}
107
108 - uses: actions/setup-node@v4
109 with:
110 node-version: 22
111
112 - uses: maxim-lobanov/setup-xcode@v1
113 with:
114 xcode-version: ${{ matrix.xcode-version }}
115
116 - name: Build Streamplace
117 env:
118 STREAMPLACE_TEST_COUNT: "1"
119 STREAMPLACE_IGNORE_LEAKS: "true"
120 NODE_OPTIONS: "--max_old_space_size=4096"
121 run: |
122 npm install -g corepack@latest \
123 && corepack enable \
124 && export GOTOOLCHAIN=go1.24.2 \
125 && brew install go \
126 && python -m pip install virtualenv \
127 && python -m virtualenv ~/venv \
128 && source ~/venv/bin/activate \
129 && python -m pip install meson \
130 && ${{ matrix.cmd }}