forked from servo/webrender
-
Notifications
You must be signed in to change notification settings - Fork 0
/
.taskcluster.yml
196 lines (195 loc) · 7.95 KB
/
.taskcluster.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
# This file specifies the configuration needed to test WebRender using the
# Taskcluster infrastructure. Most of this should be relatively self-explanatory;
# this file was originally generated by using the Taskcluster-GitHub integration
# quickstart tool at https://tools.taskcluster.net/quickstart/ and then expanded
# as needed.
#
version: 0
allowPullRequests: public
metadata:
name: WebRender
description: Runs WebRender tests in TaskCluster
owner: '{{ event.head.user.email }}'
source: '{{ event.head.repo.url }}'
# This file triggers a set of tasks; the ones targeting Linux are run in a docker
# container using docker-worker (which is a worker type provided by TaskCluster).
# The OS X ones are run in a custom worker type, for which we have worker
# instances configured and running.
tasks:
# For the docker-worker tasks, the Docker image used
# (staktrace/webrender-test:freetype28) was created using this Dockerfile:
# ---
# FROM ubuntu:16.04
# RUN apt-get -y update && apt-get install -y curl git python python-pip cmake pkg-config libx11-dev libgl1-mesa-dev libfontconfig1-dev software-properties-common
# RUN add-apt-repository -y -u ppa:glasen/freetype2
# RUN apt-get -y install freetype2-demos
# RUN pip install mako voluptuous PyYAML servo-tidy
# RUN useradd -d /home/worker -s /bin/bash -m worker
# USER worker
# WORKDIR /home/worker
# ENV PATH $PATH:/home/worker/.cargo/bin
# CMD /bin/bash
# ---
#
# The docker image may need to be updated over time if the set of required
# packages increases. Note in particular that rust/cargo are not part of the
# docker image, and are re-installed using rustup on each CI run. This ensures
# the latest stable rust compiler is always used.
# CI runs will be triggered on opening PRs, updating PRs, and pushes to the
# repository.
- metadata:
name: Linux release tests
description: Runs release-mode WebRender CI stuff on a Linux TC worker
owner: '{{ event.head.user.email }}'
source: '{{ event.head.repo.url }}'
provisionerId: '{{ taskcluster.docker.provisionerId }}'
workerType: '{{ taskcluster.docker.workerType }}'
extra:
github:
events:
- pull_request.opened
- pull_request.synchronize
- push
excludeBranches:
- master
payload:
maxRunTime: 3600
image: 'staktrace/webrender-test:freetype28'
env:
RUST_BACKTRACE: 1
RUSTFLAGS: '--deny warnings'
command:
- /bin/bash
- '--login'
- '-c'
- >-
curl https://sh.rustup.rs -sSf | sh -s -- -y &&
git clone {{event.head.repo.url}} webrender && cd webrender &&
git checkout {{event.head.sha}} &&
servo-tidy &&
(cd wrench && python script/headless.py reftest) &&
(cd wrench && python script/headless.py rawtest) &&
(cd wrench && cargo build --release)
routes:
- "index.garbage.webrender.ci.{{event.head.user.login}}.{{event.head.repo.branch}}.linux-release"
- metadata:
name: Linux debug tests
description: Runs debug-mode WebRender CI stuff on a Linux TC worker
owner: '{{ event.head.user.email }}'
source: '{{ event.head.repo.url }}'
provisionerId: '{{ taskcluster.docker.provisionerId }}'
workerType: '{{ taskcluster.docker.workerType }}'
extra:
github:
events:
- pull_request.opened
- pull_request.synchronize
- push
excludeBranches:
- master
payload:
maxRunTime: 3600
image: 'staktrace/webrender-test:freetype28'
env:
RUST_BACKTRACE: 1
RUSTFLAGS: '--deny warnings'
command:
- /bin/bash
- '--login'
- '-c'
- >-
curl https://sh.rustup.rs -sSf | sh -s -- -y &&
git clone {{event.head.repo.url}} webrender && cd webrender &&
git checkout {{event.head.sha}} &&
servo-tidy &&
(cd webrender_api && cargo test --verbose --features "ipc") &&
(cd webrender && cargo build --verbose --no-default-features) &&
(cd webrender && cargo build --verbose --no-default-features --features capture) &&
(cd webrender && cargo build --verbose --features capture,profiler) &&
(cd webrender && cargo build --verbose --features replay) &&
(cd wrench && cargo build --verbose --features env_logger) &&
(cargo test --all --verbose)
routes:
- "index.garbage.webrender.ci.{{event.head.user.login}}.{{event.head.repo.branch}}.linux-debug"
# For the OS X jobs we use a pool of machines that we are managing, because
# Mozilla releng doesn't have any spare OS X machines for us at this time.
# Talk to :kats or :jrmuizel if you need more details about this. The machines
# are hooked up to taskcluster using taskcluster-worker; they use a worker-type
# of kats-webrender-ci-osx. They are set up with all the dependencies needed
# to build and test webrender, including Rust (currently 1.24), servo-tidy,
# mako, zlib, etc. Note that unlike the docker-worker used for Linux, these
# machines WILL persist state from one run to the next, so any cleanup needs
# to be handled explicitly.
- metadata:
name: OS X release tests
description: Runs release-mode WebRender CI stuff on a OS X TC worker
owner: '{{ event.head.user.email }}'
source: '{{ event.head.repo.url }}'
provisionerId: 'localprovisioner'
workerType: 'kats-webrender-ci-osx'
extra:
github:
events:
- pull_request.opened
- pull_request.synchronize
- push
excludeBranches:
- master
payload:
maxRunTime: 3600
command:
- /bin/bash
- '--login'
- '-c'
- >-
rm -rf webrender &&
git clone {{event.head.repo.url}} webrender && cd webrender &&
git checkout {{event.head.sha}} &&
source ../servotidy-venv/bin/activate && servo-tidy &&
export RUST_BACKTRACE=1 &&
export RUSTFLAGS='--deny warnings' &&
export PKG_CONFIG_PATH="/usr/local/opt/zlib/lib/pkgconfig:$PKG_CONFIG_PATH" &&
export RUSTC_WRAPPER=sccache &&
(cd wrench && python script/headless.py reftest) &&
(cd wrench && cargo build --release)
routes:
- "index.garbage.webrender.ci.{{event.head.user.login}}.{{event.head.repo.branch}}.osx-release"
- metadata:
name: OS X debug tests
description: Runs debug-mode WebRender CI stuff on a OS X TC worker
owner: '{{ event.head.user.email }}'
source: '{{ event.head.repo.url }}'
provisionerId: 'localprovisioner'
workerType: 'kats-webrender-ci-osx'
extra:
github:
events:
- pull_request.opened
- pull_request.synchronize
- push
excludeBranches:
- master
payload:
maxRunTime: 3600
command:
- /bin/bash
- '--login'
- '-c'
- >-
rm -rf webrender &&
git clone {{event.head.repo.url}} webrender && cd webrender &&
git checkout {{event.head.sha}} &&
source ../servotidy-venv/bin/activate && servo-tidy &&
export RUST_BACKTRACE=1 &&
export RUSTFLAGS='--deny warnings' &&
export PKG_CONFIG_PATH="/usr/local/opt/zlib/lib/pkgconfig:$PKG_CONFIG_PATH" &&
export RUSTC_WRAPPER=sccache &&
(cd webrender_api && cargo test --verbose --features "ipc") &&
(cd webrender && cargo build --verbose --no-default-features) &&
(cd webrender && cargo build --verbose --no-default-features --features capture) &&
(cd webrender && cargo build --verbose --features capture,profiler) &&
(cd webrender && cargo build --verbose --features replay) &&
(cd wrench && cargo build --verbose --features env_logger) &&
(cargo test --all --verbose)
routes:
- "index.garbage.webrender.ci.{{event.head.user.login}}.{{event.head.repo.branch}}.osx-debug"