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