# 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:debian-v3) was created using the Dockerfile in # ci-scripts/docker-image. # # 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:debian-v3' env: RUST_BACKTRACE: 'full' RUSTFLAGS: '--deny warnings' command: - /bin/bash - '--login' - '-c' - >- curl https://sh.rustup.rs -sSf | sh -s -- -y && source $HOME/.cargo/env && 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:debian-v3' env: RUST_BACKTRACE: 'full' RUSTFLAGS: '--deny warnings' command: - /bin/bash - '--login' - '-c' - >- curl https://sh.rustup.rs -sSf | sh -s -- -y && source $HOME/.cargo/env && 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 export RUST_BACKTRACE=full export RUSTFLAGS='--deny warnings' export PKG_CONFIG_PATH="/usr/local/opt/zlib/lib/pkgconfig:$PKG_CONFIG_PATH" echo 'exec make -j1 "$@"' > $HOME/make # See #2638 chmod +x $HOME/make export MAKE="$HOME/make" ci-scripts/macos-release-tests.sh 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 export RUST_BACKTRACE=full export RUSTFLAGS='--deny warnings' export PKG_CONFIG_PATH="/usr/local/opt/zlib/lib/pkgconfig:$PKG_CONFIG_PATH" echo 'exec make -j1 "$@"' > $HOME/make # See #2638 chmod +x $HOME/make export MAKE="$HOME/make" ci-scripts/macos-debug-tests.sh routes: - "index.garbage.webrender.ci.{{event.head.user.login}}.{{event.head.repo.branch}}.osx-debug"