Live video on the AT Protocol
1include: ".ci/dockerfile-hash.yaml"
2
3build-bunny:
4 stage: build
5 interruptible: true
6 image:
7 name: gcr.io/kaniko-project/executor:v1.14.0-debug
8 entrypoint: [""]
9 timeout: 2 hours
10 script:
11 - /kaniko/executor
12 --context "${CI_PROJECT_DIR}/docker"
13 --dockerfile "${CI_PROJECT_DIR}/docker/bunny.Dockerfile"
14 --destination "$CI_REGISTRY_IMAGE:bunny"
15
16builder:
17 stage: build
18 interruptible: true
19 allow_failure: true
20 image:
21 name: gcr.io/kaniko-project/executor:v1.14.0-debug
22 entrypoint: [""]
23 variables:
24 FQ_IMAGE_NAME: "$CI_REGISTRY_IMAGE:builder-$DOCKERFILE_HASH"
25 timeout: 2 hours
26 script:
27 - /kaniko/executor
28 --build-arg TARGETARCH=amd64
29 --build-arg DOCKERFILE_HASH=$DOCKERFILE_HASH
30 --cache=true
31 --context "${CI_PROJECT_DIR}"
32 --dockerfile "${CI_PROJECT_DIR}/docker/build.Dockerfile"
33 --destination "$FQ_IMAGE_NAME"
34
35builder-rebuild:
36 stage: build
37 allow_failure: true
38 interruptible: true
39 image:
40 name: curlimages/curl:latest
41 entrypoint: [""]
42 needs:
43 - job: builder
44 timeout: 2 hours
45 script:
46 - echo "CI_PIPELINE_ID=$CI_PIPELINE_ID"
47 - echo "CI_PIPELINE_ID=$CI_PIPELINE_IID"
48 - echo "CI_PROJECT_ID=$CI_PROJECT_ID"
49 - >
50 curl
51 --data-raw '{"project_id": "'$CI_PROJECT_ID'", "pipeline_id": "'$CI_PIPELINE_ID'", "job_token": "'$CI_JOB_TOKEN'"}'
52 --fail-with-body
53 https://retry-gitlab.iameli.workers.dev/
54
55build:
56 stage: build
57 interruptible: true
58 image: "$CI_REGISTRY_IMAGE:builder-$DOCKERFILE_HASH"
59 timeout: 2 hours
60 script:
61 - rm -rf /usr/x86_64-w64-mingw32/include/d3dcompiler.h /usr/share/mingw-w64/include/d3dcompiler.h /usr/lib/gcc/x86_64-w64-mingw32/10-posix/libssp.dll.a /usr/lib/gcc/x86_64-w64-mingw32/10-posix/libssp-0.dll /usr/lib/gcc/x86_64-w64-mingw32/10-win32/libssp-0.dll /usr/lib/gcc/x86_64-w64-mingw32/10-win32/libssp.dll.a
62 - git fetch --unshallow || echo 'already unshallow'
63 - make ci -j$(nproc)
64 artifacts:
65 reports:
66 dotenv: .ci/build.env
67
68leak-test-viewers:
69 stage: build
70 interruptible: true
71 needs:
72 - job: build
73 artifacts: true
74 - job: build-bunny
75 image:
76 name: "$CI_REGISTRY_IMAGE:bunny"
77 variables:
78 SP_WIDE_OPEN: "true"
79 SP_NO_FIREHOSE: "true"
80 SP_WHIP_TEST: "--file=/bunny.mp4 --count=1 --viewers=50 --duration=5m"
81 KUBERNETES_MEMORY_REQUEST: "2Gi"
82 KUBERNETES_MEMORY_LIMIT: "2Gi"
83 GOGC: "20"
84 GOMEMLIMIT: "2GiB"
85 timeout: "10 minutes"
86 allow_failure: true
87 script:
88 - /bunny.sh
89
90leak-test-streamers:
91 stage: build
92 interruptible: true
93 needs:
94 - job: build
95 artifacts: true
96 - job: build-bunny
97 image:
98 name: "$CI_REGISTRY_IMAGE:bunny"
99 variables:
100 SP_WIDE_OPEN: "true"
101 SP_NO_FIREHOSE: "true"
102 SP_WHIP_TEST: "--file=/bunny.mp4 --count=10 --duration=5m"
103 KUBERNETES_MEMORY_REQUEST: "2Gi"
104 KUBERNETES_MEMORY_LIMIT: "2Gi"
105 GOGC: "20"
106 GOMEMLIMIT: "2GiB"
107 timeout: "10 minutes"
108 allow_failure: true
109 script:
110 - /bunny.sh
111
112test:
113 stage: build
114 interruptible: true
115 image: "$CI_REGISTRY_IMAGE:builder-$DOCKERFILE_HASH"
116 timeout: 2 hours
117 variables:
118 STREAMPLACE_IGNORE_LEAKS: "true"
119 STREAMPLACE_TEST_COUNT: "1"
120 script:
121 - git fetch --unshallow || echo 'already unshallow'
122 - make ci-test -j$(nproc) && make ci-lexicons
123
124build-docker-amd64:
125 stage: build
126 interruptible: true
127 needs:
128 - job: build
129 artifacts: true
130 image:
131 name: gcr.io/kaniko-project/executor:v1.14.0-debug
132 entrypoint: [""]
133 timeout: 2 hours
134 script:
135 - /kaniko/executor
136 --build-arg TARGETARCH=amd64
137 --build-arg STREAMPLACE_URL=$STREAMPLACE_URL_LINUX_AMD64
138 --context "${CI_PROJECT_DIR}"
139 --dockerfile "${CI_PROJECT_DIR}/docker/release.Dockerfile"
140 --destination "$CI_REGISTRY_IMAGE:$STREAMPLACE_BRANCH-amd64"
141 --destination "$CI_REGISTRY_IMAGE:$STREAMPLACE_VERSION-amd64"
142
143build-docker-arm64:
144 stage: build
145 interruptible: true
146 needs:
147 - job: build
148 artifacts: true
149 image:
150 name: gcr.io/kaniko-project/executor:v1.14.0-debug
151 entrypoint: [""]
152 timeout: 2 hours
153 script:
154 - /kaniko/executor
155 --build-arg TARGETARCH=arm64
156 --build-arg STREAMPLACE_URL=$STREAMPLACE_URL_LINUX_ARM64
157 --context "${CI_PROJECT_DIR}"
158 --dockerfile "${CI_PROJECT_DIR}/docker/release.Dockerfile"
159 --destination "$CI_REGISTRY_IMAGE:$STREAMPLACE_BRANCH-arm64"
160 --destination "$CI_REGISTRY_IMAGE:$STREAMPLACE_VERSION-arm64"
161 --customPlatform=linux/arm64
162
163build-docker-manifest:
164 stage: build
165 interruptible: true
166 image:
167 name: curlimages/curl:latest
168 entrypoint: [""]
169 needs:
170 - job: build-docker-arm64
171 - job: build-docker-amd64
172 - job: build
173 artifacts: true
174 before_script:
175 - curl -s -L https://github.com/estesp/manifest-tool/releases/download/v2.1.7/binaries-manifest-tool-2.1.7.tar.gz | tar xvz
176 - mv manifest-tool-linux-amd64 ./manifest-tool
177 - chmod +x ./manifest-tool
178 timeout: 2 hours
179 script:
180 - ./manifest-tool --username "${CI_REGISTRY_USER}" --password "${CI_REGISTRY_PASSWORD}" push from-args
181 --platforms linux/amd64,linux/arm64
182 --template $CI_REGISTRY_IMAGE:$STREAMPLACE_VERSION-ARCH
183 --tags $STREAMPLACE_BRANCH
184 --target $CI_REGISTRY_IMAGE:$STREAMPLACE_VERSION
185
186build-android:
187 stage: build
188 interruptible: true
189 image: "$CI_REGISTRY_IMAGE:builder-$DOCKERFILE_HASH"
190 timeout: 2 hours
191 script:
192 - git fetch --unshallow || echo 'already unshallow'
193 - make ci-android -j$(nproc)
194
195build-mac:
196 stage: build
197 interruptible: true
198 image: macos-sonoma-xcode-big
199 tags:
200 - tart-installed
201 variables:
202 STREAMPLACE_IGNORE_LEAKS: "true"
203 STREAMPLACE_TEST_COUNT: "1"
204 NODE_OPTIONS: "--max_old_space_size=4096"
205 timeout: 2 hours
206 script:
207 # workaround for https://gitlab.com/gitlab-org/gitlab/-/issues/501457
208 # which is a workaround for ios builds failing due to /tmp vs /private/tmp weirdness
209 - cd ..
210 - mv streamplace /Users/admin/streamplace
211 - cd /Users/admin/streamplace
212 - git fetch --unshallow || echo 'already unshallow'
213 - brew install ninja go openssl@3 && go version
214 - sudo gem uninstall xcodeproj -x --ignore-dependencies
215 - sudo gem install xcodeproj -v 1.25.1
216 - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > rustup.sh && bash rustup.sh -y && rm rustup.sh
217 - export PATH="$PATH:$HOME/.cargo/bin"
218 - echo $PATH
219 - 'echo "which xcodeproj: $(which xcodeproj)"'
220 - 'echo "xcodeproj --version: $(xcodeproj --version)"'
221 - "$(which xcodeproj) --version"
222 - >
223 export GOTOOLCHAIN=go1.24.2
224 && python3 -m pip install virtualenv
225 && python3 -m virtualenv ~/venv
226 && source ~/venv/bin/activate
227 && python3 -m pip install meson
228 && make ci-macos -j16
229
230windows-selftest:
231 interruptible: true
232 stage: build
233 # for the moment...
234 tags:
235 - windows
236 timeout: 2 hours
237 needs:
238 - job: build
239 artifacts: true
240 variables:
241 MSYSTEM: "MINGW32"
242 CHERE_INVOKING: "yes"
243 script:
244 - C:\msys64\usr\bin\bash -lc "bash -x ./util/windows-selftest.sh $STREAMPLACE_DESKTOP_URL_WINDOWS_AMD64"
245
246release:
247 stage: build
248 interruptible: true
249 image: "$CI_REGISTRY_IMAGE:builder-$DOCKERFILE_HASH"
250 needs:
251 - build-mac
252 - build-android
253 - build-docker-amd64
254 - build-docker-arm64
255 - build-docker-manifest
256 - build
257 - windows-selftest
258 - test
259 rules:
260 - if: '$CI_COMMIT_TAG =~ /^v?\d+\.\d+\.\d+$/'
261 timeout: 2 hours
262 script:
263 - make ci-release
264
265.report-status:
266 interruptible: true
267 image:
268 name: curlimages/curl
269 entrypoint: ["/bin/sh"]
270 variables:
271 STATUS_PROJECT: streamplace/streamplace
272 STATUS_NAME: git.stream.place
273 script:
274 # For complete details on the GitHub API please see:
275 # https://developer.github.com/v3/repos/statuses
276 - >
277 set -eu && curl -L
278 --fail-with-body
279 --silent
280 -X POST
281 -H "Accept: application/vnd.github+json"
282 -H "Authorization: Bearer $GITHUB_TOKEN"
283 -H "X-GitHub-Api-Version: 2022-11-28"
284 https://api.github.com/repos/${STATUS_PROJECT}/statuses/${CI_COMMIT_SHA}
285 -d '{"state":"'${CI_JOB_NAME}'","target_url":"'${CI_PIPELINE_URL}'","description":"'${STATUS_NAME}'","context":"'${STATUS_NAME}'"}'
286 environment:
287 name: reporting-github
288 dependencies: []
289
290pending:
291 stage: .pre
292 extends:
293 - .report-status
294
295success:
296 stage: .post
297 extends:
298 - .report-status
299
300failure:
301 stage: .post
302 extends:
303 - .report-status
304 rules:
305 - when: on_failure