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 linux-amd64 && make static-test && make check && make
23 ci-lexicons
24 - name: linux-arm64
25 cmd: "make linux-arm64"
26 - name: windows-amd64
27 cmd: "make windows-amd64 && make desktop-windows-amd64"
28 - name: android
29 cmd: "make app && make android-release"
30 steps:
31 - name: Maximize build space
32 run: |
33 sudo rm -rf /usr/share/dotnet /usr/local/lib/android /opt/ghc /opt/hostedtoolcache/CodeQL
34
35 - name: Check out code
36 uses: actions/checkout@v4.1.7
37 with:
38 fetch-depth: 0
39 ref: ${{ github.event.pull_request.head.sha }}
40
41 - name: mise check
42 if: matrix.name == 'linux-amd64'
43 uses: jdx/mise-action@v2
44 with:
45 install: true
46
47 - name: Log in to the Container registry
48 uses: docker/login-action@v2
49 with:
50 registry: ghcr.io
51 username: ${{ github.actor }}
52 password: ${{ github.token }}
53
54 - name: make node
55 run: |
56 sudo apt install podman -y
57 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 -e GITHUB_ACTION=true" IN_CONTAINER_CMD="${{ matrix.cmd }}"
58
59 - name: Publish Test Report
60 if: matrix.name == 'linux-amd64' && (success() || failure())
61 uses: mikepenz/action-junit-report@v5
62 with:
63 report_paths: "test.xml"
64
65 - name: Upload bin artifacts
66 if: matrix.name == 'windows-amd64'
67 uses: actions/upload-artifact@v4
68 with:
69 name: windows-bin-${{ github.event.pull_request.head.sha }}
70 path: ./bin/
71 retention-days: 1
72
73 # windows-selftest:
74 # name: windows-selftest
75 # runs-on: windows-latest
76 # needs: linux
77 # steps:
78 # - name: Download bin artifacts
79 # uses: actions/download-artifact@v4
80 # with:
81 # name: windows-bin-${{ github.event.pull_request.head.sha }}
82 # path: ./bin/
83
84 # - name: Run Windows executable
85 # shell: bash
86 # run: |
87 # set -euo pipefail
88 # set -x AQD_NO_UPDATE=true
89 # set -x STREAMPLACE_TEST_SERIES=true
90 # echo "running $PWD/bin/*.exe"
91 # ./bin/*.exe
92 # powershell -Command "Stop-Process -Name Streamplace"
93 # cd "$LOCALAPPDATA/streamplace_desktop"
94 # cd app-*
95 # ./Streamplace.exe -- --self-test
96
97 darwin:
98 name: ${{ matrix.name }}
99 runs-on: ${{ matrix.runs-on }}
100 strategy:
101 matrix:
102 include:
103 - name: darwin-arm64
104 runs-on: macos-15
105 cmd: make && make test && make check
106 xcode-version: "16.4"
107 - name: ios
108 runs-on: macos-15
109 cmd: make ios
110 xcode-version: "16.4"
111 - name: darwin-amd64
112 runs-on: macos-15-intel
113 cmd: make
114 xcode-version: "16.4"
115 steps:
116 - name: Check out code
117 uses: actions/checkout@v4.1.7
118 with:
119 fetch-depth: 0
120 ref: ${{ github.event.pull_request.head.sha }}
121
122 - uses: actions/setup-node@v4
123 with:
124 node-version: 22
125
126 - uses: maxim-lobanov/setup-xcode@v1
127 with:
128 xcode-version: ${{ matrix.xcode-version }}
129
130 - name: Build Streamplace
131 env:
132 STREAMPLACE_TEST_COUNT: "1"
133 STREAMPLACE_IGNORE_LEAKS: "true"
134 NODE_OPTIONS: "--max_old_space_size=4096"
135 run: |
136 npm install -g corepack@latest \
137 && corepack enable \
138 && export GOTOOLCHAIN=go1.25.1 \
139 && brew install go \
140 && python -m pip install virtualenv \
141 && python -m virtualenv ~/venv \
142 && source ~/venv/bin/activate \
143 && python -m pip install meson \
144 && ${{ matrix.cmd }}