Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a .taskcluster.yml file to run CI using taskcluster #1746

Merged
merged 1 commit into from Sep 25, 2017
Merged
Changes from all commits
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

Add a .taskcluster.yml file to run CI using taskcluster

On the taskcluster Linux machines a reftest gives slightly different
results so the reftest.list is tweaked as well.
  • Loading branch information
staktrace committed Sep 22, 2017
commit 0bec79b418f81d0862bbea584c0c7fbdb302175c
@@ -0,0 +1,166 @@
# 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
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:latest) 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
# RUN pip install mako 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
payload:
maxRunTime: 3600
image: 'staktrace/webrender-test:latest'
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 headless.py reftest) &&
(cd wrench && cargo build --release --features=debugger)
- 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
payload:
maxRunTime: 3600
image: 'staktrace/webrender-test:latest'
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) &&
(cargo test --all --verbose)
# 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.20), 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
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" &&
(cd webrender_api && cargo test --verbose --features "ipc") &&
(cd webrender && cargo build --verbose --no-default-features) &&
(cargo test --all --verbose)
- 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
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" &&
(cd wrench && python headless.py reftest) &&
(cd wrench && cargo build --release --features=debugger)
@@ -17,7 +17,7 @@ fuzzy(1,100) == decorations-suite.yaml decorations-suite.png
== 1658.yaml 1658-ref.yaml
== split-batch.yaml split-batch-ref.yaml
== shadow-red.yaml shadow-red-ref.yaml
fuzzy(1,136) == shadow-grey.yaml shadow-grey-ref.yaml
fuzzy(1,160) == shadow-grey.yaml shadow-grey-ref.yaml
== subtle-shadow.yaml subtle-shadow-ref.yaml
# enable when synthetic-italics implemented on mac
# != synthetic-italics.yaml synthetic-italics-ref.yaml
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.