summaryrefslogtreecommitdiffstats
path: root/gfx/wr/.taskcluster.yml
blob: 0c0b268dd70a2807ed7abb213334995c09d55c03 (plain)
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
# 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 which no longer exists.
#
# See https://community-tc.services.mozilla.com/docs
version: 1
policy:
  pullRequests: public

# 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:
  $if: 'tasks_for in ["github-push", "github-pull-request"]'
  then:
    $let:
      should_run:
        $if: 'tasks_for == "github-push"'
        # for pushes, run on any branch but master
        then: {$eval: 'event.ref != "refs/heads/master"'}
        # for PRs, run for opened and synchronized events
        else: {$eval: 'event.action in ["opened", "synchronize"]'}
      repo_url:
        $if: 'tasks_for == "github-push"'
        then: ${event.repository.clone_url}
        else: ${event.pull_request.head.repo.clone_url}
      sha:
        $if: 'tasks_for == "github-push"'
        then: ${event.after}
        else: ${event.pull_request.head.sha}
      login: ${event.sender.login}
      branch:
        $if: 'tasks_for == "github-push"'
        then:
          $if: 'event.ref[:11] == "refs/heads/"'
          then: ${event.ref[11:]}
          else: ${event.ref}
        else: ${event.pull_request.head.ref}
    in:
      $if: should_run
      then:
        # For the docker-worker tasks, the Docker image used
        # (staktrace/webrender-test:debian-v10) 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: noreply@mozilla.com
            source: ${repo_url}
          provisionerId: proj-webrender
          workerType: ci-linux
          deadline: {$fromNow: '1 day'}
          payload:
            maxRunTime: 7200
            image: 'staktrace/webrender-test:debian-v10'
            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 ${repo_url} webrender && cd webrender &&
                git checkout ${sha} &&
                servo-tidy &&
                ci-scripts/install-meson.sh &&
                export PATH=$PATH:$PWD/meson &&
                ci-scripts/linux-release-tests.sh
          routes:
            - "index.project.webrender.ci.${login}.${branch}.linux-release"
        - metadata:
            name: Linux debug tests
            description: Runs debug-mode WebRender CI stuff on a Linux TC worker
            owner: noreply@mozilla.com
            source: ${repo_url}
          provisionerId: proj-webrender
          workerType: ci-linux
          deadline: {$fromNow: '1 day'}
          payload:
            maxRunTime: 7200
            image: 'staktrace/webrender-test:debian-v10'
            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 ${repo_url} webrender && cd webrender &&
                git checkout ${sha} &&
                servo-tidy &&
                ci-scripts/install-meson.sh &&
                export PATH=$PATH:$PWD/meson &&
                ci-scripts/linux-debug-tests.sh
          routes:
            - "index.project.webrender.ci.${login}.${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 workerpool
        # of proj-webrender/ci-macos. They are set up with all the dependencies needed
        # to build and test webrender, including Rust (currently 1.41.1), 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.

        # macOS tasks currently disabled, see bug 1639217.
        # - metadata:
        #     name: OS X release tests
        #     description: Runs release-mode WebRender CI stuff on a OS X TC worker
        #     owner: noreply@mozilla.com
        #     source: ${repo_url}
        #   provisionerId: 'proj-webrender'
        #   workerType: 'ci-macos'
        #   deadline: {$fromNow: '1 day'}
        #   payload:
        #     maxRunTime: 3600
        #     command:
        #       - - /bin/bash
        #         - '--login'
        #         - '-vec'
        #         - |
        #           git clone ${repo_url} webrender
        #           cd webrender
        #           git checkout ${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.project.webrender.ci.${login}.${branch}.osx-release"
        # - metadata:
        #     name: OS X debug tests
        #     description: Runs debug-mode WebRender CI stuff on a OS X TC worker
        #     owner: noreply@mozilla.com
        #     source: ${repo_url}
        #   provisionerId: 'proj-webrender'
        #   workerType: 'ci-macos'
        #   deadline: {$fromNow: '1 day'}
        #   payload:
        #     maxRunTime: 3600
        #     command:
        #       - - /bin/bash
        #         - '--login'
        #         - '-vec'
        #         - |
        #           git clone ${repo_url} webrender
        #           cd webrender
        #           git checkout ${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.project.webrender.ci.${login}.${branch}.osx-debug"