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 # set -x STREAMPLACE_TEST_SERIES=true
77 # echo "running $PWD/bin/*.exe"
78 # ./bin/*.exe
79 # powershell -Command "Stop-Process -Name Streamplace"
80 # cd "$LOCALAPPDATA/streamplace_desktop"
81 # cd app-*
82 # ./Streamplace.exe -- --self-test
83
84 darwin:
85 name: ${{ matrix.name }}
86 runs-on: ${{ matrix.runs-on }}
87 strategy:
88 matrix:
89 include:
90 - name: darwin-arm64
91 runs-on: macos-15
92 cmd: make && make test && make check
93 xcode-version: "16.4"
94 - name: ios
95 runs-on: macos-15
96 cmd: make ios
97 xcode-version: "16.4"
98 - name: darwin-amd64
99 runs-on: macos-13
100 cmd: make
101 xcode-version: "15.2.0"
102 steps:
103 - name: Check out code
104 uses: actions/checkout@v4.1.7
105 with:
106 fetch-depth: 0
107 ref: ${{ github.event.pull_request.head.sha }}
108
109 - uses: actions/setup-node@v4
110 with:
111 node-version: 22
112
113 - uses: maxim-lobanov/setup-xcode@v1
114 with:
115 xcode-version: ${{ matrix.xcode-version }}
116
117 - name: Build Streamplace
118 env:
119 STREAMPLACE_TEST_COUNT: "1"
120 STREAMPLACE_IGNORE_LEAKS: "true"
121 NODE_OPTIONS: "--max_old_space_size=4096"
122 run: |
123 npm install -g corepack@latest \
124 && corepack enable \
125 && export GOTOOLCHAIN=go1.24.2 \
126 && brew install go \
127 && python -m pip install virtualenv \
128 && python -m virtualenv ~/venv \
129 && source ~/venv/bin/activate \
130 && python -m pip install meson \
131 && ${{ matrix.cmd }}