gecko-dev/gfx/wr/.taskcluster.yml

206 строки
7.8 KiB
YAML

# 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: 7200
image: 'staktrace/webrender-test:freetype28'
env:
RUST_BACKTRACE: 'full'
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 &&
ci-scripts/linux-release-tests.sh
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: 7200
image: 'staktrace/webrender-test:freetype28'
env:
RUST_BACKTRACE: 'full'
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 &&
ci-scripts/linux-debug-tests.sh
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 webrender-ci-osx. They are set up with all the dependencies needed
# to build and test webrender, including Rust (currently 1.30), 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: 'webrender-ci-osx'
extra:
github:
events:
- pull_request.opened
- pull_request.synchronize
- push
excludeBranches:
- master
payload:
maxRunTime: 3600
command:
- - /bin/bash
- '--login'
- '-vec'
- |
git clone {{event.head.repo.url}} webrender
cd webrender
git checkout {{event.head.sha}}
source $HOME/servotidy-venv/bin/activate
servo-tidy
sccache --stop-server || true
mkdir -p ../artifacts
RUST_LOG=sccache=trace SCCACHE_ERROR_LOG=$PWD/../artifacts/sccache.log sccache --start-server
export RUST_BACKTRACE=full
export RUSTFLAGS='--deny warnings'
export PKG_CONFIG_PATH="/usr/local/opt/zlib/lib/pkgconfig:$PKG_CONFIG_PATH"
export RUSTC_WRAPPER=sccache
echo 'exec make -j1 "$@"' > $HOME/make # See #2638
chmod +x $HOME/make
export MAKE="$HOME/make"
ci-scripts/macos-release-tests.sh
sccache --stop-server || true
artifacts:
- name: public/sccache.log
path: artifacts/sccache.log
type: file
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: 'webrender-ci-osx'
extra:
github:
events:
- pull_request.opened
- pull_request.synchronize
- push
excludeBranches:
- master
payload:
maxRunTime: 3600
command:
- - /bin/bash
- '--login'
- '-vec'
- |
git clone {{event.head.repo.url}} webrender
cd webrender
git checkout {{event.head.sha}}
source $HOME/servotidy-venv/bin/activate
servo-tidy
sccache --stop-server || true
mkdir -p ../artifacts
RUST_LOG=sccache=trace SCCACHE_ERROR_LOG=$PWD/../artifacts/sccache.log sccache --start-server
export RUST_BACKTRACE=full
export RUSTFLAGS='--deny warnings'
export PKG_CONFIG_PATH="/usr/local/opt/zlib/lib/pkgconfig:$PKG_CONFIG_PATH"
export RUSTC_WRAPPER=sccache
echo 'exec make -j1 "$@"' > $HOME/make # See #2638
chmod +x $HOME/make
export MAKE="$HOME/make"
ci-scripts/macos-debug-tests.sh
sccache --stop-server || true
artifacts:
- name: public/sccache.log
path: artifacts/sccache.log
type: file
routes:
- "index.garbage.webrender.ci.{{event.head.user.login}}.{{event.head.repo.branch}}.osx-debug"